<?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>133022</bug_id>
          
          <creation_ts>2014-05-16 18:42:07 -0700</creation_ts>
          <short_desc>Split scrolling tree ScrollingNodes into FrameScrollingNodes and OverflowScrollingNodes</short_desc>
          <delta_ts>2017-05-19 01:04:53 -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>New Bugs</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>172349</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>andersca</cc>
    
    <cc>bdakin</cc>
    
    <cc>bunhere</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jamesr</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>rakuco</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1009911</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-05-16 18:42:07 -0700</bug_when>
    <thetext>Split scrolling tree ScrollingNodes into FrameScrollingNodes and OverflowScrollingNodes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009913</commentid>
    <comment_count>1</comment_count>
      <attachid>231612</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-05-16 18:49:07 -0700</bug_when>
    <thetext>Created attachment 231612
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009914</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-05-16 18:50:28 -0700</bug_when>
    <thetext>Attachment 231612 did not pass style-queue:


ERROR: Source/WebKit2/Shared/Scrolling/RemoteScrollingCoordinatorTransaction.cpp:167:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit2/Shared/Scrolling/RemoteScrollingCoordinatorTransaction.cpp:175:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 2 in 56 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1010232</commentid>
    <comment_count>3</comment_count>
      <attachid>231703</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-05-19 11:06:25 -0700</bug_when>
    <thetext>Created attachment 231703
EWS for EFL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1010233</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-05-19 11:09:40 -0700</bug_when>
    <thetext>Attachment 231703 did not pass style-queue:


ERROR: Source/WebKit2/Shared/Scrolling/RemoteScrollingCoordinatorTransaction.cpp:167:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit2/Shared/Scrolling/RemoteScrollingCoordinatorTransaction.cpp:175:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 2 in 57 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1010286</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-05-19 13:42:35 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/169063</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1010293</commentid>
    <comment_count>6</comment_count>
      <attachid>231703</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-05-19 14:04:53 -0700</bug_when>
    <thetext>Comment on attachment 231703
EWS for EFL

Removing from review queue since this already landed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231612</attachid>
            <date>2014-05-16 18:49:07 -0700</date>
            <delta_ts>2014-05-19 11:06:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133022-20140516184843.patch</filename>
            <type>text/plain</type>
            <size>285074</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY4OTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODFlYjYzMjcyYWFmY2E2
MjliMjRiNmI5N2YwNjEzM2Q3ZThkODE0Yy4uN2UyMzJkN2JjMzBiYTAwMzkyMjMxOTVlODQ4NjRm
Y2Y3MTczNjg0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwOCBAQAorMjAxNC0wNS0xNiAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBzY3Jv
bGxpbmcgdHJlZSBTY3JvbGxpbmdOb2RlcyBpbnRvIEZyYW1lU2Nyb2xsaW5nTm9kZXMgYW5kIE92
ZXJmbG93U2Nyb2xsaW5nTm9kZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzMzAyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEluIGJvdGggdGhlIHNjcm9sbGluZyBzdGF0ZSB0cmVlIGFuZCB0aGUgc2Ny
b2xsaW5nIHRyZWUsIHNwbGl0IHRoZSAic2Nyb2xsaW5nIG5vZGVzIgorICAgICAgICBpbnRvIEZy
YW1lU2Nyb2xsaW5nIGFuZCBPdmVyZmxvd1Njcm9sbGluZyBub2Rlcy4KKyAgICAgICAgCisgICAg
ICAgIE1vdmUgd2hhdCB3YXMgdGhlICJ2aWV3cG9ydFNpemUiIHByb3BlcnR5IG9udG8gdGhlIGJh
c2UgY2xhc3MgZm9yIHRoZSBzY3JvbGxpbmcKKyAgICAgICAgbm9kZXMsIGNhbGxpbmcgaXQgInNj
cm9sbGFibGVBcmVhU2l6ZSIuCisgICAgICAgIAorICAgICAgICBNYWtlIG1pbmltdW0vbWF4aW11
bVNjcm9sbFBvc2l0aW9uKCkgdmlydHVhbCBzbyB3ZSBjYW4gc2hhcmUgbW9yZSBjb2RlIChhbmQg
dGhlcmUKKyAgICAgICAgaXMgbW9yZSBjb2RlIHNoYXJpbmcgdG8gYmUgZG9uZSBpbiBmdXR1cmUp
LgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2NvbmZpZzogUmVtb3ZlIFNj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZU1hYy5tbSBhbmQgU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVNYWMubW0KKyAgICAgICAgZnJvbSB0aGUgbGlzdCwgdXNpbmcgI2lmZGVmcyBpbiB0aGUg
ZmlsZSBpbnN0ZWFkLgorICAgICAgICAqIFdlYkNvcmUuZXhwLmluOiBMb3RzIG9mIGV4cG9ydHMu
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBOZXcgZmlsZXMu
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdM
YXlvdXRVcGRhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OmZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpBc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVGcmFtZVNjcm9sbGluZ05vZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OnJlY29tcHV0ZVdoZWVsRXZlbnRIYW5kbGVyQ291bnRGb3JGcmFtZVZpZXcpOgorICAgICAgICAo
V2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsaW5nTm9kZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpz
ZXRTY3JvbGxiYXJQYWludGVyc0Zyb21TY3JvbGxiYXJzRm9yTm9kZSk6IERlbGV0ZWQuCisgICAg
ICAgIFRoaXMgdGlueSBmdW5jdGlvbiBkaWRuJ3QgbmVlZCB0byBleGlzdC4KKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmg6CisgICAgICAgICogcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVGcmFtZVNjcm9sbGluZ05vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xs
aW5nTm9kZSk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVGcmFtZVNjcm9sbGluZ05vZGUuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwLgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsaW5nU3Rh
dGVGcmFtZVNjcm9sbGluZ05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVG
cmFtZVNjcm9sbGluZ05vZGU6On5TY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6Y2xvbmUp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OnNl
dEZyYW1lU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVGcmFt
ZVNjcm9sbGluZ05vZGU6OnNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRXaGVlbEV2ZW50SGFu
ZGxlckNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxp
bmdOb2RlOjpzZXRTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OnNldFNjcm9sbEJlaGF2aW9yRm9y
Rml4ZWRFbGVtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZUZyYW1lU2Ny
b2xsaW5nTm9kZTo6c2V0SGVhZGVySGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRGb290ZXJIZWlnaHQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OnNldFRvcENvbnRlbnRJbnNl
dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6
c2V0Q291bnRlclNjcm9sbGluZ0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0
YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRJbnNldENsaXBMYXllcik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0Q29udGVudFNoYWRvd0xh
eWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2Rl
OjpzZXRIZWFkZXJMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZUZyYW1l
U2Nyb2xsaW5nTm9kZTo6c2V0Rm9vdGVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
aW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OnNldFNjcm9sbGJhclBhaW50ZXJzRnJvbVNjcm9s
bGJhcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05v
ZGU6OmR1bXBQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdT
dGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaC4KKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
UmVwcmVzZW50YXRpb246OmxheWVySUQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3Rh
dGVOb2RlOjppc0ZyYW1lU2Nyb2xsaW5nTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdTdGF0ZU5vZGU6OmlzT3ZlcmZsb3dTY3JvbGxpbmdOb2RlKToKKyAgICAgICAgKiBwYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGU6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5n
Tm9kZTo6U2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGU6On5TY3JvbGxpbmdTdGF0
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZTo6Y2xvbmUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
aW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGU6OnNldFNjcm9sbGVkQ29udGVudHNMYXllcik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZTo6
ZHVtcFByb3BlcnRpZXMpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGVNYWMubW0uCisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZTo6c2Nyb2xsZWRD
b250ZW50c0xheWVyKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlOjpTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTY3JvbGxhYmxlQXJlYVNpemUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRUb3RhbENvbnRl
bnRzU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6
OmR1bXBQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZTo6Y2xvbmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRWaWV3cG9ydFNpemUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRGcmFtZVNjYWxl
RmFjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZTo6c2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24pOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRXaGVlbEV2ZW50SGFuZGxl
ckNvdW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZTo6c2V0U3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0U2Nyb2xsQmVoYXZp
b3JGb3JGaXhlZEVsZW1lbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0SGVhZGVySGVpZ2h0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0Rm9vdGVySGVpZ2h0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6
c2V0VG9wQ29udGVudEluc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0U2Nyb2xsZWRDb250ZW50c0xheWVyKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0Q291bnRl
clNjcm9sbGluZ0xheWVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZTo6c2V0SW5zZXRDbGlwTGF5ZXIpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRDb250ZW50U2hhZG93TGF5
ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdO
b2RlOjpzZXRIZWFkZXJMYXllcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldEZvb3RlckxheWVyKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0U2Nyb2xsYmFyUGFpbnRl
cnNGcm9tU2Nyb2xsYmFycyk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdT
dGF0ZVNjcm9sbGluZ05vZGU6OnNjcm9sbGFibGVBcmVhU2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnRvdGFsQ29udGVudHNTaXplKToKKyAgICAg
ICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nU3RhdGVUcmVlOjphdHRhY2hOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1N0YXRlVHJlZTo6Y29tbWl0KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdTdGF0ZVRyZWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlVHJl
ZTo6cm9vdFN0YXRlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVRyZWU6
OnNldFJvb3RTdGF0ZU5vZGUpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6Y29tbWl0TmV3VHJlZVN0
YXRlKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxp
bmdOb2RlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU6On5TY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGU6OnVwZGF0ZUJlZm9yZUNoaWxkcmVuKToKKyAgICAgICAgKiBwYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLmg6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgu
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlOjp1cGRh
dGVMYXllcnNBZnRlckRlbGVnYXRlZFNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlOjpzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2hvdWxk
VXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvblN5bmNocm9ub3VzbHkpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZTo6ZnJhbWVTY2FsZUZhY3Rvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlOjpoZWFkZXJI
ZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9k
ZTo6Zm9vdGVySGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGU6OnRvcENvbnRlbnRJbnNldCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlOjpzY3JvbGxCZWhhdmlvckZvckZpeGVkRWxlbWVudHMp
OgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmg6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlTm9kZTo6aXNGcmFtZVNjcm9sbGluZ05vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU5vZGU6OmlzT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGlu
Zy9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5oLgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZTo6U2Nyb2xsaW5nVHJl
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlOjp+U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xs
aW5nTm9kZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2Nyb2xsaW5n
L2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmguCisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OlNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjp1
cGRhdGVCZWZvcmVDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZTo6dXBkYXRlQWZ0ZXJDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6c2V0U2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OnNldFNjcm9sbFBvc2l0aW9uV2l0aG91
dENvbnRlbnRFZGdlQ29uc3RyYWludHMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGU6Om1pbmltdW1TY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6bWF4aW11bVNjcm9sbFBvc2l0aW9uKToKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OnNjcm9sbGFibGVBcmVh
U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6dG90
YWxDb250ZW50c1NpemUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGU6OnRvdGFsQ29udGVudHNTaXplRm9yUnViYmVyQmFuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6c2V0VG90YWxDb250ZW50c1NpemVGb3JSdWJi
ZXJCYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpz
eW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OnNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRp
b25TeW5jaHJvbm91c2x5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlOjp2aWV3cG9ydFNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OmZyYW1lU2NhbGVGYWN0b3IpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OmhlYWRlckhl
aWdodCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZTo6Zm9vdGVySGVpZ2h0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlOjpzY3JvbGxCZWhhdmlvckZvckZpeGVkRWxlbWVudHMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OnRvcENv
bnRlbnRJbnNldCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9s
bGluZ0Nvb3JkaW5hdG9ySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRp
bmF0b3JJT1M6OmNyZWF0ZVNjcm9sbGluZ1RyZWVOb2RlKToKKyAgICAgICAgKiBwYWdlL3Njcm9s
bGluZy9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUy5oOiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlSU9TLmguCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxp
bmdOb2RlSU9TOjpzY3JvbGxMYXllcik6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvaW9zL1Nj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1MubW06IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1Mu
bW0uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9T
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZUlPUzo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUyk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TOjp+U2Nyb2xsaW5nVHJl
ZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlSU9TOjp1cGRhdGVCZWZvcmVDaGlsZHJlbik6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TOjp1cGRhdGVBZnRlckNo
aWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVJT1M6OnNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVJT1M6OnNldFNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1M6OnNldFNjcm9sbFBvc2l0aW9u
V2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUzo6c2V0U2Nyb2xsTGF5ZXJQb3NpdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TOjp1cGRh
dGVMYXllcnNBZnRlclZpZXdwb3J0Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1M6OnVwZGF0ZUxheWVyc0FmdGVyRGVsZWdhdGVkU2Ny
b2xsKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJ
T1M6OnVwZGF0ZUNoaWxkTm9kZXNBZnRlclNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TOjptaW5pbXVtU2Nyb2xsUG9zaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUzo6bWF4
aW11bVNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGVJT1M6OnNjcm9sbEJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1M6OnNjcm9sbEJ5V2l0aG91dENvbnRlbnRFZGdlQ29u
c3RyYWludHMpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGlu
YXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjpj
cmVhdGVTY3JvbGxpbmdUcmVlTm9kZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Nj
cm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZU1h
Yy5tbS4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2Rl
OjpzZXRTY3JvbGxiYXJQYWludGVyc0Zyb21TY3JvbGxiYXJzKToKKyAgICAgICAgKiBwYWdlL3Nj
cm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlTWFjLmguCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW06IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWMubW0uCisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYyk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjp+U2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZU1hYyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlTWFjOjp1cGRhdGVCZWZvcmVDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjp1cGRhdGVBZnRlckNoaWxkcmVuKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6Omhh
bmRsZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZU1hYzo6YWxsb3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6YWxsb3dzVmVydGljYWxT
dHJldGNoaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVNYWM6OnN0cmV0Y2hBbW91bnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJl
ZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6cGlubmVkSW5EaXJlY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6Y2FuU2Nyb2xsSG9yaXpv
bnRhbGx5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVNYWM6OmNhblNjcm9sbFZlcnRpY2FsbHkpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6c2hvdWxkUnViYmVyQmFuZEluRGlyZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6OmFi
c29sdXRlU2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZU1hYzo6aW1tZWRpYXRlU2Nyb2xsQnkpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6aW1tZWRpYXRlU2Nyb2xsQnlX
aXRob3V0Q29udGVudEVkZ2VDb25zdHJhaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjpzdGFydFNuYXBSdWJiZXJiYW5kVGltZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6c3Rv
cFNuYXBSdWJiZXJiYW5kVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZU1hYzo6YWRqdXN0U2Nyb2xsUG9zaXRpb25Ub0JvdW5kc0lmTmVjZXNz
YXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVN
YWM6OnNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGVNYWM6OnNldFNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6OnNldFNjcm9sbFBvc2l0aW9uV2l0
aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6c2V0U2Nyb2xsTGF5ZXJQb3NpdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjp1cGRhdGVM
YXllcnNBZnRlclZpZXdwb3J0Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6Om1pbmltdW1TY3JvbGxQb3NpdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjptYXhpbXVtU2Ny
b2xsUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZU1hYzo6c2Nyb2xsQnkpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZU1hYzo6c2Nyb2xsQnlXaXRob3V0Q29udGVudEVkZ2VDb25zdHJhaW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFj
Ojp1cGRhdGVNYWluRnJhbWVQaW5TdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjpsb2dFeHBvc2VkVW5maWxsZWRBcmVhKToKKyAgICAg
ICAgKFdlYkNvcmU6OmxvZ1RocmVhZGVkU2Nyb2xsaW5nTW9kZSk6CisgICAgICAgIChXZWJDb3Jl
Ojpsb2dXaGVlbEV2ZW50SGFuZGxlckNvdW50Q2hhbmdlZCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OnVwZGF0ZVNjcm9sbENvb3JkaW5hdGVkTGF5ZXIpOgorCiAyMDE0LTA1LTE2
ICBNYXJ0aW4gSG9jayAgPG1ob2NrQGFwcGxlLmNvbT4KIAogICAgICAgICBNZW1vcnlDYWNoZTo6
YWRkSW1hZ2VUb0NhY2hlIHNob3VsZCByZXR1cm4gdGhlIHJlc3VsdCBvZiBhZGQoKS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwppbmRleCAxNGI2ZDc4NmU5YmY0YjgyMTAzNDVjNmNjMDRiODFmZDNmOWE5YzUxLi4zM2MwYjc0
MzUxOWI5OGY0NDVmZWNhOGVkYmI5YjkwNzRmMTY0YzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NDUgQEAKKzIwMTQtMDUtMTYgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+
CisKKyAgICAgICAgU3BsaXQgc2Nyb2xsaW5nIHRyZWUgU2Nyb2xsaW5nTm9kZXMgaW50byBGcmFt
ZVNjcm9sbGluZ05vZGVzIGFuZCBPdmVyZmxvd1Njcm9sbGluZ05vZGVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzMwMjIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEluIGJvdGggdGhlIHNj
cm9sbGluZyBzdGF0ZSB0cmVlIGFuZCB0aGUgc2Nyb2xsaW5nIHRyZWUsIHNwbGl0IHRoZSAic2Ny
b2xsaW5nIG5vZGVzIgorICAgICAgICBpbnRvIEZyYW1lU2Nyb2xsaW5nIGFuZCBPdmVyZmxvd1Nj
cm9sbGluZyBub2Rlcy4KKyAgICAgICAgCisgICAgICAgIE1vdmUgd2hhdCB3YXMgdGhlICJ2aWV3
cG9ydFNpemUiIHByb3BlcnR5IG9udG8gdGhlIGJhc2UgY2xhc3MgZm9yIHRoZSBzY3JvbGxpbmcK
KyAgICAgICAgbm9kZXMsIGNhbGxpbmcgaXQgInNjcm9sbGFibGVBcmVhU2l6ZSIuCisgICAgICAg
IAorICAgICAgICBNYWtlIG1pbmltdW0vbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgdmlydHVhbCBz
byB3ZSBjYW4gc2hhcmUgbW9yZSBjb2RlIChhbmQgdGhlcmUKKyAgICAgICAgaXMgbW9yZSBjb2Rl
IHNoYXJpbmcgdG8gYmUgZG9uZSBpbiBmdXR1cmUpLgorCisgICAgICAgICogU2hhcmVkL1Njcm9s
bGluZy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAg
KEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlPjo6ZW5jb2RlKToKKyAg
ICAgICAgKEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU+Ojpl
bmNvZGUpOgorICAgICAgICAoQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZT46OmVuY29kZSk6CisgICAgICAgIChBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZT46OmRlY29kZSk6CisgICAgICAgIChBcmd1bWVudENvZGVyPFNjcm9s
bGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlPjo6ZGVjb2RlKToKKyAgICAgICAgKEFyZ3VtZW50
Q29kZXI8U2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGU+OjpkZWNvZGUpOgorICAg
ICAgICAoV2ViS2l0OjplbmNvZGVOb2RlQW5kRGVzY2VuZGFudHMpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uOjpkZWNvZGUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdUcmVlVGV4dFN0cmVhbTo6ZHVtcCk6CisgICAgICAg
ICogVUlQcm9jZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6Y29u
bmVjdFN0YXRlTm9kZUxheWVycyk6CisgICAgICAgICogVUlQcm9jZXNzL1Njcm9sbGluZy9SZW1v
dGVTY3JvbGxpbmdUcmVlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5nVHJl
ZTo6Y3JlYXRlTm9kZSk6CisgICAgICAgICogVUlQcm9jZXNzL1Njcm9sbGluZy9pb3MvU2Nyb2xs
aW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5oOgorICAgICAgICAoV2ViS2l0OjpTY3Jv
bGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjpzY3JvbGxMYXllcik6CisgICAgICAg
IChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6OnVwZGF0ZUxh
eWVyc0FmdGVyVmlld3BvcnRDaGFuZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TY3JvbGxpbmcv
aW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW06CisgICAgICAgIChX
ZWJLaXQ6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6OlNjcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MpOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjp1cGRhdGVCZWZvcmVDaGlsZHJlbik6CisgICAg
ICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6OnVwZGF0
ZUFmdGVyQ2hpbGRyZW4pOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlSU9TOjpzZXRTY3JvbGxMYXllclBvc2l0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6dXBkYXRlQ2hpbGROb2Rl
c0FmdGVyU2Nyb2xsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1JlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yUHJveHk6OmNvbm5lY3RTdGF0ZU5vZGVMYXllcnMpOgorCiAyMDE0LTA1LTE2ICBN
YXJ0aW4gSG9kb3ZhbiAgPG1ob2RvdmFuLnUtc3plZ2VkQHBhcnRuZXIuc2Ftc3VuZy5jb20+CiAK
ICAgICAgICAgW1dLMl0gQ2hhbmdlIHRoZSByZW1haW5pbmcgZnJhbWV3b3JrIGluY2x1ZGVzIGZy
b20gV2ViS2l0MiB0byBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3Vy
YXRpb25zL1dlYkNvcmUueGNjb25maWcgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9X
ZWJDb3JlLnhjY29uZmlnCmluZGV4IGYyMjljNTRhYTY1NzFiNjYzZDllM2I0ZDBlOWQxMDM4M2Fj
NGFhODAuLjA1MTUwODAyOTNjNDRhMjNlNzBlM2M1MzcwMGQxNjc4Y2ZhOThiMGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNjb25maWcKKysrIGIv
U291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2NvbmZpZwpAQCAtMTEyLDYg
KzExMiw2IEBAIEpBVkFTQ1JJUFRDT1JFX1BSSVZBVEVfSEVBREVSU19ESVJfUHJvZHVjdGlvbl9t
YWNvc3ggPSAkKFNES1JPT1QpJChQUk9EVUNUSU9OX0ZSCiBKQVZBU0NSSVBUQ09SRV9QUklWQVRF
X0hFQURFUlNfZW5naW5lZXJpbmcgPSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvSmF2YVNjcmlwdENv
cmUuZnJhbWV3b3JrL1ByaXZhdGVIZWFkZXJzOwogCiBFWENMVURFRF9TT1VSQ0VfRklMRV9OQU1F
UyA9ICQoRVhDTFVERURfU09VUkNFX0ZJTEVfTkFNRVNfJChQTEFURk9STV9OQU1FKSk7Ci1FWENM
VURFRF9TT1VSQ0VfRklMRV9OQU1FU19pcGhvbmVvcyA9ICoudGlmZiAqQ3Vyc29yLnBuZyBBY2Nl
c3NpYmlsaXR5T2JqZWN0TWFjLm1tIEFYT2JqZWN0Q2FjaGVNYWMubW0gQ29sb3JNYWMubW0gQ3Vy
c29yLmNwcCBDdXJzb3JNYWMubW0gRGF0YVRyYW5zZmVyTWFjLm1tIEVkaXRvck1hYy5tbSBFdmVu
dEhhbmRsZXJNYWMubW0gRXZlbnRMb29wTWFjLm1tIEdlb2xvY2F0aW9uU2VydmljZU1hYy5tbSBH
cmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcCBJY29uRGF0YWJhc2UuY3BwIEljb25NYWMubW0g
S2lsbFJpbmdNYWMubW0gTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0Lm1tIE1JTUVUeXBlUmVn
aXN0cnlNYWMubW0gTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0gTlNTY3JvbGxlckltcERldGFp
bHMubW0gTmV0d29ya1N0YXRlTm90aWZpZXJNYWMuY3BwIFBhc3RlYm9hcmRNYWMubW0gUGxhdGZv
cm1FdmVudEZhY3RvcnlNYWMubW0gUGxhdGZvcm1Nb3VzZUV2ZW50TWFjLm1tIFBsYXRmb3JtUGFz
dGVib2FyZE1hYy5tbSBQbGF0Zm9ybVNjcmVlbk1hYy5tbSBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyTWFjLm1tIFBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXIuY3BwIFJ1bkxvb3BNYWMubW0gU1NM
S2V5R2VuZXJhdG9yTWFjLmNwcCBTY3JvbGxpbmdDb29yZGluYXRvck1hYy5tbSBTY3JvbGxpbmdT
dGF0ZVNjcm9sbGluZ05vZGVNYWMubW0gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWMubW0g
U2Nyb2xsVmlld01hYy5tbSBTY3JvbGxiYXJUaGVtZU1hYy5tbSBTaGFyZWRUaW1lck1hYy5tbSBT
b3VuZE1hYy5tbSBTeXN0ZW1UaW1lTWFjLmNwcCBUaGVtZU1hYy5tbSBUaHJlYWRDaGVjay5tbSBV
c2VyQWdlbnRNYWMubW0gV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gV2ViQ29y
ZVN5c3RlbUludGVyZmFjZS5tbSBXZWJDb3JlVVJMUmVzcG9uc2UubW0gV2ViQ29yZVZpZXcubSBX
ZWJGb250Q2FjaGUubW0gV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbSBXZWJWaWRlb0Z1
bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tIFdlYldpbmRvd0FuaW1hdGlvbi5tbSBXaWRn
ZXRNYWMubW0gbWFjL0xheWVyUG9vbC5tbSBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwOwor
RVhDTFVERURfU09VUkNFX0ZJTEVfTkFNRVNfaXBob25lb3MgPSAqLnRpZmYgKkN1cnNvci5wbmcg
QWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbSBBWE9iamVjdENhY2hlTWFjLm1tIENvbG9yTWFjLm1t
IEN1cnNvci5jcHAgQ3Vyc29yTWFjLm1tIERhdGFUcmFuc2Zlck1hYy5tbSBFZGl0b3JNYWMubW0g
RXZlbnRIYW5kbGVyTWFjLm1tIEV2ZW50TG9vcE1hYy5tbSBHZW9sb2NhdGlvblNlcnZpY2VNYWMu
bW0gR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUy5jcHAgSWNvbkRhdGFiYXNlLmNwcCBJY29uTWFj
Lm1tIEtpbGxSaW5nTWFjLm1tIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5tbSBNSU1FVHlw
ZVJlZ2lzdHJ5TWFjLm1tIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tIE5TU2Nyb2xsZXJJbXBE
ZXRhaWxzLm1tIE5ldHdvcmtTdGF0ZU5vdGlmaWVyTWFjLmNwcCBQYXN0ZWJvYXJkTWFjLm1tIFBs
YXRmb3JtRXZlbnRGYWN0b3J5TWFjLm1tIFBsYXRmb3JtTW91c2VFdmVudE1hYy5tbSBQbGF0Zm9y
bVBhc3RlYm9hcmRNYWMubW0gUGxhdGZvcm1TY3JlZW5NYWMubW0gUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplck1hYy5tbSBQbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyLmNwcCBSdW5Mb29wTWFjLm1t
IFNTTEtleUdlbmVyYXRvck1hYy5jcHAgU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW0gU2Nyb2xs
Vmlld01hYy5tbSBTY3JvbGxiYXJUaGVtZU1hYy5tbSBTaGFyZWRUaW1lck1hYy5tbSBTb3VuZE1h
Yy5tbSBTeXN0ZW1UaW1lTWFjLmNwcCBUaGVtZU1hYy5tbSBUaHJlYWRDaGVjay5tbSBVc2VyQWdl
bnRNYWMubW0gV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gV2ViQ29yZVN5c3Rl
bUludGVyZmFjZS5tbSBXZWJDb3JlVVJMUmVzcG9uc2UubW0gV2ViQ29yZVZpZXcubSBXZWJGb250
Q2FjaGUubW0gV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbSBXZWJWaWRlb0Z1bGxzY3Jl
ZW5IVURXaW5kb3dDb250cm9sbGVyLm1tIFdlYldpbmRvd0FuaW1hdGlvbi5tbSBXaWRnZXRNYWMu
bW0gbWFjL0xheWVyUG9vbC5tbSBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwOwogRVhDTFVE
RURfU09VUkNFX0ZJTEVfTkFNRVNfaXBob25lc2ltdWxhdG9yID0gJChFWENMVURFRF9TT1VSQ0Vf
RklMRV9OQU1FU19pcGhvbmVvcyk7CiBFWENMVURFRF9TT1VSQ0VfRklMRV9OQU1FU19tYWNvc3gg
PSAqSU9TLmggKklPUy5jcHAgKklPUy5tbSBKU1RvdWNoKiBKU0dlc3R1cmUqIERPTUdlc3R1cmUq
IERPTVRvdWNoKiBLaWxsUmluZ05vbmUuY3BwIFdBS0FwcEtpdFN0dWJzLmggV0FLQ2xpcFZpZXcu
aCBXQUtSZXNwb25kZXIuaCBXQUtTY3JvbGxWaWV3LmggV0FLVmlldy5oIFdBS1ZpZXdQcml2YXRl
LmggV0FLV2luZG93LmggV0tDb250ZW50T2JzZXJ2YXRpb24uaCBXS0dyYXBoaWNzLmggV0tUeXBl
cy5oIFdLVXRpbGl0aWVzLmggV0tWaWV3LmggV0tWaWV3UHJpdmF0ZS5oIFdlYkNvcmVUaHJlYWQu
aCBXZWJDb3JlVGhyZWFkTWVzc2FnZS5oIFdlYkNvcmVUaHJlYWRSdW4uaCBXZWJDb3JlVGhyZWFk
U3lzdGVtSW50ZXJmYWNlLmg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGNhODlkMmQ1NTM3MTUz
OWU2ZTg3OWNmMWZhMDFmNmIwZmE5ZWIzMjMuLjIyNTM3YzJmMTk3ZGRkZmM5YzBiMzIyYzRjNThi
ZmJmOWU4ZGViZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0yODAyLDEwICsyODAyLDExIEBA
IF9fWk43V2ViQ29yZTI1QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjE0Y2xlYXJTdGF0ZVRyZWVF
dgogX19aTjdXZWJDb3JlMjVBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yMTdhdHRhY2hUb1N0YXRl
VHJlZUVOU18xN1Njcm9sbGluZ05vZGVUeXBlRXl5CiBfX1pON1dlYkNvcmUyNUFzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3IxOHN5bmNDaGlsZFBvc2l0aW9uc0VSS05TXzEwTGF5b3V0UmVjdEUKIF9f
Wk43V2ViQ29yZTI1QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjE5ZGV0YWNoRnJvbVN0YXRlVHJl
ZUV5Ci1fX1pON1dlYkNvcmUyNUFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IxOXVwZGF0ZVNjcm9s
bGluZ05vZGVFeVBOU18xM0dyYXBoaWNzTGF5ZXJFUzJfUzJfUzJfUEtOU18yMFNjcm9sbGluZ0Nv
b3JkaW5hdG9yMTdTY3JvbGxpbmdHZW9tZXRyeUUKIF9fWk43V2ViQ29yZTI1QXN5bmNTY3JvbGxp
bmdDb29yZGluYXRvcjIyZnJhbWVWaWV3TGF5b3V0VXBkYXRlZEVQTlNfOUZyYW1lVmlld0UKK19f
Wk43V2ViQ29yZTI1QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjI0dXBkYXRlRnJhbWVTY3JvbGxp
bmdOb2RlRXlQTlNfMTNHcmFwaGljc0xheWVyRVMyX1MyX1BLTlNfMjBTY3JvbGxpbmdDb29yZGlu
YXRvcjE3U2Nyb2xsaW5nR2VvbWV0cnlFCiBfX1pON1dlYkNvcmUyNUFzeW5jU2Nyb2xsaW5nQ29v
cmRpbmF0b3IyN2ZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZUVQTlNfOUZyYW1lVmlld0UKIF9f
Wk43V2ViQ29yZTI1QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjI3cmVxdWVzdFNjcm9sbFBvc2l0
aW9uVXBkYXRlRVBOU185RnJhbWVWaWV3RVJLTlNfOEludFBvaW50RQorX19aTjdXZWJDb3JlMjVB
c3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yMjd1cGRhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGVFeVBO
U18xM0dyYXBoaWNzTGF5ZXJFUzJfUEtOU18yMFNjcm9sbGluZ0Nvb3JkaW5hdG9yMTdTY3JvbGxp
bmdHZW9tZXRyeUUKIF9fWk43V2ViQ29yZTI1QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjI5dXBk
YXRlVmlld3BvcnRDb25zdHJhaW5lZE5vZGVFeVJLTlNfMTlWaWV3cG9ydENvbnN0cmFpbnRzRVBO
U18xM0dyYXBoaWNzTGF5ZXJFCiBfX1pON1dlYkNvcmUyNUFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0
b3IzMHNldFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uc0VqCiBfX1pON1dlYkNvcmUyNUFzeW5j
U2Nyb2xsaW5nQ29vcmRpbmF0b3IzN3Njcm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJEaWRDaGFu
Z2VFUE5TXzE0U2Nyb2xsYWJsZUFyZWFFTlNfMjBTY3JvbGxiYXJPcmllbnRhdGlvbkUKQEAgLTI4
MTQsNDMgKzI4MTUsNDMgQEAgX19aTjdXZWJDb3JlMjVBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9y
NDNyZWNvbXB1dGVXaGVlbEV2ZW50SGFuZGxlckNvdW50Rm9yRnJhbWUKIF9fWk43V2ViQ29yZTI1
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjQ0c2NoZWR1bGVVcGRhdGVTY3JvbGxQb3NpdGlvbkFm
dGVyQXN5bmNTY3JvbGxFeVJLTlNfMTBGbG9hdFBvaW50RWJOU18zMVNldE9yU3luY1Njcm9sbGlu
Z0xheWVyUG9zaXRpb25FCiBfX1pON1dlYkNvcmUyNUFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3JD
MkVQTlNfNFBhZ2VFCiBfX1pON1dlYkNvcmUyNUFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3JEMkV2
Ci1fX1pON1dlYkNvcmUyN1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTE0c2V0Rm9vdGVyTGF5
ZXJFUktOU18xOUxheWVyUmVwcmVzZW50YXRpb25FCi1fX1pON1dlYkNvcmUyN1Njcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZTE0c2V0SGVhZGVyTGF5ZXJFUktOU18xOUxheWVyUmVwcmVzZW50YXRp
b25FCi1fX1pON1dlYkNvcmUyN1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTE1c2V0Rm9vdGVy
SGVpZ2h0RWkKLV9fWk43V2ViQ29yZTI3U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlMTVzZXRI
ZWFkZXJIZWlnaHRFaQorX19aTjdXZWJDb3JlMjZTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTE3
c2V0U2Nyb2xsUG9zaXRpb25FUktOU18xMEZsb2F0UG9pbnRFCitfX1pON1dlYkNvcmUyNlNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlMTl1cGRhdGVBZnRlckNoaWxkcmVuRVJLTlNfMThTY3JvbGxp
bmdTdGF0ZU5vZGVFCitfX1pON1dlYkNvcmUyNlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlMjB1
cGRhdGVCZWZvcmVDaGlsZHJlbkVSS05TXzE4U2Nyb2xsaW5nU3RhdGVOb2RlRQorX19aTjdXZWJD
b3JlMjZTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTQ2c2V0U2Nyb2xsUG9zaXRpb25XaXRob3V0
Q29udGVudEVkZ2VDb25zdHJhaW50c0VSS05TXzEwRmxvYXRQb2ludEUKIF9fWk43V2ViQ29yZTI3
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlMTVzZXRTY3JvbGxPcmlnaW5FUktOU184SW50UG9p
bnRFCi1fX1pON1dlYkNvcmUyN1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTE1c2V0Vmlld3Bv
cnRTaXplRVJLTlNfOUZsb2F0U2l6ZUUKLV9fWk43V2ViQ29yZTI3U2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlMTdzZXRJbnNldENsaXBMYXllckVSS05TXzE5TGF5ZXJSZXByZXNlbnRhdGlvbkUK
IF9fWk43V2ViQ29yZTI3U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlMTdzZXRTY3JvbGxQb3Np
dGlvbkVSS05TXzEwRmxvYXRQb2ludEUKLV9fWk43V2ViQ29yZTI3U2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlMThzZXRUb3BDb250ZW50SW5zZXRFZgotX19aTjdXZWJDb3JlMjdTY3JvbGxpbmdT
dGF0ZVNjcm9sbGluZ05vZGUxOXNldEZyYW1lU2NhbGVGYWN0b3JFZgotX19aTjdXZWJDb3JlMjdT
Y3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUyMHNldFRvdGFsQ29udGVudHNTaXplRVJLTlNfN0lu
dFNpemVFCi1fX1pON1dlYkNvcmUyN1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTIxc2V0Q29u
dGVudFNoYWRvd0xheWVyRVJLTlNfMTlMYXllclJlcHJlc2VudGF0aW9uRQotX19aTjdXZWJDb3Jl
MjdTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUyNHNldENvdW50ZXJTY3JvbGxpbmdMYXllckVS
S05TXzE5TGF5ZXJSZXByZXNlbnRhdGlvbkUKLV9fWk43V2ViQ29yZTI3U2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlMjRzZXRTY3JvbGxlZENvbnRlbnRzTGF5ZXJFUktOU18xOUxheWVyUmVwcmVz
ZW50YXRpb25FCi1fX1pON1dlYkNvcmUyN1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTI1c2V0
V2hlZWxFdmVudEhhbmRsZXJDb3VudEVqCi1fX1pON1dlYkNvcmUyN1Njcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZTI2c2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb25FUktOU182UmVnaW9uRQorX19a
TjdXZWJDb3JlMjdTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUyMHNldFRvdGFsQ29udGVudHNT
aXplRVJLTlNfOUZsb2F0U2l6ZUUKK19fWk43V2ViQ29yZTI3U2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlMjFzZXRTY3JvbGxhYmxlQXJlYVNpemVFUktOU185RmxvYXRTaXplRQogX19aTjdXZWJD
b3JlMjdTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUyNnNldFJlcXVlc3RlZFNjcm9sbFBvc2l0
aW9uRVJLTlNfMTBGbG9hdFBvaW50RWIKIF9fWk43V2ViQ29yZTI3U2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlMjdzZXRTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnNFUktOU18yNFNjcm9sbGFibGVB
cmVhUGFyYW1ldGVyc0UKLV9fWk43V2ViQ29yZTI3U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2Rl
MzBzZXRTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnNFagotX19aTjdXZWJDb3JlMjdTY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGUzM3NldFNjcm9sbEJlaGF2aW9yRm9yRml4ZWRFbGVtZW50c0VO
U18zMFNjcm9sbEJlaGF2aW9yRm9yRml4ZWRFbGVtZW50c0UKK19fWk43V2ViQ29yZTMyU2Nyb2xs
aW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUxNHNldEZvb3RlckxheWVyRVJLTlNfMTlMYXllclJl
cHJlc2VudGF0aW9uRQorX19aTjdXZWJDb3JlMzJTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5n
Tm9kZTE0c2V0SGVhZGVyTGF5ZXJFUktOU18xOUxheWVyUmVwcmVzZW50YXRpb25FCitfX1pON1dl
YkNvcmUzMlNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlMTVzZXRGb290ZXJIZWlnaHRF
aQorX19aTjdXZWJDb3JlMzJTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTE1c2V0SGVh
ZGVySGVpZ2h0RWkKK19fWk43V2ViQ29yZTMyU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05v
ZGUxN3NldEluc2V0Q2xpcExheWVyRVJLTlNfMTlMYXllclJlcHJlc2VudGF0aW9uRQorX19aTjdX
ZWJDb3JlMzJTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTE4c2V0VG9wQ29udGVudElu
c2V0RWYKK19fWk43V2ViQ29yZTMyU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUxOXNl
dEZyYW1lU2NhbGVGYWN0b3JFZgorX19aTjdXZWJDb3JlMzJTY3JvbGxpbmdTdGF0ZUZyYW1lU2Ny
b2xsaW5nTm9kZTIxc2V0Q29udGVudFNoYWRvd0xheWVyRVJLTlNfMTlMYXllclJlcHJlc2VudGF0
aW9uRQorX19aTjdXZWJDb3JlMzJTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTI0c2V0
Q291bnRlclNjcm9sbGluZ0xheWVyRVJLTlNfMTlMYXllclJlcHJlc2VudGF0aW9uRQorX19aTjdX
ZWJDb3JlMzJTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTI1c2V0V2hlZWxFdmVudEhh
bmRsZXJDb3VudEVqCitfX1pON1dlYkNvcmUzMlNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdO
b2RlMjZzZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbkVSS05TXzZSZWdpb25FCitfX1pON1dlYkNv
cmUzMlNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlMzBzZXRTeW5jaHJvbm91c1Njcm9s
bGluZ1JlYXNvbnNFagorX19aTjdXZWJDb3JlMzJTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5n
Tm9kZTMzc2V0U2Nyb2xsQmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzRU5TXzMwU2Nyb2xsQmVoYXZp
b3JGb3JGaXhlZEVsZW1lbnRzRQorX19aTjdXZWJDb3JlMzRTY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlQzJFUk5TXzEzU2Nyb2xsaW5nVHJlZUV5CitfX1pON1dlYkNvcmUzNFNjcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVEMkV2CitfX1pON1dlYkNvcmUzNVNjcm9sbGlu
Z1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlMjRzZXRTY3JvbGxlZENvbnRlbnRzTGF5ZXJFUktO
U18xOUxheWVyUmVwcmVzZW50YXRpb25FCiBfX1pOSzdXZWJDb3JlMjVBc3luY1Njcm9sbGluZ0Nv
b3JkaW5hdG9yMjRzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRFdgorX19aTks3V2ViQ29yZTI2U2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGUyMW1heGltdW1TY3JvbGxQb3NpdGlvbkV2CitfX1pOSzdX
ZWJDb3JlMjZTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTIxbWluaW11bVNjcm9sbFBvc2l0aW9u
RXYKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgUExBVEZPUk0oTUFD
KQotX19aTjdXZWJDb3JlMjlTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZU1hYzZjcmVhdGVFUk5T
XzEzU2Nyb2xsaW5nVHJlZUVOU18xN1Njcm9sbGluZ05vZGVUeXBlRXkKK19fWk43V2ViQ29yZTM0
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzZjcmVhdGVFUk5TXzEzU2Nyb2xsaW5n
VHJlZUV5CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFBMQVRGT1JN
KElPUykKLV9fWk43V2ViQ29yZTI5U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1MxN3NldFNj
cm9sbFBvc2l0aW9uRVJLTlNfMTBGbG9hdFBvaW50RQotX19aTjdXZWJDb3JlMjlTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZUlPUzE5dXBkYXRlQWZ0ZXJDaGlsZHJlbkVSS05TXzE4U2Nyb2xsaW5n
U3RhdGVOb2RlRQotX19aTjdXZWJDb3JlMjlTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUzIw
dXBkYXRlQmVmb3JlQ2hpbGRyZW5FUktOU18xOFNjcm9sbGluZ1N0YXRlTm9kZUUKLV9fWk43V2Vi
Q29yZTI5U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1MzMXVwZGF0ZUxheWVyc0FmdGVyVmll
d3BvcnRDaGFuZ2VFUktOU185RmxvYXRSZWN0RWQKLV9fWk43V2ViQ29yZTI5U2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVJT1MzMnVwZGF0ZUxheWVyc0FmdGVyRGVsZWdhdGVkU2Nyb2xsRVJLTlNf
MTBGbG9hdFBvaW50RQotX19aTjdXZWJDb3JlMjlTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlP
UzQ2c2V0U2Nyb2xsUG9zaXRpb25XaXRob3V0Q29udGVudEVkZ2VDb25zdHJhaW50c0VSS05TXzEw
RmxvYXRQb2ludEUKLV9fWk43V2ViQ29yZTI5U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1M2
Y3JlYXRlRVJOU18xM1Njcm9sbGluZ1RyZWVFTlNfMTdTY3JvbGxpbmdOb2RlVHlwZUV5Ci1fX1pO
N1dlYkNvcmUyOVNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TQzJFUk5TXzEzU2Nyb2xsaW5n
VHJlZUVOU18xN1Njcm9sbGluZ05vZGVUeXBlRXkKLV9fWk43V2ViQ29yZTI5U2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVJT1NEMkV2CitfX1pON1dlYkNvcmUzNFNjcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVJT1M2Y3JlYXRlRVJOU18xM1Njcm9sbGluZ1RyZWVFeQogI2VuZGlmCiAKICNp
ZiBVU0UoQVZGT1VOREFUSU9OKQpAQCAtMzIxOSw3ICszMjIwLDkgQEAgX19aTjdXZWJDb3JlMTZT
Y3JpcHRDb250cm9sbGVyMTZjcmVhdGVSb290T2JqZWN0RVB2CiAKICNpZiBFTkFCTEUoUE9JTlRF
Ul9MT0NLKQogX19aTjdXZWJDb3JlMTBNb3VzZUV2ZW50NmNyZWF0ZUVSS04zV1RGMTJBdG9taWNT
dHJpbmdFYmJkTlMxXzEwUGFzc1JlZlB0cklOU185RE9NV2luZG93RUVFaWlpaWlpaWJiYmJ0TlM1
X0lOU18xMUV2ZW50VGFyZ2V0RUVFTlM1X0lOU18xMkRhdGFUcmFuc2ZlckVFRWIKLSNlbHNlCisj
ZW5kaWYKKworI2lmICFFTkFCTEUoUE9JTlRFUl9MT0NLKQogX19aTjdXZWJDb3JlMTBNb3VzZUV2
ZW50NmNyZWF0ZUVSS04zV1RGMTJBdG9taWNTdHJpbmdFYmJkTlMxXzEwUGFzc1JlZlB0cklOU185
RE9NV2luZG93RUVFaWlpaWliYmJidE5TNV9JTlNfMTFFdmVudFRhcmdldEVFRU5TNV9JTlNfMTJE
YXRhVHJhbnNmZXJFRUViCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg2MTc1ZjJiYWVmMTIxZTRlYjVmYjZjZmZl
ZmRhNWQyNTA5OTkzM2MuLmVhMjlhODE4MWUzOTE2YThkYTlmMzYwZjhmZGRmYWVmMmRiYjBmOTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTUyMCw3ICs1MjAsNyBAQAogCQkwRjk3QTY1ODE1NURBODFFMDBGQURENEMgLyogRGlz
cGxheVJlZnJlc2hNb25pdG9ySU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY5N0E2NTcxNTVEQTgxRTAwRkFERDRDIC8qIERpc3BsYXlSZWZyZXNo
TW9uaXRvcklPUy5tbSAqLzsgfTsKIAkJMEZBMjRENzkxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBo
aWNzTGF5ZXJVcGRhdGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGQTI0RDc3MTYyREY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRl
ci5jcHAgKi87IH07CiAJCTBGQTI0RDdBMTYyREY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVy
VXBkYXRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZBMjRENzgxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMEZBODhFQkQxNkE4
RDFCRDAwRjk5OTg0IC8qIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZU1hYy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTg4RUJDMTZBOEQxQkQw
MEY5OTk4NCAvKiBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGVNYWMubW0gKi87IH07CisJCTBG
QTg4RUJEMTZBOEQxQkQwMEY5OTk4NCAvKiBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9k
ZU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
QTg4RUJDMTZBOEQxQkQwMEY5OTk4NCAvKiBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9k
ZU1hYy5tbSAqLzsgfTsKIAkJMEZCNjI1MkUxOERFMUIxNTAwQTA3QzA1IC8qIEdlb21ldHJ5VXRp
bGl0aWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGQjYyNTJDMThERTFCMTUwMEEwN0MwNSAvKiBHZW9tZXRyeVV0aWxpdGllcy5jcHAgKi87IH07
CiAJCTBGQjYyNTJGMThERTFCMTUwMEEwN0MwNSAvKiBHZW9tZXRyeVV0aWxpdGllcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNjI1MkQxOERFMUIx
NTAwQTA3QzA1IC8qIEdlb21ldHJ5VXRpbGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZCODg5MEExNjdEMkZBMTAwMTBDREE1IC8qIFNj
cm9sbGluZ1RyZWVTdGlja3lOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkI4ODkwODE2N0QyRkExMDAxMENEQTUgLyogU2Nyb2xsaW5nVHJlZVN0
aWNreU5vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtNTMxLDggKzUzMSw4IEBACiAJCTBGQzRFNDBFMTg3RjgyRTEwMDQ1ODgyQyAvKiBTY3Jv
bGxpbmdDb29yZGluYXRvcklPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGQzRFNDA4MTg3RjgyRTEwMDQ1ODgyQyAvKiBTY3JvbGxpbmdDb29yZGlu
YXRvcklPUy5tbSAqLzsgfTsKIAkJMEZDNEU0MEYxODdGODJFMTAwNDU4ODJDIC8qIFNjcm9sbGlu
Z1RyZWVJT1MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZDNEU0MDkxODdGODJFMTAwNDU4ODJDIC8qIFNjcm9sbGluZ1RyZWVJT1MuY3BwICovOyB9
OwogCQkwRkM0RTQxMDE4N0Y4MkUxMDA0NTg4MkMgLyogU2Nyb2xsaW5nVHJlZUlPUy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDNEU0MEExODdGODJF
MTAwNDU4ODJDIC8qIFNjcm9sbGluZ1RyZWVJT1MuaCAqLzsgfTsKLQkJMEZDNEU0MTExODdGODJF
MTAwNDU4ODJDIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkM0RTQwQjE4N0Y4MkUxMDA0NTg4
MkMgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1MuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwRkM0RTQxMjE4N0Y4MkUxMDA0NTg4MkMg
LyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkM0RTQwQzE4N0Y4MkUxMDA0NTg4MkMgLyogU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1MubW0gKi87IH07CisJCTBGQzRFNDExMTg3RjgyRTEw
MDQ1ODgyQyAvKiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkM0RTQwQjE4N0Y4MkUxMDA0
NTg4MkMgLyogU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGQzRFNDEyMTg3RjgyRTEw
MDQ1ODgyQyAvKiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDNEU0MEMxODdGODJFMTAw
NDU4ODJDIC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1MubW0gKi87IH07CiAJ
CTBGQ0YzMzI0MEYyQjk3MTUwMDRCNjc5NSAvKiBDb2xvckNHLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQ0YzMzIzMEYyQjk3MTUwMDRCNjc5NSAv
KiBDb2xvckNHLmNwcCAqLzsgfTsKIAkJMEZDRjMzMkUwRjJCOUEyNTAwNEI2Nzk1IC8qIFdlYkxh
eWVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZD
RjMzMkEwRjJCOUEyNTAwNEI2Nzk1IC8qIFdlYkxheWVyLm1tICovOyB9OwogCQkwRkNGMzMyRjBG
MkI5QTI1MDA0QjY3OTUgLyogV2ViTGF5ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGQ0YzMzJCMEYyQjlBMjUwMDRCNjc5NSAvKiBXZWJMYXllci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01NTYs
NiArNTU2LDE0IEBACiAJCTBGREE3QzI3MTg4MzMzMzIwMEM5NTRCNSAvKiBKU1dlYktpdFBsYXli
YWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGREE3QzI1MTg4MzMzMzIwMEM5NTRCNSAvKiBKU1dlYktpdFBs
YXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuaCAqLzsgfTsKIAkJMEZFNzE0MDUxNDIxNzBC
ODAwREIzM0JBIC8qIFNjcm9sbGJhclRoZW1lTW9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkU3MTQwMzE0MjE3MEI4MDBEQjMzQkEgLyogU2Ny
b2xsYmFyVGhlbWVNb2NrLmNwcCAqLzsgfTsKIAkJMEZFNzE0MDYxNDIxNzBCODAwREIzM0JBIC8q
IFNjcm9sbGJhclRoZW1lTW9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZFNzE0MDQxNDIxNzBCODAwREIzM0JBIC8qIFNjcm9sbGJhclRoZW1lTW9j
ay5oICovOyB9OworCQkwRkVBM0U3QjE5MUIyRkM1MDAwRjFCNTUgLyogU2Nyb2xsaW5nU3RhdGVG
cmFtZVNjcm9sbGluZ05vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGRUEzRTc5MTkxQjJGQzUwMDBGMUI1NSAvKiBTY3JvbGxpbmdTdGF0ZUZyYW1l
U2Nyb2xsaW5nTm9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTBGRUEzRTdDMTkxQjJGQzUwMDBGMUI1NSAvKiBTY3JvbGxpbmdTdGF0ZUZyYW1l
U2Nyb2xsaW5nTm9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkVBM0U3QTE5MUIyRkM1MDAwRjFCNTUgLyogU2Nyb2xsaW5nU3RhdGVGcmFtZVNj
cm9sbGluZ05vZGUuY3BwICovOyB9OworCQkwRkVBM0U3RjE5MUIzMTY5MDAwRjFCNTUgLyogU2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVBM0U3RDE5MUIzMTY5MDAwRjFCNTUgLyogU2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5jcHAgKi87IH07CisJCTBGRUEzRTgwMTkx
QjMxNjkwMDBGMUI1NSAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVBM0U3RTE5MUIz
MTY5MDAwRjFCNTUgLyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGRUEzRTgzMTkx
QjMxQkYwMDBGMUI1NSAvKiBTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVBM0U4MTE5
MUIzMUJGMDAwRjFCNTUgLyogU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGUuY3Bw
ICovOyB9OworCQkwRkVBM0U4NDE5MUIzMUJGMDAwRjFCNTUgLyogU2Nyb2xsaW5nU3RhdGVPdmVy
Zmxvd1Njcm9sbGluZ05vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGRUEzRTgyMTkxQjMxQkYwMDBGMUI1NSAvKiBTY3JvbGxpbmdTdGF0ZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTBGRUEzRTg3MTkxQjNCRDcwMDBGMUI1NSAvKiBTY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGRUEzRTg1MTkxQjNCRDcwMDBGMUI1NSAvKiBTY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlLmNwcCAqLzsgfTsKKwkJMEZFQTNFODgxOTFCM0JENzAwMEYxQjU1IC8qIFNj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUEzRTg2MTkxQjNCRDcwMDBGMUI1NSAvKiBTY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZGNTAyNUIxMDJCQTkwMTAwNjZGMzlBIC8qIERPTVN0eWxl
TWVkaWEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
RjUwMjU5MTAyQkE5MDEwMDY2RjM5QSAvKiBET01TdHlsZU1lZGlhLmggKi87IH07CiAJCTBGRjUw
MjVDMTAyQkE5MDEwMDY2RjM5QSAvKiBET01TdHlsZU1lZGlhLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNTAyNUExMDJCQTkwMTAwNjZGMzlBIC8q
IERPTVN0eWxlTWVkaWEubW0gKi87IH07CiAJCTBGRjUwMjYzMTAyQkE5MkMwMDY2RjM5QSAvKiBE
T01TdHlsZU1lZGlhSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGRjUwMjYyMTAyQkE5MkIwMDY2RjM5QSAvKiBET01TdHlsZU1lZGlhSW50
ZXJuYWwuaCAqLzsgfTsKQEAgLTMyMzksOCArMzI0Nyw4IEBACiAJCTkzQzM4QzAzMTY0NDczREQw
MDA5MUVCMiAvKiBTY3JvbGxpbmdUcmVlRml4ZWROb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0MzOEMwMTE2NDQ3M0REMDAwOTFFQjIgLyogU2Ny
b2xsaW5nVHJlZUZpeGVkTm9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTkzQzM4QzA0MTY0NDczREQwMDA5MUVCMiAvKiBTY3JvbGxpbmdUcmVl
Rml4ZWROb2RlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTNDMzhDMDIxNjQ0NzNERDAwMDkxRUIyIC8qIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGUubW0g
Ki87IH07CiAJCTkzQzQ0MjAwMEY4MTNBRTEwMEMxQTYzNCAvKiBDb2xsZWN0aW9uVHlwZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNDNDQxRkYwRjgx
M0FFMTAwQzFBNjM0IC8qIENvbGxlY3Rpb25UeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJOTNDNEE0MTUxNjI5REY1QTAwQzNFQjZFIC8qIFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5M0M0QTQxMzE2MjlERjVBMDBDM0VCNkUgLyogU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwotCQk5M0M0QTQxNjE2MjlERjVBMDBDM0VCNkUgLyogU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5M0M0QTQxNDE2MjlERjVBMDBDM0VCNkUgLyogU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVNYWMubW0gKi87IH07CisJCTkzQzRBNDE1MTYyOURGNUEwMEMzRUI2RSAvKiBTY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0M0QTQxMzE2MjlERjVBMDBDM0VCNkUgLyogU2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTkzQzRBNDE2MTYyOURGNUEwMEMzRUI2RSAvKiBTY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNDNEE0MTQxNjI5REY1QTAwQzNFQjZFIC8qIFNjcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW0gKi87IH07CiAJCTkzQzRGNkVCMTEwOEY5
QTUwMDk5RDBEQiAvKiBBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0M0RjZFOTExMDhGOUE1MDA5OUQwREIgLyog
QWNjZXNzaWJpbGl0eVNjcm9sbGJhci5oICovOyB9OwogCQk5M0M4NDFGODA5Q0U4NTVDMDBERkY1
RTUgLyogRE9NSW1wbGVtZW50YXRpb25Gcm9udC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTNDODQxRjcwOUNFODU1QzAwREZGNUU1IC8qIERPTUltcGxl
bWVudGF0aW9uRnJvbnQuaCAqLzsgfTsKIAkJOTNDODQxRkYwOUNFODU4MzAwREZGNUU1IC8qIERP
TUltcGxlbWVudGF0aW9uRnJvbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTNDODQxRkUwOUNFODU4MzAwREZGNUU1IC8qIERPTUltcGxlbWVudGF0
aW9uRnJvbnQuY3BwICovOyB9OwpAQCAtNzM3NSw3ICs3MzgzLDcgQEAKIAkJMEY5N0E2NTcxNTVE
QTgxRTAwRkFERDRDIC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZBMjRENzcxNjJERjkxOTAwQTNGNEMwIC8q
IEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEZBMjRENzgxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGQTg4RUJDMTZBOEQxQkQwMEY5OTk4NCAv
KiBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGVNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGVNYWMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQTg4RUJDMTZBOEQxQkQwMEY5OTk4NCAvKiBT
Y3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlTWFj
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI2MjUyQzE4REUxQjE1MDBBMDdD
MDUgLyogR2VvbWV0cnlVdGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gR2VvbWV0cnlVdGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRkI2MjUyRDE4REUxQjE1MDBBMDdDMDUgLyogR2VvbWV0cnlVdGlsaXRpZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VvbWV0cnlVdGlsaXRpZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCODg5MDgxNjdEMkZBMTAwMTBDREE1IC8qIFNjcm9s
bGluZ1RyZWVTdGlja3lOb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNj
cm9sbGluZ1RyZWVTdGlja3lOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03
Mzg2LDggKzczOTQsOCBAQAogCQkwRkM0RTQwODE4N0Y4MkUxMDA0NTg4MkMgLyogU2Nyb2xsaW5n
Q29vcmRpbmF0b3JJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUg
PSBTY3JvbGxpbmdDb29yZGluYXRvcklPUy5tbTsgcGF0aCA9IGlvcy9TY3JvbGxpbmdDb29yZGlu
YXRvcklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDNEU0MDkxODdGODJF
MTAwNDU4ODJDIC8qIFNjcm9sbGluZ1RyZWVJT1MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gU2Nyb2xsaW5nVHJlZUlPUy5jcHA7IHBhdGggPSBpb3MvU2Nyb2xsaW5n
VHJlZUlPUy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQzRFNDBBMTg3Rjgy
RTEwMDQ1ODgyQyAvKiBTY3JvbGxpbmdUcmVlSU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFNjcm9sbGluZ1RyZWVJT1MuaDsgcGF0aCA9IGlvcy9TY3JvbGxpbmdUcmVlSU9T
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGQzRFNDBCMTg3RjgyRTEwMDQ1ODgy
QyAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUy5oOyBwYXRoID0gaW9z
L1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTBGQzRFNDBDMTg3RjgyRTEwMDQ1ODgyQyAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TLm1tOyBwYXRoID0gaW9zL1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkM0RTQwQjE4
N0Y4MkUxMDA0NTg4MkMgLyogU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxp
bmdOb2RlSU9TLmg7IHBhdGggPSBpb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlP
Uy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkM0RTQwQzE4N0Y4MkUxMDA0NTg4
MkMgLyogU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVJT1MubW07IHBhdGggPSBpb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDRjMzMjMwRjJCOTcxNTAwNEI2Nzk1
IC8qIENvbG9yQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29s
b3JDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQ0YzMzJBMEYyQjlBMjUw
MDRCNjc5NSAvKiBXZWJMYXllci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdlYkxheWVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkNGMzMy
QjBGMkI5QTI1MDA0QjY3OTUgLyogV2ViTGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViTGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc0MTIs
NiArNzQyMCwxNCBAQAogCQkwRkU3MTQwMzE0MjE3MEI4MDBEQjMzQkEgLyogU2Nyb2xsYmFyVGhl
bWVNb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9sbGJh
clRoZW1lTW9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRTcxNDA0MTQy
MTcwQjgwMERCMzNCQSAvKiBTY3JvbGxiYXJUaGVtZU1vY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2Nyb2xsYmFyVGhlbWVNb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGRTcxNDE1MTQyMTg5RkMwMERCMzNCQSAvKiBTY3JvbGxiYXJUaGVtZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxiYXJUaGVtZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRUEzRTc5MTkxQjJGQzUwMDBGMUI1NSAv
KiBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRkVBM0U3QTE5MUIyRkM1MDAwRjFCNTUgLyogU2Nyb2xs
aW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRkVBM0U3RDE5MUIzMTY5MDAwRjFCNTUgLyogU2Nyb2xs
aW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQTNFN0UxOTFCMzE2OTAwMEYxQjU1IC8qIFNj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRkVBM0U4MTE5MUIzMUJGMDAwRjFCNTUgLyogU2Nyb2xs
aW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkVBM0U4MjE5MUIzMUJGMDAwRjFCNTUgLyog
U2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQTNFODUxOTFCM0JENzAwMEYxQjU1IC8qIFNj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRUEzRTg2MTkxQjNCRDcwMDBGMUI1NSAvKiBTY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEZGNTAyNTkxMDJCQTkwMTAwNjZGMzlBIC8qIERPTVN0eWxlTWVkaWEu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NU3R5bGVNZWRpYS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkY1MDI1QTEwMkJBOTAxMDA2NkYzOUEgLyogRE9N
U3R5bGVNZWRpYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERP
TVN0eWxlTWVkaWEubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRjUwMjYyMTAy
QkE5MkIwMDY2RjM5QSAvKiBET01TdHlsZU1lZGlhSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRE9NU3R5bGVNZWRpYUludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xMDI5Miw4ICsxMDMwOCw4IEBACiAJCTkzQzM4QzAxMTY0NDczREQw
MDA5MUVCMiAvKiBTY3JvbGxpbmdUcmVlRml4ZWROb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNjcm9sbGluZ1RyZWVGaXhlZE5vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTNDMzhDMDIxNjQ0NzNERDAwMDkxRUIyIC8qIFNjcm9sbGluZ1RyZWVGaXhl
ZE5vZGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTY3JvbGxp
bmdUcmVlRml4ZWROb2RlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0M0NDFG
RjBGODEzQUUxMDBDMUE2MzQgLyogQ29sbGVjdGlvblR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ29sbGVjdGlvblR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJOTNDNEE0MTMxNjI5REY1QTAwQzNFQjZFIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTkzQzRBNDE0
MTYyOURGNUEwMEMzRUI2RSAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZU1hYy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0M0QTQxMzE2MjlE
RjVBMDBDM0VCNkUgLyogU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQzRBNDE0MTYyOURGNUEw
MEMzRUI2RSAvKiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNDNEY2RTkxMTA4
RjlBNTAwOTlEMERCIC8qIEFjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5M0M4NDFGNzA5Q0U4NTVDMDBERkY1RTUgLyogRE9NSW1wbGVtZW50
YXRpb25Gcm9udC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01JbXBsZW1l
bnRhdGlvbkZyb250Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQzg0MUZFMDlD
RTg1ODMwMERGRjVFNSAvKiBET01JbXBsZW1lbnRhdGlvbkZyb250LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTUltcGxlbWVudGF0aW9uRnJvbnQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ3MDEsOCArMTQ3MTcsOCBAQAogCQkJCTBGQzRF
NDA4MTg3RjgyRTEwMDQ1ODgyQyAvKiBTY3JvbGxpbmdDb29yZGluYXRvcklPUy5tbSAqLywKIAkJ
CQkwRkM0RTQwOTE4N0Y4MkUxMDA0NTg4MkMgLyogU2Nyb2xsaW5nVHJlZUlPUy5jcHAgKi8sCiAJ
CQkJMEZDNEU0MEExODdGODJFMTAwNDU4ODJDIC8qIFNjcm9sbGluZ1RyZWVJT1MuaCAqLywKLQkJ
CQkwRkM0RTQwQjE4N0Y4MkUxMDA0NTg4MkMgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJ
T1MuaCAqLywKLQkJCQkwRkM0RTQwQzE4N0Y4MkUxMDA0NTg4MkMgLyogU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVJT1MubW0gKi8sCisJCQkJMEZDNEU0MEIxODdGODJFMTAwNDU4ODJDIC8qIFNj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1MuaCAqLywKKwkJCQkwRkM0RTQwQzE4N0Y4
MkUxMDA0NTg4MkMgLyogU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUy5tbSAqLywK
IAkJCSk7CiAJCQluYW1lID0gaW9zOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE0
OTUwLDYgKzE0OTY2LDEwIEBACiAJCQkJOTMxQ0JEMDcxNjFBNDRFOTAwRTRDODc0IC8qIFNjcm9s
bGluZ1N0YXRlTm9kZS5oICovLAogCQkJCTkzMUNCRDA4MTYxQTQ0RTkwMEU0Qzg3NCAvKiBTY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwICovLAogCQkJCTkzMUNCRDA5MTYxQTQ0RTkwMEU0
Qzg3NCAvKiBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaCAqLywKKwkJCQkwRkVBM0U3QTE5
MUIyRkM1MDAwRjFCNTUgLyogU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUuY3BwICov
LAorCQkJCTBGRUEzRTc5MTkxQjJGQzUwMDBGMUI1NSAvKiBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Ny
b2xsaW5nTm9kZS5oICovLAorCQkJCTBGRUEzRTgxMTkxQjMxQkYwMDBGMUI1NSAvKiBTY3JvbGxp
bmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5jcHAgKi8sCisJCQkJMEZFQTNFODIxOTFCMzFC
RjAwMEYxQjU1IC8qIFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmggKi8sCiAJ
CQkJMEZCODg5MEMxNjdEMzAxNjAwMTBDREE1IC8qIFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5j
cHAgKi8sCiAJCQkJMEZCODg5MEQxNjdEMzAxNjAwMTBDREE1IC8qIFNjcm9sbGluZ1N0YXRlU3Rp
Y2t5Tm9kZS5oICovLAogCQkJCTkzMUNCRDBBMTYxQTQ0RTkwMEU0Qzg3NCAvKiBTY3JvbGxpbmdT
dGF0ZVRyZWUuY3BwICovLApAQCAtMTQ5NjAsNiArMTQ5ODAsMTAgQEAKIAkJCQkxQUFBRERBMjE0
REI0MDlGMDBBRjY0QjMgLyogU2Nyb2xsaW5nVHJlZS5oICovLAogCQkJCTFBQUFEREUxMTREQzhD
OEYwMEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlTm9kZS5jcHAgKi8sCiAJCQkJMUFBQURERTIxNERD
OEM4RjAwQUY2NEIzIC8qIFNjcm9sbGluZ1RyZWVOb2RlLmggKi8sCisJCQkJMEZFQTNFODUxOTFC
M0JENzAwMEYxQjU1IC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuY3BwICovLAor
CQkJCTBGRUEzRTg2MTkxQjNCRDcwMDBGMUI1NSAvKiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxp
bmdOb2RlLmggKi8sCisJCQkJMEZFQTNFN0QxOTFCMzE2OTAwMEYxQjU1IC8qIFNjcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUuY3BwICovLAorCQkJCTBGRUEzRTdFMTkxQjMxNjkwMDBG
MUI1NSAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmggKi8sCiAJCQkJOTM5
MUE5OUExNjI5RDZGRjAwMjk3MzMwIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcCAq
LywKIAkJCQk5MzkxQTk5QjE2MjlENzAwMDAyOTczMzAgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGUuaCAqLywKIAkJCQkwRjYzODNEQjE4NjE1QjI5MDAzRTVEQjUgLyogVGhyZWFkZWRTY3Jv
bGxpbmdUcmVlLmNwcCAqLywKQEAgLTE0OTc0LDEyICsxNDk5OCwxMiBAQAogCQkJCTkzOTFBOTkw
MTYyNzQ2Q0IwMDI5NzMzMCAvKiBTY3JvbGxpbmdDb29yZGluYXRvck1hYy5oICovLAogCQkJCTFB
RjYyRUUzMTREQTIyQTcwMDQxNTU2QyAvKiBTY3JvbGxpbmdDb29yZGluYXRvck1hYy5tbSAqLywK
IAkJCQk5MzFDQkQxMjE2MUE0NEY4MDBFNEM4NzQgLyogU2Nyb2xsaW5nU3RhdGVOb2RlTWFjLm1t
ICovLAotCQkJCTBGQTg4RUJDMTZBOEQxQkQwMEY5OTk4NCAvKiBTY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGVNYWMubW0gKi8sCisJCQkJMEZBODhFQkMxNkE4RDFCRDAwRjk5OTg0IC8qIFNjcm9s
bGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tICovLAogCQkJCTFBRjYyRjIzMTREQUZF
OTEwMDQxNTU2QyAvKiBTY3JvbGxpbmdUaHJlYWRNYWMubW0gKi8sCiAJCQkJOTNDMzhDMDExNjQ0
NzNERDAwMDkxRUIyIC8qIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGUuaCAqLywKIAkJCQk5M0MzOEMw
MjE2NDQ3M0REMDAwOTFFQjIgLyogU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5tbSAqLywKLQkJCQk5
M0M0QTQxMzE2MjlERjVBMDBDM0VCNkUgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWMu
aCAqLywKLQkJCQk5M0M0QTQxNDE2MjlERjVBMDBDM0VCNkUgLyogU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVNYWMubW0gKi8sCisJCQkJOTNDNEE0MTMxNjI5REY1QTAwQzNFQjZFIC8qIFNjcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMuaCAqLywKKwkJCQk5M0M0QTQxNDE2MjlERjVB
MDBDM0VCNkUgLyogU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbSAqLywKIAkJ
CQkwRkI4ODkwODE2N0QyRkExMDAxMENEQTUgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaCAq
LywKIAkJCQkwRkI4ODkwOTE2N0QyRkExMDAxMENEQTUgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5v
ZGUubW0gKi8sCiAJCQkpOwpAQCAtMjM5NTgsNiArMjM5ODIsNyBAQAogCQkJCUQ3MkY2RDdBMTUz
MTU5QTMwMDFFRTQ0RSAvKiBGbG93VGhyZWFkQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMTQ5OTNCRTYwQjJGMkIxQzAwNTA0OTdGIC8qIEZvY3VzQ29udHJvbGxlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDYyMjg3ODQwQjREQjMyMjAwMEMzNERGIC8qIEZvY3VzRGlyZWN0aW9uLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwRkVBM0U4ODE5MUIzQkQ3MDAwRjFCNTUgLyogU2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjZEOUQyMzUxNEVB
QkQyNjAwOTBENzVFIC8qIEZvY3VzRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQzNEQTYx
MEQwMDZDRDYwMEVGNkYyNiAvKiBGb250LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0I5MkQ0RjEy
OTM1NTBCMDBDODM4N0YgLyogRm9udEJhc2VsaW5lLmggaW4gSGVhZGVycyAqLywKQEAgLTI0NDY2
LDYgKzI0NDkxLDcgQEAKIAkJCQlGRTgwREE2NDBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9sb2Nh
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU4MERBNjYwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpT
R2VvcG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGREE3QzFGMTg4MzIyRkMwMEM5NTRC
NSAvKiBKU0dlc3R1cmVFdmVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZFQTNFODAxOTFCMzE2
OTAwMEYxQjU1IC8qIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg0ODJCNzUyMTE5OENCNkIwMEJGQjAwNSAvKiBKU0hhc2hDaGFuZ2VFdmVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM5NEQxNEYwQzI3NUM2ODAwNkJDNjE3IC8qIEpTSGlz
dG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM5N0U0MTMxMDkxNTRGQTAwMTBEMzYxIC8qIEpT
SFRNTEFsbENvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjU1NTcsOCArMjU1ODMsOCBA
QAogCQkJCTBGQzRFNDEwMTg3RjgyRTEwMDQ1ODgyQyAvKiBTY3JvbGxpbmdUcmVlSU9TLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQUFBRERFNDE0REM4QzhGMDBBRjY0QjMgLyogU2Nyb2xsaW5nVHJl
ZU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTFBOTlEMTYyOUQ3MDAwMDI5NzMzMCAvKiBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEZDNEU0MTEx
ODdGODJFMTAwNDU4ODJDIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TLmggaW4gSGVh
ZGVycyAqLywKLQkJCQk5M0M0QTQxNTE2MjlERjVBMDBDM0VCNkUgLyogU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVNYWMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQzRFNDExMTg3RjgyRTEwMDQ1
ODgyQyAvKiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TLmggaW4gSGVhZGVycyAq
LywKKwkJCQk5M0M0QTQxNTE2MjlERjVBMDBDM0VCNkUgLyogU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZU1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCODg5MEExNjdEMkZBMTAwMTBD
REE1IC8qIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Mw
OUM4NjBCMDY1N0FBMDA1QUJENEQgLyogU2Nyb2xsVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDNkQ2RTI2MDlBRjk0MzUwMEY1OTc1OSAvKiBTY3JvbGxWaWV3LmggaW4gSGVhZGVycyAqLywK
QEAgLTI1ODQzLDYgKzI1ODY5LDcgQEAKIAkJCQkwODFFQkYzQjBGRDM0RjQxMDBEQTc1NTkgLyog
U1ZHRmlsdGVyQnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBMEMwRDAwQkYyMjAw
NzFCNzgyIC8qIFNWR0ZpbHRlckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTBG
MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGRUEzRTg0MTkxQjMxQkYwMDBGMUI1NSAvKiBTY3JvbGxp
bmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdB
MTIwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZpdFRvVmlld0JveC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjIzN0M4QTgwRDM0NEQxMTAwMTNGNzA3IC8qIFNWR0ZvbnREYXRhLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCMkExRjJBQjBDRUYwQUJGMDA0NDJGNkEgLyogU1ZHRm9udEVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjYyMzgsNiArMjYyNjUsNyBAQAogCQkJCTZFQkYwRTU1MTJBODkyOTgw
MERCMTcwOSAvKiBXZWJHTEV4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlDN0I5Q0Yx
MDQyRDMyRjAwMDlENDQ3IC8qIFdlYkdMRnJhbWVidWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTZFNDdFNjYxMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEdldEluZm8uaCBpbiBIZWFkZXJzICov
LAorCQkJCTBGRUEzRTdCMTkxQjJGQzUwMDBGMUI1NSAvKiBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Ny
b2xsaW5nTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlGRkJGM0YxMUM5M0VFMzAwNkE3MTE4
IC8qIFdlYkdMTGF5ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjFENUJCMTJENTMyQzQwMDgz
MkJFQyAvKiBXZWJHTExvc2VDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUM3QjlENTEw
NDJEMzJGMDAwOUQ0NDcgLyogV2ViR0xPYmplY3QuaCBpbiBIZWFkZXJzICovLApAQCAtMjcxMzYs
NiArMjcxNjQsNyBAQAogCQkJCTg1MDMyREUwMEFBOEM5QkUwMDdEM0I3RCAvKiBET01DU1NQYWdl
UnVsZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1OEMzODJEMEFBOEU0MDUwMEIxODdBNCAvKiBE
T01DU1NQcmltaXRpdmVWYWx1ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1MDMyREUyMEFBOEM5
QkUwMDdEM0I3RCAvKiBET01DU1NSdWxlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMEZFQTNFODcx
OTFCM0JENzAwMEYxQjU1IC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJODUwMzJERTQwQUE4QzlCRTAwN0QzQjdEIC8qIERPTUNTU1J1bGVM
aXN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODUwMzJERTYwQUE4QzlCRTAwN0QzQjdEIC8qIERP
TUNTU1N0eWxlRGVjbGFyYXRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NTAzMkRFODBBQThD
OUJFMDA3RDNCN0QgLyogRE9NQ1NTU3R5bGVSdWxlLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0yNzI3
OSw2ICsyNzMwOCw3IEBACiAJCQkJMkUzN0RGREExMkRCQUZCODAwQTZCMjMzIC8qIERPTVVSTC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDlERTE4MTE3QUFENkE0MDBFQTM4NkQgLyogRE9NVVJM
TWVkaWFTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMxQTM3QkYwOTdDNzE1RjAwMTlG
M0Q4IC8qIERPTVV0aWxpdHkubW0gaW4gU291cmNlcyAqLywKKwkJCQkwRkVBM0U3QzE5MUIyRkM1
MDAwRjFCNTUgLyogU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMTVDNzcwQTUxMDBENDFDRDAwNUJBMjY3IC8qIERPTVZhbGlkaXR5U3RhdGUu
bW0gaW4gU291cmNlcyAqLywKIAkJCQkzMUMwRkY0QTBFNENFRkREMDA3RDZGRTUgLyogRE9NV2Vi
S2l0QW5pbWF0aW9uRXZlbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMTA2MDM3QTE0MzI4MUNE
MDBBQkY0QkEgLyogRE9NV2ViS2l0Q1NTRmlsdGVyVmFsdWUubW0gaW4gU291cmNlcyAqLywKQEAg
LTI4MTY0LDYgKzI4MTk0LDcgQEAKIAkJCQlCNTlERDZBNjExOTAyQTYyMDA3RTk2ODQgLyogSlNT
UUxTdGF0ZW1lbnRDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNTlERDZBQTExOTAy
QTcxMDA3RTk2ODQgLyogSlNTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTUxNEM3NjM4MENFOTIyNUUwMDdFRjNDRCAvKiBKU1NRTFRyYW5zYWN0aW9uLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTBGRUEzRTdGMTkxQjMxNjkwMDBGMUI1NSAvKiBTY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI1OURE
NjlFMTE5MDJBNDIwMDdFOTY4NCAvKiBKU1NRTFRyYW5zYWN0aW9uQ2FsbGJhY2suY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUFEMjMxNkUwQ0QyNjlFNzAwQzFGMTk0IC8qIEpTU1FMVHJhbnNhY3Rp
b25DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjU5REQ2QTIxMTkwMkE1MjAwN0U5Njg0
IC8qIEpTU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
MjgxOTgsNiArMjgyMjksNyBAQAogCQkJCUIyRkEzRDRDMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NW
R0FuaW1hdGVkUmVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkZBM0Q0RTBBQjc1QTZGMDAw
RTVBQzQgLyogSlNTVkdBbmltYXRlZFN0cmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkZB
M0Q1MDBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJMEZFQTNFODMxOTFCMzFCRjAwMEYxQjU1IC8qIFNjcm9sbGluZ1N0
YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyRkEzRDUy
MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0FuaW1hdGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTQ0OTZFMzlEMTM5ODEzNkMwMDNFRTMyQSAvKiBKU1NWR0FuaW1hdGVNb3Rpb25FbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyRkEzRDU0MEFCNzVBNkYwMDBFNUFDNCAvKiBK
U1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjg5NDQs
NyArMjg5NzYsNyBAQAogCQkJCTkzMUNCRDBDMTYxQTQ0RTkwMEU0Qzg3NCAvKiBTY3JvbGxpbmdT
dGF0ZU5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMxQ0JEMTMxNjFBNDRGODAwRTRDODc0
IC8qIFNjcm9sbGluZ1N0YXRlTm9kZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzMUNCRDBF
MTYxQTQ0RTkwMEU0Qzg3NCAvKiBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJMEZBODhFQkQxNkE4RDFCRDAwRjk5OTg0IC8qIFNjcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZU1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTBGQTg4RUJEMTZBOEQxQkQw
MEY5OTk4NCAvKiBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGQjg4OTBFMTY3RDMwMTYwMDEwQ0RBNSAvKiBTY3JvbGxpbmdTdGF0ZVN0
aWNreU5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMxQ0JEMTAxNjFBNDRFOTAwRTRDODc0
IC8qIFNjcm9sbGluZ1N0YXRlVHJlZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUY2MkYyNTE0
REFGRTlFMDA0MTU1NkMgLyogU2Nyb2xsaW5nVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
Mjg5NTQsOCArMjg5ODYsOCBAQAogCQkJCTBGQzRFNDBGMTg3RjgyRTEwMDQ1ODgyQyAvKiBTY3Jv
bGxpbmdUcmVlSU9TLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQUFEREUzMTREQzhDOEYwMEFG
NjRCMyAvKiBTY3JvbGxpbmdUcmVlTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzkxQTk5
QzE2MjlENzAwMDAyOTczMzAgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJMEZDNEU0MTIxODdGODJFMTAwNDU4ODJDIC8qIFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlSU9TLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJOTNDNEE0MTYxNjI5REY1QTAw
QzNFQjZFIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlTWFjLm1tIGluIFNvdXJjZXMgKi8s
CisJCQkJMEZDNEU0MTIxODdGODJFMTAwNDU4ODJDIC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGVJT1MubW0gaW4gU291cmNlcyAqLywKKwkJCQk5M0M0QTQxNjE2MjlERjVBMDBDM0VC
NkUgLyogU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTBGQjg4OTBCMTY3RDJGQTEwMDEwQ0RBNSAvKiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDMjQ0MUM0MEU4QjY1RDAwMDU1MzIwRiAvKiBTY3Jv
bGxWaWV3LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0NTM5MDQ1MEVBRkQ2MzcwMDM2OTVDOCAv
KiBTY3JvbGxWaWV3SU9TLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmlu
ZGV4IDgyODNjMWI2NDlkYWE5YWJhYjc3MDc3ZjljMjZjNTcwY2JiOGY5ZjcuLjdmZWE5ZTg4Y2Uy
ZGUwYTM0YzQzOWIyMmRhYmNiMzRiNzIxMGYyNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBA
IC0zNSw3ICszNSw4IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ0Nv
bnN0cmFpbnRzLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGUuaCIKLSNpbmNs
dWRlICJTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdT
dGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlLmgi
CiAjaW5jbHVkZSAiU2Nyb2xsaW5nU3RhdGVUcmVlLmgiCiAKQEAgLTc2LDIxICs3NywyMSBAQCB2
b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld0xheW91dFVwZGF0ZWQoRnJh
bWVWaWV3KiBmcmFtZVZpZXcpCiAgICAgaWYgKCFjb29yZGluYXRlc1Njcm9sbGluZ0ZvckZyYW1l
VmlldyhmcmFtZVZpZXcpKQogICAgICAgICByZXR1cm47CiAKLSAgICBTY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGUqIG5vZGUgPSB0b1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZShtX3Njcm9s
bGluZ1N0YXRlVHJlZS0+c3RhdGVOb2RlRm9ySUQoZnJhbWVWaWV3LT5zY3JvbGxMYXllcklEKCkp
KTsKKyAgICBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZSogbm9kZSA9IHRvU2Nyb2xs
aW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUobV9zY3JvbGxpbmdTdGF0ZVRyZWUtPnN0YXRlTm9k
ZUZvcklEKGZyYW1lVmlldy0+c2Nyb2xsTGF5ZXJJRCgpKSk7CiAgICAgaWYgKCFub2RlKQogICAg
ICAgICByZXR1cm47CiAKICAgICBTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyID0gZnJhbWVW
aWV3LT52ZXJ0aWNhbFNjcm9sbGJhcigpOwogICAgIFNjcm9sbGJhciogaG9yaXpvbnRhbFNjcm9s
bGJhciA9IGZyYW1lVmlldy0+aG9yaXpvbnRhbFNjcm9sbGJhcigpOwotICAgIHNldFNjcm9sbGJh
clBhaW50ZXJzRnJvbVNjcm9sbGJhcnNGb3JOb2RlKHZlcnRpY2FsU2Nyb2xsYmFyLCBob3Jpem9u
dGFsU2Nyb2xsYmFyLCBub2RlKTsKLQorICAgIG5vZGUtPnNldFNjcm9sbGJhclBhaW50ZXJzRnJv
bVNjcm9sbGJhcnModmVydGljYWxTY3JvbGxiYXIsIGhvcml6b250YWxTY3JvbGxiYXIpOworICAg
IAogICAgIG5vZGUtPnNldEZyYW1lU2NhbGVGYWN0b3IoZnJhbWVWaWV3LT5mcmFtZSgpLmZyYW1l
U2NhbGVGYWN0b3IoKSk7CiAgICAgbm9kZS0+c2V0SGVhZGVySGVpZ2h0KGZyYW1lVmlldy0+aGVh
ZGVySGVpZ2h0KCkpOwogICAgIG5vZGUtPnNldEZvb3RlckhlaWdodChmcmFtZVZpZXctPmZvb3Rl
ckhlaWdodCgpKTsKICAgICBub2RlLT5zZXRUb3BDb250ZW50SW5zZXQoZnJhbWVWaWV3LT50b3BD
b250ZW50SW5zZXQoKSk7CiAKICAgICBub2RlLT5zZXRTY3JvbGxPcmlnaW4oZnJhbWVWaWV3LT5z
Y3JvbGxPcmlnaW4oKSk7Ci0gICAgbm9kZS0+c2V0Vmlld3BvcnRTaXplKGZyYW1lVmlldy0+dmlz
aWJsZUNvbnRlbnRSZWN0KCkuc2l6ZSgpKTsKKyAgICBub2RlLT5zZXRTY3JvbGxhYmxlQXJlYVNp
emUoZnJhbWVWaWV3LT52aXNpYmxlQ29udGVudFJlY3QoKS5zaXplKCkpOwogICAgIG5vZGUtPnNl
dFRvdGFsQ29udGVudHNTaXplKGZyYW1lVmlldy0+dG90YWxDb250ZW50c1NpemUoKSk7CiAKICAg
ICBTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMgc2Nyb2xsUGFyYW1ldGVyczsKQEAgLTEzMSw3ICsx
MzIsNyBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld1Jvb3RMYXll
ckRpZENoYW5nZShGcmFtZVZpZXcqIGZyYW1lVmlldwogCiAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OmZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZShmcmFtZVZpZXcpOwogCi0gICAgU2Nyb2xs
aW5nU3RhdGVTY3JvbGxpbmdOb2RlKiBub2RlID0gdG9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05v
ZGUobV9zY3JvbGxpbmdTdGF0ZVRyZWUtPnN0YXRlTm9kZUZvcklEKGZyYW1lVmlldy0+c2Nyb2xs
TGF5ZXJJRCgpKSk7CisgICAgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUqIG5vZGUg
PSB0b1Njcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlKG1fc2Nyb2xsaW5nU3RhdGVUcmVl
LT5zdGF0ZU5vZGVGb3JJRChmcmFtZVZpZXctPnNjcm9sbExheWVySUQoKSkpOwogICAgIG5vZGUt
PnNldExheWVyKHNjcm9sbExheWVyRm9yRnJhbWVWaWV3KGZyYW1lVmlldykpOwogICAgIG5vZGUt
PnNldENvdW50ZXJTY3JvbGxpbmdMYXllcihjb3VudGVyU2Nyb2xsaW5nTGF5ZXJGb3JGcmFtZVZp
ZXcoZnJhbWVWaWV3KSk7CiAgICAgbm9kZS0+c2V0SW5zZXRDbGlwTGF5ZXIoaW5zZXRDbGlwTGF5
ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSk7CkBAIC0zMjcsMTUgKzMyOCwxNCBAQCB2b2lkIEFz
eW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmVuc3VyZVJvb3RTdGF0ZU5vZGVGb3JGcmFtZVZpZXco
RnJhbWVWaWV3KiBmcmFtZQogICAgIGF0dGFjaFRvU3RhdGVUcmVlKEZyYW1lU2Nyb2xsaW5nTm9k
ZSwgZnJhbWVWaWV3LT5zY3JvbGxMYXllcklEKCksIDApOwogfQogCi12b2lkIEFzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3I6OnVwZGF0ZVNjcm9sbGluZ05vZGUoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJ
RCwgR3JhcGhpY3NMYXllciogbGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIHNjcm9sbGVkQ29udGVudHNM
YXllciwgR3JhcGhpY3NMYXllciogY291bnRlclNjcm9sbGluZ0xheWVyLCBHcmFwaGljc0xheWVy
KiBpbnNldENsaXBMYXllciwgY29uc3QgU2Nyb2xsaW5nR2VvbWV0cnkqIHNjcm9sbGluZ0dlb21l
dHJ5KQordm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVGcmFtZVNjcm9sbGlu
Z05vZGUoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCwgR3JhcGhpY3NMYXllciogbGF5ZXIsIEdyYXBo
aWNzTGF5ZXIqIGNvdW50ZXJTY3JvbGxpbmdMYXllciwgR3JhcGhpY3NMYXllciogaW5zZXRDbGlw
TGF5ZXIsIGNvbnN0IFNjcm9sbGluZ0dlb21ldHJ5KiBzY3JvbGxpbmdHZW9tZXRyeSkKIHsKLSAg
ICBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUqIG5vZGUgPSB0b1Njcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZShtX3Njcm9sbGluZ1N0YXRlVHJlZS0+c3RhdGVOb2RlRm9ySUQobm9kZUlEKSk7
CisgICAgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUqIG5vZGUgPSB0b1Njcm9sbGlu
Z1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlKG1fc2Nyb2xsaW5nU3RhdGVUcmVlLT5zdGF0ZU5vZGVG
b3JJRChub2RlSUQpKTsKICAgICBBU1NFUlQobm9kZSk7CiAgICAgaWYgKCFub2RlKQogICAgICAg
ICByZXR1cm47CiAKICAgICBub2RlLT5zZXRMYXllcihsYXllcik7Ci0gICAgbm9kZS0+c2V0U2Ny
b2xsZWRDb250ZW50c0xheWVyKHNjcm9sbGVkQ29udGVudHNMYXllcik7CiAgICAgbm9kZS0+c2V0
SW5zZXRDbGlwTGF5ZXIoaW5zZXRDbGlwTGF5ZXIpOwogICAgIG5vZGUtPnNldENvdW50ZXJTY3Jv
bGxpbmdMYXllcihjb3VudGVyU2Nyb2xsaW5nTGF5ZXIpOwogCkBAIC0zNDMsNiArMzQzLDI1IEBA
IHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsaW5nTm9kZShTY3Jv
bGxpbmdOb2RlSUQgbm9kZUlELCBHcmFwCiAgICAgICAgIG5vZGUtPnNldFNjcm9sbE9yaWdpbihz
Y3JvbGxpbmdHZW9tZXRyeS0+c2Nyb2xsT3JpZ2luKTsKICAgICAgICAgbm9kZS0+c2V0U2Nyb2xs
UG9zaXRpb24oc2Nyb2xsaW5nR2VvbWV0cnktPnNjcm9sbFBvc2l0aW9uKTsKICAgICAgICAgbm9k
ZS0+c2V0VG90YWxDb250ZW50c1NpemUoc2Nyb2xsaW5nR2VvbWV0cnktPmNvbnRlbnRTaXplKTsK
KyAgICAgICAgbm9kZS0+c2V0U2Nyb2xsYWJsZUFyZWFTaXplKHNjcm9sbGluZ0dlb21ldHJ5LT5z
Y3JvbGxhYmxlQXJlYVNpemUpOworICAgIH0KK30KKyAgICAKK3ZvaWQgQXN5bmNTY3JvbGxpbmdD
b29yZGluYXRvcjo6dXBkYXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlKFNjcm9sbGluZ05vZGVJRCBu
b2RlSUQsIEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBHcmFwaGljc0xheWVyKiBzY3JvbGxlZENvbnRl
bnRzTGF5ZXIsIGNvbnN0IFNjcm9sbGluZ0dlb21ldHJ5KiBzY3JvbGxpbmdHZW9tZXRyeSkKK3sK
KyAgICBTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZSogbm9kZSA9IHRvU2Nyb2xs
aW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGUobV9zY3JvbGxpbmdTdGF0ZVRyZWUtPnN0YXRl
Tm9kZUZvcklEKG5vZGVJRCkpOworICAgIEFTU0VSVChub2RlKTsKKyAgICBpZiAoIW5vZGUpCisg
ICAgICAgIHJldHVybjsKKworICAgIG5vZGUtPnNldExheWVyKGxheWVyKTsKKyAgICBub2RlLT5z
ZXRTY3JvbGxlZENvbnRlbnRzTGF5ZXIoc2Nyb2xsZWRDb250ZW50c0xheWVyKTsKKyAgICAKKyAg
ICBpZiAoc2Nyb2xsaW5nR2VvbWV0cnkpIHsKKyAgICAgICAgbm9kZS0+c2V0U2Nyb2xsT3JpZ2lu
KHNjcm9sbGluZ0dlb21ldHJ5LT5zY3JvbGxPcmlnaW4pOworICAgICAgICBub2RlLT5zZXRTY3Jv
bGxQb3NpdGlvbihzY3JvbGxpbmdHZW9tZXRyeS0+c2Nyb2xsUG9zaXRpb24pOworICAgICAgICBu
b2RlLT5zZXRUb3RhbENvbnRlbnRzU2l6ZShzY3JvbGxpbmdHZW9tZXRyeS0+Y29udGVudFNpemUp
OworICAgICAgICBub2RlLT5zZXRTY3JvbGxhYmxlQXJlYVNpemUoc2Nyb2xsaW5nR2VvbWV0cnkt
PnNjcm9sbGFibGVBcmVhU2l6ZSk7CiAgICAgfQogfQogCkBAIC0zNzAsMTIgKzM4OSw2IEBAIHZv
aWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlVmlld3BvcnRDb25zdHJhaW5lZE5v
ZGUoU2Nyb2xsaW5nTm9kZUlEIG5vCiAgICAgfQogfQogCi0vLyBGSVhNRTogbm90IHN1cmUgaWYg
dGhpcyBiZWxvbmdzIGhlcmUuCi12b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldFNj
cm9sbGJhclBhaW50ZXJzRnJvbVNjcm9sbGJhcnNGb3JOb2RlKFNjcm9sbGJhciogdmVydGljYWxT
Y3JvbGxiYXIsIFNjcm9sbGJhciogaG9yaXpvbnRhbFNjcm9sbGJhciwgU2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlKiBub2RlKQotewotICAgIG5vZGUtPnNldFNjcm9sbGJhclBhaW50ZXJzRnJv
bVNjcm9sbGJhcnModmVydGljYWxTY3JvbGxiYXIsIGhvcml6b250YWxTY3JvbGxiYXIpOwotfQot
CiB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldFN5bmNocm9ub3VzU2Nyb2xsaW5n
UmVhc29ucyhTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMgcmVhc29ucykKIHsKICAgICBpZiAo
IW1fc2Nyb2xsaW5nU3RhdGVUcmVlLT5yb290U3RhdGVOb2RlKCkpCkBAIC00MDYsNyArNDE5LDcg
QEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVNYWluRnJhbWVTY3JvbGxM
YXllclBvc2l0aW9uKCkKIAogdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZWNvbXB1
dGVXaGVlbEV2ZW50SGFuZGxlckNvdW50Rm9yRnJhbWVWaWV3KEZyYW1lVmlldyogZnJhbWVWaWV3
KQogewotICAgIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSogbm9kZSA9IHRvU2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlKG1fc2Nyb2xsaW5nU3RhdGVUcmVlLT5zdGF0ZU5vZGVGb3JJRChm
cmFtZVZpZXctPnNjcm9sbExheWVySUQoKSkpOworICAgIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3Jv
bGxpbmdOb2RlKiBub2RlID0gdG9TY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZShtX3Nj
cm9sbGluZ1N0YXRlVHJlZS0+c3RhdGVOb2RlRm9ySUQoZnJhbWVWaWV3LT5zY3JvbGxMYXllcklE
KCkpKTsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybjsKICAgICBub2RlLT5zZXRXaGVl
bEV2ZW50SGFuZGxlckNvdW50KGNvbXB1dGVDdXJyZW50V2hlZWxFdmVudEhhbmRsZXJDb3VudCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3IuaAppbmRleCA0OGNmMDk5MGQ3ZmIzZmMyMzU1MzA3YmZlMWRjZTA1
ODY0MjE0YmEzLi41ZDVlZmMyN2YzZjk2ODMxZmZiYzdkOTlmMzVkMGZjYzE1MzE5MjUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxp
bmdDb29yZGluYXRvci5oCkBAIC04NSw5ICs4NSwxMiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
U2Nyb2xsaW5nTm9kZUlEIGF0dGFjaFRvU3RhdGVUcmVlKFNjcm9sbGluZ05vZGVUeXBlLCBTY3Jv
bGxpbmdOb2RlSUQgbmV3Tm9kZUlELCBTY3JvbGxpbmdOb2RlSUQgcGFyZW50SUQpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hGcm9tU3RhdGVUcmVlKFNjcm9sbGluZ05vZGVJRCkg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyU3RhdGVUcmVlKCkgb3ZlcnJpZGU7Ci0K
KyAgICAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVmlld3BvcnRDb25zdHJhaW5lZE5vZGUoU2Ny
b2xsaW5nTm9kZUlELCBjb25zdCBWaWV3cG9ydENvbnN0cmFpbnRzJiwgR3JhcGhpY3NMYXllciop
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTY3JvbGxpbmdOb2RlKFNjcm9sbGlu
Z05vZGVJRCwgR3JhcGhpY3NMYXllciosIEdyYXBoaWNzTGF5ZXIqIHNjcm9sbGVkQ29udGVudHNM
YXllciwgR3JhcGhpY3NMYXllciogY291bnRlclNjcm9sbGluZ0xheWVyLCBHcmFwaGljc0xheWVy
KiBpbnNldENsaXBMYXllciwgY29uc3QgU2Nyb2xsaW5nR2VvbWV0cnkqID0gbnVsbHB0cikgb3Zl
cnJpZGU7CisgICAgCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZShT
Y3JvbGxpbmdOb2RlSUQsIEdyYXBoaWNzTGF5ZXIqIHNjcm9sbExheWVyLCBHcmFwaGljc0xheWVy
KiBjb3VudGVyU2Nyb2xsaW5nTGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIGluc2V0Q2xpcExheWVyLCBj
b25zdCBTY3JvbGxpbmdHZW9tZXRyeSogPSBudWxscHRyKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlKFNjcm9sbGluZ05vZGVJRCwgR3JhcGhpY3NMYXllciog
c2Nyb2xsTGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIHNjcm9sbGVkQ29udGVudHNMYXllciwgY29uc3Qg
U2Nyb2xsaW5nR2VvbWV0cnkqID0gbnVsbHB0cik7CisgICAgCiAgICAgdmlydHVhbCBTdHJpbmcg
c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBi
b29sIGlzUnViYmVyQmFuZEluUHJvZ3Jlc3MoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKFNjcm9sbFBpbm5pbmdCZWhhdmlvcikgb3Zl
cnJpZGU7CkBAIC0xMDMsOSArMTA2LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGVuc3VyZVJvb3RT
dGF0ZU5vZGVGb3JGcmFtZVZpZXcoRnJhbWVWaWV3Kik7CiAgICAgdm9pZCB1cGRhdGVNYWluRnJh
bWVTY3JvbGxMYXllclBvc2l0aW9uKCk7CiAKLSAgICAvLyBGSVhNRTogbW92ZSBzb21ld2hlcmUg
ZWxzZT8KLSAgICB2b2lkIHNldFNjcm9sbGJhclBhaW50ZXJzRnJvbVNjcm9sbGJhcnNGb3JOb2Rl
KFNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIsIFNjcm9sbGJhciogaG9yaXpvbnRhbFNjcm9s
bGJhciwgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlKik7Ci0KICAgICB2b2lkIHVwZGF0ZVNj
cm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbFRpbWVyRmlyZWQoVGltZXI8QXN5bmNTY3JvbGxp
bmdDb29yZGluYXRvcj4qKTsKIAogICAgIFRpbWVyPEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I+
IG1fdXBkYXRlTm9kZVNjcm9sbFBvc2l0aW9uVGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAppbmRleCA0NDU3OTBkMmVh
YWI2ZGNlNTIxY2M4NmVmNDRlYWUyOTliMGRmNTI2Li4zNTgwNjliMzFkOTg0ZWYyYjdmNzdjNTY5
MzA3YTk4MjYzNmE5NzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKQEAgLTE1OSwxMiArMTU5LDE0IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVmlld3BvcnRDb25zdHJhaW5lZE5vZGUoU2Nyb2xsaW5n
Tm9kZUlELCBjb25zdCBWaWV3cG9ydENvbnN0cmFpbnRzJiwgR3JhcGhpY3NMYXllciopIHsgfQog
CiAgICAgc3RydWN0IFNjcm9sbGluZ0dlb21ldHJ5IHsKLSAgICAgICAgSW50U2l6ZSBjb250ZW50
U2l6ZTsKKyAgICAgICAgRmxvYXRTaXplIHNjcm9sbGFibGVBcmVhU2l6ZTsKKyAgICAgICAgRmxv
YXRTaXplIGNvbnRlbnRTaXplOwogICAgICAgICBGbG9hdFBvaW50IHNjcm9sbFBvc2l0aW9uOwog
ICAgICAgICBJbnRQb2ludCBzY3JvbGxPcmlnaW47CiAgICAgfTsKIAotICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVTY3JvbGxpbmdOb2RlKFNjcm9sbGluZ05vZGVJRCwgR3JhcGhpY3NMYXllciogLypz
Y3JvbGxMYXllciovLCBHcmFwaGljc0xheWVyKiAvKnNjcm9sbGVkQ29udGVudHNMYXllciovLCBH
cmFwaGljc0xheWVyKiAvKmNvdW50ZXJTY3JvbGxpbmdMYXllciovLCBHcmFwaGljc0xheWVyKiAv
Kmluc2V0Q2xpcExheWVyKi8sIGNvbnN0IFNjcm9sbGluZ0dlb21ldHJ5KiA9IG51bGxwdHIpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGcmFtZVNjcm9sbGluZ05vZGUoU2Nyb2xsaW5nTm9k
ZUlELCBHcmFwaGljc0xheWVyKiAvKnNjcm9sbExheWVyKi8sIEdyYXBoaWNzTGF5ZXIqIC8qY291
bnRlclNjcm9sbGluZ0xheWVyKi8sIEdyYXBoaWNzTGF5ZXIqIC8qaW5zZXRDbGlwTGF5ZXIqLywg
Y29uc3QgU2Nyb2xsaW5nR2VvbWV0cnkqID0gbnVsbHB0cikgeyB9CisgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZShTY3JvbGxpbmdOb2RlSUQsIEdyYXBoaWNzTGF5
ZXIqIC8qc2Nyb2xsTGF5ZXIqLywgR3JhcGhpY3NMYXllciogLypzY3JvbGxlZENvbnRlbnRzTGF5
ZXIqLywgY29uc3QgU2Nyb2xsaW5nR2VvbWV0cnkqID0gbnVsbHB0cikgeyB9CiAgICAgdmlydHVh
bCB2b2lkIHN5bmNDaGlsZFBvc2l0aW9ucyhjb25zdCBMYXlvdXRSZWN0JikgeyB9CiAgICAgdmly
dHVhbCBTdHJpbmcgc2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KCkgY29uc3Q7CiAgICAgdmlydHVh
bCBib29sIGlzUnViYmVyQmFuZEluUHJvZ3Jlc3MoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVG
cmFtZVNjcm9sbGluZ05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmM2E0ZmFjN2Fm
MmExNTRmY2U3YTlhYjZmZTk4YTIxMDQ1MTdjN2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5j
cHAKQEAgLTAsMCArMSwyNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUuaCIKKworI2lmIEVOQUJM
RShBU1lOQ19TQ1JPTExJTkcpIHx8IFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKworI2luY2x1
ZGUgIlNjcm9sbGluZ1N0YXRlVHJlZS5oIgorI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKKyNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxT
Y3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZT4gU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9s
bGluZ05vZGU6OmNyZWF0ZShTY3JvbGxpbmdTdGF0ZVRyZWUmIHN0YXRlVHJlZSwgU2Nyb2xsaW5n
Tm9kZUlEIG5vZGVJRCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNjcm9sbGluZ1N0YXRl
RnJhbWVTY3JvbGxpbmdOb2RlKHN0YXRlVHJlZSwgbm9kZUlEKSk7Cit9CisKK1Njcm9sbGluZ1N0
YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZShT
Y3JvbGxpbmdTdGF0ZVRyZWUmIHN0YXRlVHJlZSwgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKKyAg
ICA6IFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZShzdGF0ZVRyZWUsIEZyYW1lU2Nyb2xsaW5n
Tm9kZSwgbm9kZUlEKQorI2lmIFBMQVRGT1JNKE1BQykKKyAgICAsIG1fdmVydGljYWxTY3JvbGxi
YXJQYWludGVyKDApCisgICAgLCBtX2hvcml6b250YWxTY3JvbGxiYXJQYWludGVyKDApCisjZW5k
aWYKKyAgICAsIG1fZnJhbWVTY2FsZUZhY3RvcigxKQorICAgICwgbV93aGVlbEV2ZW50SGFuZGxl
ckNvdW50KDApCisgICAgLCBtX3N5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucygwKQorICAgICwg
bV9iZWhhdmlvckZvckZpeGVkKFN0aWNrVG9Eb2N1bWVudEJvdW5kcykKKyAgICAsIG1faGVhZGVy
SGVpZ2h0KDApCisgICAgLCBtX2Zvb3RlckhlaWdodCgwKQorICAgICwgbV9yZXF1ZXN0ZWRTY3Jv
bGxQb3NpdGlvblJlcHJlc2VudHNQcm9ncmFtbWF0aWNTY3JvbGwoZmFsc2UpCisgICAgLCBtX3Rv
cENvbnRlbnRJbnNldCgwKQoreworfQorCitTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9k
ZTo6U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUoY29uc3QgU2Nyb2xsaW5nU3RhdGVG
cmFtZVNjcm9sbGluZ05vZGUmIHN0YXRlTm9kZSwgU2Nyb2xsaW5nU3RhdGVUcmVlJiBhZG9wdGl2
ZVRyZWUpCisgICAgOiBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUoc3RhdGVOb2RlLCBhZG9w
dGl2ZVRyZWUpCisjaWYgUExBVEZPUk0oTUFDKQorICAgICwgbV92ZXJ0aWNhbFNjcm9sbGJhclBh
aW50ZXIoc3RhdGVOb2RlLnZlcnRpY2FsU2Nyb2xsYmFyUGFpbnRlcigpKQorICAgICwgbV9ob3Jp
em9udGFsU2Nyb2xsYmFyUGFpbnRlcihzdGF0ZU5vZGUuaG9yaXpvbnRhbFNjcm9sbGJhclBhaW50
ZXIoKSkKKyNlbmRpZgorICAgICwgbV9ub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihzdGF0ZU5vZGUu
bm9uRmFzdFNjcm9sbGFibGVSZWdpb24oKSkKKyAgICAsIG1fZnJhbWVTY2FsZUZhY3RvcihzdGF0
ZU5vZGUuZnJhbWVTY2FsZUZhY3RvcigpKQorICAgICwgbV93aGVlbEV2ZW50SGFuZGxlckNvdW50
KHN0YXRlTm9kZS53aGVlbEV2ZW50SGFuZGxlckNvdW50KCkpCisgICAgLCBtX3N5bmNocm9ub3Vz
U2Nyb2xsaW5nUmVhc29ucyhzdGF0ZU5vZGUuc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKCkp
CisgICAgLCBtX2JlaGF2aW9yRm9yRml4ZWQoc3RhdGVOb2RlLnNjcm9sbEJlaGF2aW9yRm9yRml4
ZWRFbGVtZW50cygpKQorICAgICwgbV9oZWFkZXJIZWlnaHQoc3RhdGVOb2RlLmhlYWRlckhlaWdo
dCgpKQorICAgICwgbV9mb290ZXJIZWlnaHQoc3RhdGVOb2RlLmZvb3RlckhlaWdodCgpKQorICAg
ICwgbV9yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbihzdGF0ZU5vZGUucmVxdWVzdGVkU2Nyb2xsUG9z
aXRpb24oKSkKKyAgICAsIG1fcmVxdWVzdGVkU2Nyb2xsUG9zaXRpb25SZXByZXNlbnRzUHJvZ3Jh
bW1hdGljU2Nyb2xsKHN0YXRlTm9kZS5yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvblJlcHJlc2VudHNQ
cm9ncmFtbWF0aWNTY3JvbGwoKSkKKyAgICAsIG1fdG9wQ29udGVudEluc2V0KHN0YXRlTm9kZS50
b3BDb250ZW50SW5zZXQoKSkKK3sKKyAgICBpZiAoaGFzQ2hhbmdlZFByb3BlcnR5KENvdW50ZXJT
Y3JvbGxpbmdMYXllcikpCisgICAgICAgIHNldENvdW50ZXJTY3JvbGxpbmdMYXllcihzdGF0ZU5v
ZGUuY291bnRlclNjcm9sbGluZ0xheWVyKCkudG9SZXByZXNlbnRhdGlvbihhZG9wdGl2ZVRyZWUu
cHJlZmVycmVkTGF5ZXJSZXByZXNlbnRhdGlvbigpKSk7CisKKyAgICBpZiAoaGFzQ2hhbmdlZFBy
b3BlcnR5KEluc2V0Q2xpcExheWVyKSkKKyAgICAgICAgc2V0SW5zZXRDbGlwTGF5ZXIoc3RhdGVO
b2RlLmluc2V0Q2xpcExheWVyKCkudG9SZXByZXNlbnRhdGlvbihhZG9wdGl2ZVRyZWUucHJlZmVy
cmVkTGF5ZXJSZXByZXNlbnRhdGlvbigpKSk7CisKKyAgICBpZiAoaGFzQ2hhbmdlZFByb3BlcnR5
KENvbnRlbnRTaGFkb3dMYXllcikpCisgICAgICAgIHNldENvbnRlbnRTaGFkb3dMYXllcihzdGF0
ZU5vZGUuY29udGVudFNoYWRvd0xheWVyKCkudG9SZXByZXNlbnRhdGlvbihhZG9wdGl2ZVRyZWUu
cHJlZmVycmVkTGF5ZXJSZXByZXNlbnRhdGlvbigpKSk7CisKKyAgICBpZiAoaGFzQ2hhbmdlZFBy
b3BlcnR5KEhlYWRlckxheWVyKSkKKyAgICAgICAgc2V0SGVhZGVyTGF5ZXIoc3RhdGVOb2RlLmhl
YWRlckxheWVyKCkudG9SZXByZXNlbnRhdGlvbihhZG9wdGl2ZVRyZWUucHJlZmVycmVkTGF5ZXJS
ZXByZXNlbnRhdGlvbigpKSk7CisKKyAgICBpZiAoaGFzQ2hhbmdlZFByb3BlcnR5KEZvb3Rlckxh
eWVyKSkKKyAgICAgICAgc2V0Rm9vdGVyTGF5ZXIoc3RhdGVOb2RlLmZvb3RlckxheWVyKCkudG9S
ZXByZXNlbnRhdGlvbihhZG9wdGl2ZVRyZWUucHJlZmVycmVkTGF5ZXJSZXByZXNlbnRhdGlvbigp
KSk7Cit9CisKK1Njcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjp+U2Nyb2xsaW5nU3Rh
dGVGcmFtZVNjcm9sbGluZ05vZGUoKQoreworfQorCitQYXNzT3duUHRyPFNjcm9sbGluZ1N0YXRl
Tm9kZT4gU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OmNsb25lKFNjcm9sbGluZ1N0
YXRlVHJlZSYgYWRvcHRpdmVUcmVlKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgU2Nyb2xs
aW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUoKnRoaXMsIGFkb3B0aXZlVHJlZSkpOworfQorCit2
b2lkIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRGcmFtZVNjYWxlRmFjdG9y
KGZsb2F0IHNjYWxlRmFjdG9yKQoreworICAgIGlmIChtX2ZyYW1lU2NhbGVGYWN0b3IgPT0gc2Nh
bGVGYWN0b3IpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZnJhbWVTY2FsZUZhY3RvciA9IHNj
YWxlRmFjdG9yOworCisgICAgc2V0UHJvcGVydHlDaGFuZ2VkKEZyYW1lU2NhbGVGYWN0b3IpOwor
fQorCit2b2lkIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXROb25GYXN0U2Ny
b2xsYWJsZVJlZ2lvbihjb25zdCBSZWdpb24mIG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKQorewor
ICAgIGlmIChtX25vbkZhc3RTY3JvbGxhYmxlUmVnaW9uID09IG5vbkZhc3RTY3JvbGxhYmxlUmVn
aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBtX25vbkZhc3RTY3JvbGxhYmxlUmVnaW9uID0g
bm9uRmFzdFNjcm9sbGFibGVSZWdpb247CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkKE5vbkZhc3RT
Y3JvbGxhYmxlUmVnaW9uKTsKK30KKwordm9pZCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5n
Tm9kZTo6c2V0V2hlZWxFdmVudEhhbmRsZXJDb3VudCh1bnNpZ25lZCB3aGVlbEV2ZW50SGFuZGxl
ckNvdW50KQoreworICAgIGlmIChtX3doZWVsRXZlbnRIYW5kbGVyQ291bnQgPT0gd2hlZWxFdmVu
dEhhbmRsZXJDb3VudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV93aGVlbEV2ZW50SGFuZGxl
ckNvdW50ID0gd2hlZWxFdmVudEhhbmRsZXJDb3VudDsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWQo
V2hlZWxFdmVudEhhbmRsZXJDb3VudCk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nU3RhdGVGcmFtZVNj
cm9sbGluZ05vZGU6OnNldFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyhTeW5jaHJvbm91c1Nj
cm9sbGluZ1JlYXNvbnMgcmVhc29ucykKK3sKKyAgICBpZiAobV9zeW5jaHJvbm91c1Njcm9sbGlu
Z1JlYXNvbnMgPT0gcmVhc29ucykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zeW5jaHJvbm91
c1Njcm9sbGluZ1JlYXNvbnMgPSByZWFzb25zOworICAgIHNldFByb3BlcnR5Q2hhbmdlZChSZWFz
b25zRm9yU3luY2hyb25vdXNTY3JvbGxpbmcpOworfQorCit2b2lkIFNjcm9sbGluZ1N0YXRlRnJh
bWVTY3JvbGxpbmdOb2RlOjpzZXRTY3JvbGxCZWhhdmlvckZvckZpeGVkRWxlbWVudHMoU2Nyb2xs
QmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzIGJlaGF2aW9yRm9yRml4ZWQpCit7CisgICAgaWYgKG1f
YmVoYXZpb3JGb3JGaXhlZCA9PSBiZWhhdmlvckZvckZpeGVkKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX2JlaGF2aW9yRm9yRml4ZWQgPSBiZWhhdmlvckZvckZpeGVkOworICAgIHNldFByb3Bl
cnR5Q2hhbmdlZChCZWhhdmlvckZvckZpeGVkRWxlbWVudHMpOworfQorICAgIAordm9pZCBTY3Jv
bGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0SGVhZGVySGVpZ2h0KGludCBoZWFkZXJI
ZWlnaHQpCit7CisgICAgaWYgKG1faGVhZGVySGVpZ2h0ID09IGhlYWRlckhlaWdodCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9oZWFkZXJIZWlnaHQgPSBoZWFkZXJIZWlnaHQ7CisgICAgc2V0
UHJvcGVydHlDaGFuZ2VkKEhlYWRlckhlaWdodCk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nU3RhdGVG
cmFtZVNjcm9sbGluZ05vZGU6OnNldEZvb3RlckhlaWdodChpbnQgZm9vdGVySGVpZ2h0KQorewor
ICAgIGlmIChtX2Zvb3RlckhlaWdodCA9PSBmb290ZXJIZWlnaHQpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fZm9vdGVySGVpZ2h0ID0gZm9vdGVySGVpZ2h0OworICAgIHNldFByb3BlcnR5Q2hh
bmdlZChGb290ZXJIZWlnaHQpOworfQorCit2b2lkIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxp
bmdOb2RlOjpzZXRUb3BDb250ZW50SW5zZXQoZmxvYXQgdG9wQ29udGVudEluc2V0KQoreworICAg
IGlmIChtX3RvcENvbnRlbnRJbnNldCA9PSB0b3BDb250ZW50SW5zZXQpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fdG9wQ29udGVudEluc2V0ID0gdG9wQ29udGVudEluc2V0OworICAgIHNldFBy
b3BlcnR5Q2hhbmdlZChUb3BDb250ZW50SW5zZXQpOworfQorCit2b2lkIFNjcm9sbGluZ1N0YXRl
RnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRDb3VudGVyU2Nyb2xsaW5nTGF5ZXIoY29uc3QgTGF5ZXJS
ZXByZXNlbnRhdGlvbiYgbGF5ZXJSZXByZXNlbnRhdGlvbikKK3sKKyAgICBpZiAobGF5ZXJSZXBy
ZXNlbnRhdGlvbiA9PSBtX2NvdW50ZXJTY3JvbGxpbmdMYXllcikKKyAgICAgICAgcmV0dXJuOwor
ICAgIAorICAgIG1fY291bnRlclNjcm9sbGluZ0xheWVyID0gbGF5ZXJSZXByZXNlbnRhdGlvbjsK
KyAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoQ291bnRlclNjcm9sbGluZ0xheWVyKTsKK30KKwordm9p
ZCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0SW5zZXRDbGlwTGF5ZXIoY29u
c3QgTGF5ZXJSZXByZXNlbnRhdGlvbiYgbGF5ZXJSZXByZXNlbnRhdGlvbikKK3sKKyAgICBpZiAo
bGF5ZXJSZXByZXNlbnRhdGlvbiA9PSBtX2luc2V0Q2xpcExheWVyKQorICAgICAgICByZXR1cm47
CisgICAgCisgICAgbV9pbnNldENsaXBMYXllciA9IGxheWVyUmVwcmVzZW50YXRpb247CisgICAg
c2V0UHJvcGVydHlDaGFuZ2VkKEluc2V0Q2xpcExheWVyKTsKK30KKwordm9pZCBTY3JvbGxpbmdT
dGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0Q29udGVudFNoYWRvd0xheWVyKGNvbnN0IExheWVy
UmVwcmVzZW50YXRpb24mIGxheWVyUmVwcmVzZW50YXRpb24pCit7CisgICAgaWYgKGxheWVyUmVw
cmVzZW50YXRpb24gPT0gbV9jb250ZW50U2hhZG93TGF5ZXIpCisgICAgICAgIHJldHVybjsKKyAg
ICAKKyAgICBtX2NvbnRlbnRTaGFkb3dMYXllciA9IGxheWVyUmVwcmVzZW50YXRpb247CisgICAg
c2V0UHJvcGVydHlDaGFuZ2VkKENvbnRlbnRTaGFkb3dMYXllcik7Cit9CisKK3ZvaWQgU2Nyb2xs
aW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OnNldEhlYWRlckxheWVyKGNvbnN0IExheWVyUmVw
cmVzZW50YXRpb24mIGxheWVyUmVwcmVzZW50YXRpb24pCit7CisgICAgaWYgKGxheWVyUmVwcmVz
ZW50YXRpb24gPT0gbV9oZWFkZXJMYXllcikKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1f
aGVhZGVyTGF5ZXIgPSBsYXllclJlcHJlc2VudGF0aW9uOworICAgIHNldFByb3BlcnR5Q2hhbmdl
ZChIZWFkZXJMYXllcik7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05v
ZGU6OnNldEZvb3RlckxheWVyKGNvbnN0IExheWVyUmVwcmVzZW50YXRpb24mIGxheWVyUmVwcmVz
ZW50YXRpb24pCit7CisgICAgaWYgKGxheWVyUmVwcmVzZW50YXRpb24gPT0gbV9mb290ZXJMYXll
cikKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fZm9vdGVyTGF5ZXIgPSBsYXllclJlcHJl
c2VudGF0aW9uOworICAgIHNldFByb3BlcnR5Q2hhbmdlZChGb290ZXJMYXllcik7Cit9CisKKyNp
ZiAhUExBVEZPUk0oTUFDKQordm9pZCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6
c2V0U2Nyb2xsYmFyUGFpbnRlcnNGcm9tU2Nyb2xsYmFycyhTY3JvbGxiYXIqLCBTY3JvbGxiYXIq
KQoreworfQorI2VuZGlmCisKK3ZvaWQgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6
OmR1bXBQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBpbnQgaW5kZW50KSBjb25zdAoreworICAg
IHRzIDw8ICIoRnJhbWUgc2Nyb2xsaW5nIG5vZGUiIDw8ICJcbiI7CisgICAgCisgICAgU2Nyb2xs
aW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpkdW1wUHJvcGVydGllcyh0cywgaW5kZW50KTsKKyAgICAK
KyAgICBpZiAobV9mcmFtZVNjYWxlRmFjdG9yICE9IDEpIHsKKyAgICAgICAgd3JpdGVJbmRlbnQo
dHMsIGluZGVudCArIDEpOworICAgICAgICB0cyA8PCAiKGZyYW1lIHNjYWxlIGZhY3RvciAiIDw8
IG1fZnJhbWVTY2FsZUZhY3RvciA8PCAiKVxuIjsKKyAgICB9CisKKyAgICBpZiAobV9zeW5jaHJv
bm91c1Njcm9sbGluZ1JlYXNvbnMpIHsKKyAgICAgICAgd3JpdGVJbmRlbnQodHMsIGluZGVudCAr
IDEpOworICAgICAgICB0cyA8PCAiKFNjcm9sbGluZyBvbiBtYWluIHRocmVhZCBiZWNhdXNlOiAi
IDw8IFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnNBc1Rl
eHQobV9zeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMpIDw8ICIpXG4iOworICAgIH0KKyAgICAK
KyAgICAvLyBGSVhNRTogZHVtcCBtb3JlIHByb3BlcnRpZXMuCit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpIHx8IFVTRShDT09S
RElOQVRFRF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjUyNDY4ZmZmOGIxNjBkNzQ3MzE5NDI5NjNjMWJlMTE4OTRlOWFmMzUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZUZyYW1l
U2Nyb2xsaW5nTm9kZS5oCkBAIC0wLDAgKzEsMTU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBT
Y3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZV9oCisjZGVmaW5lIFNjcm9sbGluZ1N0YXRl
RnJhbWVTY3JvbGxpbmdOb2RlX2gKKworI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpIHx8IFVT
RShDT09SRElOQVRFRF9HUkFQSElDUykKKworI2luY2x1ZGUgIlJlZ2lvbi5oIgorI2luY2x1ZGUg
IlNjcm9sbFR5cGVzLmgiCisjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaCIKKyNp
bmNsdWRlICJTY3JvbGxpbmdDb29yZGluYXRvci5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgU2Nyb2xsYmFyOworCitjbGFzcyBTY3JvbGxpbmdTdGF0ZUZy
YW1lU2Nyb2xsaW5nTm9kZSBmaW5hbCA6IHB1YmxpYyBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05v
ZGUgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPFNjcm9sbGluZ1N0YXRlRnJhbWVT
Y3JvbGxpbmdOb2RlPiBjcmVhdGUoU2Nyb2xsaW5nU3RhdGVUcmVlJiwgU2Nyb2xsaW5nTm9kZUlE
KTsKKworICAgIHZpcnR1YWwgUGFzc093blB0cjxTY3JvbGxpbmdTdGF0ZU5vZGU+IGNsb25lKFNj
cm9sbGluZ1N0YXRlVHJlZSYpOworCisgICAgdmlydHVhbCB+U2Nyb2xsaW5nU3RhdGVGcmFtZVNj
cm9sbGluZ05vZGUoKTsKKworICAgIGVudW0gQ2hhbmdlZFByb3BlcnR5IHsKKyAgICAgICAgRnJh
bWVTY2FsZUZhY3RvciA9IE51bVNjcm9sbGluZ1N0YXRlTm9kZUJpdHMsCisgICAgICAgIE5vbkZh
c3RTY3JvbGxhYmxlUmVnaW9uLAorICAgICAgICBXaGVlbEV2ZW50SGFuZGxlckNvdW50LAorICAg
ICAgICBSZWFzb25zRm9yU3luY2hyb25vdXNTY3JvbGxpbmcsCisgICAgICAgIENvdW50ZXJTY3Jv
bGxpbmdMYXllciwKKyAgICAgICAgSW5zZXRDbGlwTGF5ZXIsCisgICAgICAgIENvbnRlbnRTaGFk
b3dMYXllciwKKyAgICAgICAgSGVhZGVySGVpZ2h0LAorICAgICAgICBGb290ZXJIZWlnaHQsCisg
ICAgICAgIEhlYWRlckxheWVyLAorICAgICAgICBGb290ZXJMYXllciwKKyAgICAgICAgUGFpbnRl
ckZvclNjcm9sbGJhciwKKyAgICAgICAgQmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzLAorICAgICAg
ICBUb3BDb250ZW50SW5zZXQKKyAgICB9OworCisgICAgZmxvYXQgZnJhbWVTY2FsZUZhY3Rvcigp
IGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVTY2FsZUZhY3RvcjsgfQorICAgIHZvaWQgc2V0RnJhbWVT
Y2FsZUZhY3RvcihmbG9hdCk7CisKKyAgICBjb25zdCBSZWdpb24mIG5vbkZhc3RTY3JvbGxhYmxl
UmVnaW9uKCkgY29uc3QgeyByZXR1cm4gbV9ub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbjsgfQorICAg
IHZvaWQgc2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24oY29uc3QgUmVnaW9uJik7CisKKyAgICB1
bnNpZ25lZCB3aGVlbEV2ZW50SGFuZGxlckNvdW50KCkgY29uc3QgeyByZXR1cm4gbV93aGVlbEV2
ZW50SGFuZGxlckNvdW50OyB9CisgICAgdm9pZCBzZXRXaGVlbEV2ZW50SGFuZGxlckNvdW50KHVu
c2lnbmVkKTsKKworICAgIFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyBzeW5jaHJvbm91c1Nj
cm9sbGluZ1JlYXNvbnMoKSBjb25zdCB7IHJldHVybiBtX3N5bmNocm9ub3VzU2Nyb2xsaW5nUmVh
c29uczsgfQorICAgIHZvaWQgc2V0U3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKFN5bmNocm9u
b3VzU2Nyb2xsaW5nUmVhc29ucyk7CisKKyAgICBTY3JvbGxCZWhhdmlvckZvckZpeGVkRWxlbWVu
dHMgc2Nyb2xsQmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9iZWhh
dmlvckZvckZpeGVkOyB9CisgICAgdm9pZCBzZXRTY3JvbGxCZWhhdmlvckZvckZpeGVkRWxlbWVu
dHMoU2Nyb2xsQmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzKTsKKworICAgIGludCBoZWFkZXJIZWln
aHQoKSBjb25zdCB7IHJldHVybiBtX2hlYWRlckhlaWdodDsgfQorICAgIHZvaWQgc2V0SGVhZGVy
SGVpZ2h0KGludCk7CisKKyAgICBpbnQgZm9vdGVySGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9m
b290ZXJIZWlnaHQ7IH0KKyAgICB2b2lkIHNldEZvb3RlckhlaWdodChpbnQpOworCisgICAgZmxv
YXQgdG9wQ29udGVudEluc2V0KCkgY29uc3QgeyByZXR1cm4gbV90b3BDb250ZW50SW5zZXQ7IH0K
KyAgICB2b2lkIHNldFRvcENvbnRlbnRJbnNldChmbG9hdCk7CisgICAgCisgICAgLy8gVGhpcyBp
cyBhIGxheWVyIG1vdmVkIGluIHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24gdG8gc2Nyb2xsaW5nLCBm
b3IgZXhhbXBsZSBmb3IgYmFja2dyb3VuZC1hdHRhY2htZW50OmZpeGVkCisgICAgY29uc3QgTGF5
ZXJSZXByZXNlbnRhdGlvbiYgY291bnRlclNjcm9sbGluZ0xheWVyKCkgY29uc3QgeyByZXR1cm4g
bV9jb3VudGVyU2Nyb2xsaW5nTGF5ZXI7IH0KKyAgICB2b2lkIHNldENvdW50ZXJTY3JvbGxpbmdM
YXllcihjb25zdCBMYXllclJlcHJlc2VudGF0aW9uJik7CisKKyAgICAvLyBUaGlzIGlzIGEgY2xp
cHBpbmcgbGF5ZXIgdGhhdCB3aWxsIHNjcm9sbCB3aXRoIHRoZSBwYWdlIGZvciBhbGwgeS1kZWx0
YSBzY3JvbGwgdmFsdWVzIGJldHdlZW4gMAorICAgIC8vIGFuZCB0b3BDb250ZW50SW5zZXQoKS4g
T25jZSB0aGUgeS1kZWx0YXMgZ2V0IGJleW9uZCB0aGUgY29udGVudCBpbnNldCBwb2ludCwgdGhp
cyBsYXllciBubyBsb25nZXIKKyAgICAvLyBuZWVkcyB0byBtb3ZlLiBJZiB0aGUgdG9wQ29udGVu
dEluc2V0KCkgaXMgMCwgdGhpcyBsYXllciBkb2VzIG5vdCBuZWVkIHRvIG1vdmUgYXQgYWxsLiBU
aGlzIGlzCisgICAgLy8gb25seSB1c2VkIG9uIHRoZSBNYWMuCisgICAgY29uc3QgTGF5ZXJSZXBy
ZXNlbnRhdGlvbiYgaW5zZXRDbGlwTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2luc2V0Q2xpcExh
eWVyOyB9CisgICAgdm9pZCBzZXRJbnNldENsaXBMYXllcihjb25zdCBMYXllclJlcHJlc2VudGF0
aW9uJik7CisKKyAgICBjb25zdCBMYXllclJlcHJlc2VudGF0aW9uJiBjb250ZW50U2hhZG93TGF5
ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRTaGFkb3dMYXllcjsgfQorICAgIHZvaWQgc2V0
Q29udGVudFNoYWRvd0xheWVyKGNvbnN0IExheWVyUmVwcmVzZW50YXRpb24mKTsKKworICAgIC8v
IFRoZSBoZWFkZXIgYW5kIGZvb3RlciBsYXllcnMgc2Nyb2xsIHZlcnRpY2FsbHkgd2l0aCB0aGUg
cGFnZSwgdGhleSBzaG91bGQgcmVtYWluIGZpeGVkIHdoZW4gc2Nyb2xsaW5nIGhvcml6b250YWxs
eS4KKyAgICBjb25zdCBMYXllclJlcHJlc2VudGF0aW9uJiBoZWFkZXJMYXllcigpIGNvbnN0IHsg
cmV0dXJuIG1faGVhZGVyTGF5ZXI7IH0KKyAgICB2b2lkIHNldEhlYWRlckxheWVyKGNvbnN0IExh
eWVyUmVwcmVzZW50YXRpb24mKTsKKworICAgIC8vIFRoZSBoZWFkZXIgYW5kIGZvb3RlciBsYXll
cnMgc2Nyb2xsIHZlcnRpY2FsbHkgd2l0aCB0aGUgcGFnZSwgdGhleSBzaG91bGQgcmVtYWluIGZp
eGVkIHdoZW4gc2Nyb2xsaW5nIGhvcml6b250YWxseS4KKyAgICBjb25zdCBMYXllclJlcHJlc2Vu
dGF0aW9uJiBmb290ZXJMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fZm9vdGVyTGF5ZXI7IH0KKyAg
ICB2b2lkIHNldEZvb3RlckxheWVyKGNvbnN0IExheWVyUmVwcmVzZW50YXRpb24mKTsKKworI2lm
IFBMQVRGT1JNKE1BQykKKyAgICBTY3JvbGxiYXJQYWludGVyIHZlcnRpY2FsU2Nyb2xsYmFyUGFp
bnRlcigpIGNvbnN0IHsgcmV0dXJuIG1fdmVydGljYWxTY3JvbGxiYXJQYWludGVyLmdldCgpOyB9
CisgICAgU2Nyb2xsYmFyUGFpbnRlciBob3Jpem9udGFsU2Nyb2xsYmFyUGFpbnRlcigpIGNvbnN0
IHsgcmV0dXJuIG1faG9yaXpvbnRhbFNjcm9sbGJhclBhaW50ZXIuZ2V0KCk7IH0KKyNlbmRpZgor
ICAgIHZvaWQgc2V0U2Nyb2xsYmFyUGFpbnRlcnNGcm9tU2Nyb2xsYmFycyhTY3JvbGxiYXIqIHZl
cnRpY2FsU2Nyb2xsYmFyLCBTY3JvbGxiYXIqIGhvcml6b250YWxTY3JvbGxiYXIpOworCisgICAg
dmlydHVhbCB2b2lkIGR1bXBQcm9wZXJ0aWVzKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50KSBjb25z
dCBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5n
Tm9kZShTY3JvbGxpbmdTdGF0ZVRyZWUmLCBTY3JvbGxpbmdOb2RlSUQpOworICAgIFNjcm9sbGlu
Z1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlKGNvbnN0IFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxp
bmdOb2RlJiwgU2Nyb2xsaW5nU3RhdGVUcmVlJik7CisKKyAgICBMYXllclJlcHJlc2VudGF0aW9u
IG1fY291bnRlclNjcm9sbGluZ0xheWVyOworICAgIExheWVyUmVwcmVzZW50YXRpb24gbV9pbnNl
dENsaXBMYXllcjsKKyAgICBMYXllclJlcHJlc2VudGF0aW9uIG1fY29udGVudFNoYWRvd0xheWVy
OworICAgIExheWVyUmVwcmVzZW50YXRpb24gbV9oZWFkZXJMYXllcjsKKyAgICBMYXllclJlcHJl
c2VudGF0aW9uIG1fZm9vdGVyTGF5ZXI7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgUmV0YWlu
UHRyPFNjcm9sbGJhclBhaW50ZXI+IG1fdmVydGljYWxTY3JvbGxiYXJQYWludGVyOworICAgIFJl
dGFpblB0cjxTY3JvbGxiYXJQYWludGVyPiBtX2hvcml6b250YWxTY3JvbGxiYXJQYWludGVyOwor
I2VuZGlmCisKKyAgICBSZWdpb24gbV9ub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbjsKKyAgICBmbG9h
dCBtX2ZyYW1lU2NhbGVGYWN0b3I7CisgICAgdW5zaWduZWQgbV93aGVlbEV2ZW50SGFuZGxlckNv
dW50OworICAgIFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyBtX3N5bmNocm9ub3VzU2Nyb2xs
aW5nUmVhc29uczsKKyAgICBTY3JvbGxCZWhhdmlvckZvckZpeGVkRWxlbWVudHMgbV9iZWhhdmlv
ckZvckZpeGVkOworICAgIGludCBtX2hlYWRlckhlaWdodDsKKyAgICBpbnQgbV9mb290ZXJIZWln
aHQ7CisgICAgRmxvYXRQb2ludCBtX3JlcXVlc3RlZFNjcm9sbFBvc2l0aW9uOworICAgIGJvb2wg
bV9yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvblJlcHJlc2VudHNQcm9ncmFtbWF0aWNTY3JvbGw7Cisg
ICAgZmxvYXQgbV90b3BDb250ZW50SW5zZXQ7Cit9OworCitTQ1JPTExJTkdfU1RBVEVfTk9ERV9U
WVBFX0NBU1RTKFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlLCBpc0ZyYW1lU2Nyb2xs
aW5nTm9kZSgpKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KEFTWU5DX1NDUk9MTElORykgfHwgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorCisjZW5kaWYg
Ly8gU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGVfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUuaAppbmRleCAyMDNhYTAwYjQ2
YmE2MTQ0OWM3MWRlNWYzYTkzY2NjOTFjN2EzYzU2Li5jOTBkMTU5YTA5NjFjMmM1MDFhZGM2MDhj
Nzc5MzE0NjIxZjI4MTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdTdGF0ZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdTdGF0ZU5vZGUuaApAQCAtOTAsNiArOTAsMTEgQEAgcHVibGljOgogICAgICAg
ICBBU1NFUlQobV9yZXByZXNlbnRhdGlvbiA9PSBQbGF0Zm9ybUxheWVyUmVwcmVzZW50YXRpb24p
OwogICAgICAgICByZXR1cm4gbV9wbGF0Zm9ybUxheWVyOwogICAgIH0KKyAgICAKKyAgICBHcmFw
aGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQgbGF5ZXJJRCgpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gbV9sYXllcklEOworICAgIH0KIAogICAgIG9wZXJhdG9yIEdyYXBoaWNzTGF5ZXI6
OlBsYXRmb3JtTGF5ZXJJRCgpIGNvbnN0CiAgICAgewpAQCAtMTU2LDYgKzE2MSw4IEBAIHB1Ymxp
YzoKICAgICBib29sIGlzRml4ZWROb2RlKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlVHlwZSA9PSBG
aXhlZE5vZGU7IH0KICAgICBib29sIGlzU3RpY2t5Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9k
ZVR5cGUgPT0gU3RpY2t5Tm9kZTsgfQogICAgIGJvb2wgaXNTY3JvbGxpbmdOb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV9ub2RlVHlwZSA9PSBGcmFtZVNjcm9sbGluZ05vZGUgfHwgbV9ub2RlVHlwZSA9
PSBPdmVyZmxvd1Njcm9sbGluZ05vZGU7IH0KKyAgICBib29sIGlzRnJhbWVTY3JvbGxpbmdOb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9ub2RlVHlwZSA9PSBGcmFtZVNjcm9sbGluZ05vZGU7IH0KKyAg
ICBib29sIGlzT3ZlcmZsb3dTY3JvbGxpbmdOb2RlKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlVHlw
ZSA9PSBPdmVyZmxvd1Njcm9sbGluZ05vZGU7IH0KIAogICAgIHZpcnR1YWwgUGFzc093blB0cjxT
Y3JvbGxpbmdTdGF0ZU5vZGU+IGNsb25lKFNjcm9sbGluZ1N0YXRlVHJlZSYgYWRvcHRpdmVUcmVl
KSA9IDA7CiAgICAgUGFzc093blB0cjxTY3JvbGxpbmdTdGF0ZU5vZGU+IGNsb25lQW5kUmVzZXQo
U2Nyb2xsaW5nU3RhdGVUcmVlJiBhZG9wdGl2ZVRyZWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVPdmVyZmxv
d1Njcm9sbGluZ05vZGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmZjRhMzc0YWI5ODJhZTliZDE1ZWM4NTdk
ZjA5YjA3N2FjNmJjYzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5jcHAKQEAgLTAsMCAr
MSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTY3Jv
bGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oIgorCisjaWYgRU5BQkxFKEFTWU5DX1ND
Uk9MTElORykgfHwgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorCisjaW5jbHVkZSAiU2Nyb2xs
aW5nU3RhdGVUcmVlLmgiCisjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgorI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzT3duUHRyPFNjcm9sbGluZ1N0
YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlPiBTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5n
Tm9kZTo6Y3JlYXRlKFNjcm9sbGluZ1N0YXRlVHJlZSYgc3RhdGVUcmVlLCBTY3JvbGxpbmdOb2Rl
SUQgbm9kZUlEKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgU2Nyb2xsaW5nU3RhdGVPdmVy
Zmxvd1Njcm9sbGluZ05vZGUoc3RhdGVUcmVlLCBub2RlSUQpKTsKK30KKworU2Nyb2xsaW5nU3Rh
dGVPdmVyZmxvd1Njcm9sbGluZ05vZGU6OlNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlKFNjcm9sbGluZ1N0YXRlVHJlZSYgc3RhdGVUcmVlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlE
KQorICAgIDogU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlKHN0YXRlVHJlZSwgT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlLCBub2RlSUQpCit7Cit9CisKK1Njcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlOjpTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZShjb25zdCBTY3Jv
bGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZSYgc3RhdGVOb2RlLCBTY3JvbGxpbmdTdGF0
ZVRyZWUmIGFkb3B0aXZlVHJlZSkKKyAgICA6IFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZShz
dGF0ZU5vZGUsIGFkb3B0aXZlVHJlZSkKK3sKKyAgICBpZiAoaGFzQ2hhbmdlZFByb3BlcnR5KFNj
cm9sbGVkQ29udGVudHNMYXllcikpCisgICAgICAgIHNldFNjcm9sbGVkQ29udGVudHNMYXllcihz
dGF0ZU5vZGUuc2Nyb2xsZWRDb250ZW50c0xheWVyKCkudG9SZXByZXNlbnRhdGlvbihhZG9wdGl2
ZVRyZWUucHJlZmVycmVkTGF5ZXJSZXByZXNlbnRhdGlvbigpKSk7Cit9CisKK1Njcm9sbGluZ1N0
YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlOjp+U2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGlu
Z05vZGUoKQoreworfQorCitQYXNzT3duUHRyPFNjcm9sbGluZ1N0YXRlTm9kZT4gU2Nyb2xsaW5n
U3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGU6OmNsb25lKFNjcm9sbGluZ1N0YXRlVHJlZSYgYWRv
cHRpdmVUcmVlKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgU2Nyb2xsaW5nU3RhdGVPdmVy
Zmxvd1Njcm9sbGluZ05vZGUoKnRoaXMsIGFkb3B0aXZlVHJlZSkpOworfQorICAgIAordm9pZCBT
Y3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZTo6c2V0U2Nyb2xsZWRDb250ZW50c0xh
eWVyKGNvbnN0IExheWVyUmVwcmVzZW50YXRpb24mIGxheWVyUmVwcmVzZW50YXRpb24pCit7Cisg
ICAgaWYgKGxheWVyUmVwcmVzZW50YXRpb24gPT0gbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXIpCisg
ICAgICAgIHJldHVybjsKKyAgICAKKyAgICBtX3Njcm9sbGVkQ29udGVudHNMYXllciA9IGxheWVy
UmVwcmVzZW50YXRpb247CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkKFNjcm9sbGVkQ29udGVudHNM
YXllcik7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGU6OmR1
bXBQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBpbnQgaW5kZW50KSBjb25zdAoreworICAgIHRz
IDw8ICIoIiA8PCAiT3ZlcmZsb3cgc2Nyb2xsaW5nIG5vZGUiIDw8ICJcbiI7CisgICAgCisgICAg
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpkdW1wUHJvcGVydGllcyh0cywgaW5kZW50KTsK
KyAgICAKKyAgICBpZiAobV9zY3JvbGxlZENvbnRlbnRzTGF5ZXIubGF5ZXJJRCgpKSB7CisgICAg
ICAgIHdyaXRlSW5kZW50KHRzLCBpbmRlbnQgKyAxKTsKKyAgICAgICAgdHMgPDwgIihzY3JvbGxl
ZCBjb250ZW50cyBsYXllciAiIDw8IG1fc2Nyb2xsZWRDb250ZW50c0xheWVyLmxheWVySUQoKSA8
PCAiKVxuIjsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpIHx8IFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2NTliMDJiM2Nk
ZWU3MjlkNWI3MDViMDgwOWQ3ZmYzYzRhN2MxYzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZS5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNjcm9sbGluZ1N0YXRl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlX2gKKyNkZWZpbmUgU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Nj
cm9sbGluZ05vZGVfaAorCisjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgfHwgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKQorCisjaW5jbHVkZSAiU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2Rl
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2Nyb2xsaW5nU3RhdGVPdmVyZmxv
d1Njcm9sbGluZ05vZGUgOiBwdWJsaWMgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xs
aW5nTm9kZT4gY3JlYXRlKFNjcm9sbGluZ1N0YXRlVHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7CisK
KyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8U2Nyb2xsaW5nU3RhdGVOb2RlPiBjbG9uZShTY3JvbGxp
bmdTdGF0ZVRyZWUmKTsKKworICAgIHZpcnR1YWwgflNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlKCk7CisKKyAgICBlbnVtIENoYW5nZWRQcm9wZXJ0eSB7CisgICAgICAgIFNjcm9s
bGVkQ29udGVudHNMYXllciA9IE51bVNjcm9sbGluZ1N0YXRlTm9kZUJpdHMKKyAgICB9OworCisg
ICAgLy8gVGhpcyBpcyBhIGxheWVyIHdpdGggdGhlIGNvbnRlbnRzIHRoYXQgbW92ZS4KKyAgICBj
b25zdCBMYXllclJlcHJlc2VudGF0aW9uJiBzY3JvbGxlZENvbnRlbnRzTGF5ZXIoKSBjb25zdCB7
IHJldHVybiBtX3Njcm9sbGVkQ29udGVudHNMYXllcjsgfQorICAgIHZvaWQgc2V0U2Nyb2xsZWRD
b250ZW50c0xheWVyKGNvbnN0IExheWVyUmVwcmVzZW50YXRpb24mKTsKKyAgICAKKyAgICB2aXJ0
dWFsIHZvaWQgZHVtcFByb3BlcnRpZXMoVGV4dFN0cmVhbSYsIGludCBpbmRlbnQpIGNvbnN0IG92
ZXJyaWRlOworCitwcml2YXRlOgorICAgIFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlKFNjcm9sbGluZ1N0YXRlVHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7CisgICAgU2Nyb2xsaW5n
U3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGUoY29uc3QgU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Nj
cm9sbGluZ05vZGUmLCBTY3JvbGxpbmdTdGF0ZVRyZWUmKTsKKyAgICAKKyAgICBMYXllclJlcHJl
c2VudGF0aW9uIG1fc2Nyb2xsZWRDb250ZW50c0xheWVyOyAgICAKK307CisKK1NDUk9MTElOR19T
VEFURV9OT0RFX1RZUEVfQ0FTVFMoU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGUs
IGlzT3ZlcmZsb3dTY3JvbGxpbmdOb2RlKCkpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSB8fCBVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1MpCisKKyNlbmRpZiAvLyBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGVfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXggZWY2NjJmZTNiMjZlZDZlYTZmNGEzZTk5NTYwMzU3ZDg5
NTg3OWExNS4uYWYzZjM3MjNiZjkzNjJmZTQ5ZDFjNGRkYjkwOTYyYjJkMzg3OWU5OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdT
dGF0ZVNjcm9sbGluZ05vZGUuY3BwCkBAIC0zNCw4OCArMzQsMzggQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1QYXNzT3duUHRyPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT4gU2Nyb2xs
aW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpjcmVhdGUoU2Nyb2xsaW5nU3RhdGVUcmVlJiBzdGF0ZVRy
ZWUsIFNjcm9sbGluZ05vZGVUeXBlIG5vZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQot
ewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlKHN0
YXRlVHJlZSwgbm9kZVR5cGUsIG5vZGVJRCkpOwotfQotCiBTY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZShTY3JvbGxpbmdTdGF0ZVRyZWUmIHN0
YXRlVHJlZSwgU2Nyb2xsaW5nTm9kZVR5cGUgbm9kZVR5cGUsIFNjcm9sbGluZ05vZGVJRCBub2Rl
SUQpCiAgICAgOiBTY3JvbGxpbmdTdGF0ZU5vZGUobm9kZVR5cGUsIHN0YXRlVHJlZSwgbm9kZUlE
KQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICAsIG1fdmVydGljYWxTY3JvbGxiYXJQYWludGVyKDAp
Ci0gICAgLCBtX2hvcml6b250YWxTY3JvbGxiYXJQYWludGVyKDApCi0jZW5kaWYKLSAgICAsIG1f
ZnJhbWVTY2FsZUZhY3RvcigxKQotICAgICwgbV93aGVlbEV2ZW50SGFuZGxlckNvdW50KDApCi0g
ICAgLCBtX3N5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucygwKQotICAgICwgbV9iZWhhdmlvckZv
ckZpeGVkKFN0aWNrVG9Eb2N1bWVudEJvdW5kcykKLSAgICAsIG1faGVhZGVySGVpZ2h0KDApCi0g
ICAgLCBtX2Zvb3RlckhlaWdodCgwKQogICAgICwgbV9yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvblJl
cHJlc2VudHNQcm9ncmFtbWF0aWNTY3JvbGwoZmFsc2UpCi0gICAgLCBtX3RvcENvbnRlbnRJbnNl
dCgwKQogewogfQogCiBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZShjb25zdCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUmIHN0YXRlTm9k
ZSwgU2Nyb2xsaW5nU3RhdGVUcmVlJiBhZG9wdGl2ZVRyZWUpCiAgICAgOiBTY3JvbGxpbmdTdGF0
ZU5vZGUoc3RhdGVOb2RlLCBhZG9wdGl2ZVRyZWUpCi0jaWYgUExBVEZPUk0oTUFDKQotICAgICwg
bV92ZXJ0aWNhbFNjcm9sbGJhclBhaW50ZXIoc3RhdGVOb2RlLnZlcnRpY2FsU2Nyb2xsYmFyUGFp
bnRlcigpKQotICAgICwgbV9ob3Jpem9udGFsU2Nyb2xsYmFyUGFpbnRlcihzdGF0ZU5vZGUuaG9y
aXpvbnRhbFNjcm9sbGJhclBhaW50ZXIoKSkKLSNlbmRpZgotICAgICwgbV92aWV3cG9ydFNpemUo
c3RhdGVOb2RlLnZpZXdwb3J0U2l6ZSgpKQorICAgICwgbV9zY3JvbGxhYmxlQXJlYVNpemUoc3Rh
dGVOb2RlLnNjcm9sbGFibGVBcmVhU2l6ZSgpKQogICAgICwgbV90b3RhbENvbnRlbnRzU2l6ZShz
dGF0ZU5vZGUudG90YWxDb250ZW50c1NpemUoKSkKICAgICAsIG1fc2Nyb2xsUG9zaXRpb24oc3Rh
dGVOb2RlLnNjcm9sbFBvc2l0aW9uKCkpCisgICAgLCBtX3JlcXVlc3RlZFNjcm9sbFBvc2l0aW9u
KHN0YXRlTm9kZS5yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbigpKQogICAgICwgbV9zY3JvbGxPcmln
aW4oc3RhdGVOb2RlLnNjcm9sbE9yaWdpbigpKQogICAgICwgbV9zY3JvbGxhYmxlQXJlYVBhcmFt
ZXRlcnMoc3RhdGVOb2RlLnNjcm9sbGFibGVBcmVhUGFyYW1ldGVycygpKQotICAgICwgbV9ub25G
YXN0U2Nyb2xsYWJsZVJlZ2lvbihzdGF0ZU5vZGUubm9uRmFzdFNjcm9sbGFibGVSZWdpb24oKSkK
LSAgICAsIG1fZnJhbWVTY2FsZUZhY3RvcihzdGF0ZU5vZGUuZnJhbWVTY2FsZUZhY3RvcigpKQot
ICAgICwgbV93aGVlbEV2ZW50SGFuZGxlckNvdW50KHN0YXRlTm9kZS53aGVlbEV2ZW50SGFuZGxl
ckNvdW50KCkpCi0gICAgLCBtX3N5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyhzdGF0ZU5vZGUu
c3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKCkpCi0gICAgLCBtX2JlaGF2aW9yRm9yRml4ZWQo
c3RhdGVOb2RlLnNjcm9sbEJlaGF2aW9yRm9yRml4ZWRFbGVtZW50cygpKQotICAgICwgbV9oZWFk
ZXJIZWlnaHQoc3RhdGVOb2RlLmhlYWRlckhlaWdodCgpKQotICAgICwgbV9mb290ZXJIZWlnaHQo
c3RhdGVOb2RlLmZvb3RlckhlaWdodCgpKQotICAgICwgbV9yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlv
bihzdGF0ZU5vZGUucmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24oKSkKICAgICAsIG1fcmVxdWVzdGVk
U2Nyb2xsUG9zaXRpb25SZXByZXNlbnRzUHJvZ3JhbW1hdGljU2Nyb2xsKHN0YXRlTm9kZS5yZXF1
ZXN0ZWRTY3JvbGxQb3NpdGlvblJlcHJlc2VudHNQcm9ncmFtbWF0aWNTY3JvbGwoKSkKLSAgICAs
IG1fdG9wQ29udGVudEluc2V0KHN0YXRlTm9kZS50b3BDb250ZW50SW5zZXQoKSkKIHsKLSAgICBp
ZiAoaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGVkQ29udGVudHNMYXllcikpCi0gICAgICAgIHNl
dFNjcm9sbGVkQ29udGVudHNMYXllcihzdGF0ZU5vZGUuc2Nyb2xsZWRDb250ZW50c0xheWVyKCku
dG9SZXByZXNlbnRhdGlvbihhZG9wdGl2ZVRyZWUucHJlZmVycmVkTGF5ZXJSZXByZXNlbnRhdGlv
bigpKSk7Ci0KLSAgICBpZiAoaGFzQ2hhbmdlZFByb3BlcnR5KENvdW50ZXJTY3JvbGxpbmdMYXll
cikpCi0gICAgICAgIHNldENvdW50ZXJTY3JvbGxpbmdMYXllcihzdGF0ZU5vZGUuY291bnRlclNj
cm9sbGluZ0xheWVyKCkudG9SZXByZXNlbnRhdGlvbihhZG9wdGl2ZVRyZWUucHJlZmVycmVkTGF5
ZXJSZXByZXNlbnRhdGlvbigpKSk7Ci0KLSAgICBpZiAoaGFzQ2hhbmdlZFByb3BlcnR5KEluc2V0
Q2xpcExheWVyKSkKLSAgICAgICAgc2V0SW5zZXRDbGlwTGF5ZXIoc3RhdGVOb2RlLmluc2V0Q2xp
cExheWVyKCkudG9SZXByZXNlbnRhdGlvbihhZG9wdGl2ZVRyZWUucHJlZmVycmVkTGF5ZXJSZXBy
ZXNlbnRhdGlvbigpKSk7Ci0KLSAgICBpZiAoaGFzQ2hhbmdlZFByb3BlcnR5KENvbnRlbnRTaGFk
b3dMYXllcikpCi0gICAgICAgIHNldENvbnRlbnRTaGFkb3dMYXllcihzdGF0ZU5vZGUuY29udGVu
dFNoYWRvd0xheWVyKCkudG9SZXByZXNlbnRhdGlvbihhZG9wdGl2ZVRyZWUucHJlZmVycmVkTGF5
ZXJSZXByZXNlbnRhdGlvbigpKSk7Ci0KLSAgICBpZiAoaGFzQ2hhbmdlZFByb3BlcnR5KEhlYWRl
ckxheWVyKSkKLSAgICAgICAgc2V0SGVhZGVyTGF5ZXIoc3RhdGVOb2RlLmhlYWRlckxheWVyKCku
dG9SZXByZXNlbnRhdGlvbihhZG9wdGl2ZVRyZWUucHJlZmVycmVkTGF5ZXJSZXByZXNlbnRhdGlv
bigpKSk7Ci0KLSAgICBpZiAoaGFzQ2hhbmdlZFByb3BlcnR5KEZvb3RlckxheWVyKSkKLSAgICAg
ICAgc2V0Rm9vdGVyTGF5ZXIoc3RhdGVOb2RlLmZvb3RlckxheWVyKCkudG9SZXByZXNlbnRhdGlv
bihhZG9wdGl2ZVRyZWUucHJlZmVycmVkTGF5ZXJSZXByZXNlbnRhdGlvbigpKSk7CiB9CiAKIFNj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6flNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSgp
CiB7CiB9CiAKLVBhc3NPd25QdHI8U2Nyb2xsaW5nU3RhdGVOb2RlPiBTY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGU6OmNsb25lKFNjcm9sbGluZ1N0YXRlVHJlZSYgYWRvcHRpdmVUcmVlKQordm9p
ZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFNjcm9sbGFibGVBcmVhU2l6ZShjb25z
dCBGbG9hdFNpemUmIHNpemUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTY3JvbGxpbmdT
dGF0ZVNjcm9sbGluZ05vZGUoKnRoaXMsIGFkb3B0aXZlVHJlZSkpOwotfQotCi12b2lkIFNjcm9s
bGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0Vmlld3BvcnRTaXplKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSkKLXsKLSAgICBpZiAobV92aWV3cG9ydFNpemUgPT0gc2l6ZSkKKyAgICBpZiAobV9zY3Jv
bGxhYmxlQXJlYVNpemUgPT0gc2l6ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV92aWV3cG9y
dFNpemUgPSBzaXplOwotICAgIHNldFByb3BlcnR5Q2hhbmdlZChWaWV3cG9ydFNpemUpOworICAg
IG1fc2Nyb2xsYWJsZUFyZWFTaXplID0gc2l6ZTsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoU2Ny
b2xsYWJsZUFyZWFTaXplKTsKIH0KIAotdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6
OnNldFRvdGFsQ29udGVudHNTaXplKGNvbnN0IEludFNpemUmIHRvdGFsQ29udGVudHNTaXplKQor
dm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFRvdGFsQ29udGVudHNTaXplKGNv
bnN0IEZsb2F0U2l6ZSYgdG90YWxDb250ZW50c1NpemUpCiB7CiAgICAgaWYgKG1fdG90YWxDb250
ZW50c1NpemUgPT0gdG90YWxDb250ZW50c1NpemUpCiAgICAgICAgIHJldHVybjsKQEAgLTE1MSw1
MiArMTAxLDYgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFNjcm9sbGFi
bGVBcmVhUGFyYW1ldGVycyhjb25zdCBTY3JvbGxhYmxlQXIKICAgICBzZXRQcm9wZXJ0eUNoYW5n
ZWQoU2Nyb2xsYWJsZUFyZWFQYXJhbXMpOwogfQogCi12b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZTo6c2V0RnJhbWVTY2FsZUZhY3RvcihmbG9hdCBzY2FsZUZhY3RvcikKLXsKLSAgICBp
ZiAobV9mcmFtZVNjYWxlRmFjdG9yID09IHNjYWxlRmFjdG9yKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBtX2ZyYW1lU2NhbGVGYWN0b3IgPSBzY2FsZUZhY3RvcjsKLQotICAgIHNldFByb3BlcnR5
Q2hhbmdlZChGcmFtZVNjYWxlRmFjdG9yKTsKLX0KLQotdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGU6OnNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKGNvbnN0IFJlZ2lvbiYgbm9uRmFz
dFNjcm9sbGFibGVSZWdpb24pCi17Ci0gICAgaWYgKG1fbm9uRmFzdFNjcm9sbGFibGVSZWdpb24g
PT0gbm9uRmFzdFNjcm9sbGFibGVSZWdpb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fbm9u
RmFzdFNjcm9sbGFibGVSZWdpb24gPSBub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbjsKLSAgICBzZXRQ
cm9wZXJ0eUNoYW5nZWQoTm9uRmFzdFNjcm9sbGFibGVSZWdpb24pOwotfQotCi12b2lkIFNjcm9s
bGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0V2hlZWxFdmVudEhhbmRsZXJDb3VudCh1bnNpZ25l
ZCB3aGVlbEV2ZW50SGFuZGxlckNvdW50KQotewotICAgIGlmIChtX3doZWVsRXZlbnRIYW5kbGVy
Q291bnQgPT0gd2hlZWxFdmVudEhhbmRsZXJDb3VudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
bV93aGVlbEV2ZW50SGFuZGxlckNvdW50ID0gd2hlZWxFdmVudEhhbmRsZXJDb3VudDsKLSAgICBz
ZXRQcm9wZXJ0eUNoYW5nZWQoV2hlZWxFdmVudEhhbmRsZXJDb3VudCk7Ci19Ci0KLXZvaWQgU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMo
U3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zIHJlYXNvbnMpCi17Ci0gICAgaWYgKG1fc3luY2hy
b25vdXNTY3JvbGxpbmdSZWFzb25zID09IHJlYXNvbnMpCi0gICAgICAgIHJldHVybjsKLQotICAg
IG1fc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zID0gcmVhc29uczsKLSAgICBzZXRQcm9wZXJ0
eUNoYW5nZWQoUmVhc29uc0ZvclN5bmNocm9ub3VzU2Nyb2xsaW5nKTsKLX0KLQotdm9pZCBTY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFNjcm9sbEJlaGF2aW9yRm9yRml4ZWRFbGVtZW50
cyhTY3JvbGxCZWhhdmlvckZvckZpeGVkRWxlbWVudHMgYmVoYXZpb3JGb3JGaXhlZCkKLXsKLSAg
ICBpZiAobV9iZWhhdmlvckZvckZpeGVkID09IGJlaGF2aW9yRm9yRml4ZWQpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIG1fYmVoYXZpb3JGb3JGaXhlZCA9IGJlaGF2aW9yRm9yRml4ZWQ7Ci0gICAg
c2V0UHJvcGVydHlDaGFuZ2VkKEJlaGF2aW9yRm9yRml4ZWRFbGVtZW50cyk7Ci19Ci0KIHZvaWQg
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbihj
b25zdCBGbG9hdFBvaW50JiByZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbiwgYm9vbCByZXByZXNlbnRz
UHJvZ3JhbW1hdGljU2Nyb2xsKQogewogICAgIG1fcmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24gPSBy
ZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbjsKQEAgLTIwNCwxMDUgKzEwOCw4IEBAIHZvaWQgU2Nyb2xs
aW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbihjb25zdCBG
bG9hdFBvaW50JiByCiAgICAgc2V0UHJvcGVydHlDaGFuZ2VkKFJlcXVlc3RlZFNjcm9sbFBvc2l0
aW9uKTsKIH0KIAotdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldEhlYWRlckhl
aWdodChpbnQgaGVhZGVySGVpZ2h0KQotewotICAgIGlmIChtX2hlYWRlckhlaWdodCA9PSBoZWFk
ZXJIZWlnaHQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1faGVhZGVySGVpZ2h0ID0gaGVhZGVy
SGVpZ2h0OwotICAgIHNldFByb3BlcnR5Q2hhbmdlZChIZWFkZXJIZWlnaHQpOwotfQotCi12b2lk
IFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0Rm9vdGVySGVpZ2h0KGludCBmb290ZXJI
ZWlnaHQpCi17Ci0gICAgaWYgKG1fZm9vdGVySGVpZ2h0ID09IGZvb3RlckhlaWdodCkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgbV9mb290ZXJIZWlnaHQgPSBmb290ZXJIZWlnaHQ7Ci0gICAgc2V0
UHJvcGVydHlDaGFuZ2VkKEZvb3RlckhlaWdodCk7Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlOjpzZXRUb3BDb250ZW50SW5zZXQoZmxvYXQgdG9wQ29udGVudEluc2V0KQot
ewotICAgIGlmIChtX3RvcENvbnRlbnRJbnNldCA9PSB0b3BDb250ZW50SW5zZXQpCi0gICAgICAg
IHJldHVybjsKLQotICAgIG1fdG9wQ29udGVudEluc2V0ID0gdG9wQ29udGVudEluc2V0OwotICAg
IHNldFByb3BlcnR5Q2hhbmdlZChUb3BDb250ZW50SW5zZXQpOwotfQotCi12b2lkIFNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0U2Nyb2xsZWRDb250ZW50c0xheWVyKGNvbnN0IExheWVy
UmVwcmVzZW50YXRpb24mIGxheWVyUmVwcmVzZW50YXRpb24pCi17Ci0gICAgaWYgKGxheWVyUmVw
cmVzZW50YXRpb24gPT0gbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXIpCi0gICAgICAgIHJldHVybjsK
LSAgICAKLSAgICBtX3Njcm9sbGVkQ29udGVudHNMYXllciA9IGxheWVyUmVwcmVzZW50YXRpb247
Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkKFNjcm9sbGVkQ29udGVudHNMYXllcik7Ci19Ci0KLXZv
aWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRDb3VudGVyU2Nyb2xsaW5nTGF5ZXIo
Y29uc3QgTGF5ZXJSZXByZXNlbnRhdGlvbiYgbGF5ZXJSZXByZXNlbnRhdGlvbikKLXsKLSAgICBp
ZiAobGF5ZXJSZXByZXNlbnRhdGlvbiA9PSBtX2NvdW50ZXJTY3JvbGxpbmdMYXllcikKLSAgICAg
ICAgcmV0dXJuOwotICAgIAotICAgIG1fY291bnRlclNjcm9sbGluZ0xheWVyID0gbGF5ZXJSZXBy
ZXNlbnRhdGlvbjsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoQ291bnRlclNjcm9sbGluZ0xheWVy
KTsKLX0KLQotdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldEluc2V0Q2xpcExh
eWVyKGNvbnN0IExheWVyUmVwcmVzZW50YXRpb24mIGxheWVyUmVwcmVzZW50YXRpb24pCi17Ci0g
ICAgaWYgKGxheWVyUmVwcmVzZW50YXRpb24gPT0gbV9pbnNldENsaXBMYXllcikKLSAgICAgICAg
cmV0dXJuOwotICAgIAotICAgIG1faW5zZXRDbGlwTGF5ZXIgPSBsYXllclJlcHJlc2VudGF0aW9u
OwotICAgIHNldFByb3BlcnR5Q2hhbmdlZChJbnNldENsaXBMYXllcik7Ci19Ci0KLXZvaWQgU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRDb250ZW50U2hhZG93TGF5ZXIoY29uc3QgTGF5
ZXJSZXByZXNlbnRhdGlvbiYgbGF5ZXJSZXByZXNlbnRhdGlvbikKLXsKLSAgICBpZiAobGF5ZXJS
ZXByZXNlbnRhdGlvbiA9PSBtX2NvbnRlbnRTaGFkb3dMYXllcikKLSAgICAgICAgcmV0dXJuOwot
ICAgIAotICAgIG1fY29udGVudFNoYWRvd0xheWVyID0gbGF5ZXJSZXByZXNlbnRhdGlvbjsKLSAg
ICBzZXRQcm9wZXJ0eUNoYW5nZWQoQ29udGVudFNoYWRvd0xheWVyKTsKLX0KLQotdm9pZCBTY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldEhlYWRlckxheWVyKGNvbnN0IExheWVyUmVwcmVz
ZW50YXRpb24mIGxheWVyUmVwcmVzZW50YXRpb24pCi17Ci0gICAgaWYgKGxheWVyUmVwcmVzZW50
YXRpb24gPT0gbV9oZWFkZXJMYXllcikKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIG1faGVh
ZGVyTGF5ZXIgPSBsYXllclJlcHJlc2VudGF0aW9uOwotICAgIHNldFByb3BlcnR5Q2hhbmdlZChI
ZWFkZXJMYXllcik7Ci19Ci0KLQotdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNl
dEZvb3RlckxheWVyKGNvbnN0IExheWVyUmVwcmVzZW50YXRpb24mIGxheWVyUmVwcmVzZW50YXRp
b24pCi17Ci0gICAgaWYgKGxheWVyUmVwcmVzZW50YXRpb24gPT0gbV9mb290ZXJMYXllcikKLSAg
ICAgICAgcmV0dXJuOwotICAgIAotICAgIG1fZm9vdGVyTGF5ZXIgPSBsYXllclJlcHJlc2VudGF0
aW9uOwotICAgIHNldFByb3BlcnR5Q2hhbmdlZChGb290ZXJMYXllcik7Ci19Ci0KLSNpZiAhUExB
VEZPUk0oTUFDKQotdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFNjcm9sbGJh
clBhaW50ZXJzRnJvbVNjcm9sbGJhcnMoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyKikKLXsKLX0KLSNl
bmRpZgotCiB2b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6ZHVtcFByb3BlcnRpZXMo
VGV4dFN0cmVhbSYgdHMsIGludCBpbmRlbnQpIGNvbnN0CiB7Ci0gICAgdHMgPDwgIigiIDw8ICJT
Y3JvbGxpbmcgbm9kZSIgPDwgIlxuIjsKLQotICAgIGlmICghbV92aWV3cG9ydFNpemUuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIHdyaXRlSW5kZW50KHRzLCBpbmRlbnQgKyAxKTsKLSAgICAgICAgdHMg
PDwgIih2aWV3cG9ydCByZWN0ICIKLSAgICAgICAgICAgIDw8IFRleHRTdHJlYW06OkZvcm1hdE51
bWJlclJlc3BlY3RpbmdJbnRlZ2VycyhtX3ZpZXdwb3J0U2l6ZS53aWR0aCgpKSA8PCAiICIKLSAg
ICAgICAgICAgIDw8IFRleHRTdHJlYW06OkZvcm1hdE51bWJlclJlc3BlY3RpbmdJbnRlZ2Vycyht
X3ZpZXdwb3J0U2l6ZS5oZWlnaHQoKSkgPDwgIilcbiI7Ci0gICAgfQotCiAgICAgaWYgKG1fc2Ny
b2xsUG9zaXRpb24gIT0gRmxvYXRQb2ludCgpKSB7CiAgICAgICAgIHdyaXRlSW5kZW50KHRzLCBp
bmRlbnQgKyAxKTsKICAgICAgICAgdHMgPDwgIihzY3JvbGwgcG9zaXRpb24gIgpAQCAtMzEwLDI0
ICsxMTcsMjUgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OmR1bXBQcm9wZXJ0
aWVzKFRleHRTdHJlYW0mIHRzLCBpbnQgaW5kZW50KSBjb24KICAgICAgICAgICAgIDw8IFRleHRT
dHJlYW06OkZvcm1hdE51bWJlclJlc3BlY3RpbmdJbnRlZ2VycyhtX3Njcm9sbFBvc2l0aW9uLnko
KSkgPDwgIilcbiI7CiAgICAgfQogCi0gICAgaWYgKCFtX3RvdGFsQ29udGVudHNTaXplLmlzRW1w
dHkoKSkgeworICAgIGlmICghbV9zY3JvbGxhYmxlQXJlYVNpemUuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIHdyaXRlSW5kZW50KHRzLCBpbmRlbnQgKyAxKTsKLSAgICAgICAgdHMgPDwgIihjb250ZW50
cyBzaXplICIgPDwgbV90b3RhbENvbnRlbnRzU2l6ZS53aWR0aCgpIDw8ICIgIiA8PCBtX3RvdGFs
Q29udGVudHNTaXplLmhlaWdodCgpIDw8ICIpXG4iOworICAgICAgICB0cyA8PCAiKHNjcm9sbGFi
bGUgYXJlYSBzaXplICIKKyAgICAgICAgICAgIDw8IFRleHRTdHJlYW06OkZvcm1hdE51bWJlclJl
c3BlY3RpbmdJbnRlZ2VycyhtX3Njcm9sbGFibGVBcmVhU2l6ZS53aWR0aCgpKSA8PCAiICIKKyAg
ICAgICAgICAgIDw8IFRleHRTdHJlYW06OkZvcm1hdE51bWJlclJlc3BlY3RpbmdJbnRlZ2Vycyht
X3Njcm9sbGFibGVBcmVhU2l6ZS5oZWlnaHQoKSkgPDwgIilcbiI7CiAgICAgfQogCi0gICAgaWYg
KG1fZnJhbWVTY2FsZUZhY3RvciAhPSAxKSB7Ci0gICAgICAgIHdyaXRlSW5kZW50KHRzLCBpbmRl
bnQgKyAxKTsKLSAgICAgICAgdHMgPDwgIihmcmFtZSBzY2FsZSBmYWN0b3IgIiA8PCBtX2ZyYW1l
U2NhbGVGYWN0b3IgPDwgIilcbiI7Ci0gICAgfQotCi0gICAgaWYgKG1fc3luY2hyb25vdXNTY3Jv
bGxpbmdSZWFzb25zKSB7CisgICAgaWYgKCFtX3RvdGFsQ29udGVudHNTaXplLmlzRW1wdHkoKSkg
ewogICAgICAgICB3cml0ZUluZGVudCh0cywgaW5kZW50ICsgMSk7Ci0gICAgICAgIHRzIDw8ICIo
U2Nyb2xsaW5nIG9uIG1haW4gdGhyZWFkIGJlY2F1c2U6ICIgPDwgU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OnN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uc0FzVGV4dChtX3N5bmNocm9ub3VzU2Nyb2xs
aW5nUmVhc29ucykgPDwgIilcbiI7CisgICAgICAgIHRzIDw8ICIoY29udGVudHMgc2l6ZSAiCisg
ICAgICAgICAgICA8PCBUZXh0U3RyZWFtOjpGb3JtYXROdW1iZXJSZXNwZWN0aW5nSW50ZWdlcnMo
bV90b3RhbENvbnRlbnRzU2l6ZS53aWR0aCgpKSA8PCAiICIKKyAgICAgICAgICAgIDw8IFRleHRT
dHJlYW06OkZvcm1hdE51bWJlclJlc3BlY3RpbmdJbnRlZ2VycyhtX3RvdGFsQ29udGVudHNTaXpl
LmhlaWdodCgpKSA8PCAiKVxuIjsKICAgICB9CiAKICAgICBpZiAobV9yZXF1ZXN0ZWRTY3JvbGxQ
b3NpdGlvbiAhPSBJbnRQb2ludCgpKSB7CiAgICAgICAgIHdyaXRlSW5kZW50KHRzLCBpbmRlbnQg
KyAxKTsKLSAgICAgICAgdHMgPDwgIihyZXF1ZXN0ZWQgc2Nyb2xsIHBvc2l0aW9uICIgPDwgVGV4
dFN0cmVhbTo6Rm9ybWF0TnVtYmVyUmVzcGVjdGluZ0ludGVnZXJzKG1fcmVxdWVzdGVkU2Nyb2xs
UG9zaXRpb24ueCgpKSA8PCAiICIgPDwgVGV4dFN0cmVhbTo6Rm9ybWF0TnVtYmVyUmVzcGVjdGlu
Z0ludGVnZXJzKG1fcmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24ueSgpKSA8PCAiKVxuIjsKKyAgICAg
ICAgdHMgPDwgIihyZXF1ZXN0ZWQgc2Nyb2xsIHBvc2l0aW9uICIKKyAgICAgICAgICAgIDw8IFRl
eHRTdHJlYW06OkZvcm1hdE51bWJlclJlc3BlY3RpbmdJbnRlZ2VycyhtX3JlcXVlc3RlZFNjcm9s
bFBvc2l0aW9uLngoKSkgPDwgIiAiCisgICAgICAgICAgICA8PCBUZXh0U3RyZWFtOjpGb3JtYXRO
dW1iZXJSZXNwZWN0aW5nSW50ZWdlcnMobV9yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbi55KCkpIDw8
ICIpXG4iOwogICAgIH0KIAogICAgIGlmIChtX3Njcm9sbE9yaWdpbiAhPSBJbnRQb2ludCgpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZS5oCmluZGV4IGMyYWNlMmEwYTM0YTY1NGQ5MmE0ZTc5YmZiZTVi
YWFmMDU0MGU0MDYuLjM1ZGRmZmViMTQ1ODQyYzIxMGY3OGU5MWEwNTQ2ZThjOTJlMjI4YzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZS5oCkBAIC0yOCw1NiArMjgsMzIgQEAKIAogI2lmIEVOQUJMRShB
U1lOQ19TQ1JPTExJTkcpIHx8IFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKIAotI2luY2x1ZGUg
IkdyYXBoaWNzTGF5ZXIuaCIKLSNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiUmVnaW9u
LmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKLSNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZUNv
bXBvc2l0ZS5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAi
U2Nyb2xsaW5nU3RhdGVOb2RlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTY3JvbGxiYXI7Ci0KLWNsYXNzIFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZSBmaW5hbCA6IHB1YmxpYyBTY3JvbGxpbmdTdGF0ZU5vZGUgeworY2xh
c3MgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlIDogcHVibGljIFNjcm9sbGluZ1N0YXRlTm9k
ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8U2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlPiBjcmVhdGUoU2Nyb2xsaW5nU3RhdGVUcmVlJiwgU2Nyb2xsaW5nTm9kZVR5cGUsIFNj
cm9sbGluZ05vZGVJRCk7Ci0KLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8U2Nyb2xsaW5nU3RhdGVO
b2RlPiBjbG9uZShTY3JvbGxpbmdTdGF0ZVRyZWUmKTsKLQogICAgIHZpcnR1YWwgflNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZSgpOwogCiAgICAgZW51bSBDaGFuZ2VkUHJvcGVydHkgewotICAg
ICAgICBWaWV3cG9ydFNpemUgPSBOdW1TdGF0ZU5vZGVCaXRzLAorICAgICAgICBTY3JvbGxhYmxl
QXJlYVNpemUgPSBOdW1TdGF0ZU5vZGVCaXRzLAogICAgICAgICBUb3RhbENvbnRlbnRzU2l6ZSwK
ICAgICAgICAgU2Nyb2xsUG9zaXRpb24sCiAgICAgICAgIFNjcm9sbE9yaWdpbiwKICAgICAgICAg
U2Nyb2xsYWJsZUFyZWFQYXJhbXMsCi0gICAgICAgIEZyYW1lU2NhbGVGYWN0b3IsCi0gICAgICAg
IE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uLAotICAgICAgICBXaGVlbEV2ZW50SGFuZGxlckNvdW50
LAotICAgICAgICBSZWFzb25zRm9yU3luY2hyb25vdXNTY3JvbGxpbmcsCiAgICAgICAgIFJlcXVl
c3RlZFNjcm9sbFBvc2l0aW9uLAotICAgICAgICBTY3JvbGxlZENvbnRlbnRzTGF5ZXIsCi0gICAg
ICAgIENvdW50ZXJTY3JvbGxpbmdMYXllciwKLSAgICAgICAgSW5zZXRDbGlwTGF5ZXIsCi0gICAg
ICAgIENvbnRlbnRTaGFkb3dMYXllciwKLSAgICAgICAgSGVhZGVySGVpZ2h0LAotICAgICAgICBG
b290ZXJIZWlnaHQsCi0gICAgICAgIEhlYWRlckxheWVyLAotICAgICAgICBGb290ZXJMYXllciwK
LSAgICAgICAgUGFpbnRlckZvclNjcm9sbGJhciwKLSAgICAgICAgQmVoYXZpb3JGb3JGaXhlZEVs
ZW1lbnRzLAotICAgICAgICBUb3BDb250ZW50SW5zZXQKKyAgICAgICAgTnVtU2Nyb2xsaW5nU3Rh
dGVOb2RlQml0cywKICAgICB9OwogCi0gICAgY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUo
KSBjb25zdCB7IHJldHVybiBtX3ZpZXdwb3J0U2l6ZTsgfQotICAgIHZvaWQgc2V0Vmlld3BvcnRT
aXplKGNvbnN0IEZsb2F0U2l6ZSYpOworICAgIGNvbnN0IEZsb2F0U2l6ZSYgc2Nyb2xsYWJsZUFy
ZWFTaXplKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVNpemU7IH0KKyAgICB2b2lk
IHNldFNjcm9sbGFibGVBcmVhU2l6ZShjb25zdCBGbG9hdFNpemUmKTsKIAotICAgIGNvbnN0IElu
dFNpemUmIHRvdGFsQ29udGVudHNTaXplKCkgY29uc3QgeyByZXR1cm4gbV90b3RhbENvbnRlbnRz
U2l6ZTsgfQotICAgIHZvaWQgc2V0VG90YWxDb250ZW50c1NpemUoY29uc3QgSW50U2l6ZSYpOwor
ICAgIGNvbnN0IEZsb2F0U2l6ZSYgdG90YWxDb250ZW50c1NpemUoKSBjb25zdCB7IHJldHVybiBt
X3RvdGFsQ29udGVudHNTaXplOyB9CisgICAgdm9pZCBzZXRUb3RhbENvbnRlbnRzU2l6ZShjb25z
dCBGbG9hdFNpemUmKTsKIAogICAgIGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9zY3JvbGxQb3NpdGlvbjsgfQogICAgIHZvaWQgc2V0U2Nyb2xsUG9z
aXRpb24oY29uc3QgRmxvYXRQb2ludCYpOwpAQCAtODUsMTAzICs2MSwyNyBAQCBwdWJsaWM6CiAg
ICAgY29uc3QgSW50UG9pbnQmIHNjcm9sbE9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xs
T3JpZ2luOyB9CiAgICAgdm9pZCBzZXRTY3JvbGxPcmlnaW4oY29uc3QgSW50UG9pbnQmKTsKIAot
ICAgIGZsb2F0IGZyYW1lU2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lU2NhbGVG
YWN0b3I7IH0KLSAgICB2b2lkIHNldEZyYW1lU2NhbGVGYWN0b3IoZmxvYXQpOwotCi0gICAgY29u
c3QgUmVnaW9uJiBub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fbm9u
RmFzdFNjcm9sbGFibGVSZWdpb247IH0KLSAgICB2b2lkIHNldE5vbkZhc3RTY3JvbGxhYmxlUmVn
aW9uKGNvbnN0IFJlZ2lvbiYpOwotCi0gICAgdW5zaWduZWQgd2hlZWxFdmVudEhhbmRsZXJDb3Vu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fd2hlZWxFdmVudEhhbmRsZXJDb3VudDsgfQotICAgIHZvaWQg
c2V0V2hlZWxFdmVudEhhbmRsZXJDb3VudCh1bnNpZ25lZCk7Ci0KLSAgICBTeW5jaHJvbm91c1Nj
cm9sbGluZ1JlYXNvbnMgc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKCkgY29uc3QgeyByZXR1
cm4gbV9zeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnM7IH0KLSAgICB2b2lkIHNldFN5bmNocm9u
b3VzU2Nyb2xsaW5nUmVhc29ucyhTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMpOwotCiAgICAg
Y29uc3QgU2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzJiBzY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMo
KSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhUGFyYW1ldGVyczsgfQogICAgIHZvaWQg
c2V0U2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzKGNvbnN0IFNjcm9sbGFibGVBcmVhUGFyYW1ldGVy
cyYgcGFyYW1zKTsKIAotICAgIFNjcm9sbEJlaGF2aW9yRm9yRml4ZWRFbGVtZW50cyBzY3JvbGxC
ZWhhdmlvckZvckZpeGVkRWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBtX2JlaGF2aW9yRm9yRml4
ZWQ7IH0KLSAgICB2b2lkIHNldFNjcm9sbEJlaGF2aW9yRm9yRml4ZWRFbGVtZW50cyhTY3JvbGxC
ZWhhdmlvckZvckZpeGVkRWxlbWVudHMpOwotCiAgICAgY29uc3QgRmxvYXRQb2ludCYgcmVxdWVz
dGVkU2Nyb2xsUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RlZFNjcm9sbFBvc2l0
aW9uOyB9CiAgICAgYm9vbCByZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvblJlcHJlc2VudHNQcm9ncmFt
bWF0aWNTY3JvbGwoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RlZFNjcm9sbFBvc2l0aW9uUmVw
cmVzZW50c1Byb2dyYW1tYXRpY1Njcm9sbDsgfQogICAgIHZvaWQgc2V0UmVxdWVzdGVkU2Nyb2xs
UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYsIGJvb2wgcmVwcmVzZW50c1Byb2dyYW1tYXRpY1Nj
cm9sbCk7CiAgICAgCi0gICAgaW50IGhlYWRlckhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faGVh
ZGVySGVpZ2h0OyB9Ci0gICAgdm9pZCBzZXRIZWFkZXJIZWlnaHQoaW50KTsKLQotICAgIGludCBm
b290ZXJIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2Zvb3RlckhlaWdodDsgfQotICAgIHZvaWQg
c2V0Rm9vdGVySGVpZ2h0KGludCk7Ci0KLSAgICBmbG9hdCB0b3BDb250ZW50SW5zZXQoKSBjb25z
dCB7IHJldHVybiBtX3RvcENvbnRlbnRJbnNldDsgfQotICAgIHZvaWQgc2V0VG9wQ29udGVudElu
c2V0KGZsb2F0KTsKLQotICAgIC8vIFRoaXMgaXMgYSBsYXllciB3aXRoIHRoZSBjb250ZW50cyB0
aGF0IG1vdmUuCi0gICAgY29uc3QgTGF5ZXJSZXByZXNlbnRhdGlvbiYgc2Nyb2xsZWRDb250ZW50
c0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXI7IH0KLSAgICB2
b2lkIHNldFNjcm9sbGVkQ29udGVudHNMYXllcihjb25zdCBMYXllclJlcHJlc2VudGF0aW9uJik7
Ci0KLSAgICAvLyBUaGlzIGlzIGEgbGF5ZXIgbW92ZWQgaW4gdGhlIG9wcG9zaXRlIGRpcmVjdGlv
biB0byBzY3JvbGxpbmcsIGZvciBleGFtcGxlIGZvciBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6Zml4
ZWQKLSAgICBjb25zdCBMYXllclJlcHJlc2VudGF0aW9uJiBjb3VudGVyU2Nyb2xsaW5nTGF5ZXIo
KSBjb25zdCB7IHJldHVybiBtX2NvdW50ZXJTY3JvbGxpbmdMYXllcjsgfQotICAgIHZvaWQgc2V0
Q291bnRlclNjcm9sbGluZ0xheWVyKGNvbnN0IExheWVyUmVwcmVzZW50YXRpb24mKTsKLQotICAg
IC8vIFRoaXMgaXMgYSBjbGlwcGluZyBsYXllciB0aGF0IHdpbGwgc2Nyb2xsIHdpdGggdGhlIHBh
Z2UgZm9yIGFsbCB5LWRlbHRhIHNjcm9sbCB2YWx1ZXMgYmV0d2VlbiAwCi0gICAgLy8gYW5kIHRv
cENvbnRlbnRJbnNldCgpLiBPbmNlIHRoZSB5LWRlbHRhcyBnZXQgYmV5b25kIHRoZSBjb250ZW50
IGluc2V0IHBvaW50LCB0aGlzIGxheWVyIG5vIGxvbmdlcgotICAgIC8vIG5lZWRzIHRvIG1vdmUu
IElmIHRoZSB0b3BDb250ZW50SW5zZXQoKSBpcyAwLCB0aGlzIGxheWVyIGRvZXMgbm90IG5lZWQg
dG8gbW92ZSBhdCBhbGwuIFRoaXMgaXMKLSAgICAvLyBvbmx5IHVzZWQgb24gdGhlIE1hYy4KLSAg
ICBjb25zdCBMYXllclJlcHJlc2VudGF0aW9uJiBpbnNldENsaXBMYXllcigpIGNvbnN0IHsgcmV0
dXJuIG1faW5zZXRDbGlwTGF5ZXI7IH0KLSAgICB2b2lkIHNldEluc2V0Q2xpcExheWVyKGNvbnN0
IExheWVyUmVwcmVzZW50YXRpb24mKTsKLQotICAgIGNvbnN0IExheWVyUmVwcmVzZW50YXRpb24m
IGNvbnRlbnRTaGFkb3dMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudFNoYWRvd0xheWVy
OyB9Ci0gICAgdm9pZCBzZXRDb250ZW50U2hhZG93TGF5ZXIoY29uc3QgTGF5ZXJSZXByZXNlbnRh
dGlvbiYpOwotCi0gICAgLy8gVGhlIGhlYWRlciBhbmQgZm9vdGVyIGxheWVycyBzY3JvbGwgdmVy
dGljYWxseSB3aXRoIHRoZSBwYWdlLCB0aGV5IHNob3VsZCByZW1haW4gZml4ZWQgd2hlbiBzY3Jv
bGxpbmcgaG9yaXpvbnRhbGx5LgotICAgIGNvbnN0IExheWVyUmVwcmVzZW50YXRpb24mIGhlYWRl
ckxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9oZWFkZXJMYXllcjsgfQotICAgIHZvaWQgc2V0SGVh
ZGVyTGF5ZXIoY29uc3QgTGF5ZXJSZXByZXNlbnRhdGlvbiYpOwotCi0gICAgLy8gVGhlIGhlYWRl
ciBhbmQgZm9vdGVyIGxheWVycyBzY3JvbGwgdmVydGljYWxseSB3aXRoIHRoZSBwYWdlLCB0aGV5
IHNob3VsZCByZW1haW4gZml4ZWQgd2hlbiBzY3JvbGxpbmcgaG9yaXpvbnRhbGx5LgotICAgIGNv
bnN0IExheWVyUmVwcmVzZW50YXRpb24mIGZvb3RlckxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9m
b290ZXJMYXllcjsgfQotICAgIHZvaWQgc2V0Rm9vdGVyTGF5ZXIoY29uc3QgTGF5ZXJSZXByZXNl
bnRhdGlvbiYpOwotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIFNjcm9sbGJhclBhaW50ZXIgdmVy
dGljYWxTY3JvbGxiYXJQYWludGVyKCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0aWNhbFNjcm9sbGJh
clBhaW50ZXIuZ2V0KCk7IH0KLSAgICBTY3JvbGxiYXJQYWludGVyIGhvcml6b250YWxTY3JvbGxi
YXJQYWludGVyKCkgY29uc3QgeyByZXR1cm4gbV9ob3Jpem9udGFsU2Nyb2xsYmFyUGFpbnRlci5n
ZXQoKTsgfQotI2VuZGlmCi0gICAgdm9pZCBzZXRTY3JvbGxiYXJQYWludGVyc0Zyb21TY3JvbGxi
YXJzKFNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIsIFNjcm9sbGJhciogaG9yaXpvbnRhbFNj
cm9sbGJhcik7Ci0KICAgICB2aXJ0dWFsIHZvaWQgZHVtcFByb3BlcnRpZXMoVGV4dFN0cmVhbSYs
IGludCBpbmRlbnQpIGNvbnN0IG92ZXJyaWRlOwotCi1wcml2YXRlOgorICAgIAorcHJvdGVjdGVk
OgogICAgIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZShTY3JvbGxpbmdTdGF0ZVRyZWUmLCBT
Y3JvbGxpbmdOb2RlVHlwZSwgU2Nyb2xsaW5nTm9kZUlEKTsKICAgICBTY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGUoY29uc3QgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlJiwgU2Nyb2xsaW5n
U3RhdGVUcmVlJik7Ci0KLSAgICBMYXllclJlcHJlc2VudGF0aW9uIG1fc2Nyb2xsZWRDb250ZW50
c0xheWVyOwotICAgIExheWVyUmVwcmVzZW50YXRpb24gbV9jb3VudGVyU2Nyb2xsaW5nTGF5ZXI7
Ci0gICAgTGF5ZXJSZXByZXNlbnRhdGlvbiBtX2luc2V0Q2xpcExheWVyOwotICAgIExheWVyUmVw
cmVzZW50YXRpb24gbV9jb250ZW50U2hhZG93TGF5ZXI7Ci0gICAgTGF5ZXJSZXByZXNlbnRhdGlv
biBtX2hlYWRlckxheWVyOwotICAgIExheWVyUmVwcmVzZW50YXRpb24gbV9mb290ZXJMYXllcjsK
LQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBSZXRhaW5QdHI8U2Nyb2xsYmFyUGFpbnRlcj4gbV92
ZXJ0aWNhbFNjcm9sbGJhclBhaW50ZXI7Ci0gICAgUmV0YWluUHRyPFNjcm9sbGJhclBhaW50ZXI+
IG1faG9yaXpvbnRhbFNjcm9sbGJhclBhaW50ZXI7Ci0jZW5kaWYKLQotICAgIEZsb2F0U2l6ZSBt
X3ZpZXdwb3J0U2l6ZTsKLSAgICBJbnRTaXplIG1fdG90YWxDb250ZW50c1NpemU7CisgICAgCitw
cml2YXRlOgorICAgIEZsb2F0U2l6ZSBtX3Njcm9sbGFibGVBcmVhU2l6ZTsKKyAgICBGbG9hdFNp
emUgbV90b3RhbENvbnRlbnRzU2l6ZTsKICAgICBGbG9hdFBvaW50IG1fc2Nyb2xsUG9zaXRpb247
CisgICAgRmxvYXRQb2ludCBtX3JlcXVlc3RlZFNjcm9sbFBvc2l0aW9uOwogICAgIEludFBvaW50
IG1fc2Nyb2xsT3JpZ2luOwotICAgIAogICAgIFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyBtX3Nj
cm9sbGFibGVBcmVhUGFyYW1ldGVyczsKLSAgICBSZWdpb24gbV9ub25GYXN0U2Nyb2xsYWJsZVJl
Z2lvbjsKLSAgICBmbG9hdCBtX2ZyYW1lU2NhbGVGYWN0b3I7Ci0gICAgdW5zaWduZWQgbV93aGVl
bEV2ZW50SGFuZGxlckNvdW50OwotICAgIFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyBtX3N5
bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uczsKLSAgICBTY3JvbGxCZWhhdmlvckZvckZpeGVkRWxl
bWVudHMgbV9iZWhhdmlvckZvckZpeGVkOwotICAgIGludCBtX2hlYWRlckhlaWdodDsKLSAgICBp
bnQgbV9mb290ZXJIZWlnaHQ7Ci0gICAgRmxvYXRQb2ludCBtX3JlcXVlc3RlZFNjcm9sbFBvc2l0
aW9uOwogICAgIGJvb2wgbV9yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvblJlcHJlc2VudHNQcm9ncmFt
bWF0aWNTY3JvbGw7Ci0gICAgZmxvYXQgbV90b3BDb250ZW50SW5zZXQ7CiB9OwogCiBTQ1JPTExJ
TkdfU1RBVEVfTk9ERV9UWVBFX0NBU1RTKFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSwgaXNT
Y3JvbGxpbmdOb2RlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1N0YXRlVHJlZS5jcHAKaW5kZXggNTc5ZTk5Yjk1ZWY3ZjUwMTQ5YjQ5ZGVhNmVk
YjI4YWU5ZjcxYzVkMS4uN2MwMjRhNzRjNGRkZDI4YmI1ZWRiNWZkZGMyMjAwNWI1ODI1OTk3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVU
cmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0
ZVRyZWUuY3BwCkBAIC0zMCw3ICszMCw4IEBACiAKICNpbmNsdWRlICJBc3luY1Njcm9sbGluZ0Nv
b3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGUuaCIKLSNpbmNs
dWRlICJTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdT
dGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTg2LDcgKzg3LDcgQEAgU2Nyb2xsaW5nTm9kZUlE
IFNjcm9sbGluZ1N0YXRlVHJlZTo6YXR0YWNoTm9kZShTY3JvbGxpbmdOb2RlVHlwZSBub2RlVHlw
ZSwgU2Nyb2wKICAgICAgICAgLy8gSWYgd2UncmUgcmVzZXR0aW5nIHRoZSByb290IG5vZGUsIHdl
IHNob3VsZCBjbGVhciB0aGUgSGFzaE1hcCBhbmQgZGVzdHJveSB0aGUgY3VycmVudCBjaGlsZHJl
bi4KICAgICAgICAgY2xlYXIoKTsKIAotICAgICAgICBzZXRSb290U3RhdGVOb2RlKFNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZTo6Y3JlYXRlKCp0aGlzLCBGcmFtZVNjcm9sbGluZ05vZGUsIG5l
d05vZGVJRCkpOworICAgICAgICBzZXRSb290U3RhdGVOb2RlKFNjcm9sbGluZ1N0YXRlRnJhbWVT
Y3JvbGxpbmdOb2RlOjpjcmVhdGUoKnRoaXMsIG5ld05vZGVJRCkpOwogICAgICAgICBuZXdOb2Rl
ID0gcm9vdFN0YXRlTm9kZSgpOwogICAgICAgICBtX2hhc05ld1Jvb3RTdGF0ZU5vZGUgPSB0cnVl
OwogICAgIH0gZWxzZSB7CkBAIC0xMDcsOSArMTA4LDE0IEBAIFNjcm9sbGluZ05vZGVJRCBTY3Jv
bGxpbmdTdGF0ZVRyZWU6OmF0dGFjaE5vZGUoU2Nyb2xsaW5nTm9kZVR5cGUgbm9kZVR5cGUsIFNj
cm9sCiAgICAgICAgICAgICBwYXJlbnQtPmFwcGVuZENoaWxkKHN0aWNreU5vZGUucmVsZWFzZSgp
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgRnJhbWVTY3Jv
bGxpbmdOb2RlOgorICAgICAgICBjYXNlIEZyYW1lU2Nyb2xsaW5nTm9kZTogeworICAgICAgICAg
ICAgT3duUHRyPFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlPiBzY3JvbGxpbmdOb2Rl
ID0gU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OmNyZWF0ZSgqdGhpcywgbmV3Tm9k
ZUlEKTsKKyAgICAgICAgICAgIG5ld05vZGUgPSBzY3JvbGxpbmdOb2RlLmdldCgpOworICAgICAg
ICAgICAgcGFyZW50LT5hcHBlbmRDaGlsZChzY3JvbGxpbmdOb2RlLnJlbGVhc2UoKSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIE92ZXJmbG93U2Nyb2xsaW5n
Tm9kZTogewotICAgICAgICAgICAgT3duUHRyPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT4g
c2Nyb2xsaW5nTm9kZSA9IFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6Y3JlYXRlKCp0aGlz
LCBub2RlVHlwZSwgbmV3Tm9kZUlEKTsKKyAgICAgICAgICAgIE93blB0cjxTY3JvbGxpbmdTdGF0
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZT4gc2Nyb2xsaW5nTm9kZSA9IFNjcm9sbGluZ1N0YXRlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlOjpjcmVhdGUoKnRoaXMsIG5ld05vZGVJRCk7CiAgICAgICAgICAg
ICBuZXdOb2RlID0gc2Nyb2xsaW5nTm9kZS5nZXQoKTsKICAgICAgICAgICAgIHBhcmVudC0+YXBw
ZW5kQ2hpbGQoc2Nyb2xsaW5nTm9kZS5yZWxlYXNlKCkpOwogICAgICAgICAgICAgYnJlYWs7CkBA
IC0xNDcsNyArMTUzLDcgQEAgUGFzc093blB0cjxTY3JvbGxpbmdTdGF0ZVRyZWU+IFNjcm9sbGlu
Z1N0YXRlVHJlZTo6Y29tbWl0KExheWVyUmVwcmVzZW50YXRpb246OlQKICAgICB0cmVlU3RhdGVD
bG9uZS0+c2V0UHJlZmVycmVkTGF5ZXJSZXByZXNlbnRhdGlvbihwcmVmZXJyZWRMYXllclJlcHJl
c2VudGF0aW9uKTsKIAogICAgIGlmIChtX3Jvb3RTdGF0ZU5vZGUpCi0gICAgICAgIHRyZWVTdGF0
ZUNsb25lLT5zZXRSb290U3RhdGVOb2RlKHN0YXRpY19wb2ludGVyX2Nhc3Q8U2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlPihtX3Jvb3RTdGF0ZU5vZGUtPmNsb25lQW5kUmVzZXQoKnRyZWVTdGF0
ZUNsb25lKSkpOworICAgICAgICB0cmVlU3RhdGVDbG9uZS0+c2V0Um9vdFN0YXRlTm9kZShzdGF0
aWNfcG9pbnRlcl9jYXN0PFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlPihtX3Jvb3RT
dGF0ZU5vZGUtPmNsb25lQW5kUmVzZXQoKnRyZWVTdGF0ZUNsb25lKSkpOwogCiAgICAgLy8gQ29w
eSB0aGUgSURzIG9mIHRoZSBub2RlcyB0aGF0IGhhdmUgYmVlbiByZW1vdmVkIHNpbmNlIHRoZSBs
YXN0IGNvbW1pdCBpbnRvIHRoZSBjbG9uZS4KICAgICB0cmVlU3RhdGVDbG9uZS0+bV9ub2Rlc1Jl
bW92ZWRTaW5jZUxhc3RDb21taXQuc3dhcChtX25vZGVzUmVtb3ZlZFNpbmNlTGFzdENvbW1pdCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0
ZVRyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJl
ZS5oCmluZGV4IDE3ZDU0YjFiNTVlYmU0MmFhZDIyMTkwNDhhZDVhMTBiZTA0MTMzZTkuLmQzZjll
ODcxNDQ2YTZlNjdmNzY0MTJhNTFjZTAyZDU5ZmNkZmQ0MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5oCkBAIC0yOCw3ICsyOCw3
IEBACiAKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSB8fCBVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1MpCiAKLSNpbmNsdWRlICJTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaCIKKyNpbmNs
dWRlICJTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5oIgogI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFNj
cm9sbGluZ1N0YXRlVHJlZT4gY3JlYXRlKEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IqID0gMCk7
CiAgICAgflNjcm9sbGluZ1N0YXRlVHJlZSgpOwogCi0gICAgU2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlKiByb290U3RhdGVOb2RlKCkgY29uc3QgeyByZXR1cm4gbV9yb290U3RhdGVOb2RlLmdl
dCgpOyB9CisgICAgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUqIHJvb3RTdGF0ZU5v
ZGUoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RTdGF0ZU5vZGUuZ2V0KCk7IH0KICAgICBTY3JvbGxp
bmdTdGF0ZU5vZGUqIHN0YXRlTm9kZUZvcklEKFNjcm9sbGluZ05vZGVJRCk7CiAKICAgICBTY3Jv
bGxpbmdOb2RlSUQgYXR0YWNoTm9kZShTY3JvbGxpbmdOb2RlVHlwZSwgU2Nyb2xsaW5nTm9kZUlE
LCBTY3JvbGxpbmdOb2RlSUQgcGFyZW50SUQpOwpAQCAtNzksMTQgKzc5LDE0IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgU2Nyb2xsaW5nU3RhdGVUcmVlKEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0
b3IqKTsKIAotICAgIHZvaWQgc2V0Um9vdFN0YXRlTm9kZShQYXNzT3duUHRyPFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZT4gcm9vdFN0YXRlTm9kZSkgeyBtX3Jvb3RTdGF0ZU5vZGUgPSByb290
U3RhdGVOb2RlOyB9CisgICAgdm9pZCBzZXRSb290U3RhdGVOb2RlKFBhc3NPd25QdHI8U2Nyb2xs
aW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU+IHJvb3RTdGF0ZU5vZGUpIHsgbV9yb290U3RhdGVO
b2RlID0gcm9vdFN0YXRlTm9kZTsgfQogICAgIHZvaWQgYWRkTm9kZShTY3JvbGxpbmdTdGF0ZU5v
ZGUqKTsKICAgICB2b2lkIHJlbW92ZU5vZGUoU2Nyb2xsaW5nU3RhdGVOb2RlKik7CiAgICAgdm9p
ZCBkaWRSZW1vdmVOb2RlKFNjcm9sbGluZ05vZGVJRCk7CiAKICAgICBBc3luY1Njcm9sbGluZ0Nv
b3JkaW5hdG9yKiBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yOwogICAgIFN0YXRlTm9kZU1hcCBtX3N0
YXRlTm9kZU1hcDsKLSAgICBPd25QdHI8U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlPiBtX3Jv
b3RTdGF0ZU5vZGU7CisgICAgT3duUHRyPFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2Rl
PiBtX3Jvb3RTdGF0ZU5vZGU7CiAgICAgVmVjdG9yPFNjcm9sbGluZ05vZGVJRD4gbV9ub2Rlc1Jl
bW92ZWRTaW5jZUxhc3RDb21taXQ7CiAgICAgYm9vbCBtX2hhc0NoYW5nZWRQcm9wZXJ0aWVzOwog
ICAgIGJvb2wgbV9oYXNOZXdSb290U3RhdGVOb2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAppbmRleCAxZTFhMTk2YWY0MjBmOThjMzllZTEz
NTVhNzYxZTAxNjIwMThlYjNiLi5kODIxY2Y3NGNjMmI4NmJjNjk2MDUxNzhhMzJkZjliYzNjMjkz
ZjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
LmNwcApAQCAtMTMzLDE2ICsxMzMsMTYgQEAgdm9pZCBTY3JvbGxpbmdUcmVlOjpjb21taXROZXdU
cmVlU3RhdGUoUGFzc093blB0cjxTY3JvbGxpbmdTdGF0ZVRyZWU+IHNjcm9sbGluZ1MKICAgICBT
Y3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUqIHJvb3ROb2RlID0gc2Nyb2xsaW5nU3RhdGVUcmVl
LT5yb290U3RhdGVOb2RlKCk7CiAgICAgaWYgKHJvb3ROb2RlCiAgICAgICAgICYmIChyb290U3Rh
dGVOb2RlQ2hhbmdlZAotICAgICAgICAgICAgfHwgcm9vdE5vZGUtPmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OldoZWVsRXZlbnRIYW5kbGVyQ291bnQpCi0g
ICAgICAgICAgICB8fCByb290Tm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZTo6Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24pCisgICAgICAgICAgICB8fCBy
b290Tm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdO
b2RlOjpXaGVlbEV2ZW50SGFuZGxlckNvdW50KQorICAgICAgICAgICAgfHwgcm9vdE5vZGUtPmhh
c0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6Tm9uRmFz
dFNjcm9sbGFibGVSZWdpb24pCiAgICAgICAgICAgICB8fCByb290Tm9kZS0+aGFzQ2hhbmdlZFBy
b3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6U2Nyb2xsTGF5ZXIpKSkgewogICAgICAgICBNdXRl
eExvY2tlciBsb2NrKG1fbXV0ZXgpOwogCiAgICAgICAgIGlmIChyb290U3RhdGVOb2RlQ2hhbmdl
ZCB8fCByb290Tm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6U2Ny
b2xsTGF5ZXIpKQogICAgICAgICAgICAgbV9tYWluRnJhbWVTY3JvbGxQb3NpdGlvbiA9IEZsb2F0
UG9pbnQoKTsKLSAgICAgICAgaWYgKHJvb3RTdGF0ZU5vZGVDaGFuZ2VkIHx8IHJvb3ROb2RlLT5o
YXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpXaGVlbEV2ZW50
SGFuZGxlckNvdW50KSkKKyAgICAgICAgaWYgKHJvb3RTdGF0ZU5vZGVDaGFuZ2VkIHx8IHJvb3RO
b2RlLT5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6
OldoZWVsRXZlbnRIYW5kbGVyQ291bnQpKQogICAgICAgICAgICAgbV9oYXNXaGVlbEV2ZW50SGFu
ZGxlcnMgPSBzY3JvbGxpbmdTdGF0ZVRyZWUtPnJvb3RTdGF0ZU5vZGUoKS0+d2hlZWxFdmVudEhh
bmRsZXJDb3VudCgpOwotICAgICAgICBpZiAocm9vdFN0YXRlTm9kZUNoYW5nZWQgfHwgcm9vdE5v
ZGUtPmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6Ok5vbkZh
c3RTY3JvbGxhYmxlUmVnaW9uKSkKKyAgICAgICAgaWYgKHJvb3RTdGF0ZU5vZGVDaGFuZ2VkIHx8
IHJvb3ROb2RlLT5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGlu
Z05vZGU6Ok5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKSkKICAgICAgICAgICAgIG1fbm9uRmFzdFNj
cm9sbGFibGVSZWdpb24gPSBzY3JvbGxpbmdTdGF0ZVRyZWUtPnJvb3RTdGF0ZU5vZGUoKS0+bm9u
RmFzdFNjcm9sbGFibGVSZWdpb24oKTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5NDRjYzM5MDc5MzA5OWIxYmQ5NTVjNTU4MDIwMjMz
YjliYmNlNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLmNwcApAQCAtMCwwICsxLDc4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGUuaCIKKworI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCisKKyNp
bmNsdWRlICJTY3JvbGxpbmdTdGF0ZVRyZWUuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVlLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9k
ZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZShTY3JvbGxpbmdUcmVlJiBzY3JvbGxp
bmdUcmVlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQorICAgIDogU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGUoc2Nyb2xsaW5nVHJlZSwgRnJhbWVTY3JvbGxpbmdOb2RlLCBub2RlSUQpCisgICAg
LCBtX2ZyYW1lU2NhbGVGYWN0b3IoMSkKKyAgICAsIG1faGVhZGVySGVpZ2h0KDApCisgICAgLCBt
X2Zvb3RlckhlaWdodCgwKQorICAgICwgbV90b3BDb250ZW50SW5zZXQoMCkKKyAgICAsIG1fc3lu
Y2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKDApCisgICAgLCBtX2JlaGF2aW9yRm9yRml4ZWQoU3Rp
Y2tUb0RvY3VtZW50Qm91bmRzKQoreworfQorCitTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlOjp+U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZSgpCit7Cit9CisKK3ZvaWQgU2Ny
b2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZTo6dXBkYXRlQmVmb3JlQ2hpbGRyZW4oY29uc3Qg
U2Nyb2xsaW5nU3RhdGVOb2RlJiBzdGF0ZU5vZGUpCit7CisgICAgU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGU6OnVwZGF0ZUJlZm9yZUNoaWxkcmVuKHN0YXRlTm9kZSk7CisgICAgCisgICAgY29u
c3QgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUmIHN0YXRlID0gdG9TY3JvbGxpbmdT
dGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZShzdGF0ZU5vZGUpOworCisgICAgaWYgKHN0YXRlLmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6RnJhbWVTY2Fs
ZUZhY3RvcikpCisgICAgICAgIG1fZnJhbWVTY2FsZUZhY3RvciA9IHN0YXRlLmZyYW1lU2NhbGVG
YWN0b3IoKTsKKworICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3Rh
dGVGcmFtZVNjcm9sbGluZ05vZGU6OlJlYXNvbnNGb3JTeW5jaHJvbm91c1Njcm9sbGluZykpCisg
ICAgICAgIG1fc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zID0gc3RhdGUuc3luY2hyb25vdXNT
Y3JvbGxpbmdSZWFzb25zKCk7CisKKyAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNj
cm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpIZWFkZXJIZWlnaHQpKQorICAgICAgICBt
X2hlYWRlckhlaWdodCA9IHN0YXRlLmhlYWRlckhlaWdodCgpOworCisgICAgaWYgKHN0YXRlLmhh
c0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6Rm9vdGVy
SGVpZ2h0KSkKKyAgICAgICAgbV9mb290ZXJIZWlnaHQgPSBzdGF0ZS5mb290ZXJIZWlnaHQoKTsK
KworICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNj
cm9sbGluZ05vZGU6OkJlaGF2aW9yRm9yRml4ZWRFbGVtZW50cykpCisgICAgICAgIG1fYmVoYXZp
b3JGb3JGaXhlZCA9IHN0YXRlLnNjcm9sbEJlaGF2aW9yRm9yRml4ZWRFbGVtZW50cygpOworCisg
ICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xs
aW5nTm9kZTo6VG9wQ29udGVudEluc2V0KSkKKyAgICAgICAgbV90b3BDb250ZW50SW5zZXQgPSBz
dGF0ZS50b3BDb250ZW50SW5zZXQoKTsKK30KKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxp
bmdOb2RlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYTliMzI1NzgxOGM5ZTg1YTc1MDBkZGVmNmNiNzVhMWNkYzNj
OGRhNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaApAQCAtMCwwICsxLDg1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlX2gKKyNkZWZpbmUg
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZV9oCisKKyNpZiBFTkFCTEUoQVNZTkNfU0NS
T0xMSU5HKQorCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQbGF0Zm9ybVdoZWVsRXZlbnQ7CitjbGFzcyBTY3Jv
bGxpbmdUcmVlOworY2xhc3MgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOworCitjbGFzcyBT
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlIDogcHVibGljIFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5TY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQmVmb3JlQ2hpbGRyZW4oY29u
c3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikgb3ZlcnJpZGU7CisgICAgCisgICAgLy8gRklYTUU6IFdl
IHNob3VsZCBpbXBsZW1lbnQgdGhpcyB3aGVuIHdlIHN1cHBvcnQgU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVzIGFzIGNoaWxkcmVuLgorICAgIHZpcnR1YWwgdm9pZCBwYXJlbnRTY3JvbGxQb3Np
dGlvbkRpZENoYW5nZShjb25zdCBGbG9hdFJlY3QmIC8qdmlld3BvcnRSZWN0Ki8sIGNvbnN0IEZs
b2F0U2l6ZSYgLypjdW11bGF0aXZlRGVsdGEqLykgb3ZlcnJpZGUgeyB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbFBvc2l0aW9uV2l0aG91dENvbnRlbnRFZGdlQ29u
c3RyYWludHMoY29uc3QgRmxvYXRQb2ludCYpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVMYXllcnNBZnRlclZpZXdwb3J0Q2hhbmdlKGNvbnN0IEZsb2F0UmVjdCYgdmlld3BvcnRSZWN0
LCBkb3VibGUgc2NhbGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJE
ZWxlZ2F0ZWRTY3JvbGwoY29uc3QgRmxvYXRQb2ludCYpIHsgfQorCisgICAgU3luY2hyb25vdXNT
Y3JvbGxpbmdSZWFzb25zIHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucygpIGNvbnN0IHsgcmV0
dXJuIG1fc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zOyB9CisgICAgYm9vbCBzaG91bGRVcGRh
dGVTY3JvbGxMYXllclBvc2l0aW9uU3luY2hyb25vdXNseSgpIGNvbnN0IHsgcmV0dXJuIG1fc3lu
Y2hyb25vdXNTY3JvbGxpbmdSZWFzb25zOyB9CisKK3Byb3RlY3RlZDoKKyAgICBTY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlKFNjcm9sbGluZ1RyZWUmLCBTY3JvbGxpbmdOb2RlSUQpOwor
CisgICAgZmxvYXQgZnJhbWVTY2FsZUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVTY2Fs
ZUZhY3RvcjsgfQorICAgIGludCBoZWFkZXJIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2hlYWRl
ckhlaWdodDsgfQorICAgIGludCBmb290ZXJIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2Zvb3Rl
ckhlaWdodDsgfQorICAgIGZsb2F0IHRvcENvbnRlbnRJbnNldCgpIGNvbnN0IHsgcmV0dXJuIG1f
dG9wQ29udGVudEluc2V0OyB9CisgICAgCisgICAgU2Nyb2xsQmVoYXZpb3JGb3JGaXhlZEVsZW1l
bnRzIHNjcm9sbEJlaGF2aW9yRm9yRml4ZWRFbGVtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fYmVo
YXZpb3JGb3JGaXhlZDsgfQorICAgIAorcHJpdmF0ZToKKyAgICBmbG9hdCBtX2ZyYW1lU2NhbGVG
YWN0b3I7CisKKyAgICBpbnQgbV9oZWFkZXJIZWlnaHQ7CisgICAgaW50IG1fZm9vdGVySGVpZ2h0
OworICAgIGZsb2F0IG1fdG9wQ29udGVudEluc2V0OworICAgIAorICAgIFN5bmNocm9ub3VzU2Ny
b2xsaW5nUmVhc29ucyBtX3N5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uczsKKyAgICBTY3JvbGxC
ZWhhdmlvckZvckZpeGVkRWxlbWVudHMgbV9iZWhhdmlvckZvckZpeGVkOworfTsKKworU0NST0xM
SU5HX05PREVfVFlQRV9DQVNUUyhTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLCBpc0Zy
YW1lU2Nyb2xsaW5nTm9kZSgpKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykKKworI2VuZGlmIC8vIFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlTm9kZS5oCmluZGV4IDVmMGRkYjEwOWQ0M2E5YzU4MTAyOGMwYjQxMmFhMmIyNDlmMjhi
NzcuLjZhZDQ3YWUxMGM2ODljOTg3YzU5YWRhNWUyNmVhNTJhZTdmOTY3ZjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuaApAQCAtNDks
NiArNDksOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0ZpeGVkTm9kZSgpIGNvbnN0IHsgcmV0dXJu
IG5vZGVUeXBlKCkgPT0gRml4ZWROb2RlOyB9CiAgICAgYm9vbCBpc1N0aWNreU5vZGUoKSBjb25z
dCB7IHJldHVybiBub2RlVHlwZSgpID09IFN0aWNreU5vZGU7IH0KICAgICBib29sIGlzU2Nyb2xs
aW5nTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG5vZGVUeXBlKCkgPT0gRnJhbWVTY3JvbGxpbmdOb2Rl
IHx8IG5vZGVUeXBlKCkgPT0gT3ZlcmZsb3dTY3JvbGxpbmdOb2RlOyB9CisgICAgYm9vbCBpc0Zy
YW1lU2Nyb2xsaW5nTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG5vZGVUeXBlKCkgPT0gRnJhbWVTY3Jv
bGxpbmdOb2RlOyB9CisgICAgYm9vbCBpc092ZXJmbG93U2Nyb2xsaW5nTm9kZSgpIGNvbnN0IHsg
cmV0dXJuIG5vZGVUeXBlKCkgPT0gT3ZlcmZsb3dTY3JvbGxpbmdOb2RlOyB9CiAKICAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBZnRlckNoaWxkcmVuKGNvbnN0IFNjcm9sbGlu
Z1N0YXRlTm9kZSYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wMTNlMzUwZTY1NDM0OTVhZTAzNDZmMzViNWZhYzYyYWQyZGRhYzY0Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJl
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5jcHAKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlLmgiCisKKyNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQorCisjaW5jbHVkZSAi
U2Nyb2xsaW5nU3RhdGVUcmVlLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZS5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGU6OlNj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUoU2Nyb2xsaW5nVHJlZSYgc2Nyb2xsaW5n
VHJlZSwgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKKyAgICA6IFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlKHNjcm9sbGluZ1RyZWUsIE92ZXJmbG93U2Nyb2xsaW5nTm9kZSwgbm9kZUlEKQorewor
fQorCitTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlOjp+U2Nyb2xsaW5nVHJlZU92
ZXJmbG93U2Nyb2xsaW5nTm9kZSgpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjUxODg1ZjYxNGJkNDgwNjJjMTBkNmRlNDczNDMxYTFm
MzFmMTY2YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUuaApAQCAtMCwwICsxLDUwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlX2gK
KyNkZWZpbmUgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZV9oCisKKyNpZiBFTkFC
TEUoQVNZTkNfU0NST0xMSU5HKQorCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTY3JvbGxpbmdUcmVlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlIDogcHVibGljIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlIHsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIH5TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlKCk7
CisKKyAgICAKK3Byb3RlY3RlZDoKKyAgICBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlKFNjcm9sbGluZ1RyZWUmLCBTY3JvbGxpbmdOb2RlSUQpOworfTsKKworU0NST0xMSU5HX05P
REVfVFlQRV9DQVNUUyhTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLCBpc092ZXJm
bG93U2Nyb2xsaW5nTm9kZSgpKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykKKworI2VuZGlmIC8vIFNjcm9sbGluZ1RyZWVPdmVy
Zmxvd1Njcm9sbGluZ05vZGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCmluZGV4IDYxNjlkMzMw
ZDQ2M2JhYmY0OGU4YmRhZTBmMjQ4ODM3NjhlZjMyNTMuLmNmODM3NWMwMTgxNDc0ZTcwZGVmM2Nh
N2JiNDc2MzIyNDc4YTNiZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKQEAgLTM1LDEyICsz
NSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6
OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlKFNjcm9sbGluZ1RyZWUmIHNjcm9sbGluZ1RyZWUs
IFNjcm9sbGluZ05vZGVUeXBlIG5vZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQogICAg
IDogU2Nyb2xsaW5nVHJlZU5vZGUoc2Nyb2xsaW5nVHJlZSwgbm9kZVR5cGUsIG5vZGVJRCkKLSAg
ICAsIG1fZnJhbWVTY2FsZUZhY3RvcigxKQotICAgICwgbV9oZWFkZXJIZWlnaHQoMCkKLSAgICAs
IG1fZm9vdGVySGVpZ2h0KDApCi0gICAgLCBtX3N5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucygw
KQotICAgICwgbV9iZWhhdmlvckZvckZpeGVkKFN0aWNrVG9Eb2N1bWVudEJvdW5kcykKLSAgICAs
IG1fdG9wQ29udGVudEluc2V0KDApCiB7CiB9CiAKQEAgLTUyLDE0ICs0NiwxNSBAQCB2b2lkIFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjp1cGRhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3Jv
bGxpbmdTdGF0ZU5vZGUmCiB7CiAgICAgY29uc3QgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2Rl
JiBzdGF0ZSA9IHRvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlKHN0YXRlTm9kZSk7CiAKLSAg
ICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZTo6Vmlld3BvcnRTaXplKSkKLSAgICAgICAgbV92aWV3cG9ydFNpemUgPSBzdGF0ZS52aWV3cG9y
dFNpemUoKTsKKyAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZTo6U2Nyb2xsYWJsZUFyZWFTaXplKSkKKyAgICAgICAgbV9zY3JvbGxhYmxl
QXJlYVNpemUgPSBzdGF0ZS5zY3JvbGxhYmxlQXJlYVNpemUoKTsKIAogICAgIGlmIChzdGF0ZS5o
YXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpUb3RhbENvbnRl
bnRzU2l6ZSkpIHsKICAgICAgICAgaWYgKHNjcm9sbGluZ1RyZWUoKS5pc1J1YmJlckJhbmRJblBy
b2dyZXNzKCkpCiAgICAgICAgICAgICBtX3RvdGFsQ29udGVudHNTaXplRm9yUnViYmVyQmFuZCA9
IG1fdG90YWxDb250ZW50c1NpemU7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fdG90YWxD
b250ZW50c1NpemVGb3JSdWJiZXJCYW5kID0gc3RhdGUudG90YWxDb250ZW50c1NpemUoKTsKKwog
ICAgICAgICBtX3RvdGFsQ29udGVudHNTaXplID0gc3RhdGUudG90YWxDb250ZW50c1NpemUoKTsK
ICAgICB9CiAKQEAgLTcxLDMzICs2Niw0MiBAQCB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlOjp1cGRhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmCiAKICAg
ICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZTo6U2Nyb2xsYWJsZUFyZWFQYXJhbXMpKQogICAgICAgICBtX3Njcm9sbGFibGVBcmVhUGFyYW1l
dGVycyA9IHN0YXRlLnNjcm9sbGFibGVBcmVhUGFyYW1ldGVycygpOworfQogCi0gICAgaWYgKHN0
YXRlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OkZyYW1l
U2NhbGVGYWN0b3IpKQotICAgICAgICBtX2ZyYW1lU2NhbGVGYWN0b3IgPSBzdGF0ZS5mcmFtZVNj
YWxlRmFjdG9yKCk7Ci0KLSAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZTo6UmVhc29uc0ZvclN5bmNocm9ub3VzU2Nyb2xsaW5nKSkKLSAg
ICAgICAgbV9zeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMgPSBzdGF0ZS5zeW5jaHJvbm91c1Nj
cm9sbGluZ1JlYXNvbnMoKTsKK3ZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OnVwZGF0
ZUFmdGVyQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJiBzdGF0ZU5vZGUpCit7Cisg
ICAgY29uc3QgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlJiBzY3JvbGxpbmdTdGF0ZU5vZGUg
PSB0b1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZShzdGF0ZU5vZGUpOworICAgIGlmIChzY3Jv
bGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5n
Tm9kZTo6UmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24pKQorICAgICAgICBzY3JvbGxpbmdUcmVlKCku
c2Nyb2xsaW5nVHJlZU5vZGVSZXF1ZXN0c1Njcm9sbChzY3JvbGxpbmdOb2RlSUQoKSwgc2Nyb2xs
aW5nU3RhdGVOb2RlLnJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKCksIHNjcm9sbGluZ1N0YXRlTm9k
ZS5yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvblJlcHJlc2VudHNQcm9ncmFtbWF0aWNTY3JvbGwoKSk7
Cit9CiAKLSAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZTo6SGVhZGVySGVpZ2h0KSkKLSAgICAgICAgbV9oZWFkZXJIZWlnaHQgPSBzdGF0
ZS5oZWFkZXJIZWlnaHQoKTsKK3ZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OnNldFNj
cm9sbFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uKQoreworICAgIEZs
b2F0UG9pbnQgbmV3U2Nyb2xsUG9zaXRpb24gPSBzY3JvbGxQb3NpdGlvbjsKKyAgICBuZXdTY3Jv
bGxQb3NpdGlvbiA9IG5ld1Njcm9sbFBvc2l0aW9uLnNocnVua1RvKG1heGltdW1TY3JvbGxQb3Np
dGlvbigpKTsKKyAgICBuZXdTY3JvbGxQb3NpdGlvbiA9IG5ld1Njcm9sbFBvc2l0aW9uLmV4cGFu
ZGVkVG8obWluaW11bVNjcm9sbFBvc2l0aW9uKCkpOwogCi0gICAgaWYgKHN0YXRlLmhhc0NoYW5n
ZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OkZvb3RlckhlaWdodCkpCi0g
ICAgICAgIG1fZm9vdGVySGVpZ2h0ID0gc3RhdGUuZm9vdGVySGVpZ2h0KCk7CisgICAgc2V0U2Ny
b2xsUG9zaXRpb25XaXRob3V0Q29udGVudEVkZ2VDb25zdHJhaW50cyhuZXdTY3JvbGxQb3NpdGlv
bik7Cit9CiAKLSAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZTo6QmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzKSkKLSAgICAgICAgbV9iZWhh
dmlvckZvckZpeGVkID0gc3RhdGUuc2Nyb2xsQmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzKCk7Cit2
b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpzZXRTY3JvbGxQb3NpdGlvbldpdGhvdXRD
b250ZW50RWRnZUNvbnN0cmFpbnRzKGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uKQor
eworICAgIHNldFNjcm9sbExheWVyUG9zaXRpb24oc2Nyb2xsUG9zaXRpb24pOworICAgIHNjcm9s
bGluZ1RyZWUoKS5zY3JvbGxpbmdUcmVlTm9kZURpZFNjcm9sbChzY3JvbGxpbmdOb2RlSUQoKSwg
c2Nyb2xsUG9zaXRpb24pOworfQogCi0gICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQcm9wZXJ0eShT
Y3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlRvcENvbnRlbnRJbnNldCkpCi0gICAgICAgIG1f
dG9wQ29udGVudEluc2V0ID0gc3RhdGUudG9wQ29udGVudEluc2V0KCk7CitGbG9hdFBvaW50IFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjptaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdAor
eworICAgIHJldHVybiBGbG9hdFBvaW50KCk7CiB9CiAKLXZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGU6OnVwZGF0ZUFmdGVyQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJiBz
dGF0ZU5vZGUpCitGbG9hdFBvaW50IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjptYXhpbXVt
U2Nyb2xsUG9zaXRpb24oKSBjb25zdAogewotICAgIGNvbnN0IFNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZSYgc2Nyb2xsaW5nU3RhdGVOb2RlID0gdG9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05v
ZGUoc3RhdGVOb2RlKTsKLSAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9w
ZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlJlcXVlc3RlZFNjcm9sbFBvc2l0aW9u
KSkKLSAgICAgICAgc2Nyb2xsaW5nVHJlZSgpLnNjcm9sbGluZ1RyZWVOb2RlUmVxdWVzdHNTY3Jv
bGwoc2Nyb2xsaW5nTm9kZUlEKCksIHNjcm9sbGluZ1N0YXRlTm9kZS5yZXF1ZXN0ZWRTY3JvbGxQ
b3NpdGlvbigpLCBzY3JvbGxpbmdTdGF0ZU5vZGUucmVxdWVzdGVkU2Nyb2xsUG9zaXRpb25SZXBy
ZXNlbnRzUHJvZ3JhbW1hdGljU2Nyb2xsKCkpOworICAgIEZsb2F0UG9pbnQgY29udGVudFNpemVQ
b2ludCh0b3RhbENvbnRlbnRzU2l6ZSgpKTsKKyAgICByZXR1cm4gRmxvYXRQb2ludChjb250ZW50
U2l6ZVBvaW50IC0gc2Nyb2xsYWJsZUFyZWFTaXplKCkpLmV4cGFuZGVkVG8oRmxvYXRQb2ludCgp
KTsKIH0KIAorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQVNZ
TkNfU0NST0xMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKaW5kZXggNDliZjhmNzQwYmVkOGE3ZmEx
Mjg5YzQyZDEwNDVlMWUxMjgwYzliOS4uNmZlZWNmY2E3ZGQ1YzNhZWU0NjQ4NmQ2MjdkNTk5NGYy
M2ZkMTlkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCkBAIC0zNiw3ICszNiw2IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgUGxhdGZvcm1XaGVlbEV2ZW50OwogY2xhc3MgU2Nyb2xs
aW5nVHJlZTsKIGNsYXNzIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTsKIApAQCAtNTEsMzAg
KzUwLDMwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGFyZW50U2Nyb2xsUG9zaXRpb25E
aWRDaGFuZ2UoY29uc3QgRmxvYXRSZWN0JiAvKnZpZXdwb3J0UmVjdCovLCBjb25zdCBGbG9hdFNp
emUmIC8qY3VtdWxhdGl2ZURlbHRhKi8pIG92ZXJyaWRlIHsgfQogCiAgICAgdmlydHVhbCB2b2lk
IGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JikgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JikgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbldpdGhvdXRDb250ZW50RWRnZUNvbnN0cmFp
bnRzKGNvbnN0IEZsb2F0UG9pbnQmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbFBv
c2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsUG9z
aXRpb25XaXRob3V0Q29udGVudEVkZ2VDb25zdHJhaW50cyhjb25zdCBGbG9hdFBvaW50Jik7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJWaWV3cG9ydENoYW5nZShjb25zdCBG
bG9hdFJlY3QmIHZpZXdwb3J0UmVjdCwgZG91YmxlIHNjYWxlKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUxheWVyc0FmdGVyRGVsZWdhdGVkU2Nyb2xsKGNvbnN0IEZsb2F0UG9pbnQmKSB7
IH0KIAotICAgIFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyBzeW5jaHJvbm91c1Njcm9sbGlu
Z1JlYXNvbnMoKSBjb25zdCB7IHJldHVybiBtX3N5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uczsg
fQotICAgIGJvb2wgc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvblN5bmNocm9ub3VzbHko
KSBjb25zdCB7IHJldHVybiBtX3N5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uczsgfQotCiBwcm90
ZWN0ZWQ6CiAgICAgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUoU2Nyb2xsaW5nVHJlZSYsIFNj
cm9sbGluZ05vZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQpOwogCisgICAgdmlydHVhbCBGbG9hdFBv
aW50IG1pbmltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0OworICAgIHZpcnR1YWwgRmxvYXRQb2lu
dCBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRT
Y3JvbGxMYXllclBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKSA9IDA7CisKICAgICBjb25zdCBG
bG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsUG9zaXRp
b247IH0KLSAgICBjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdmlld3BvcnRTaXplOyB9Ci0gICAgY29uc3QgSW50U2l6ZSYgdG90YWxDb250ZW50c1NpemUo
KSBjb25zdCB7IHJldHVybiBtX3RvdGFsQ29udGVudHNTaXplOyB9CisgICAgY29uc3QgRmxvYXRT
aXplJiBzY3JvbGxhYmxlQXJlYVNpemUoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVh
U2l6ZTsgfQorICAgIGNvbnN0IEZsb2F0U2l6ZSYgdG90YWxDb250ZW50c1NpemUoKSBjb25zdCB7
IHJldHVybiBtX3RvdGFsQ29udGVudHNTaXplOyB9CiAgICAgY29uc3QgSW50UG9pbnQmIHNjcm9s
bE9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsT3JpZ2luOyB9CiAKICAgICAvLyBJZiB0
aGUgdG90YWxDb250ZW50c1NpemUgY2hhbmdlcyBpbiB0aGUgbWlkZGxlIG9mIGEgcnViYmVyLWJh
bmQsIHdlIHN0aWxsIHdhbnQgdG8gdXNlIHRoZSBvbGQgdG90YWxDb250ZW50c1NpemUgZm9yIHRo
ZSBzYWtlIG9mCiAgICAgLy8gY29tcHV0aW5nIHRoZSBzdHJldGNoQW1vdW50KCkuIFVzaW5nIHRo
ZSBvbGQgdmFsdWUgd2lsbCBrZWVwIHRoZSBhbmltYXRpb24gc21vb3RoLiBXaGVuIHRoZXJlIGlz
IG5vIHJ1YmJlci1iYW5kIGluIHByb2dyZXNzIGF0CiAgICAgLy8gYWxsLCBtX3RvdGFsQ29udGVu
dHNTaXplRm9yUnViYmVyQmFuZCBzaG91bGQgYmUgZXF1aXZhbGVudCB0byBtX3RvdGFsQ29udGVu
dHNTaXplLgotICAgIGNvbnN0IEludFNpemUmIHRvdGFsQ29udGVudHNTaXplRm9yUnViYmVyQmFu
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxDb250ZW50c1NpemVGb3JSdWJiZXJCYW5kOyB9Ci0g
ICAgdm9pZCBzZXRUb3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQoY29uc3QgSW50U2l6ZSYg
dG90YWxDb250ZW50c1NpemVGb3JSdWJiZXJCYW5kKSB7IG1fdG90YWxDb250ZW50c1NpemVGb3JS
dWJiZXJCYW5kID0gdG90YWxDb250ZW50c1NpemVGb3JSdWJiZXJCYW5kOyB9Ci0KLSAgICBmbG9h
dCBmcmFtZVNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZVNjYWxlRmFjdG9yOyB9
CisgICAgY29uc3QgRmxvYXRTaXplJiB0b3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQoKSBj
b25zdCB7IHJldHVybiBtX3RvdGFsQ29udGVudHNTaXplRm9yUnViYmVyQmFuZDsgfQorICAgIHZv
aWQgc2V0VG90YWxDb250ZW50c1NpemVGb3JSdWJiZXJCYW5kKGNvbnN0IEZsb2F0U2l6ZSYgdG90
YWxDb250ZW50c1NpemVGb3JSdWJiZXJCYW5kKSB7IG1fdG90YWxDb250ZW50c1NpemVGb3JSdWJi
ZXJCYW5kID0gdG90YWxDb250ZW50c1NpemVGb3JSdWJiZXJCYW5kOyB9CiAKICAgICBTY3JvbGxF
bGFzdGljaXR5IGhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KCkgY29uc3QgeyByZXR1cm4gbV9z
Y3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMuaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHk7IH0KICAg
ICBTY3JvbGxFbGFzdGljaXR5IHZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eTsg
fQpAQCAtODQsMzEgKzgzLDE0IEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgY2FuSGF2ZVNjcm9s
bGJhcnMoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhUGFyYW1ldGVycy5ob3Jpem9u
dGFsU2Nyb2xsYmFyTW9kZSAhPSBTY3JvbGxiYXJBbHdheXNPZmYgfHwgbV9zY3JvbGxhYmxlQXJl
YVBhcmFtZXRlcnMudmVydGljYWxTY3JvbGxiYXJNb2RlICE9IFNjcm9sbGJhckFsd2F5c09mZjsg
fQogCi0gICAgaW50IGhlYWRlckhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faGVhZGVySGVpZ2h0
OyB9Ci0gICAgaW50IGZvb3RlckhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9vdGVySGVpZ2h0
OyB9Ci0KLSAgICBTY3JvbGxCZWhhdmlvckZvckZpeGVkRWxlbWVudHMgc2Nyb2xsQmVoYXZpb3JG
b3JGaXhlZEVsZW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9iZWhhdmlvckZvckZpeGVkOyB9Ci0K
LSAgICBmbG9hdCB0b3BDb250ZW50SW5zZXQoKSBjb25zdCB7IHJldHVybiBtX3RvcENvbnRlbnRJ
bnNldDsgfQotCiBwcml2YXRlOgotICAgIEZsb2F0U2l6ZSBtX3ZpZXdwb3J0U2l6ZTsKLSAgICBJ
bnRTaXplIG1fdG90YWxDb250ZW50c1NpemU7Ci0gICAgSW50U2l6ZSBtX3RvdGFsQ29udGVudHNT
aXplRm9yUnViYmVyQmFuZDsKKyAgICBGbG9hdFNpemUgbV9zY3JvbGxhYmxlQXJlYVNpemU7Cisg
ICAgRmxvYXRTaXplIG1fdG90YWxDb250ZW50c1NpemU7CisgICAgRmxvYXRTaXplIG1fdG90YWxD
b250ZW50c1NpemVGb3JSdWJiZXJCYW5kOwogICAgIEZsb2F0UG9pbnQgbV9zY3JvbGxQb3NpdGlv
bjsKICAgICBJbnRQb2ludCBtX3Njcm9sbE9yaWdpbjsKICAgICAKICAgICBTY3JvbGxhYmxlQXJl
YVBhcmFtZXRlcnMgbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnM7Ci0gICAgCi0gICAgZmxvYXQg
bV9mcmFtZVNjYWxlRmFjdG9yOwotCi0gICAgaW50IG1faGVhZGVySGVpZ2h0OwotICAgIGludCBt
X2Zvb3RlckhlaWdodDsKLQotICAgIFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyBtX3N5bmNo
cm9ub3VzU2Nyb2xsaW5nUmVhc29uczsKLSAgICBTY3JvbGxCZWhhdmlvckZvckZpeGVkRWxlbWVu
dHMgbV9iZWhhdmlvckZvckZpeGVkOwotCi0gICAgZmxvYXQgbV90b3BDb250ZW50SW5zZXQ7CiB9
OwogCiBTQ1JPTExJTkdfTk9ERV9UWVBFX0NBU1RTKFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
LCBpc1Njcm9sbGluZ05vZGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9pb3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JJT1MubW0KaW5kZXggNDY4MDEx
NmZjMDBkZjc0NDQwZDczOWJjNmNlOTU3ZGI0NTM5NThlYy4uNWZjMjk3Nzk0MzBkNmFmMGRhM2I3
YjlkNTc1OTA3NGM3NjI5OTcxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvaW9zL1Njcm9sbGluZ0Nvb3JkaW5hdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdDb29yZGluYXRvcklPUy5tbQpAQCAtMzYsNyAr
MzYsNyBAQAogI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlVHJlZS5oIgogI2luY2x1ZGUgIlNjcm9s
bGluZ1RocmVhZC5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVGaXhlZE5vZGUuaCIKLSNpbmNs
dWRlICJTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUy5oIgorI2luY2x1ZGUgIlNjcm9sbGlu
Z1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1MuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdUcmVlU3Rp
Y2t5Tm9kZS5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVJT1MuaCIKICNpbmNsdWRlIDx3dGYv
RnVuY3Rpb25hbC5oPgpAQCAtMTEwLDggKzExMCwxMCBAQCBQYXNzT3duUHRyPFNjcm9sbGluZ1Ry
ZWVOb2RlPiBTY3JvbGxpbmdDb29yZGluYXRvcklPUzo6Y3JlYXRlU2Nyb2xsaW5nVHJlZU5vZGUo
UwogCiAgICAgc3dpdGNoIChub2RlVHlwZSkgewogICAgIGNhc2UgRnJhbWVTY3JvbGxpbmdOb2Rl
OgorICAgICAgICByZXR1cm4gU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUzo6Y3Jl
YXRlKCpzY3JvbGxpbmdUcmVlKCksIG5vZGVJRCk7CiAgICAgY2FzZSBPdmVyZmxvd1Njcm9sbGlu
Z05vZGU6Ci0gICAgICAgIHJldHVybiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUzo6Y3Jl
YXRlKCpzY3JvbGxpbmdUcmVlKCksIG5vZGVUeXBlLCBub2RlSUQpOworICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgY2FzZSBGaXhlZE5v
ZGU6CiAgICAgICAgIHJldHVybiBTY3JvbGxpbmdUcmVlRml4ZWROb2RlOjpjcmVhdGUoKnNjcm9s
bGluZ1RyZWUoKSwgbm9kZUlEKTsKICAgICBjYXNlIFN0aWNreU5vZGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZUlPUy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGlu
Z1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZWE3OWY0MzZmYWM5Y2U0
NGQwNmEzZTU2MTY3MzMyOTRhYjY5MzcxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1Mu
aApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlSU9TX2gKKyNkZWZpbmUgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZUlPU19oCisKKyNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBQTEFURk9STShJT1Mp
CisKKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLmgiCisjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX0NMQVNTIENBTGF5ZXI7CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUyA6IHB1
YmxpYyBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc093blB0cjxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TPiBjcmVhdGUo
U2Nyb2xsaW5nVHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7CisgICAgdmlydHVhbCB+U2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUygpOworCitwcm90ZWN0ZWQ6CisgICAgU2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUyhTY3JvbGxpbmdUcmVlJiwgU2Nyb2xsaW5nTm9kZUlE
KTsKKworICAgIC8vIFNjcm9sbGluZ1RyZWVOb2RlIG1lbWJlciBmdW5jdGlvbnMuCisgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYp
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBZnRlckNoaWxkcmVuKGNvbnN0IFNj
cm9sbGluZ1N0YXRlTm9kZSYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVXaGVl
bEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpIG92ZXJyaWRlIHsgfQorCisgICAgRmxv
YXRQb2ludCBzY3JvbGxQb3NpdGlvbigpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRTY3Jv
bGxQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IHNldFNjcm9sbFBvc2l0aW9uV2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMoY29uc3QgRmxv
YXRQb2ludCYpIG92ZXJyaWRlOworCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxheWVyc0FmdGVy
Vmlld3BvcnRDaGFuZ2UoY29uc3QgRmxvYXRSZWN0JiB2aWV3cG9ydFJlY3QsIGRvdWJsZSBzY2Fs
ZSk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxheWVyc0FmdGVyRGVsZWdhdGVkU2Nyb2xsKGNv
bnN0IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxM
YXllclBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKKworICAgIEZsb2F0UG9p
bnQgbWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Q7CisgICAgRmxvYXRQb2ludCBtYXhpbXVt
U2Nyb2xsUG9zaXRpb24oKSBjb25zdDsKKworICAgIHZvaWQgc2Nyb2xsQnkoY29uc3QgSW50U2l6
ZSYpOworICAgIHZvaWQgc2Nyb2xsQnlXaXRob3V0Q29udGVudEVkZ2VDb25zdHJhaW50cyhjb25z
dCBJbnRTaXplJik7CisKK3ByaXZhdGU6CisgICAgdm9pZCB1cGRhdGVDaGlsZE5vZGVzQWZ0ZXJT
Y3JvbGwoY29uc3QgRmxvYXRQb2ludCYpOworICAgIENBTGF5ZXIgKnNjcm9sbExheWVyKCkgY29u
c3QgeyByZXR1cm4gbV9zY3JvbGxMYXllci5nZXQoKTsgfQorCisgICAgUmV0YWluUHRyPENBTGF5
ZXI+IG1fc2Nyb2xsTGF5ZXI7CisgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fY291bnRlclNjcm9s
bGluZ0xheWVyOworICAgIFJldGFpblB0cjxDQUxheWVyPiBtX2hlYWRlckxheWVyOworICAgIFJl
dGFpblB0cjxDQUxheWVyPiBtX2Zvb3RlckxheWVyOworICAgIEZsb2F0UG9pbnQgbV9wcm9iYWJs
ZU1haW5UaHJlYWRTY3JvbGxQb3NpdGlvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFBMQVRGT1JNKElPUykKKwor
I2VuZGlmIC8vIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1NfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Ny
b2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYjhjZjUyOTg3
YTkyMGQzYTBkNDA4MDdkZTNkZjEzZDZkYjMyZWIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVJT1MubW0KQEAgLTAsMCArMSwyMjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcu
aCIKKyNpbXBvcnQgIlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1MuaCIKKworI2lm
IEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCisKKyNpbXBvcnQgIkZyYW1lVmlldy5oIgorI2ltcG9y
dCAiU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKKyNpbXBvcnQgIlNjcm9sbGluZ1RyZWUuaCIKKyNp
bXBvcnQgIlNjcm9sbGluZ1N0YXRlVHJlZS5oIgorI2ltcG9ydCAiU2V0dGluZ3MuaCIKKyNpbXBv
cnQgIlRpbGVDb250cm9sbGVyLmgiCisjaW1wb3J0ICJXZWJMYXllci5oIgorCisjaW1wb3J0IDxR
dWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzT3du
UHRyPFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1M+IFNjcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGVJT1M6OmNyZWF0ZShTY3JvbGxpbmdUcmVlJiBzY3JvbGxpbmdUcmVlLCBT
Y3JvbGxpbmdOb2RlSUQgbm9kZUlEKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgU2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUyhzY3JvbGxpbmdUcmVlLCBub2RlSUQpKTsKK30K
KworU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUzo6U2Nyb2xsaW5nVHJlZUZyYW1l
U2Nyb2xsaW5nTm9kZUlPUyhTY3JvbGxpbmdUcmVlJiBzY3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdO
b2RlSUQgbm9kZUlEKQorICAgIDogU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZShzY3Jv
bGxpbmdUcmVlLCBub2RlSUQpCit7Cit9CisKK1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVJT1M6On5TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TKCkKK3sKK30KKwordm9p
ZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TOjp1cGRhdGVCZWZvcmVDaGlsZHJl
bihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmIHN0YXRlTm9kZSkKK3sKKyAgICBTY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlOjp1cGRhdGVCZWZvcmVDaGlsZHJlbihzdGF0ZU5vZGUpOwor
ICAgIAorICAgIGNvbnN0IGF1dG8mIHNjcm9sbGluZ1N0YXRlTm9kZSA9IHRvU2Nyb2xsaW5nU3Rh
dGVGcmFtZVNjcm9sbGluZ05vZGUoc3RhdGVOb2RlKTsKKworICAgIGlmIChzY3JvbGxpbmdTdGF0
ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6U2Nyb2xsTGF5ZXIp
KQorICAgICAgICBtX3Njcm9sbExheWVyID0gc2Nyb2xsaW5nU3RhdGVOb2RlLmxheWVyKCk7CisK
KyAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdT
dGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6Q291bnRlclNjcm9sbGluZ0xheWVyKSkKKyAgICAgICAg
bV9jb3VudGVyU2Nyb2xsaW5nTGF5ZXIgPSBzY3JvbGxpbmdTdGF0ZU5vZGUuY291bnRlclNjcm9s
bGluZ0xheWVyKCk7CisKKyAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9w
ZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6SGVhZGVyTGF5ZXIpKQorICAg
ICAgICBtX2hlYWRlckxheWVyID0gc2Nyb2xsaW5nU3RhdGVOb2RlLmhlYWRlckxheWVyKCk7CisK
KyAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdT
dGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6Rm9vdGVyTGF5ZXIpKQorICAgICAgICBtX2Zvb3Rlckxh
eWVyID0gc2Nyb2xsaW5nU3RhdGVOb2RlLmZvb3RlckxheWVyKCk7CisKKyAgICBpZiAoc2Nyb2xs
aW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xs
aW5nTm9kZTo6UmVhc29uc0ZvclN5bmNocm9ub3VzU2Nyb2xsaW5nKSkgeworICAgICAgICBpZiAo
c2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvblN5bmNocm9ub3VzbHkoKSkgeworICAgICAg
ICAgICAgLy8gV2UncmUgdHJhbnNpdGlvbmluZyB0byB0aGUgc2xvdyAidXBkYXRlIHNjcm9sbCBs
YXllciBwb3NpdGlvbiBvbiB0aGUgbWFpbiB0aHJlYWQiIG1vZGUuCisgICAgICAgICAgICAvLyBJ
bml0aWFsaXplIHRoZSBwcm9iYWJsZSBtYWluIHRocmVhZCBzY3JvbGwgcG9zaXRpb24gd2l0aCB0
aGUgY3VycmVudCBzY3JvbGwgbGF5ZXIgcG9zaXRpb24uCisgICAgICAgICAgICBpZiAoc2Nyb2xs
aW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05v
ZGU6OlJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKSkKKyAgICAgICAgICAgICAgICBtX3Byb2JhYmxl
TWFpblRocmVhZFNjcm9sbFBvc2l0aW9uID0gc2Nyb2xsaW5nU3RhdGVOb2RlLnJlcXVlc3RlZFNj
cm9sbFBvc2l0aW9uKCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBDR1Bv
aW50IHNjcm9sbExheWVyUG9zaXRpb24gPSBtX3Njcm9sbExheWVyLmdldCgpLnBvc2l0aW9uOwor
ICAgICAgICAgICAgICAgIG1fcHJvYmFibGVNYWluVGhyZWFkU2Nyb2xsUG9zaXRpb24gPSBJbnRQ
b2ludCgtc2Nyb2xsTGF5ZXJQb3NpdGlvbi54LCAtc2Nyb2xsTGF5ZXJQb3NpdGlvbi55KTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBTY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlSU9TOjp1cGRhdGVBZnRlckNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0
YXRlTm9kZSYgc3RhdGVOb2RlKQoreworICAgIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGU6OnVwZGF0ZUFmdGVyQ2hpbGRyZW4oc3RhdGVOb2RlKTsKKworICAgIGNvbnN0IGF1dG8mIHNj
cm9sbGluZ1N0YXRlTm9kZSA9IHRvU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUoc3Rh
dGVOb2RlKTsKKworICAgIC8vIFVwZGF0ZSB0aGUgc2Nyb2xsIHBvc2l0aW9uIGFmdGVyIGNoaWxk
IG5vZGVzIGhhdmUgYmVlbiB1cGRhdGVkLCBiZWNhdXNlIHRoZXkgbmVlZCB0byBoYXZlIHVwZGF0
ZWQgdGhlaXIgY29uc3RyYWludHMgYmVmb3JlIGFueSBzY3JvbGxpbmcgaGFwcGVucy4KKyAgICBp
ZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGU6OlJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKSkKKyAgICAgICAgc2V0U2Nyb2xs
UG9zaXRpb24oc2Nyb2xsaW5nU3RhdGVOb2RlLnJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKCkpOwor
fQorCitGbG9hdFBvaW50IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1M6OnNjcm9s
bFBvc2l0aW9uKCkgY29uc3QKK3sKKyAgICBpZiAoc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3Np
dGlvblN5bmNocm9ub3VzbHkoKSkKKyAgICAgICAgcmV0dXJuIG1fcHJvYmFibGVNYWluVGhyZWFk
U2Nyb2xsUG9zaXRpb247CisKKyAgICBDR1BvaW50IHNjcm9sbExheWVyUG9zaXRpb24gPSBtX3Nj
cm9sbExheWVyLmdldCgpLnBvc2l0aW9uOworICAgIHJldHVybiBJbnRQb2ludCgtc2Nyb2xsTGF5
ZXJQb3NpdGlvbi54ICsgc2Nyb2xsT3JpZ2luKCkueCgpLCAtc2Nyb2xsTGF5ZXJQb3NpdGlvbi55
ICsgc2Nyb2xsT3JpZ2luKCkueSgpKTsKK30KKwordm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlSU9TOjpzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQ
b3NpdGlvbikKK3sKKyAgICBGbG9hdFBvaW50IG5ld1Njcm9sbFBvc2l0aW9uID0gc2Nyb2xsUG9z
aXRpb247CisgICAgbmV3U2Nyb2xsUG9zaXRpb24gPSBuZXdTY3JvbGxQb3NpdGlvbi5zaHJ1bmtU
byhtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSk7CisgICAgbmV3U2Nyb2xsUG9zaXRpb24gPSBuZXdT
Y3JvbGxQb3NpdGlvbi5leHBhbmRlZFRvKG1pbmltdW1TY3JvbGxQb3NpdGlvbigpKTsKKworICAg
IHNldFNjcm9sbFBvc2l0aW9uV2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMobmV3U2Nyb2xs
UG9zaXRpb24pOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1M6
OnNldFNjcm9sbFBvc2l0aW9uV2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMoY29uc3QgRmxv
YXRQb2ludCYgc2Nyb2xsUG9zaXRpb24pCit7CisgICAgaWYgKHNob3VsZFVwZGF0ZVNjcm9sbExh
eWVyUG9zaXRpb25TeW5jaHJvbm91c2x5KCkpIHsKKyAgICAgICAgbV9wcm9iYWJsZU1haW5UaHJl
YWRTY3JvbGxQb3NpdGlvbiA9IHNjcm9sbFBvc2l0aW9uOworICAgICAgICBzY3JvbGxpbmdUcmVl
KCkuc2Nyb2xsaW5nVHJlZU5vZGVEaWRTY3JvbGwoc2Nyb2xsaW5nTm9kZUlEKCksIHNjcm9sbFBv
c2l0aW9uLCBTZXRTY3JvbGxpbmdMYXllclBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIHNldFNjcm9sbExheWVyUG9zaXRpb24oc2Nyb2xsUG9zaXRpb24pOworICAgIHNj
cm9sbGluZ1RyZWUoKS5zY3JvbGxpbmdUcmVlTm9kZURpZFNjcm9sbChzY3JvbGxpbmdOb2RlSUQo
KSwgc2Nyb2xsUG9zaXRpb24pOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVJT1M6OnNldFNjcm9sbExheWVyUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xs
UG9zaXRpb24pCit7CisgICAgQVNTRVJUKCFzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9u
U3luY2hyb25vdXNseSgpKTsKKyAgICBbbV9zY3JvbGxMYXllciBzZXRQb3NpdGlvbjpDR1BvaW50
TWFrZSgtc2Nyb2xsUG9zaXRpb24ueCgpICsgc2Nyb2xsT3JpZ2luKCkueCgpLCAtc2Nyb2xsUG9z
aXRpb24ueSgpICsgc2Nyb2xsT3JpZ2luKCkueSgpKV07CisKKyAgICB1cGRhdGVDaGlsZE5vZGVz
QWZ0ZXJTY3JvbGwoc2Nyb2xsUG9zaXRpb24pOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGVJT1M6OnVwZGF0ZUxheWVyc0FmdGVyVmlld3BvcnRDaGFuZ2UoY29uc3Qg
RmxvYXRSZWN0JiB2aWV3cG9ydFJlY3QsIGRvdWJsZSAvKnNjYWxlKi8pCit7CisgICAgW21fY291
bnRlclNjcm9sbGluZ0xheWVyIHNldFBvc2l0aW9uOnZpZXdwb3J0UmVjdC5sb2NhdGlvbigpXTsK
KworICAgIGlmICghbV9jaGlsZHJlbikKKyAgICAgICAgcmV0dXJuOworCisgICAgc2l6ZV90IHNp
emUgPSBtX2NoaWxkcmVuLT5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXpl
OyArK2kpCisgICAgICAgIG1fY2hpbGRyZW4tPmF0KGkpLT5wYXJlbnRTY3JvbGxQb3NpdGlvbkRp
ZENoYW5nZSh2aWV3cG9ydFJlY3QsIEZsb2F0U2l6ZSgpKTsKK30KKwordm9pZCBTY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TOjp1cGRhdGVMYXllcnNBZnRlckRlbGVnYXRlZFNjcm9s
bChjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbikKK3sKKyAgICB1cGRhdGVDaGlsZE5v
ZGVzQWZ0ZXJTY3JvbGwoc2Nyb2xsUG9zaXRpb24pOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVJT1M6OnVwZGF0ZUNoaWxkTm9kZXNBZnRlclNjcm9sbChjb25zdCBG
bG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbikKK3sKKyAgICBTY3JvbGxCZWhhdmlvckZvckZpeGVk
RWxlbWVudHMgYmVoYXZpb3JGb3JGaXhlZCA9IHNjcm9sbEJlaGF2aW9yRm9yRml4ZWRFbGVtZW50
cygpOworICAgIEZsb2F0UG9pbnQgc2Nyb2xsT2Zmc2V0ID0gc2Nyb2xsUG9zaXRpb24gLSB0b0lu
dFNpemUoc2Nyb2xsT3JpZ2luKCkpOworICAgIEZsb2F0UmVjdCB2aWV3cG9ydFJlY3QoRmxvYXRQ
b2ludCgpLCBzY3JvbGxhYmxlQXJlYVNpemUoKSk7CisgICAgRmxvYXRTaXplIHNjcm9sbE9mZnNl
dEZvckZpeGVkQ2hpbGRyZW4gPSBGcmFtZVZpZXc6OnNjcm9sbE9mZnNldEZvckZpeGVkUG9zaXRp
b24oZW5jbG9zaW5nTGF5b3V0UmVjdCh2aWV3cG9ydFJlY3QpLCByb3VuZGVkTGF5b3V0U2l6ZSh0
b3RhbENvbnRlbnRzU2l6ZSgpKSwgcm91bmRlZExheW91dFBvaW50KHNjcm9sbE9mZnNldCksIHNj
cm9sbE9yaWdpbigpLCBmcmFtZVNjYWxlRmFjdG9yKCksIGZhbHNlLCBiZWhhdmlvckZvckZpeGVk
LCBoZWFkZXJIZWlnaHQoKSwgZm9vdGVySGVpZ2h0KCkpOworCisgICAgW21fY291bnRlclNjcm9s
bGluZ0xheWVyIHNldFBvc2l0aW9uOkZsb2F0UG9pbnQoc2Nyb2xsT2Zmc2V0Rm9yRml4ZWRDaGls
ZHJlbildOworCisgICAgaWYgKG1faGVhZGVyTGF5ZXIgfHwgbV9mb290ZXJMYXllcikgeworICAg
ICAgICAvLyBHZW5lcmFsbHkgdGhlIGJhbm5lcnMgc2hvdWxkIGhhdmUgdGhlIHNhbWUgaG9yaXpv
bnRhbC1wb3NpdGlvbiBjb21wdXRhdGlvbiBhcyBhIGZpeGVkIGVsZW1lbnQuIEhvd2V2ZXIsCisg
ICAgICAgIC8vIHRoZSBiYW5uZXJzIGFyZSBub3QgYWZmZWN0ZWQgYnkgdGhlIGZyYW1lU2NhbGVG
YWN0b3IoKSwgc28gaWYgdGhlcmUgaXMgY3VycmVudGx5IGEgbm9uLTEgZnJhbWVTY2FsZUZhY3Rv
cigpCisgICAgICAgIC8vIHRoZW4gd2Ugc2hvdWxkIHJlY29tcHV0ZSBzY3JvbGxPZmZzZXRGb3JG
aXhlZENoaWxkcmVuIGZvciB0aGUgYmFubmVyIHdpdGggYSBzY2FsZSBmYWN0b3Igb2YgMS4KKyAg
ICAgICAgZmxvYXQgaG9yaXpvbnRhbFNjcm9sbE9mZnNldEZvckJhbm5lciA9IHNjcm9sbE9mZnNl
dEZvckZpeGVkQ2hpbGRyZW4ud2lkdGgoKTsKKyAgICAgICAgaWYgKGZyYW1lU2NhbGVGYWN0b3Io
KSAhPSAxKQorICAgICAgICAgICAgaG9yaXpvbnRhbFNjcm9sbE9mZnNldEZvckJhbm5lciA9IEZy
YW1lVmlldzo6c2Nyb2xsT2Zmc2V0Rm9yRml4ZWRQb3NpdGlvbihlbmNsb3NpbmdMYXlvdXRSZWN0
KHZpZXdwb3J0UmVjdCksIHJvdW5kZWRMYXlvdXRTaXplKHRvdGFsQ29udGVudHNTaXplKCkpLCBy
b3VuZGVkTGF5b3V0UG9pbnQoc2Nyb2xsT2Zmc2V0KSwgc2Nyb2xsT3JpZ2luKCksIDEsIGZhbHNl
LCBiZWhhdmlvckZvckZpeGVkLCBoZWFkZXJIZWlnaHQoKSwgZm9vdGVySGVpZ2h0KCkpLndpZHRo
KCk7CisKKyAgICAgICAgaWYgKG1faGVhZGVyTGF5ZXIpCisgICAgICAgICAgICBbbV9oZWFkZXJM
YXllciBzZXRQb3NpdGlvbjpGbG9hdFBvaW50KGhvcml6b250YWxTY3JvbGxPZmZzZXRGb3JCYW5u
ZXIsIDApXTsKKworICAgICAgICBpZiAobV9mb290ZXJMYXllcikKKyAgICAgICAgICAgIFttX2Zv
b3RlckxheWVyIHNldFBvc2l0aW9uOkZsb2F0UG9pbnQoaG9yaXpvbnRhbFNjcm9sbE9mZnNldEZv
ckJhbm5lciwgdG90YWxDb250ZW50c1NpemUoKS5oZWlnaHQoKSAtIGZvb3RlckhlaWdodCgpKV07
CisgICAgfQorICAgIAorICAgIGlmICghbV9jaGlsZHJlbikKKyAgICAgICAgcmV0dXJuOworICAg
IAorICAgIHZpZXdwb3J0UmVjdC5zZXRMb2NhdGlvbihzY3JvbGxPZmZzZXQpOworICAgIAorICAg
IEZsb2F0UmVjdCB2aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0c1JlY3QgPSBGcmFtZVZpZXc6OnJl
Y3RGb3JWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cyhlbmNsb3NpbmdMYXlvdXRSZWN0KHZpZXdw
b3J0UmVjdCksIHJvdW5kZWRMYXlvdXRTaXplKHRvdGFsQ29udGVudHNTaXplKCkpLCBmcmFtZVNj
YWxlRmFjdG9yKCksIGZhbHNlLCBiZWhhdmlvckZvckZpeGVkKTsKKyAgICAKKyAgICBzaXplX3Qg
c2l6ZSA9IG1fY2hpbGRyZW4tPnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNp
emU7ICsraSkKKyAgICAgICAgbV9jaGlsZHJlbi0+YXQoaSktPnBhcmVudFNjcm9sbFBvc2l0aW9u
RGlkQ2hhbmdlKHZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzUmVjdCwgRmxvYXRTaXplKCkpOwor
fQorCitGbG9hdFBvaW50IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1M6Om1pbmlt
dW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0Cit7CisgICAgRmxvYXRQb2ludCBwb3NpdGlvbjsKKyAg
ICAKKyAgICBpZiAoc2Nyb2xsaW5nVHJlZSgpLnJvb3ROb2RlKCkgPT0gdGhpcyAmJiBzY3JvbGxp
bmdUcmVlKCkuc2Nyb2xsUGlubmluZ0JlaGF2aW9yKCkgPT0gUGluVG9Cb3R0b20pCisgICAgICAg
IHBvc2l0aW9uLnNldFkobWF4aW11bVNjcm9sbFBvc2l0aW9uKCkueSgpKTsKKworICAgIHJldHVy
biBwb3NpdGlvbjsKK30KKworRmxvYXRQb2ludCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlSU9TOjptYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdAoreworICAgIEZsb2F0UG9pbnQg
cG9zaXRpb24odG90YWxDb250ZW50c1NpemVGb3JSdWJiZXJCYW5kKCkud2lkdGgoKSAtIHNjcm9s
bGFibGVBcmVhU2l6ZSgpLndpZHRoKCksCisgICAgICAgIHRvdGFsQ29udGVudHNTaXplRm9yUnVi
YmVyQmFuZCgpLmhlaWdodCgpIC0gc2Nyb2xsYWJsZUFyZWFTaXplKCkuaGVpZ2h0KCkpOworCisg
ICAgcG9zaXRpb24gPSBwb3NpdGlvbi5leHBhbmRlZFRvKEZsb2F0UG9pbnQoKSk7CisKKyAgICBp
ZiAoc2Nyb2xsaW5nVHJlZSgpLnJvb3ROb2RlKCkgPT0gdGhpcyAmJiBzY3JvbGxpbmdUcmVlKCku
c2Nyb2xsUGlubmluZ0JlaGF2aW9yKCkgPT0gUGluVG9Ub3ApCisgICAgICAgIHBvc2l0aW9uLnNl
dFkobWluaW11bVNjcm9sbFBvc2l0aW9uKCkueSgpKTsKKworICAgIHJldHVybiBwb3NpdGlvbjsK
K30KKwordm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TOjpzY3JvbGxCeShj
b25zdCBJbnRTaXplJiBvZmZzZXQpCit7CisgICAgc2V0U2Nyb2xsUG9zaXRpb24oc2Nyb2xsUG9z
aXRpb24oKSArIG9mZnNldCk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZUlPUzo6c2Nyb2xsQnlXaXRob3V0Q29udGVudEVkZ2VDb25zdHJhaW50cyhjb25zdCBJbnRT
aXplJiBvZmZzZXQpCit7CisgICAgc2V0U2Nyb2xsUG9zaXRpb25XaXRob3V0Q29udGVudEVkZ2VD
b25zdHJhaW50cyhzY3JvbGxQb3NpdGlvbigpICsgb2Zmc2V0KTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZUlPUy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlSU9TLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMz
ZWU5NWEyMjNiMjJjZmNmNDNlMTE0NGZhZTNhMTk3YjU2NDAwNTkuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw4MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZUlPU19oCi0jZGVmaW5lIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TX2gKLQotI2lm
IEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCi0KLSNpbmNsdWRlICJTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZS5oIgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotT0JKQ19DTEFTUyBDQUxh
eWVyOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlSU9TIDogcHVibGljIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlIHsKLXB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc093blB0cjxTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZT4gY3JlYXRl
KFNjcm9sbGluZ1RyZWUmLCBTY3JvbGxpbmdOb2RlVHlwZSwgU2Nyb2xsaW5nTm9kZUlEKTsKLSAg
ICB2aXJ0dWFsIH5TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUygpOwotCi1wcm90ZWN0ZWQ6
Ci0gICAgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1MoU2Nyb2xsaW5nVHJlZSYsIFNjcm9s
bGluZ05vZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQpOwotCi0gICAgLy8gU2Nyb2xsaW5nVHJlZU5v
ZGUgbWVtYmVyIGZ1bmN0aW9ucy4KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQmVmb3JlQ2hpbGRy
ZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUFmdGVyQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50Jikgb3ZlcnJpZGUgeyB9Ci0KLSAgICBDQUxheWVyICpzY3JvbGxMYXllcigpIGNvbnN0IHsg
cmV0dXJuIG1fc2Nyb2xsTGF5ZXIuZ2V0KCk7IH0KLQotICAgIEZsb2F0UG9pbnQgc2Nyb2xsUG9z
aXRpb24oKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb24oY29uc3Qg
RmxvYXRQb2ludCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxQb3NpdGlv
bldpdGhvdXRDb250ZW50RWRnZUNvbnN0cmFpbnRzKGNvbnN0IEZsb2F0UG9pbnQmKSBvdmVycmlk
ZTsKLQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMYXllcnNBZnRlclZpZXdwb3J0Q2hhbmdlKGNv
bnN0IEZsb2F0UmVjdCYgdmlld3BvcnRSZWN0LCBkb3VibGUgc2NhbGUpOwotICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVMYXllcnNBZnRlckRlbGVnYXRlZFNjcm9sbChjb25zdCBGbG9hdFBvaW50Jikg
b3ZlcnJpZGU7Ci0KLSAgICB2b2lkIHNldFNjcm9sbExheWVyUG9zaXRpb24oY29uc3QgRmxvYXRQ
b2ludCYpOwotCi0gICAgRmxvYXRQb2ludCBtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdDsK
LSAgICBGbG9hdFBvaW50IG1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0OwotCi0gICAgdm9p
ZCBzY3JvbGxCeShjb25zdCBJbnRTaXplJik7Ci0gICAgdm9pZCBzY3JvbGxCeVdpdGhvdXRDb250
ZW50RWRnZUNvbnN0cmFpbnRzKGNvbnN0IEludFNpemUmKTsKLQotcHJpdmF0ZToKLSAgICB2b2lk
IHVwZGF0ZUNoaWxkTm9kZXNBZnRlclNjcm9sbChjb25zdCBGbG9hdFBvaW50Jik7Ci0KLSAgICBS
ZXRhaW5QdHI8Q0FMYXllcj4gbV9zY3JvbGxMYXllcjsKLSAgICBSZXRhaW5QdHI8Q0FMYXllcj4g
bV9zY3JvbGxlZENvbnRlbnRzTGF5ZXI7Ci0gICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fY291bnRl
clNjcm9sbGluZ0xheWVyOwotICAgIFJldGFpblB0cjxDQUxheWVyPiBtX2hlYWRlckxheWVyOwot
ICAgIFJldGFpblB0cjxDQUxheWVyPiBtX2Zvb3RlckxheWVyOwotICAgIEZsb2F0UG9pbnQgbV9w
cm9iYWJsZU1haW5UaHJlYWRTY3JvbGxQb3NpdGlvbjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCi0KLSNlbmRpZiAvLyBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPU19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1MubW0gYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVJT1MubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2ZWFkYzYxNGMzYmZhNzUz
NTE5MWE0N2RjMDE4OTJhMWEyZmRjOTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlSU9TLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMjI4ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlSU9TLmgiCi0KLSNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQotCi0jaW1w
b3J0ICJGcmFtZVZpZXcuaCIKLSNpbXBvcnQgIlNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgiCi0jaW1w
b3J0ICJTY3JvbGxpbmdUcmVlLmgiCi0jaW1wb3J0ICJTY3JvbGxpbmdTdGF0ZVRyZWUuaCIKLSNp
bXBvcnQgIlNldHRpbmdzLmgiCi0jaW1wb3J0ICJUaWxlQ29udHJvbGxlci5oIgotI2ltcG9ydCAi
V2ViTGF5ZXIuaCIKLQotI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotUGFzc093blB0cjxTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZT4g
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1M6OmNyZWF0ZShTY3JvbGxpbmdUcmVlJiBzY3Jv
bGxpbmdUcmVlLCBTY3JvbGxpbmdOb2RlVHlwZSBub2RlVHlwZSwgU2Nyb2xsaW5nTm9kZUlEIG5v
ZGVJRCkKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlSU9TKHNjcm9sbGluZ1RyZWUsIG5vZGVUeXBlLCBub2RlSUQpKTsKLX0KLQotU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVJT1M6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TKFNjcm9s
bGluZ1RyZWUmIHNjcm9sbGluZ1RyZWUsIFNjcm9sbGluZ05vZGVUeXBlIG5vZGVUeXBlLCBTY3Jv
bGxpbmdOb2RlSUQgbm9kZUlEKQotICAgIDogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUoc2Ny
b2xsaW5nVHJlZSwgbm9kZVR5cGUsIG5vZGVJRCkKLXsKLX0KLQotU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVJT1M6On5TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUygpCi17Ci19Ci0KLXZv
aWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1M6OnVwZGF0ZUJlZm9yZUNoaWxkcmVuKGNv
bnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYgc3RhdGVOb2RlKQotewotICAgIFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlOjp1cGRhdGVCZWZvcmVDaGlsZHJlbihzdGF0ZU5vZGUpOwotICAgIGNvbnN0
IGF1dG8mIHNjcm9sbGluZ1N0YXRlTm9kZSA9IHRvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2Rl
KHN0YXRlTm9kZSk7Ci0KLSAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9w
ZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlNjcm9sbExheWVyKSkKLSAgICAgICAgbV9zY3JvbGxM
YXllciA9IHNjcm9sbGluZ1N0YXRlTm9kZS5sYXllcigpOwotCi0gICAgaWYgKHNjcm9sbGluZ1N0
YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpT
Y3JvbGxlZENvbnRlbnRzTGF5ZXIpKQotICAgICAgICBtX3Njcm9sbGVkQ29udGVudHNMYXllciA9
IHNjcm9sbGluZ1N0YXRlTm9kZS5zY3JvbGxlZENvbnRlbnRzTGF5ZXIoKTsKLQotICAgIGlmIChz
Y3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZTo6Q291bnRlclNjcm9sbGluZ0xheWVyKSkKLSAgICAgICAgbV9jb3VudGVyU2Nyb2xs
aW5nTGF5ZXIgPSBzY3JvbGxpbmdTdGF0ZU5vZGUuY291bnRlclNjcm9sbGluZ0xheWVyKCk7Ci0K
LSAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdT
dGF0ZVNjcm9sbGluZ05vZGU6OkhlYWRlckxheWVyKSkKLSAgICAgICAgbV9oZWFkZXJMYXllciA9
IHNjcm9sbGluZ1N0YXRlTm9kZS5oZWFkZXJMYXllcigpOwotCi0gICAgaWYgKHNjcm9sbGluZ1N0
YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpG
b290ZXJMYXllcikpCi0gICAgICAgIG1fZm9vdGVyTGF5ZXIgPSBzY3JvbGxpbmdTdGF0ZU5vZGUu
Zm9vdGVyTGF5ZXIoKTsKLQotICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFBy
b3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6UmVhc29uc0ZvclN5bmNocm9ub3Vz
U2Nyb2xsaW5nKSkgewotICAgICAgICBpZiAoc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlv
blN5bmNocm9ub3VzbHkoKSkgewotICAgICAgICAgICAgLy8gV2UncmUgdHJhbnNpdGlvbmluZyB0
byB0aGUgc2xvdyAidXBkYXRlIHNjcm9sbCBsYXllciBwb3NpdGlvbiBvbiB0aGUgbWFpbiB0aHJl
YWQiIG1vZGUuCi0gICAgICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBwcm9iYWJsZSBtYWluIHRo
cmVhZCBzY3JvbGwgcG9zaXRpb24gd2l0aCB0aGUgY3VycmVudCBzY3JvbGwgbGF5ZXIgcG9zaXRp
b24uCi0gICAgICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKSkK
LSAgICAgICAgICAgICAgICBtX3Byb2JhYmxlTWFpblRocmVhZFNjcm9sbFBvc2l0aW9uID0gc2Ny
b2xsaW5nU3RhdGVOb2RlLnJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKCk7Ci0gICAgICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgICAgICBDR1BvaW50IHNjcm9sbExheWVyUG9zaXRpb24gPSBtX3Nj
cm9sbExheWVyLmdldCgpLnBvc2l0aW9uOwotICAgICAgICAgICAgICAgIG1fcHJvYmFibGVNYWlu
VGhyZWFkU2Nyb2xsUG9zaXRpb24gPSBJbnRQb2ludCgtc2Nyb2xsTGF5ZXJQb3NpdGlvbi54LCAt
c2Nyb2xsTGF5ZXJQb3NpdGlvbi55KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0K
LX0KLQotdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUzo6dXBkYXRlQWZ0ZXJDaGls
ZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmIHN0YXRlTm9kZSkKLXsKLSAgICBTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZTo6dXBkYXRlQWZ0ZXJDaGlsZHJlbihzdGF0ZU5vZGUpOwotCi0g
ICAgY29uc3QgYXV0byYgc2Nyb2xsaW5nU3RhdGVOb2RlID0gdG9TY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGUoc3RhdGVOb2RlKTsKLQotICAgIC8vIFVwZGF0ZSB0aGUgc2Nyb2xsIHBvc2l0aW9u
IGFmdGVyIGNoaWxkIG5vZGVzIGhhdmUgYmVlbiB1cGRhdGVkLCBiZWNhdXNlIHRoZXkgbmVlZCB0
byBoYXZlIHVwZGF0ZWQgdGhlaXIgY29uc3RyYWludHMgYmVmb3JlIGFueSBzY3JvbGxpbmcgaGFw
cGVucy4KLSAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKSkKLSAgICAg
ICAgc2V0U2Nyb2xsUG9zaXRpb24oc2Nyb2xsaW5nU3RhdGVOb2RlLnJlcXVlc3RlZFNjcm9sbFBv
c2l0aW9uKCkpOwotfQotCi1GbG9hdFBvaW50IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9T
OjpzY3JvbGxQb3NpdGlvbigpIGNvbnN0Ci17Ci0gICAgaWYgKHNob3VsZFVwZGF0ZVNjcm9sbExh
eWVyUG9zaXRpb25TeW5jaHJvbm91c2x5KCkpCi0gICAgICAgIHJldHVybiBtX3Byb2JhYmxlTWFp
blRocmVhZFNjcm9sbFBvc2l0aW9uOwotCi0gICAgQ0dQb2ludCBzY3JvbGxMYXllclBvc2l0aW9u
ID0gbV9zY3JvbGxMYXllci5nZXQoKS5wb3NpdGlvbjsKLSAgICByZXR1cm4gSW50UG9pbnQoLXNj
cm9sbExheWVyUG9zaXRpb24ueCArIHNjcm9sbE9yaWdpbigpLngoKSwgLXNjcm9sbExheWVyUG9z
aXRpb24ueSArIHNjcm9sbE9yaWdpbigpLnkoKSk7Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVJT1M6OnNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9s
bFBvc2l0aW9uKQotewotICAgIEZsb2F0UG9pbnQgbmV3U2Nyb2xsUG9zaXRpb24gPSBzY3JvbGxQ
b3NpdGlvbjsKLSAgICBuZXdTY3JvbGxQb3NpdGlvbiA9IG5ld1Njcm9sbFBvc2l0aW9uLnNocnVu
a1RvKG1heGltdW1TY3JvbGxQb3NpdGlvbigpKTsKLSAgICBuZXdTY3JvbGxQb3NpdGlvbiA9IG5l
d1Njcm9sbFBvc2l0aW9uLmV4cGFuZGVkVG8obWluaW11bVNjcm9sbFBvc2l0aW9uKCkpOwotCi0g
ICAgc2V0U2Nyb2xsUG9zaXRpb25XaXRob3V0Q29udGVudEVkZ2VDb25zdHJhaW50cyhuZXdTY3Jv
bGxQb3NpdGlvbik7Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1M6OnNl
dFNjcm9sbFBvc2l0aW9uV2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMoY29uc3QgRmxvYXRQ
b2ludCYgc2Nyb2xsUG9zaXRpb24pCi17Ci0gICAgaWYgKHNob3VsZFVwZGF0ZVNjcm9sbExheWVy
UG9zaXRpb25TeW5jaHJvbm91c2x5KCkpIHsKLSAgICAgICAgbV9wcm9iYWJsZU1haW5UaHJlYWRT
Y3JvbGxQb3NpdGlvbiA9IHNjcm9sbFBvc2l0aW9uOwotICAgICAgICBzY3JvbGxpbmdUcmVlKCku
c2Nyb2xsaW5nVHJlZU5vZGVEaWRTY3JvbGwoc2Nyb2xsaW5nTm9kZUlEKCksIHNjcm9sbFBvc2l0
aW9uLCBTZXRTY3JvbGxpbmdMYXllclBvc2l0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIHNldFNjcm9sbExheWVyUG9zaXRpb24oc2Nyb2xsUG9zaXRpb24pOwotICAgIHNjcm9s
bGluZ1RyZWUoKS5zY3JvbGxpbmdUcmVlTm9kZURpZFNjcm9sbChzY3JvbGxpbmdOb2RlSUQoKSwg
c2Nyb2xsUG9zaXRpb24pOwotfQotCi12b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9T
OjpzZXRTY3JvbGxMYXllclBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9u
KQotewotICAgIEFTU0VSVCghc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvblN5bmNocm9u
b3VzbHkoKSk7Ci0gICAgW21fc2Nyb2xsTGF5ZXIgc2V0UG9zaXRpb246Q0dQb2ludE1ha2UoLXNj
cm9sbFBvc2l0aW9uLngoKSArIHNjcm9sbE9yaWdpbigpLngoKSwgLXNjcm9sbFBvc2l0aW9uLnko
KSArIHNjcm9sbE9yaWdpbigpLnkoKSldOwotCi0gICAgdXBkYXRlQ2hpbGROb2Rlc0FmdGVyU2Ny
b2xsKHNjcm9sbFBvc2l0aW9uKTsKLX0KLQotdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZUlPUzo6dXBkYXRlTGF5ZXJzQWZ0ZXJWaWV3cG9ydENoYW5nZShjb25zdCBGbG9hdFJlY3QmIHZp
ZXdwb3J0UmVjdCwgZG91YmxlIC8qc2NhbGUqLykKLXsKLSAgICBbbV9jb3VudGVyU2Nyb2xsaW5n
TGF5ZXIgc2V0UG9zaXRpb246dmlld3BvcnRSZWN0LmxvY2F0aW9uKCldOwotCi0gICAgaWYgKCFt
X2NoaWxkcmVuKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzaXplX3Qgc2l6ZSA9IG1fY2hpbGRy
ZW4tPnNpemUoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAg
ICAgbV9jaGlsZHJlbi0+YXQoaSktPnBhcmVudFNjcm9sbFBvc2l0aW9uRGlkQ2hhbmdlKHZpZXdw
b3J0UmVjdCwgRmxvYXRTaXplKCkpOwotfQotCi12b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlSU9TOjp1cGRhdGVMYXllcnNBZnRlckRlbGVnYXRlZFNjcm9sbChjb25zdCBGbG9hdFBvaW50
JiBzY3JvbGxQb3NpdGlvbikKLXsKLSAgICB1cGRhdGVDaGlsZE5vZGVzQWZ0ZXJTY3JvbGwoc2Ny
b2xsUG9zaXRpb24pOwotfQotCi12b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TOjp1
cGRhdGVDaGlsZE5vZGVzQWZ0ZXJTY3JvbGwoY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRp
b24pCi17Ci0gICAgU2Nyb2xsQmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzIGJlaGF2aW9yRm9yRml4
ZWQgPSBzY3JvbGxCZWhhdmlvckZvckZpeGVkRWxlbWVudHMoKTsKLSAgICBGbG9hdFBvaW50IHNj
cm9sbE9mZnNldCA9IHNjcm9sbFBvc2l0aW9uIC0gdG9JbnRTaXplKHNjcm9sbE9yaWdpbigpKTsK
LSAgICBGbG9hdFJlY3Qgdmlld3BvcnRSZWN0KEZsb2F0UG9pbnQoKSwgdmlld3BvcnRTaXplKCkp
OwotICAgIEZsb2F0U2l6ZSBzY3JvbGxPZmZzZXRGb3JGaXhlZENoaWxkcmVuID0gRnJhbWVWaWV3
OjpzY3JvbGxPZmZzZXRGb3JGaXhlZFBvc2l0aW9uKGVuY2xvc2luZ0xheW91dFJlY3Qodmlld3Bv
cnRSZWN0KSwgdG90YWxDb250ZW50c1NpemUoKSwgZmxvb3JlZEludFBvaW50KHNjcm9sbE9mZnNl
dCksIHNjcm9sbE9yaWdpbigpLCBmcmFtZVNjYWxlRmFjdG9yKCksIGZhbHNlLCBiZWhhdmlvckZv
ckZpeGVkLCBoZWFkZXJIZWlnaHQoKSwgZm9vdGVySGVpZ2h0KCkpOwotCi0gICAgW21fY291bnRl
clNjcm9sbGluZ0xheWVyIHNldFBvc2l0aW9uOkZsb2F0UG9pbnQoc2Nyb2xsT2Zmc2V0Rm9yRml4
ZWRDaGlsZHJlbildOwotCi0gICAgaWYgKG1faGVhZGVyTGF5ZXIgfHwgbV9mb290ZXJMYXllcikg
ewotICAgICAgICAvLyBHZW5lcmFsbHkgdGhlIGJhbm5lcnMgc2hvdWxkIGhhdmUgdGhlIHNhbWUg
aG9yaXpvbnRhbC1wb3NpdGlvbiBjb21wdXRhdGlvbiBhcyBhIGZpeGVkIGVsZW1lbnQuIEhvd2V2
ZXIsCi0gICAgICAgIC8vIHRoZSBiYW5uZXJzIGFyZSBub3QgYWZmZWN0ZWQgYnkgdGhlIGZyYW1l
U2NhbGVGYWN0b3IoKSwgc28gaWYgdGhlcmUgaXMgY3VycmVudGx5IGEgbm9uLTEgZnJhbWVTY2Fs
ZUZhY3RvcigpCi0gICAgICAgIC8vIHRoZW4gd2Ugc2hvdWxkIHJlY29tcHV0ZSBzY3JvbGxPZmZz
ZXRGb3JGaXhlZENoaWxkcmVuIGZvciB0aGUgYmFubmVyIHdpdGggYSBzY2FsZSBmYWN0b3Igb2Yg
MS4KLSAgICAgICAgZmxvYXQgaG9yaXpvbnRhbFNjcm9sbE9mZnNldEZvckJhbm5lciA9IHNjcm9s
bE9mZnNldEZvckZpeGVkQ2hpbGRyZW4ud2lkdGgoKTsKLSAgICAgICAgaWYgKGZyYW1lU2NhbGVG
YWN0b3IoKSAhPSAxKQotICAgICAgICAgICAgaG9yaXpvbnRhbFNjcm9sbE9mZnNldEZvckJhbm5l
ciA9IEZyYW1lVmlldzo6c2Nyb2xsT2Zmc2V0Rm9yRml4ZWRQb3NpdGlvbihlbmNsb3NpbmdMYXlv
dXRSZWN0KHZpZXdwb3J0UmVjdCksIHRvdGFsQ29udGVudHNTaXplKCksIGZsb29yZWRJbnRQb2lu
dChzY3JvbGxPZmZzZXQpLCBzY3JvbGxPcmlnaW4oKSwgMSwgZmFsc2UsIGJlaGF2aW9yRm9yRml4
ZWQsIGhlYWRlckhlaWdodCgpLCBmb290ZXJIZWlnaHQoKSkud2lkdGgoKTsKLQotICAgICAgICBp
ZiAobV9oZWFkZXJMYXllcikKLSAgICAgICAgICAgIFttX2hlYWRlckxheWVyIHNldFBvc2l0aW9u
OkZsb2F0UG9pbnQoaG9yaXpvbnRhbFNjcm9sbE9mZnNldEZvckJhbm5lciwgMCldOwotCi0gICAg
ICAgIGlmIChtX2Zvb3RlckxheWVyKQotICAgICAgICAgICAgW21fZm9vdGVyTGF5ZXIgc2V0UG9z
aXRpb246RmxvYXRQb2ludChob3Jpem9udGFsU2Nyb2xsT2Zmc2V0Rm9yQmFubmVyLCB0b3RhbENv
bnRlbnRzU2l6ZSgpLmhlaWdodCgpIC0gZm9vdGVySGVpZ2h0KCkpXTsKLSAgICB9Ci0gICAgCi0g
ICAgaWYgKCFtX2NoaWxkcmVuKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgdmlld3BvcnRS
ZWN0LnNldExvY2F0aW9uKHNjcm9sbE9mZnNldCk7Ci0gICAgCi0gICAgRmxvYXRSZWN0IHZpZXdw
b3J0Q29uc3RyYWluZWRPYmplY3RzUmVjdCA9IEZyYW1lVmlldzo6cmVjdEZvclZpZXdwb3J0Q29u
c3RyYWluZWRPYmplY3RzKGVuY2xvc2luZ0xheW91dFJlY3Qodmlld3BvcnRSZWN0KSwgdG90YWxD
b250ZW50c1NpemUoKSwgZnJhbWVTY2FsZUZhY3RvcigpLCBmYWxzZSwgYmVoYXZpb3JGb3JGaXhl
ZCk7Ci0gICAgCi0gICAgc2l6ZV90IHNpemUgPSBtX2NoaWxkcmVuLT5zaXplKCk7Ci0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIG1fY2hpbGRyZW4tPmF0KGkp
LT5wYXJlbnRTY3JvbGxQb3NpdGlvbkRpZENoYW5nZSh2aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0
c1JlY3QsIEZsb2F0U2l6ZSgpKTsKLX0KLQotRmxvYXRQb2ludCBTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZUlPUzo6bWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QKLXsKLSAgICBGbG9hdFBv
aW50IHBvc2l0aW9uOwotICAgIAotICAgIGlmIChzY3JvbGxpbmdUcmVlKCkucm9vdE5vZGUoKSA9
PSB0aGlzICYmIHNjcm9sbGluZ1RyZWUoKS5zY3JvbGxQaW5uaW5nQmVoYXZpb3IoKSA9PSBQaW5U
b0JvdHRvbSkKLSAgICAgICAgcG9zaXRpb24uc2V0WShtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKS55
KCkpOwotCi0gICAgcmV0dXJuIHBvc2l0aW9uOwotfQotCi1GbG9hdFBvaW50IFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlSU9TOjptYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdAotewotICAg
IEZsb2F0UG9pbnQgcG9zaXRpb24odG90YWxDb250ZW50c1NpemVGb3JSdWJiZXJCYW5kKCkud2lk
dGgoKSAtIHZpZXdwb3J0U2l6ZSgpLndpZHRoKCksCi0gICAgICAgIHRvdGFsQ29udGVudHNTaXpl
Rm9yUnViYmVyQmFuZCgpLmhlaWdodCgpIC0gdmlld3BvcnRTaXplKCkuaGVpZ2h0KCkpOwotCi0g
ICAgcG9zaXRpb24gPSBwb3NpdGlvbi5leHBhbmRlZFRvKEZsb2F0UG9pbnQoKSk7Ci0KLSAgICBp
ZiAoc2Nyb2xsaW5nVHJlZSgpLnJvb3ROb2RlKCkgPT0gdGhpcyAmJiBzY3JvbGxpbmdUcmVlKCku
c2Nyb2xsUGlubmluZ0JlaGF2aW9yKCkgPT0gUGluVG9Ub3ApCi0gICAgICAgIHBvc2l0aW9uLnNl
dFkobWluaW11bVNjcm9sbFBvc2l0aW9uKCkueSgpKTsKLQotICAgIHJldHVybiBwb3NpdGlvbjsK
LX0KLQotdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUzo6c2Nyb2xsQnkoY29uc3Qg
SW50U2l6ZSYgb2Zmc2V0KQotewotICAgIHNldFNjcm9sbFBvc2l0aW9uKHNjcm9sbFBvc2l0aW9u
KCkgKyBvZmZzZXQpOwotfQotCi12b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TOjpz
Y3JvbGxCeVdpdGhvdXRDb250ZW50RWRnZUNvbnN0cmFpbnRzKGNvbnN0IEludFNpemUmIG9mZnNl
dCkKLXsKLSAgICBzZXRTY3JvbGxQb3NpdGlvbldpdGhvdXRDb250ZW50RWRnZUNvbnN0cmFpbnRz
KHNjcm9sbFBvc2l0aW9uKCkgKyBvZmZzZXQpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFj
Lm1tCmluZGV4IDc0ZmUyMWFmZjYxNTgwNzI1YmMxM2E3OGZjZWI3OTc0MDI5MWY4ZmUuLmYwNmU4
M2QyNGU5YTkwOTBiYjUyMTI2NDY4YzVkODJhMTQ1NDM2YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JN
YWMubW0KQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlICJTY3JvbGxpbmdTdGF0ZVRyZWUuaCIK
ICNpbmNsdWRlICJTY3JvbGxpbmdUaHJlYWQuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdUcmVlRml4
ZWROb2RlLmgiCi0jaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWMuaCIKKyNp
bmNsdWRlICJTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLmgiCiAjaW5jbHVkZSAi
U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaCIKICNpbmNsdWRlICJUaHJlYWRlZFNjcm9sbGluZ1Ry
ZWUuaCIKICNpbmNsdWRlICJUaWxlZEJhY2tpbmcuaCIKQEAgLTE0OCw3ICsxNDgsNyBAQCBQYXNz
T3duUHRyPFNjcm9sbGluZ1RyZWVOb2RlPiBTY3JvbGxpbmdDb29yZGluYXRvck1hYzo6Y3JlYXRl
U2Nyb2xsaW5nVHJlZU5vZGUoUwogCiAgICAgc3dpdGNoIChub2RlVHlwZSkgewogICAgIGNhc2Ug
RnJhbWVTY3JvbGxpbmdOb2RlOgotICAgICAgICByZXR1cm4gU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVNYWM6OmNyZWF0ZSgqc2Nyb2xsaW5nVHJlZSgpLCBub2RlVHlwZSwgbm9kZUlEKTsKKyAg
ICAgICAgcmV0dXJuIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6OmNyZWF0ZSgq
c2Nyb2xsaW5nVHJlZSgpLCBub2RlSUQpOwogICAgIGNhc2UgT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5n
U3RhdGVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9tYWMvU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNWE0N2VhODJhYTY2Mjg4YzI1ZWNkMWRhNjE0MjE1MDU3NzZkNjMzYgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdTdGF0ZUZy
YW1lU2Nyb2xsaW5nTm9kZU1hYy5tbQpAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdO
b2RlLmgiCisKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCisjaW5jbHVkZSAiU2Nyb2xsYmFy
LmgiCisjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVNYWMuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdT
dGF0ZVRyZWUuaCIKKworI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFBMQVRGT1JNKE1B
QykKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAordm9pZCBTY3JvbGxpbmdTdGF0ZUZyYW1l
U2Nyb2xsaW5nTm9kZTo6c2V0U2Nyb2xsYmFyUGFpbnRlcnNGcm9tU2Nyb2xsYmFycyhTY3JvbGxi
YXIqIHZlcnRpY2FsU2Nyb2xsYmFyLCBTY3JvbGxiYXIqIGhvcml6b250YWxTY3JvbGxiYXIpCit7
CisgICAgU2Nyb2xsYmFyVGhlbWUqIHNjcm9sbGJhclRoZW1lID0gU2Nyb2xsYmFyVGhlbWU6OnRo
ZW1lKCk7CisgICAgaWYgKHNjcm9sbGJhclRoZW1lLT5pc01vY2tUaGVtZSgpKQorICAgICAgICBy
ZXR1cm47CisgICAgU2Nyb2xsYmFyVGhlbWVNYWMqIG1hY1RoZW1lID0gc3RhdGljX2Nhc3Q8U2Ny
b2xsYmFyVGhlbWVNYWMqPihzY3JvbGxiYXJUaGVtZSk7CisKKyAgICBTY3JvbGxiYXJQYWludGVy
IHZlcnRpY2FsUGFpbnRlciA9IHZlcnRpY2FsU2Nyb2xsYmFyICYmIHZlcnRpY2FsU2Nyb2xsYmFy
LT5zdXBwb3J0c1VwZGF0ZU9uU2Vjb25kYXJ5VGhyZWFkKCkKKyAgICAgICAgPyBtYWNUaGVtZS0+
cGFpbnRlckZvclNjcm9sbGJhcih2ZXJ0aWNhbFNjcm9sbGJhcikgOiAwOworICAgIFNjcm9sbGJh
clBhaW50ZXIgaG9yaXpvbnRhbFBhaW50ZXIgPSBob3Jpem9udGFsU2Nyb2xsYmFyICYmIGhvcml6
b250YWxTY3JvbGxiYXItPnN1cHBvcnRzVXBkYXRlT25TZWNvbmRhcnlUaHJlYWQoKQorICAgICAg
ICA/IG1hY1RoZW1lLT5wYWludGVyRm9yU2Nyb2xsYmFyKGhvcml6b250YWxTY3JvbGxiYXIpIDog
MDsKKworICAgIGlmIChtX3ZlcnRpY2FsU2Nyb2xsYmFyUGFpbnRlciA9PSB2ZXJ0aWNhbFBhaW50
ZXIgJiYgbV9ob3Jpem9udGFsU2Nyb2xsYmFyUGFpbnRlciA9PSBob3Jpem9udGFsUGFpbnRlcikK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV92ZXJ0aWNhbFNjcm9sbGJhclBhaW50ZXIgPSB2ZXJ0
aWNhbFBhaW50ZXI7CisgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyUGFpbnRlciA9IGhvcml6b250
YWxQYWludGVyOworCisgICAgc2V0UHJvcGVydHlDaGFuZ2VkKFBhaW50ZXJGb3JTY3JvbGxiYXIp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVNZTkNf
U0NST0xMSU5HKSAmJiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZU1hYy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2I1ZGI2M2MyMjQ3YThkNGMw
MjljMDEyODY2ZDllNGYzNWM0NjRmYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlTWFjLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGUuaCIKLQotI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKLSNpbmNsdWRl
ICJTY3JvbGxiYXIuaCIKLSNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZU1hYy5oIgotI2luY2x1ZGUg
IlNjcm9sbGluZ1N0YXRlVHJlZS5oIgotCi0jaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNl
dFNjcm9sbGJhclBhaW50ZXJzRnJvbVNjcm9sbGJhcnMoU2Nyb2xsYmFyKiB2ZXJ0aWNhbFNjcm9s
bGJhciwgU2Nyb2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFyKQotewotICAgIFNjcm9sbGJhclRo
ZW1lKiBzY3JvbGxiYXJUaGVtZSA9IFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpOwotICAgIGlmIChz
Y3JvbGxiYXJUaGVtZS0+aXNNb2NrVGhlbWUoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIFNjcm9s
bGJhclRoZW1lTWFjKiBtYWNUaGVtZSA9IHN0YXRpY19jYXN0PFNjcm9sbGJhclRoZW1lTWFjKj4o
c2Nyb2xsYmFyVGhlbWUpOwotCi0gICAgU2Nyb2xsYmFyUGFpbnRlciB2ZXJ0aWNhbFBhaW50ZXIg
PSB2ZXJ0aWNhbFNjcm9sbGJhciAmJiB2ZXJ0aWNhbFNjcm9sbGJhci0+c3VwcG9ydHNVcGRhdGVP
blNlY29uZGFyeVRocmVhZCgpCi0gICAgICAgID8gbWFjVGhlbWUtPnBhaW50ZXJGb3JTY3JvbGxi
YXIodmVydGljYWxTY3JvbGxiYXIpIDogMDsKLSAgICBTY3JvbGxiYXJQYWludGVyIGhvcml6b250
YWxQYWludGVyID0gaG9yaXpvbnRhbFNjcm9sbGJhciAmJiBob3Jpem9udGFsU2Nyb2xsYmFyLT5z
dXBwb3J0c1VwZGF0ZU9uU2Vjb25kYXJ5VGhyZWFkKCkKLSAgICAgICAgPyBtYWNUaGVtZS0+cGFp
bnRlckZvclNjcm9sbGJhcihob3Jpem9udGFsU2Nyb2xsYmFyKSA6IDA7Ci0KLSAgICBpZiAobV92
ZXJ0aWNhbFNjcm9sbGJhclBhaW50ZXIgPT0gdmVydGljYWxQYWludGVyICYmIG1faG9yaXpvbnRh
bFNjcm9sbGJhclBhaW50ZXIgPT0gaG9yaXpvbnRhbFBhaW50ZXIpCi0gICAgICAgIHJldHVybjsK
LQotICAgIG1fdmVydGljYWxTY3JvbGxiYXJQYWludGVyID0gdmVydGljYWxQYWludGVyOwotICAg
IG1faG9yaXpvbnRhbFNjcm9sbGJhclBhaW50ZXIgPSBob3Jpem9udGFsUGFpbnRlcjsKLQotICAg
IHNldFByb3BlcnR5Q2hhbmdlZChQYWludGVyRm9yU2Nyb2xsYmFyKTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMv
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkZmVhZjYz
NjNlMGY5MWJhZmQ4NzBlYTc4NzFmODMxODg3YmE2NDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZU1hYy5oCkBAIC0wLDAgKzEsMTA2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjX2gKKyNkZWZpbmUgU2Nyb2xsaW5nVHJlZUZyYW1l
U2Nyb2xsaW5nTm9kZU1hY19oCisKKyNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBQTEFU
Rk9STShNQUMpCisKKyNpbmNsdWRlICJTY3JvbGxFbGFzdGljaXR5Q29udHJvbGxlci5oIgorI2lu
Y2x1ZGUgIlNjcm9sbGJhclRoZW1lTWFjLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZUZyYW1l
U2Nyb2xsaW5nTm9kZS5oIgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFT
UyBDQUxheWVyOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVNYWMgOiBwdWJsaWMgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZSwgcHJpdmF0ZSBTY3JvbGxFbGFzdGljaXR5Q29udHJvbGxlckNsaWVudCB7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NPd25QdHI8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZT4g
Y3JlYXRlKFNjcm9sbGluZ1RyZWUmLCBTY3JvbGxpbmdOb2RlSUQpOworICAgIHZpcnR1YWwgflNj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMoKTsKKworcHJpdmF0ZToKKyAgICBTY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjKFNjcm9sbGluZ1RyZWUmLCBTY3JvbGxpbmdO
b2RlSUQpOworCisgICAgLy8gU2Nyb2xsaW5nVHJlZU5vZGUgbWVtYmVyIGZ1bmN0aW9ucy4KKyAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVO
b2RlJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFmdGVyQ2hpbGRyZW4oY29u
c3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGhhbmRs
ZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jikgb3ZlcnJpZGU7CisKKyAgICAv
LyBTY3JvbGxFbGFzdGljaXR5Q29udHJvbGxlciBtZW1iZXIgZnVuY3Rpb25zLgorICAgIHZpcnR1
YWwgYm9vbCBhbGxvd3NIb3Jpem9udGFsU3RyZXRjaGluZygpIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgYm9vbCBhbGxvd3NWZXJ0aWNhbFN0cmV0Y2hpbmcoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IEludFNpemUgc3RyZXRjaEFtb3VudCgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBwaW5u
ZWRJbkRpcmVjdGlvbihjb25zdCBGbG9hdFNpemUmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJv
b2wgY2FuU2Nyb2xsSG9yaXpvbnRhbGx5KCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGNh
blNjcm9sbFZlcnRpY2FsbHkoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUnVi
YmVyQmFuZEluRGlyZWN0aW9uKFNjcm9sbERpcmVjdGlvbikgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBJbnRQb2ludCBhYnNvbHV0ZVNjcm9sbFBvc2l0aW9uKCkgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIGltbWVkaWF0ZVNjcm9sbEJ5KGNvbnN0IEZsb2F0U2l6ZSYpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBpbW1lZGlhdGVTY3JvbGxCeVdpdGhvdXRDb250ZW50RWRnZUNvbnN0cmFp
bnRzKGNvbnN0IEZsb2F0U2l6ZSYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzdGFydFNu
YXBSdWJiZXJiYW5kVGltZXIoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcFNuYXBS
dWJiZXJiYW5kVGltZXIoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2Nyb2xs
UG9zaXRpb25Ub0JvdW5kc0lmTmVjZXNzYXJ5KCkgb3ZlcnJpZGU7CisKKyAgICBGbG9hdFBvaW50
IHNjcm9sbFBvc2l0aW9uKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbFBvc2l0
aW9uKGNvbnN0IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2Ny
b2xsUG9zaXRpb25XaXRob3V0Q29udGVudEVkZ2VDb25zdHJhaW50cyhjb25zdCBGbG9hdFBvaW50
Jikgb3ZlcnJpZGU7CisKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJWaWV3cG9y
dENoYW5nZShjb25zdCBGbG9hdFJlY3QmIHZpZXdwb3J0UmVjdCwgZG91YmxlIHNjYWxlKSBvdmVy
cmlkZTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxMYXllclBvc2l0aW9uKGNvbnN0IEZs
b2F0UG9pbnQmKSBvdmVycmlkZTsKKworICAgIHZpcnR1YWwgRmxvYXRQb2ludCBtaW5pbXVtU2Ny
b2xsUG9zaXRpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIEZsb2F0UG9pbnQgbWF4
aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHNjcm9sbEJ5
KGNvbnN0IEludFNpemUmKTsKKyAgICB2b2lkIHNjcm9sbEJ5V2l0aG91dENvbnRlbnRFZGdlQ29u
c3RyYWludHMoY29uc3QgSW50U2l6ZSYpOworCisgICAgdm9pZCB1cGRhdGVNYWluRnJhbWVQaW5T
dGF0ZShjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbik7CisKKyAgICB2b2lkIGxvZ0V4
cG9zZWRVbmZpbGxlZEFyZWEoKTsKKworICAgIFNjcm9sbEVsYXN0aWNpdHlDb250cm9sbGVyIG1f
c2Nyb2xsRWxhc3RpY2l0eUNvbnRyb2xsZXI7CisgICAgUmV0YWluUHRyPENGUnVuTG9vcFRpbWVy
UmVmPiBtX3NuYXBSdWJiZXJiYW5kVGltZXI7CisKKyAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9z
Y3JvbGxMYXllcjsKKyAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9zY3JvbGxlZENvbnRlbnRzTGF5
ZXI7CisgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fY291bnRlclNjcm9sbGluZ0xheWVyOworICAg
IFJldGFpblB0cjxDQUxheWVyPiBtX2luc2V0Q2xpcExheWVyOworICAgIFJldGFpblB0cjxDQUxh
eWVyPiBtX2NvbnRlbnRTaGFkb3dMYXllcjsKKyAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9oZWFk
ZXJMYXllcjsKKyAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9mb290ZXJMYXllcjsKKyAgICBSZXRh
aW5QdHI8U2Nyb2xsYmFyUGFpbnRlcj4gbV92ZXJ0aWNhbFNjcm9sbGJhclBhaW50ZXI7CisgICAg
UmV0YWluUHRyPFNjcm9sbGJhclBhaW50ZXI+IG1faG9yaXpvbnRhbFNjcm9sbGJhclBhaW50ZXI7
CisgICAgRmxvYXRQb2ludCBtX3Byb2JhYmxlTWFpblRocmVhZFNjcm9sbFBvc2l0aW9uOworICAg
IGJvb2wgbV9sYXN0U2Nyb2xsSGFkVW5maWxsZWRQaXhlbHM7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBQTEFURk9S
TShNQUMpCisKKyNlbmRpZiAvLyBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZTI5MDFjZjNjM2RmZWFhYjA4N2JmODBkMDljM2M0YTIwZTM0MWZiYwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlTWFjLm1tCkBAIC0wLDAgKzEsNTI4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlTWFjLmgiCisKKyNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBQTEFURk9STShNQUMp
CisKKyNpbXBvcnQgIkZyYW1lVmlldy5oIgorI2ltcG9ydCAiTlNTY3JvbGxlckltcERldGFpbHMu
aCIKKyNpbXBvcnQgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgorI2ltcG9ydCAiU2Nyb2xsaW5nQ29v
cmRpbmF0b3IuaCIKKyNpbXBvcnQgIlNjcm9sbGluZ1RyZWUuaCIKKyNpbXBvcnQgIlNjcm9sbGlu
Z1N0YXRlVHJlZS5oIgorI2ltcG9ydCAiU2V0dGluZ3MuaCIKKyNpbXBvcnQgIlRpbGVDb250cm9s
bGVyLmgiCisjaW1wb3J0ICJXZWJMYXllci5oIgorCisjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0
ekNvcmUuaD4KKyNpbXBvcnQgPHd0Zi9DdXJyZW50VGltZS5oPgorI2ltcG9ydCA8d3RmL0RlcXVl
Lmg+CisjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW1wb3J0IDx3dGYvdGV4
dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIHZvaWQgbG9nVGhy
ZWFkZWRTY3JvbGxpbmdNb2RlKHVuc2lnbmVkIHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyk7
CitzdGF0aWMgdm9pZCBsb2dXaGVlbEV2ZW50SGFuZGxlckNvdW50Q2hhbmdlZCh1bnNpZ25lZCk7
CisKKworUGFzc093blB0cjxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPiBTY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjpjcmVhdGUoU2Nyb2xsaW5nVHJlZSYgc2Nyb2xs
aW5nVHJlZSwgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMoc2Nyb2xsaW5nVHJlZSwgbm9k
ZUlEKSk7Cit9CisKK1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6OlNjcm9sbGlu
Z1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMoU2Nyb2xsaW5nVHJlZSYgc2Nyb2xsaW5nVHJlZSwg
U2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKKyAgICA6IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGUoc2Nyb2xsaW5nVHJlZSwgbm9kZUlEKQorICAgICwgbV9zY3JvbGxFbGFzdGljaXR5Q29u
dHJvbGxlcih0aGlzKQorICAgICwgbV92ZXJ0aWNhbFNjcm9sbGJhclBhaW50ZXIoMCkKKyAgICAs
IG1faG9yaXpvbnRhbFNjcm9sbGJhclBhaW50ZXIoMCkKKyAgICAsIG1fbGFzdFNjcm9sbEhhZFVu
ZmlsbGVkUGl4ZWxzKGZhbHNlKQoreworfQorCitTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlTWFjOjp+U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYygpCit7CisgICAgaWYg
KG1fc25hcFJ1YmJlcmJhbmRUaW1lcikKKyAgICAgICAgQ0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRl
KG1fc25hcFJ1YmJlcmJhbmRUaW1lci5nZXQoKSk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZU1hYzo6dXBkYXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5n
U3RhdGVOb2RlJiBzdGF0ZU5vZGUpCit7CisgICAgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZTo6dXBkYXRlQmVmb3JlQ2hpbGRyZW4oc3RhdGVOb2RlKTsKKyAgICBjb25zdCBhdXRvJiBz
Y3JvbGxpbmdTdGF0ZU5vZGUgPSB0b1Njcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlKHN0
YXRlTm9kZSk7CisKKyAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlNjcm9sbExheWVyKSkKKyAgICAgICAgbV9zY3JvbGxMYXll
ciA9IHNjcm9sbGluZ1N0YXRlTm9kZS5sYXllcigpOworICAgIAorICAgIGlmIChzY3JvbGxpbmdT
dGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdO
b2RlOjpDb3VudGVyU2Nyb2xsaW5nTGF5ZXIpKQorICAgICAgICBtX2NvdW50ZXJTY3JvbGxpbmdM
YXllciA9IHNjcm9sbGluZ1N0YXRlTm9kZS5jb3VudGVyU2Nyb2xsaW5nTGF5ZXIoKTsKKworICAg
IGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRl
RnJhbWVTY3JvbGxpbmdOb2RlOjpJbnNldENsaXBMYXllcikpCisgICAgICAgIG1faW5zZXRDbGlw
TGF5ZXIgPSBzY3JvbGxpbmdTdGF0ZU5vZGUuaW5zZXRDbGlwTGF5ZXIoKTsKKworICAgIGlmIChz
Y3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVT
Y3JvbGxpbmdOb2RlOjpDb250ZW50U2hhZG93TGF5ZXIpKQorICAgICAgICBtX2NvbnRlbnRTaGFk
b3dMYXllciA9IHNjcm9sbGluZ1N0YXRlTm9kZS5jb250ZW50U2hhZG93TGF5ZXIoKTsKKworICAg
IGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRl
RnJhbWVTY3JvbGxpbmdOb2RlOjpIZWFkZXJMYXllcikpCisgICAgICAgIG1faGVhZGVyTGF5ZXIg
PSBzY3JvbGxpbmdTdGF0ZU5vZGUuaGVhZGVyTGF5ZXIoKTsKKworICAgIGlmIChzY3JvbGxpbmdT
dGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdO
b2RlOjpGb290ZXJMYXllcikpCisgICAgICAgIG1fZm9vdGVyTGF5ZXIgPSBzY3JvbGxpbmdTdGF0
ZU5vZGUuZm9vdGVyTGF5ZXIoKTsKKworICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hh
bmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpQYWludGVyRm9y
U2Nyb2xsYmFyKSkgeworICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyUGFpbnRlciA9IHNjcm9s
bGluZ1N0YXRlTm9kZS52ZXJ0aWNhbFNjcm9sbGJhclBhaW50ZXIoKTsKKyAgICAgICAgbV9ob3Jp
em9udGFsU2Nyb2xsYmFyUGFpbnRlciA9IHNjcm9sbGluZ1N0YXRlTm9kZS5ob3Jpem9udGFsU2Ny
b2xsYmFyUGFpbnRlcigpOworICAgIH0KKworICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFz
Q2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpSZWFzb25z
Rm9yU3luY2hyb25vdXNTY3JvbGxpbmcpKSB7CisgICAgICAgIGlmIChzaG91bGRVcGRhdGVTY3Jv
bGxMYXllclBvc2l0aW9uU3luY2hyb25vdXNseSgpKSB7CisgICAgICAgICAgICAvLyBXZSdyZSB0
cmFuc2l0aW9uaW5nIHRvIHRoZSBzbG93ICJ1cGRhdGUgc2Nyb2xsIGxheWVyIHBvc2l0aW9uIG9u
IHRoZSBtYWluIHRocmVhZCIgbW9kZS4KKyAgICAgICAgICAgIC8vIEluaXRpYWxpemUgdGhlIHBy
b2JhYmxlIG1haW4gdGhyZWFkIHNjcm9sbCBwb3NpdGlvbiB3aXRoIHRoZSBjdXJyZW50IHNjcm9s
bCBsYXllciBwb3NpdGlvbi4KKyAgICAgICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFz
Q2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6UmVxdWVzdGVkU2Ny
b2xsUG9zaXRpb24pKQorICAgICAgICAgICAgICAgIG1fcHJvYmFibGVNYWluVGhyZWFkU2Nyb2xs
UG9zaXRpb24gPSBzY3JvbGxpbmdTdGF0ZU5vZGUucmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24oKTsK
KyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIENHUG9pbnQgc2Nyb2xsTGF5ZXJQ
b3NpdGlvbiA9IG1fc2Nyb2xsTGF5ZXIuZ2V0KCkucG9zaXRpb247CisgICAgICAgICAgICAgICAg
bV9wcm9iYWJsZU1haW5UaHJlYWRTY3JvbGxQb3NpdGlvbiA9IEludFBvaW50KC1zY3JvbGxMYXll
clBvc2l0aW9uLngsIC1zY3JvbGxMYXllclBvc2l0aW9uLnkpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgaWYgKHNjcm9sbGluZ1RyZWUoKS5zY3JvbGxpbmdQZXJmb3JtYW5j
ZUxvZ2dpbmdFbmFibGVkKCkpCisgICAgICAgICAgICBsb2dUaHJlYWRlZFNjcm9sbGluZ01vZGUo
c3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKCkpOworICAgIH0KKworICAgIGlmIChzY3JvbGxp
bmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxp
bmdOb2RlOjpXaGVlbEV2ZW50SGFuZGxlckNvdW50KSkgeworICAgICAgICBpZiAoc2Nyb2xsaW5n
VHJlZSgpLnNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoKSkKKyAgICAgICAgICAg
IGxvZ1doZWVsRXZlbnRIYW5kbGVyQ291bnRDaGFuZ2VkKHNjcm9sbGluZ1N0YXRlTm9kZS53aGVl
bEV2ZW50SGFuZGxlckNvdW50KCkpOworICAgIH0KK30KKwordm9pZCBTY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlTWFjOjp1cGRhdGVBZnRlckNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0
YXRlTm9kZSYgc3RhdGVOb2RlKQoreworICAgIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGU6OnVwZGF0ZUFmdGVyQ2hpbGRyZW4oc3RhdGVOb2RlKTsKKworICAgIGNvbnN0IGF1dG8mIHNj
cm9sbGluZ1N0YXRlTm9kZSA9IHRvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlKHN0YXRlTm9k
ZSk7CisKKyAgICAvLyBVcGRhdGUgdGhlIHNjcm9sbCBwb3NpdGlvbiBhZnRlciBjaGlsZCBub2Rl
cyBoYXZlIGJlZW4gdXBkYXRlZCwgYmVjYXVzZSB0aGV5IG5lZWQgdG8gaGF2ZSB1cGRhdGVkIHRo
ZWlyIGNvbnN0cmFpbnRzIGJlZm9yZSBhbnkgc2Nyb2xsaW5nIGhhcHBlbnMuCisgICAgaWYgKHNj
cm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlOjpSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbikpCisgICAgICAgIHNldFNjcm9sbFBvc2l0
aW9uKHNjcm9sbGluZ1N0YXRlTm9kZS5yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbigpKTsKKworICAg
IGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRl
Tm9kZTo6U2Nyb2xsTGF5ZXIpCisgICAgICAgIHx8IHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFu
Z2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpUb3RhbENvbnRlbnRzU2l6
ZSkKKyAgICAgICAgfHwgc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGFibGVBcmVhU2l6ZSkpCisgICAgICAgIHVw
ZGF0ZU1haW5GcmFtZVBpblN0YXRlKHNjcm9sbFBvc2l0aW9uKCkpOworfQorCit2b2lkIFNjcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQoreworICAgIGlmICghY2FuSGF2ZVNjcm9sbGJh
cnMoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHdoZWVsRXZlbnQubW9tZW50dW1QaGFz
ZSgpID09IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlQmVnYW4pIHsKKyAgICAgICAgW21fdmVydGlj
YWxTY3JvbGxiYXJQYWludGVyIHNldFVzZVByZXNlbnRhdGlvblZhbHVlOllFU107CisgICAgICAg
IFttX2hvcml6b250YWxTY3JvbGxiYXJQYWludGVyIHNldFVzZVByZXNlbnRhdGlvblZhbHVlOllF
U107CisgICAgfQorICAgIGlmICh3aGVlbEV2ZW50Lm1vbWVudHVtUGhhc2UoKSA9PSBQbGF0Zm9y
bVdoZWVsRXZlbnRQaGFzZUVuZGVkIHx8IHdoZWVsRXZlbnQubW9tZW50dW1QaGFzZSgpID09IFBs
YXRmb3JtV2hlZWxFdmVudFBoYXNlQ2FuY2VsbGVkKSB7CisgICAgICAgIFttX3ZlcnRpY2FsU2Ny
b2xsYmFyUGFpbnRlciBzZXRVc2VQcmVzZW50YXRpb25WYWx1ZTpOT107CisgICAgICAgIFttX2hv
cml6b250YWxTY3JvbGxiYXJQYWludGVyIHNldFVzZVByZXNlbnRhdGlvblZhbHVlOk5PXTsKKyAg
ICB9CisKKyAgICBtX3Njcm9sbEVsYXN0aWNpdHlDb250cm9sbGVyLmhhbmRsZVdoZWVsRXZlbnQo
d2hlZWxFdmVudCk7CisgICAgc2Nyb2xsaW5nVHJlZSgpLnNldE9yQ2xlYXJMYXRjaGVkTm9kZSh3
aGVlbEV2ZW50LCBzY3JvbGxpbmdOb2RlSUQoKSk7CisgICAgc2Nyb2xsaW5nVHJlZSgpLmhhbmRs
ZVdoZWVsRXZlbnRQaGFzZSh3aGVlbEV2ZW50LnBoYXNlKCkpOworfQorCitib29sIFNjcm9sbGlu
Z1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nKCkK
K3sKKyAgICBzd2l0Y2ggKGhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KCkpIHsKKyAgICBjYXNl
IFNjcm9sbEVsYXN0aWNpdHlBdXRvbWF0aWM6CisgICAgICAgIHJldHVybiBoYXNFbmFibGVkSG9y
aXpvbnRhbFNjcm9sbGJhcigpIHx8ICFoYXNFbmFibGVkVmVydGljYWxTY3JvbGxiYXIoKTsKKyAg
ICBjYXNlIFNjcm9sbEVsYXN0aWNpdHlOb25lOgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
Y2FzZSBTY3JvbGxFbGFzdGljaXR5QWxsb3dlZDoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiti
b29sIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6OmFsbG93c1ZlcnRpY2FsU3Ry
ZXRjaGluZygpCit7CisgICAgc3dpdGNoICh2ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoKSkgewor
ICAgIGNhc2UgU2Nyb2xsRWxhc3RpY2l0eUF1dG9tYXRpYzoKKyAgICAgICAgcmV0dXJuIGhhc0Vu
YWJsZWRWZXJ0aWNhbFNjcm9sbGJhcigpIHx8ICFoYXNFbmFibGVkSG9yaXpvbnRhbFNjcm9sbGJh
cigpOworICAgIGNhc2UgU2Nyb2xsRWxhc3RpY2l0eU5vbmU6CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBjYXNlIFNjcm9sbEVsYXN0aWNpdHlBbGxvd2VkOgorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK0ludFNpemUgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6c3RyZXRj
aEFtb3VudCgpCit7CisgICAgSW50U2l6ZSBzdHJldGNoOworCisgICAgaWYgKHNjcm9sbFBvc2l0
aW9uKCkueSgpIDwgbWluaW11bVNjcm9sbFBvc2l0aW9uKCkueSgpKQorICAgICAgICBzdHJldGNo
LnNldEhlaWdodChzY3JvbGxQb3NpdGlvbigpLnkoKSAtIG1pbmltdW1TY3JvbGxQb3NpdGlvbigp
LnkoKSk7CisgICAgZWxzZSBpZiAoc2Nyb2xsUG9zaXRpb24oKS55KCkgPiBtYXhpbXVtU2Nyb2xs
UG9zaXRpb24oKS55KCkpCisgICAgICAgIHN0cmV0Y2guc2V0SGVpZ2h0KHNjcm9sbFBvc2l0aW9u
KCkueSgpIC0gbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkueSgpKTsKKworICAgIGlmIChzY3JvbGxQ
b3NpdGlvbigpLngoKSA8IG1pbmltdW1TY3JvbGxQb3NpdGlvbigpLngoKSkKKyAgICAgICAgc3Ry
ZXRjaC5zZXRXaWR0aChzY3JvbGxQb3NpdGlvbigpLngoKSAtIG1pbmltdW1TY3JvbGxQb3NpdGlv
bigpLngoKSk7CisgICAgZWxzZSBpZiAoc2Nyb2xsUG9zaXRpb24oKS54KCkgPiBtYXhpbXVtU2Ny
b2xsUG9zaXRpb24oKS54KCkpCisgICAgICAgIHN0cmV0Y2guc2V0V2lkdGgoc2Nyb2xsUG9zaXRp
b24oKS54KCkgLSBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKS54KCkpOworCisgICAgaWYgKHNjcm9s
bGluZ1RyZWUoKS5yb290Tm9kZSgpID09IHRoaXMpIHsKKyAgICAgICAgaWYgKHN0cmV0Y2guaXNa
ZXJvKCkpCisgICAgICAgICAgICBzY3JvbGxpbmdUcmVlKCkuc2V0TWFpbkZyYW1lSXNSdWJiZXJC
YW5kaW5nKGZhbHNlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2Nyb2xsaW5nVHJlZSgp
LnNldE1haW5GcmFtZUlzUnViYmVyQmFuZGluZyh0cnVlKTsKKyAgICB9CisKKyAgICByZXR1cm4g
c3RyZXRjaDsKK30KKworYm9vbCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjpw
aW5uZWRJbkRpcmVjdGlvbihjb25zdCBGbG9hdFNpemUmIGRlbHRhKQoreworICAgIEZsb2F0U2l6
ZSBsaW1pdERlbHRhOworCisgICAgaWYgKGZhYnNmKGRlbHRhLmhlaWdodCgpKSA+PSBmYWJzZihk
ZWx0YS53aWR0aCgpKSkgeworICAgICAgICBpZiAoZGVsdGEuaGVpZ2h0KCkgPCAwKSB7CisgICAg
ICAgICAgICAvLyBXZSBhcmUgdHJ5aW5nIHRvIHNjcm9sbCB1cC4gTWFrZSBzdXJlIHdlIGFyZSBu
b3QgcGlubmVkIHRvIHRoZSB0b3AuCisgICAgICAgICAgICBsaW1pdERlbHRhLnNldEhlaWdodChz
Y3JvbGxQb3NpdGlvbigpLnkoKSAtIG1pbmltdW1TY3JvbGxQb3NpdGlvbigpLnkoKSk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBXZSBhcmUgdHJ5aW5nIHRvIHNjcm9sbCBkb3du
LiBNYWtlIHN1cmUgd2UgYXJlIG5vdCBwaW5uZWQgdG8gdGhlIGJvdHRvbS4KKyAgICAgICAgICAg
IGxpbWl0RGVsdGEuc2V0SGVpZ2h0KG1heGltdW1TY3JvbGxQb3NpdGlvbigpLnkoKSAtIHNjcm9s
bFBvc2l0aW9uKCkueSgpKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoZGVsdGEud2lkdGgo
KSkgeworICAgICAgICBpZiAoZGVsdGEud2lkdGgoKSA8IDApIHsKKyAgICAgICAgICAgIC8vIFdl
IGFyZSB0cnlpbmcgdG8gc2Nyb2xsIGxlZnQuIE1ha2Ugc3VyZSB3ZSBhcmUgbm90IHBpbm5lZCB0
byB0aGUgbGVmdC4KKyAgICAgICAgICAgIGxpbWl0RGVsdGEuc2V0V2lkdGgoc2Nyb2xsUG9zaXRp
b24oKS54KCkgLSBtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKS54KCkpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgLy8gV2UgYXJlIHRyeWluZyB0byBzY3JvbGwgcmlnaHQuIE1ha2Ugc3Vy
ZSB3ZSBhcmUgbm90IHBpbm5lZCB0byB0aGUgcmlnaHQuCisgICAgICAgICAgICBsaW1pdERlbHRh
LnNldFdpZHRoKG1heGltdW1TY3JvbGxQb3NpdGlvbigpLngoKSAtIHNjcm9sbFBvc2l0aW9uKCku
eCgpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICgoZGVsdGEud2lkdGgoKSB8fCBkZWx0
YS5oZWlnaHQoKSkgJiYgKGxpbWl0RGVsdGEud2lkdGgoKSA8IDEgJiYgbGltaXREZWx0YS5oZWln
aHQoKSA8IDEpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30K
KworYm9vbCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjpjYW5TY3JvbGxIb3Jp
em9udGFsbHkoKQoreworICAgIHJldHVybiBoYXNFbmFibGVkSG9yaXpvbnRhbFNjcm9sbGJhcigp
OworfQorCitib29sIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6OmNhblNjcm9s
bFZlcnRpY2FsbHkoKQoreworICAgIHJldHVybiBoYXNFbmFibGVkVmVydGljYWxTY3JvbGxiYXIo
KTsKK30KKworYm9vbCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjpzaG91bGRS
dWJiZXJCYW5kSW5EaXJlY3Rpb24oU2Nyb2xsRGlyZWN0aW9uKQoreworICAgIHJldHVybiB0cnVl
OworfQorCitJbnRQb2ludCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjphYnNv
bHV0ZVNjcm9sbFBvc2l0aW9uKCkKK3sKKyAgICByZXR1cm4gcm91bmRlZEludFBvaW50KHNjcm9s
bFBvc2l0aW9uKCkpOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVN
YWM6OmltbWVkaWF0ZVNjcm9sbEJ5KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0KQoreworICAgIHNj
cm9sbEJ5KHJvdW5kZWRJbnRTaXplKG9mZnNldCkpOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVNYWM6OmltbWVkaWF0ZVNjcm9sbEJ5V2l0aG91dENvbnRlbnRFZGdl
Q29uc3RyYWludHMoY29uc3QgRmxvYXRTaXplJiBvZmZzZXQpCit7CisgICAgc2Nyb2xsQnlXaXRo
b3V0Q29udGVudEVkZ2VDb25zdHJhaW50cyhyb3VuZGVkSW50U2l6ZShvZmZzZXQpKTsKK30KKwor
dm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjpzdGFydFNuYXBSdWJiZXJi
YW5kVGltZXIoKQoreworICAgIEFTU0VSVCghbV9zbmFwUnViYmVyYmFuZFRpbWVyKTsKKworICAg
IENGVGltZUludGVydmFsIHRpbWVySW50ZXJ2YWwgPSAxLjAgLyA2MC4wOworCisgICAgbV9zbmFw
UnViYmVyYmFuZFRpbWVyID0gYWRvcHRDRihDRlJ1bkxvb3BUaW1lckNyZWF0ZVdpdGhIYW5kbGVy
KGtDRkFsbG9jYXRvckRlZmF1bHQsIENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpICsgdGltZXJJ
bnRlcnZhbCwgdGltZXJJbnRlcnZhbCwgMCwgMCwgXihDRlJ1bkxvb3BUaW1lclJlZikgeworICAg
ICAgICBtX3Njcm9sbEVsYXN0aWNpdHlDb250cm9sbGVyLnNuYXBSdWJiZXJCYW5kVGltZXJGaXJl
ZCgpOworICAgIH0pKTsKKyAgICBDRlJ1bkxvb3BBZGRUaW1lcihDRlJ1bkxvb3BHZXRDdXJyZW50
KCksIG1fc25hcFJ1YmJlcmJhbmRUaW1lci5nZXQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsK
K30KKwordm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjpzdG9wU25hcFJ1
YmJlcmJhbmRUaW1lcigpCit7CisgICAgaWYgKCFtX3NuYXBSdWJiZXJiYW5kVGltZXIpCisgICAg
ICAgIHJldHVybjsKKworICAgIHNjcm9sbGluZ1RyZWUoKS5zZXRNYWluRnJhbWVJc1J1YmJlckJh
bmRpbmcoZmFsc2UpOworCisgICAgLy8gU2luY2UgdGhlIHJ1YmJlcmJhbmQgdGltZXIgaGFzIHN0
b3BwZWQsIHRvdGFsQ29udGVudHNTaXplRm9yUnViYmVyQmFuZCBjYW4gYmUgc3luY2hyb25pemVk
IHdpdGggdG90YWxDb250ZW50c1NpemUuCisgICAgc2V0VG90YWxDb250ZW50c1NpemVGb3JSdWJi
ZXJCYW5kKHRvdGFsQ29udGVudHNTaXplKCkpOworCisgICAgQ0ZSdW5Mb29wVGltZXJJbnZhbGlk
YXRlKG1fc25hcFJ1YmJlcmJhbmRUaW1lci5nZXQoKSk7CisgICAgbV9zbmFwUnViYmVyYmFuZFRp
bWVyID0gbnVsbHB0cjsKK30KKwordm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
TWFjOjphZGp1c3RTY3JvbGxQb3NpdGlvblRvQm91bmRzSWZOZWNlc3NhcnkoKQoreworICAgIEZs
b2F0UG9pbnQgY3VycmVudFNjcm9sbFBvc2l0aW9uID0gYWJzb2x1dGVTY3JvbGxQb3NpdGlvbigp
OworICAgIEZsb2F0UG9pbnQgbWluUG9zaXRpb24gPSBtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKTsK
KyAgICBGbG9hdFBvaW50IG1heFBvc2l0aW9uID0gbWF4aW11bVNjcm9sbFBvc2l0aW9uKCk7CisK
KyAgICBmbG9hdCBuZWFyZXN0WFdpdGhpbkJvdW5kcyA9IHN0ZDo6bWF4KHN0ZDo6bWluKGN1cnJl
bnRTY3JvbGxQb3NpdGlvbi54KCksIG1heFBvc2l0aW9uLngoKSksIG1pblBvc2l0aW9uLngoKSk7
CisgICAgZmxvYXQgbmVhcmVzdFlXaXRoaW5Cb3VuZHMgPSBzdGQ6Om1heChzdGQ6Om1pbihjdXJy
ZW50U2Nyb2xsUG9zaXRpb24ueSgpLCBtYXhQb3NpdGlvbi55KCkpLCBtaW5Qb3NpdGlvbi55KCkp
OworCisgICAgRmxvYXRQb2ludCBuZWFyZXN0UG9pbnRXaXRoaW5Cb3VuZHMobmVhcmVzdFhXaXRo
aW5Cb3VuZHMsIG5lYXJlc3RZV2l0aGluQm91bmRzKTsKKyAgICBpbW1lZGlhdGVTY3JvbGxCeShu
ZWFyZXN0UG9pbnRXaXRoaW5Cb3VuZHMgLSBjdXJyZW50U2Nyb2xsUG9zaXRpb24pOworfQorCitG
bG9hdFBvaW50IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6OnNjcm9sbFBvc2l0
aW9uKCkgY29uc3QKK3sKKyAgICBpZiAoc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvblN5
bmNocm9ub3VzbHkoKSkKKyAgICAgICAgcmV0dXJuIG1fcHJvYmFibGVNYWluVGhyZWFkU2Nyb2xs
UG9zaXRpb247CisKKyAgICBDR1BvaW50IHNjcm9sbExheWVyUG9zaXRpb24gPSBtX3Njcm9sbExh
eWVyLmdldCgpLnBvc2l0aW9uOworICAgIHJldHVybiBJbnRQb2ludCgtc2Nyb2xsTGF5ZXJQb3Np
dGlvbi54ICsgc2Nyb2xsT3JpZ2luKCkueCgpLCAtc2Nyb2xsTGF5ZXJQb3NpdGlvbi55ICsgc2Ny
b2xsT3JpZ2luKCkueSgpKTsKK30KKwordm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlTWFjOjpzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlv
bikKK3sKKyAgICBGbG9hdFBvaW50IG5ld1Njcm9sbFBvc2l0aW9uID0gc2Nyb2xsUG9zaXRpb247
CisgICAgbmV3U2Nyb2xsUG9zaXRpb24gPSBuZXdTY3JvbGxQb3NpdGlvbi5zaHJ1bmtUbyhtYXhp
bXVtU2Nyb2xsUG9zaXRpb24oKSk7CisgICAgbmV3U2Nyb2xsUG9zaXRpb24gPSBuZXdTY3JvbGxQ
b3NpdGlvbi5leHBhbmRlZFRvKG1pbmltdW1TY3JvbGxQb3NpdGlvbigpKTsKKworICAgIHNldFNj
cm9sbFBvc2l0aW9uV2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMobmV3U2Nyb2xsUG9zaXRp
b24pOworCisgICAgaWYgKHNjcm9sbGluZ1RyZWUoKS5zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dp
bmdFbmFibGVkKCkpCisgICAgICAgIGxvZ0V4cG9zZWRVbmZpbGxlZEFyZWEoKTsKK30KKwordm9p
ZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjpzZXRTY3JvbGxQb3NpdGlvbldp
dGhvdXRDb250ZW50RWRnZUNvbnN0cmFpbnRzKGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0
aW9uKQoreworICAgIHVwZGF0ZU1haW5GcmFtZVBpblN0YXRlKHNjcm9sbFBvc2l0aW9uKTsKKwor
ICAgIGlmIChzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uU3luY2hyb25vdXNseSgpKSB7
CisgICAgICAgIG1fcHJvYmFibGVNYWluVGhyZWFkU2Nyb2xsUG9zaXRpb24gPSBzY3JvbGxQb3Np
dGlvbjsKKyAgICAgICAgc2Nyb2xsaW5nVHJlZSgpLnNjcm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xs
KHNjcm9sbGluZ05vZGVJRCgpLCBzY3JvbGxQb3NpdGlvbiwgU2V0U2Nyb2xsaW5nTGF5ZXJQb3Np
dGlvbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzZXRTY3JvbGxMYXllclBvc2l0
aW9uKHNjcm9sbFBvc2l0aW9uKTsKKyAgICBzY3JvbGxpbmdUcmVlKCkuc2Nyb2xsaW5nVHJlZU5v
ZGVEaWRTY3JvbGwoc2Nyb2xsaW5nTm9kZUlEKCksIHNjcm9sbFBvc2l0aW9uKTsKK30KKwordm9p
ZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjpzZXRTY3JvbGxMYXllclBvc2l0
aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKQoreworICAgIEFTU0VSVCghc2hvdWxkVXBk
YXRlU2Nyb2xsTGF5ZXJQb3NpdGlvblN5bmNocm9ub3VzbHkoKSk7CisgICAgbV9zY3JvbGxMYXll
ci5nZXQoKS5wb3NpdGlvbiA9IENHUG9pbnRNYWtlKC1wb3NpdGlvbi54KCkgKyBzY3JvbGxPcmln
aW4oKS54KCksIC1wb3NpdGlvbi55KCkgKyBzY3JvbGxPcmlnaW4oKS55KCkpOworCisgICAgU2Ny
b2xsQmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzIGJlaGF2aW9yRm9yRml4ZWQgPSBzY3JvbGxCZWhh
dmlvckZvckZpeGVkRWxlbWVudHMoKTsKKyAgICBGbG9hdFBvaW50IHNjcm9sbE9mZnNldCA9IHBv
c2l0aW9uIC0gdG9GbG9hdFNpemUoc2Nyb2xsT3JpZ2luKCkpOworICAgIEZsb2F0UmVjdCB2aWV3
cG9ydFJlY3QoRmxvYXRQb2ludCgpLCBzY3JvbGxhYmxlQXJlYVNpemUoKSk7CisgICAgCisgICAg
Ly8gRklYTUU6IHNjcm9sbE9mZnNldEZvckZpeGVkUG9zaXRpb24oKSBuZWVkcyB0byBkbyBmbG9h
dCBtYXRoLgorICAgIEZsb2F0U2l6ZSBzY3JvbGxPZmZzZXRGb3JGaXhlZENoaWxkcmVuID0gRnJh
bWVWaWV3OjpzY3JvbGxPZmZzZXRGb3JGaXhlZFBvc2l0aW9uKGVuY2xvc2luZ0xheW91dFJlY3Qo
dmlld3BvcnRSZWN0KSwKKyAgICAgICAgcm91bmRlZExheW91dFNpemUodG90YWxDb250ZW50c1Np
emUoKSksIHJvdW5kZWRMYXlvdXRQb2ludChzY3JvbGxPZmZzZXQpLCBzY3JvbGxPcmlnaW4oKSwg
ZnJhbWVTY2FsZUZhY3RvcigpLCBmYWxzZSwgYmVoYXZpb3JGb3JGaXhlZCwgaGVhZGVySGVpZ2h0
KCksIGZvb3RlckhlaWdodCgpKTsKKyAgICAKKyAgICBpZiAobV9jb3VudGVyU2Nyb2xsaW5nTGF5
ZXIpCisgICAgICAgIG1fY291bnRlclNjcm9sbGluZ0xheWVyLmdldCgpLnBvc2l0aW9uID0gRmxv
YXRQb2ludChzY3JvbGxPZmZzZXRGb3JGaXhlZENoaWxkcmVuKTsKKworICAgIGZsb2F0IHRvcENv
bnRlbnRJbnNldCA9IHRoaXMtPnRvcENvbnRlbnRJbnNldCgpOworICAgIGlmIChtX2luc2V0Q2xp
cExheWVyICYmIG1fc2Nyb2xsZWRDb250ZW50c0xheWVyICYmIHRvcENvbnRlbnRJbnNldCkgewor
ICAgICAgICBtX2luc2V0Q2xpcExheWVyLmdldCgpLnBvc2l0aW9uID0gRmxvYXRQb2ludCgwLCBG
cmFtZVZpZXc6OnlQb3NpdGlvbkZvckluc2V0Q2xpcExheWVyKHBvc2l0aW9uLCB0b3BDb250ZW50
SW5zZXQpKTsKKyAgICAgICAgbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXIuZ2V0KCkucG9zaXRpb24g
PSBGbG9hdFBvaW50KG1fc2Nyb2xsZWRDb250ZW50c0xheWVyLmdldCgpLnBvc2l0aW9uLngsCisg
ICAgICAgICAgICBGcmFtZVZpZXc6OnlQb3NpdGlvbkZvclJvb3RDb250ZW50TGF5ZXIocG9zaXRp
b24sIHRvcENvbnRlbnRJbnNldCwgaGVhZGVySGVpZ2h0KCkpKTsKKyAgICAgICAgaWYgKG1fY29u
dGVudFNoYWRvd0xheWVyKQorICAgICAgICAgICAgbV9jb250ZW50U2hhZG93TGF5ZXIuZ2V0KCku
cG9zaXRpb24gPSBtX3Njcm9sbGVkQ29udGVudHNMYXllci5nZXQoKS5wb3NpdGlvbjsKKyAgICB9
CisKKyAgICBpZiAobV9oZWFkZXJMYXllciB8fCBtX2Zvb3RlckxheWVyKSB7CisgICAgICAgIC8v
IEdlbmVyYWxseSB0aGUgYmFubmVycyBzaG91bGQgaGF2ZSB0aGUgc2FtZSBob3Jpem9udGFsLXBv
c2l0aW9uIGNvbXB1dGF0aW9uIGFzIGEgZml4ZWQgZWxlbWVudC4gSG93ZXZlciwKKyAgICAgICAg
Ly8gdGhlIGJhbm5lcnMgYXJlIG5vdCBhZmZlY3RlZCBieSB0aGUgZnJhbWVTY2FsZUZhY3Rvcigp
LCBzbyBpZiB0aGVyZSBpcyBjdXJyZW50bHkgYSBub24tMSBmcmFtZVNjYWxlRmFjdG9yKCkKKyAg
ICAgICAgLy8gdGhlbiB3ZSBzaG91bGQgcmVjb21wdXRlIHNjcm9sbE9mZnNldEZvckZpeGVkQ2hp
bGRyZW4gZm9yIHRoZSBiYW5uZXIgd2l0aCBhIHNjYWxlIGZhY3RvciBvZiAxLgorICAgICAgICBm
bG9hdCBob3Jpem9udGFsU2Nyb2xsT2Zmc2V0Rm9yQmFubmVyID0gc2Nyb2xsT2Zmc2V0Rm9yRml4
ZWRDaGlsZHJlbi53aWR0aCgpOworICAgICAgICBpZiAoZnJhbWVTY2FsZUZhY3RvcigpICE9IDEp
CisgICAgICAgICAgICBob3Jpem9udGFsU2Nyb2xsT2Zmc2V0Rm9yQmFubmVyID0gRnJhbWVWaWV3
OjpzY3JvbGxPZmZzZXRGb3JGaXhlZFBvc2l0aW9uKGVuY2xvc2luZ0xheW91dFJlY3Qodmlld3Bv
cnRSZWN0KSwgcm91bmRlZExheW91dFNpemUodG90YWxDb250ZW50c1NpemUoKSksIHJvdW5kZWRM
YXlvdXRQb2ludChzY3JvbGxPZmZzZXQpLCBzY3JvbGxPcmlnaW4oKSwgMSwgZmFsc2UsIGJlaGF2
aW9yRm9yRml4ZWQsIGhlYWRlckhlaWdodCgpLCBmb290ZXJIZWlnaHQoKSkud2lkdGgoKTsKKwor
ICAgICAgICBpZiAobV9oZWFkZXJMYXllcikKKyAgICAgICAgICAgIG1faGVhZGVyTGF5ZXIuZ2V0
KCkucG9zaXRpb24gPSBGbG9hdFBvaW50KGhvcml6b250YWxTY3JvbGxPZmZzZXRGb3JCYW5uZXIs
IEZyYW1lVmlldzo6eVBvc2l0aW9uRm9ySGVhZGVyTGF5ZXIocG9zaXRpb24sIHRvcENvbnRlbnRJ
bnNldCkpOworCisgICAgICAgIGlmIChtX2Zvb3RlckxheWVyKSB7CisgICAgICAgICAgICBtX2Zv
b3RlckxheWVyLmdldCgpLnBvc2l0aW9uID0gRmxvYXRQb2ludChob3Jpem9udGFsU2Nyb2xsT2Zm
c2V0Rm9yQmFubmVyLAorICAgICAgICAgICAgICAgIEZyYW1lVmlldzo6eVBvc2l0aW9uRm9yRm9v
dGVyTGF5ZXIocG9zaXRpb24sIHRvcENvbnRlbnRJbnNldCwgdG90YWxDb250ZW50c1NpemUoKS5o
ZWlnaHQoKSwgZm9vdGVySGVpZ2h0KCkpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICht
X3ZlcnRpY2FsU2Nyb2xsYmFyUGFpbnRlciB8fCBtX2hvcml6b250YWxTY3JvbGxiYXJQYWludGVy
KSB7CisgICAgICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKKyAgICAgICAgW0NBVHJhbnNhY3Rp
b24gbG9ja107CisKKyAgICAgICAgaWYgKFttX3ZlcnRpY2FsU2Nyb2xsYmFyUGFpbnRlciBzaG91
bGRVc2VQcmVzZW50YXRpb25WYWx1ZV0pIHsKKyAgICAgICAgICAgIGZsb2F0IHByZXNlbnRhdGlv
blZhbHVlOworICAgICAgICAgICAgZmxvYXQgb3ZlcmhhbmdBbW91bnQ7CisgICAgICAgICAgICBT
Y3JvbGxhYmxlQXJlYTo6Y29tcHV0ZVNjcm9sbGJhclZhbHVlQW5kT3ZlcmhhbmcocG9zaXRpb24u
eSgpLCB0b3RhbENvbnRlbnRzU2l6ZSgpLmhlaWdodCgpLCB2aWV3cG9ydFJlY3QuaGVpZ2h0KCks
IHByZXNlbnRhdGlvblZhbHVlLCBvdmVyaGFuZ0Ftb3VudCk7CisgICAgICAgICAgICBbbV92ZXJ0
aWNhbFNjcm9sbGJhclBhaW50ZXIgc2V0UHJlc2VudGF0aW9uVmFsdWU6cHJlc2VudGF0aW9uVmFs
dWVdOworICAgICAgICB9CisKKyAgICAgICAgaWYgKFttX2hvcml6b250YWxTY3JvbGxiYXJQYWlu
dGVyIHNob3VsZFVzZVByZXNlbnRhdGlvblZhbHVlXSkgeworICAgICAgICAgICAgZmxvYXQgcHJl
c2VudGF0aW9uVmFsdWU7CisgICAgICAgICAgICBmbG9hdCBvdmVyaGFuZ0Ftb3VudDsKKyAgICAg
ICAgICAgIFNjcm9sbGFibGVBcmVhOjpjb21wdXRlU2Nyb2xsYmFyVmFsdWVBbmRPdmVyaGFuZyhw
b3NpdGlvbi54KCksIHRvdGFsQ29udGVudHNTaXplKCkud2lkdGgoKSwgdmlld3BvcnRSZWN0Lndp
ZHRoKCksIHByZXNlbnRhdGlvblZhbHVlLCBvdmVyaGFuZ0Ftb3VudCk7CisgICAgICAgICAgICBb
bV9ob3Jpem9udGFsU2Nyb2xsYmFyUGFpbnRlciBzZXRQcmVzZW50YXRpb25WYWx1ZTpwcmVzZW50
YXRpb25WYWx1ZV07CisgICAgICAgIH0KKyAgICAgICAgW0NBVHJhbnNhY3Rpb24gdW5sb2NrXTsK
KyAgICAgICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKKyAgICB9CisKKyAgICBpZiAoIW1fY2hp
bGRyZW4pCisgICAgICAgIHJldHVybjsKKworICAgIHZpZXdwb3J0UmVjdC5zZXRMb2NhdGlvbihG
bG9hdFBvaW50KCkgKyBzY3JvbGxPZmZzZXRGb3JGaXhlZENoaWxkcmVuKTsKKworICAgIHNpemVf
dCBzaXplID0gbV9jaGlsZHJlbi0+c2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c2l6ZTsgKytpKQorICAgICAgICBtX2NoaWxkcmVuLT5hdChpKS0+cGFyZW50U2Nyb2xsUG9zaXRp
b25EaWRDaGFuZ2Uodmlld3BvcnRSZWN0LCBGbG9hdFNpemUoKSk7Cit9CisKK3ZvaWQgU2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6dXBkYXRlTGF5ZXJzQWZ0ZXJWaWV3cG9ydENo
YW5nZShjb25zdCBGbG9hdFJlY3QmLCBkb3VibGUpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Cit9CisKK0Zsb2F0UG9pbnQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6
bWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QKK3sKKyAgICBGbG9hdFBvaW50IHBvc2l0aW9u
OworICAgIAorICAgIGlmIChzY3JvbGxpbmdUcmVlKCkucm9vdE5vZGUoKSA9PSB0aGlzICYmIHNj
cm9sbGluZ1RyZWUoKS5zY3JvbGxQaW5uaW5nQmVoYXZpb3IoKSA9PSBQaW5Ub0JvdHRvbSkKKyAg
ICAgICAgcG9zaXRpb24uc2V0WShtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKS55KCkpOworCisgICAg
cmV0dXJuIHBvc2l0aW9uOworfQorCitGbG9hdFBvaW50IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGVNYWM6Om1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0Cit7CisgICAgRmxvYXRQ
b2ludCBwb3NpdGlvbih0b3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQoKSAtIHNjcm9sbGFi
bGVBcmVhU2l6ZSgpKTsKKyAgICBwb3NpdGlvbiA9IHBvc2l0aW9uLmV4cGFuZGVkVG8oRmxvYXRQ
b2ludCgpKTsKKworICAgIGlmIChzY3JvbGxpbmdUcmVlKCkucm9vdE5vZGUoKSA9PSB0aGlzICYm
IHNjcm9sbGluZ1RyZWUoKS5zY3JvbGxQaW5uaW5nQmVoYXZpb3IoKSA9PSBQaW5Ub1RvcCkKKyAg
ICAgICAgcG9zaXRpb24uc2V0WShtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKS55KCkpOworCisgICAg
cmV0dXJuIHBvc2l0aW9uOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVNYWM6OnNjcm9sbEJ5KGNvbnN0IEludFNpemUmIG9mZnNldCkKK3sKKyAgICBzZXRTY3JvbGxQ
b3NpdGlvbihzY3JvbGxQb3NpdGlvbigpICsgb2Zmc2V0KTsKK30KKwordm9pZCBTY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjpzY3JvbGxCeVdpdGhvdXRDb250ZW50RWRnZUNvbnN0
cmFpbnRzKGNvbnN0IEludFNpemUmIG9mZnNldCkKK3sKKyAgICBzZXRTY3JvbGxQb3NpdGlvbldp
dGhvdXRDb250ZW50RWRnZUNvbnN0cmFpbnRzKHNjcm9sbFBvc2l0aW9uKCkgKyBvZmZzZXQpOwor
fQorCit2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6OnVwZGF0ZU1haW5G
cmFtZVBpblN0YXRlKGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uKQoreworICAgIGJv
b2wgcGlubmVkVG9UaGVMZWZ0ID0gc2Nyb2xsUG9zaXRpb24ueCgpIDw9IG1pbmltdW1TY3JvbGxQ
b3NpdGlvbigpLngoKTsKKyAgICBib29sIHBpbm5lZFRvVGhlUmlnaHQgPSBzY3JvbGxQb3NpdGlv
bi54KCkgPj0gbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkueCgpOworICAgIGJvb2wgcGlubmVkVG9U
aGVUb3AgPSBzY3JvbGxQb3NpdGlvbi55KCkgPD0gbWluaW11bVNjcm9sbFBvc2l0aW9uKCkueSgp
OworICAgIGJvb2wgcGlubmVkVG9UaGVCb3R0b20gPSBzY3JvbGxQb3NpdGlvbi55KCkgPj0gbWF4
aW11bVNjcm9sbFBvc2l0aW9uKCkueSgpOworCisgICAgc2Nyb2xsaW5nVHJlZSgpLnNldE1haW5G
cmFtZVBpblN0YXRlKHBpbm5lZFRvVGhlTGVmdCwgcGlubmVkVG9UaGVSaWdodCwgcGlubmVkVG9U
aGVUb3AsIHBpbm5lZFRvVGhlQm90dG9tKTsKK30KKwordm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlTWFjOjpsb2dFeHBvc2VkVW5maWxsZWRBcmVhKCkKK3sKKyAgICBSZWdpb24g
cGFpbnRlZFZpc2libGVUaWxlczsKKworICAgIERlcXVlPENBTGF5ZXIqPiBsYXllclF1ZXVlOwor
ICAgIGxheWVyUXVldWUuYXBwZW5kKG1fc2Nyb2xsTGF5ZXIuZ2V0KCkpOworICAgIFBsYXRmb3Jt
TGF5ZXJMaXN0IHRpbGVzOworCisgICAgd2hpbGUgKCFsYXllclF1ZXVlLmlzRW1wdHkoKSAmJiB0
aWxlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgQ0FMYXllciogbGF5ZXIgPSBsYXllclF1ZXVlLnRh
a2VGaXJzdCgpOworICAgICAgICBOU0FycmF5KiBzdWJsYXllcnMgPSBbW2xheWVyIHN1YmxheWVy
c10gY29weV07CisKKyAgICAgICAgLy8gSWYgdGhpcyBsYXllciBpcyB0aGUgcGFyZW50IG9mIGEg
dGlsZSwgaXQgaXMgdGhlIHBhcmVudCBvZiBhbGwgb2YgdGhlIHRpbGVzIGFuZCBub3RoaW5nIGVs
c2UuCisgICAgICAgIGlmIChbW1tzdWJsYXllcnMgb2JqZWN0QXRJbmRleDowXSB2YWx1ZUZvcktl
eTpAImlzVGlsZSJdIGJvb2xWYWx1ZV0pIHsKKyAgICAgICAgICAgIGZvciAoQ0FMYXllciogc3Vi
bGF5ZXIgaW4gc3VibGF5ZXJzKQorICAgICAgICAgICAgICAgIHRpbGVzLmFwcGVuZChzdWJsYXll
cik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmb3IgKENBTGF5ZXIqIHN1YmxheWVy
IGluIHN1YmxheWVycykKKyAgICAgICAgICAgICAgICBsYXllclF1ZXVlLmFwcGVuZChzdWJsYXll
cik7CisgICAgICAgIH0KKworICAgICAgICBbc3VibGF5ZXJzIHJlbGVhc2VdOworICAgIH0KKwor
ICAgIEZsb2F0UG9pbnQgc2Nyb2xsUG9zaXRpb24gPSB0aGlzLT5zY3JvbGxQb3NpdGlvbigpOwor
ICAgIEZsb2F0UmVjdCB2aWV3UG9ydFJlY3QoRmxvYXRQb2ludCgpLCBzY3JvbGxhYmxlQXJlYVNp
emUoKSk7CisgICAgdW5zaWduZWQgdW5maWxsZWRBcmVhID0gVGlsZUNvbnRyb2xsZXI6OmJsYW5r
UGl4ZWxDb3VudEZvclRpbGVzKHRpbGVzLCB2aWV3UG9ydFJlY3QsIEludFBvaW50KC1zY3JvbGxQ
b3NpdGlvbi54KCksIC1zY3JvbGxQb3NpdGlvbi55KCkpKTsKKworICAgIGlmICh1bmZpbGxlZEFy
ZWEgfHwgbV9sYXN0U2Nyb2xsSGFkVW5maWxsZWRQaXhlbHMpCisgICAgICAgIFdURkxvZ0Fsd2F5
cygiU0NST0xMSU5HOiBFeHBvc2VkIHRpbGVsZXNzIGFyZWEuIFRpbWU6ICVmIFVuZmlsbGVkIFBp
eGVsczogJXVcbiIsIFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCksIHVuZmlsbGVk
QXJlYSk7CisKKyAgICBtX2xhc3RTY3JvbGxIYWRVbmZpbGxlZFBpeGVscyA9IHVuZmlsbGVkQXJl
YTsKK30KKworc3RhdGljIHZvaWQgbG9nVGhyZWFkZWRTY3JvbGxpbmdNb2RlKHVuc2lnbmVkIHN5
bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucykKK3sKKyAgICBpZiAoc3luY2hyb25vdXNTY3JvbGxp
bmdSZWFzb25zKSB7CisgICAgICAgIFN0cmluZ0J1aWxkZXIgcmVhc29uc0Rlc2NyaXB0aW9uOwor
CisgICAgICAgIGlmIChzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMgJiBTY3JvbGxpbmdDb29y
ZGluYXRvcjo6Rm9yY2VkT25NYWluVGhyZWFkKQorICAgICAgICAgICAgcmVhc29uc0Rlc2NyaXB0
aW9uLmFwcGVuZCgiZm9yY2VkLCIpOworICAgICAgICBpZiAoc3luY2hyb25vdXNTY3JvbGxpbmdS
ZWFzb25zICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Okhhc1Nsb3dSZXBhaW50T2JqZWN0cykKKyAg
ICAgICAgICAgIHJlYXNvbnNEZXNjcmlwdGlvbi5hcHBlbmQoInNsb3ctcmVwYWludCBvYmplY3Rz
LCIpOworICAgICAgICBpZiAoc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zICYgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6Okhhc1ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzV2l0aG91dFN1cHBvcnRp
bmdGaXhlZExheWVycykKKyAgICAgICAgICAgIHJlYXNvbnNEZXNjcmlwdGlvbi5hcHBlbmQoInZp
ZXdwb3J0LWNvbnN0cmFpbmVkIG9iamVjdHMsIik7CisgICAgICAgIGlmIChzeW5jaHJvbm91c1Nj
cm9sbGluZ1JlYXNvbnMgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6SGFzTm9uTGF5ZXJWaWV3cG9y
dENvbnN0cmFpbmVkT2JqZWN0cykKKyAgICAgICAgICAgIHJlYXNvbnNEZXNjcmlwdGlvbi5hcHBl
bmQoIm5vbi1sYXllciB2aWV3cG9ydC1jb25zdHJhaW5lZCBvYmplY3RzLCIpOworICAgICAgICBp
ZiAoc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Oklz
SW1hZ2VEb2N1bWVudCkKKyAgICAgICAgICAgIHJlYXNvbnNEZXNjcmlwdGlvbi5hcHBlbmQoImlt
YWdlIGRvY3VtZW50LCIpOworCisgICAgICAgIC8vIFN0cmlwIHRoZSB0cmFpbGluZyBjb21tYS4K
KyAgICAgICAgU3RyaW5nIHJlYXNvbnNEZXNjcmlwdGlvblRyaW1tZWQgPSByZWFzb25zRGVzY3Jp
cHRpb24udG9TdHJpbmcoKS5sZWZ0KHJlYXNvbnNEZXNjcmlwdGlvbi5sZW5ndGgoKSAtIDEpOwor
CisgICAgICAgIFdURkxvZ0Fsd2F5cygiU0NST0xMSU5HOiBTd2l0Y2hpbmcgdG8gbWFpbi10aHJl
YWQgc2Nyb2xsaW5nIG1vZGUuIFRpbWU6ICVmIFJlYXNvbihzKTogJXNcbiIsIFdURjo6bW9ub3Rv
bmljYWxseUluY3JlYXNpbmdUaW1lKCksIHJlYXNvbnNEZXNjcmlwdGlvblRyaW1tZWQuYXNjaWko
KS5kYXRhKCkpOworICAgIH0gZWxzZQorICAgICAgICBXVEZMb2dBbHdheXMoIlNDUk9MTElORzog
U3dpdGNoaW5nIHRvIHRocmVhZGVkIHNjcm9sbGluZyBtb2RlLiBUaW1lOiAlZlxuIiwgV1RGOjpt
b25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSk7Cit9CisKK3ZvaWQgbG9nV2hlZWxFdmVudEhh
bmRsZXJDb3VudENoYW5nZWQodW5zaWduZWQgY291bnQpCit7CisgICAgV1RGTG9nQWx3YXlzKCJT
Q1JPTExJTkc6IFdoZWVsIGV2ZW50IGhhbmRsZXIgY291bnQgY2hhbmdlZC4gVGltZTogJWYgQ291
bnQ6ICV1XG4iLCBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpLCBjb3VudCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JP
TExJTkcpICYmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZU1hYy5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlTWFjLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxNWIxM2YxZDkxNDgzZDNmYTg5NDU4Mjg0
Nzc5ODhjNDM0MDE4YzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlTWFjLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpZm5kZWYgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWNfaAotI2RlZmluZSBTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZU1hY19oCi0KLSNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5H
KQotCi0jaW5jbHVkZSAiU2Nyb2xsRWxhc3RpY2l0eUNvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJT
Y3JvbGxiYXJUaGVtZU1hYy5oIgotI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
LmgiCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1PQkpDX0NMQVNTIENBTGF5ZXI7Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVN
YWMgOiBwdWJsaWMgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUsIHByaXZhdGUgU2Nyb2xsRWxh
c3RpY2l0eUNvbnRyb2xsZXJDbGllbnQgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRy
PFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlPiBjcmVhdGUoU2Nyb2xsaW5nVHJlZSYsIFNjcm9s
bGluZ05vZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQpOwotICAgIHZpcnR1YWwgflNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlTWFjKCk7Ci0KLXByaXZhdGU6Ci0gICAgU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVNYWMoU2Nyb2xsaW5nVHJlZSYsIFNjcm9sbGluZ05vZGVUeXBlLCBTY3JvbGxpbmdO
b2RlSUQpOwotCi0gICAgLy8gU2Nyb2xsaW5nVHJlZU5vZGUgbWVtYmVyIGZ1bmN0aW9ucy4KLSAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVO
b2RlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFmdGVyQ2hpbGRyZW4oY29u
c3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGhhbmRs
ZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jikgb3ZlcnJpZGU7Ci0KLSAgICAv
LyBTY3JvbGxFbGFzdGljaXR5Q29udHJvbGxlciBtZW1iZXIgZnVuY3Rpb25zLgotICAgIHZpcnR1
YWwgYm9vbCBhbGxvd3NIb3Jpem9udGFsU3RyZXRjaGluZygpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgYm9vbCBhbGxvd3NWZXJ0aWNhbFN0cmV0Y2hpbmcoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IEludFNpemUgc3RyZXRjaEFtb3VudCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBwaW5u
ZWRJbkRpcmVjdGlvbihjb25zdCBGbG9hdFNpemUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJv
b2wgY2FuU2Nyb2xsSG9yaXpvbnRhbGx5KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGNh
blNjcm9sbFZlcnRpY2FsbHkoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUnVi
YmVyQmFuZEluRGlyZWN0aW9uKFNjcm9sbERpcmVjdGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBJbnRQb2ludCBhYnNvbHV0ZVNjcm9sbFBvc2l0aW9uKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIGltbWVkaWF0ZVNjcm9sbEJ5KGNvbnN0IEZsb2F0U2l6ZSYpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBpbW1lZGlhdGVTY3JvbGxCeVdpdGhvdXRDb250ZW50RWRnZUNvbnN0cmFp
bnRzKGNvbnN0IEZsb2F0U2l6ZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzdGFydFNu
YXBSdWJiZXJiYW5kVGltZXIoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcFNuYXBS
dWJiZXJiYW5kVGltZXIoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2Nyb2xs
UG9zaXRpb25Ub0JvdW5kc0lmTmVjZXNzYXJ5KCkgb3ZlcnJpZGU7Ci0KLSAgICBGbG9hdFBvaW50
IHNjcm9sbFBvc2l0aW9uKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbFBvc2l0
aW9uKGNvbnN0IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2Ny
b2xsUG9zaXRpb25XaXRob3V0Q29udGVudEVkZ2VDb25zdHJhaW50cyhjb25zdCBGbG9hdFBvaW50
Jikgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJWaWV3cG9y
dENoYW5nZShjb25zdCBGbG9hdFJlY3QmIHZpZXdwb3J0UmVjdCwgZG91YmxlIHNjYWxlKSBvdmVy
cmlkZTsKLQotICAgIHZvaWQgc2V0U2Nyb2xsTGF5ZXJQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50
Jik7Ci0KLSAgICBGbG9hdFBvaW50IG1pbmltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0OwotICAg
IEZsb2F0UG9pbnQgbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Q7Ci0KLSAgICB2b2lkIHNj
cm9sbEJ5KGNvbnN0IEludFNpemUmKTsKLSAgICB2b2lkIHNjcm9sbEJ5V2l0aG91dENvbnRlbnRF
ZGdlQ29uc3RyYWludHMoY29uc3QgSW50U2l6ZSYpOwotCi0gICAgdm9pZCB1cGRhdGVNYWluRnJh
bWVQaW5TdGF0ZShjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbik7Ci0KLSAgICB2b2lk
IGxvZ0V4cG9zZWRVbmZpbGxlZEFyZWEoKTsKLQotICAgIFNjcm9sbEVsYXN0aWNpdHlDb250cm9s
bGVyIG1fc2Nyb2xsRWxhc3RpY2l0eUNvbnRyb2xsZXI7Ci0gICAgUmV0YWluUHRyPENGUnVuTG9v
cFRpbWVyUmVmPiBtX3NuYXBSdWJiZXJiYW5kVGltZXI7Ci0KLSAgICBSZXRhaW5QdHI8Q0FMYXll
cj4gbV9zY3JvbGxMYXllcjsKLSAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9zY3JvbGxlZENvbnRl
bnRzTGF5ZXI7Ci0gICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fY291bnRlclNjcm9sbGluZ0xheWVy
OwotICAgIFJldGFpblB0cjxDQUxheWVyPiBtX2luc2V0Q2xpcExheWVyOwotICAgIFJldGFpblB0
cjxDQUxheWVyPiBtX2NvbnRlbnRTaGFkb3dMYXllcjsKLSAgICBSZXRhaW5QdHI8Q0FMYXllcj4g
bV9oZWFkZXJMYXllcjsKLSAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9mb290ZXJMYXllcjsKLSAg
ICBSZXRhaW5QdHI8U2Nyb2xsYmFyUGFpbnRlcj4gbV92ZXJ0aWNhbFNjcm9sbGJhclBhaW50ZXI7
Ci0gICAgUmV0YWluUHRyPFNjcm9sbGJhclBhaW50ZXI+IG1faG9yaXpvbnRhbFNjcm9sbGJhclBh
aW50ZXI7Ci0gICAgRmxvYXRQb2ludCBtX3Byb2JhYmxlTWFpblRocmVhZFNjcm9sbFBvc2l0aW9u
OwotICAgIGJvb2wgbV9sYXN0U2Nyb2xsSGFkVW5maWxsZWRQaXhlbHM7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQotCi0j
ZW5kaWYgLy8gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWNfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlTWFjLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMGQ0YWVi
ZTE3NDZhODhmNTBjYmJkZWM5MTEyOWY5MmE5NGRkN2Q3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZU1hYy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDUz
MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0
ICJTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZU1hYy5oIgotCi0jaWYgRU5BQkxFKEFTWU5DX1ND
Uk9MTElORykKLQotI2ltcG9ydCAiRnJhbWVWaWV3LmgiCi0jaW1wb3J0ICJOU1Njcm9sbGVySW1w
RGV0YWlscy5oIgotI2ltcG9ydCAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCi0jaW1wb3J0ICJTY3Jv
bGxpbmdDb29yZGluYXRvci5oIgotI2ltcG9ydCAiU2Nyb2xsaW5nVHJlZS5oIgotI2ltcG9ydCAi
U2Nyb2xsaW5nU3RhdGVUcmVlLmgiCi0jaW1wb3J0ICJTZXR0aW5ncy5oIgotI2ltcG9ydCAiVGls
ZUNvbnRyb2xsZXIuaCIKLSNpbXBvcnQgIldlYkxheWVyLmgiCi0KLSNpbXBvcnQgPFF1YXJ0ekNv
cmUvUXVhcnR6Q29yZS5oPgotI2ltcG9ydCA8d3RmL0N1cnJlbnRUaW1lLmg+Ci0jaW1wb3J0IDx3
dGYvRGVxdWUuaD4KLSNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLSNpbXBvcnQg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgdm9p
ZCBsb2dUaHJlYWRlZFNjcm9sbGluZ01vZGUodW5zaWduZWQgc3luY2hyb25vdXNTY3JvbGxpbmdS
ZWFzb25zKTsKLXN0YXRpYyB2b2lkIGxvZ1doZWVsRXZlbnRIYW5kbGVyQ291bnRDaGFuZ2VkKHVu
c2lnbmVkKTsKLQotCi1QYXNzT3duUHRyPFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlPiBTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZU1hYzo6Y3JlYXRlKFNjcm9sbGluZ1RyZWUmIHNjcm9sbGlu
Z1RyZWUsIFNjcm9sbGluZ05vZGVUeXBlIG5vZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlE
KQotewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVN
YWMoc2Nyb2xsaW5nVHJlZSwgbm9kZVR5cGUsIG5vZGVJRCkpOwotfQotCi1TY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZU1hYzo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWMoU2Nyb2xsaW5n
VHJlZSYgc2Nyb2xsaW5nVHJlZSwgU2Nyb2xsaW5nTm9kZVR5cGUgbm9kZVR5cGUsIFNjcm9sbGlu
Z05vZGVJRCBub2RlSUQpCi0gICAgOiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZShzY3JvbGxp
bmdUcmVlLCBub2RlVHlwZSwgbm9kZUlEKQotICAgICwgbV9zY3JvbGxFbGFzdGljaXR5Q29udHJv
bGxlcih0aGlzKQotICAgICwgbV92ZXJ0aWNhbFNjcm9sbGJhclBhaW50ZXIoMCkKLSAgICAsIG1f
aG9yaXpvbnRhbFNjcm9sbGJhclBhaW50ZXIoMCkKLSAgICAsIG1fbGFzdFNjcm9sbEhhZFVuZmls
bGVkUGl4ZWxzKGZhbHNlKQotewotfQotCi1TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZU1hYzo6
flNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlTWFjKCkKLXsKLSAgICBpZiAobV9zbmFwUnViYmVy
YmFuZFRpbWVyKQotICAgICAgICBDRlJ1bkxvb3BUaW1lckludmFsaWRhdGUobV9zbmFwUnViYmVy
YmFuZFRpbWVyLmdldCgpKTsKLX0KLQotdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZU1h
Yzo6dXBkYXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJiBzdGF0ZU5v
ZGUpCi17Ci0gICAgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OnVwZGF0ZUJlZm9yZUNoaWxk
cmVuKHN0YXRlTm9kZSk7Ci0gICAgY29uc3QgYXV0byYgc2Nyb2xsaW5nU3RhdGVOb2RlID0gdG9T
Y3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUoc3RhdGVOb2RlKTsKLQotICAgIGlmIChzY3JvbGxp
bmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6U2Nyb2xs
TGF5ZXIpKQotICAgICAgICBtX3Njcm9sbExheWVyID0gc2Nyb2xsaW5nU3RhdGVOb2RlLmxheWVy
KCk7Ci0KLSAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGVkQ29udGVudHNMYXllcikpCi0gICAgICAg
IG1fc2Nyb2xsZWRDb250ZW50c0xheWVyID0gc2Nyb2xsaW5nU3RhdGVOb2RlLnNjcm9sbGVkQ29u
dGVudHNMYXllcigpOwotCi0gICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJv
cGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpDb3VudGVyU2Nyb2xsaW5nTGF5ZXIp
KQotICAgICAgICBtX2NvdW50ZXJTY3JvbGxpbmdMYXllciA9IHNjcm9sbGluZ1N0YXRlTm9kZS5j
b3VudGVyU2Nyb2xsaW5nTGF5ZXIoKTsKLQotICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFz
Q2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6SW5zZXRDbGlwTGF5
ZXIpKQotICAgICAgICBtX2luc2V0Q2xpcExheWVyID0gc2Nyb2xsaW5nU3RhdGVOb2RlLmluc2V0
Q2xpcExheWVyKCk7Ci0KLSAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9w
ZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OkNvbnRlbnRTaGFkb3dMYXllcikpCi0g
ICAgICAgIG1fY29udGVudFNoYWRvd0xheWVyID0gc2Nyb2xsaW5nU3RhdGVOb2RlLmNvbnRlbnRT
aGFkb3dMYXllcigpOwotCi0gICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJv
cGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpIZWFkZXJMYXllcikpCi0gICAgICAg
IG1faGVhZGVyTGF5ZXIgPSBzY3JvbGxpbmdTdGF0ZU5vZGUuaGVhZGVyTGF5ZXIoKTsKLQotICAg
IGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZTo6Rm9vdGVyTGF5ZXIpKQotICAgICAgICBtX2Zvb3RlckxheWVyID0gc2Ny
b2xsaW5nU3RhdGVOb2RlLmZvb3RlckxheWVyKCk7Ci0KLSAgICBpZiAoc2Nyb2xsaW5nU3RhdGVO
b2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlBhaW50
ZXJGb3JTY3JvbGxiYXIpKSB7Ci0gICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXJQYWludGVyID0g
c2Nyb2xsaW5nU3RhdGVOb2RlLnZlcnRpY2FsU2Nyb2xsYmFyUGFpbnRlcigpOwotICAgICAgICBt
X2hvcml6b250YWxTY3JvbGxiYXJQYWludGVyID0gc2Nyb2xsaW5nU3RhdGVOb2RlLmhvcml6b250
YWxTY3JvbGxiYXJQYWludGVyKCk7Ci0gICAgfQotCi0gICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9k
ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpSZWFzb25z
Rm9yU3luY2hyb25vdXNTY3JvbGxpbmcpKSB7Ci0gICAgICAgIGlmIChzaG91bGRVcGRhdGVTY3Jv
bGxMYXllclBvc2l0aW9uU3luY2hyb25vdXNseSgpKSB7Ci0gICAgICAgICAgICAvLyBXZSdyZSB0
cmFuc2l0aW9uaW5nIHRvIHRoZSBzbG93ICJ1cGRhdGUgc2Nyb2xsIGxheWVyIHBvc2l0aW9uIG9u
IHRoZSBtYWluIHRocmVhZCIgbW9kZS4KLSAgICAgICAgICAgIC8vIEluaXRpYWxpemUgdGhlIHBy
b2JhYmxlIG1haW4gdGhyZWFkIHNjcm9sbCBwb3NpdGlvbiB3aXRoIHRoZSBjdXJyZW50IHNjcm9s
bCBsYXllciBwb3NpdGlvbi4KLSAgICAgICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFz
Q2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6UmVxdWVzdGVkU2Ny
b2xsUG9zaXRpb24pKQotICAgICAgICAgICAgICAgIG1fcHJvYmFibGVNYWluVGhyZWFkU2Nyb2xs
UG9zaXRpb24gPSBzY3JvbGxpbmdTdGF0ZU5vZGUucmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24oKTsK
LSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIENHUG9pbnQgc2Nyb2xsTGF5ZXJQ
b3NpdGlvbiA9IG1fc2Nyb2xsTGF5ZXIuZ2V0KCkucG9zaXRpb247Ci0gICAgICAgICAgICAgICAg
bV9wcm9iYWJsZU1haW5UaHJlYWRTY3JvbGxQb3NpdGlvbiA9IEludFBvaW50KC1zY3JvbGxMYXll
clBvc2l0aW9uLngsIC1zY3JvbGxMYXllclBvc2l0aW9uLnkpOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKHNjcm9sbGluZ1RyZWUoKS5zY3JvbGxpbmdQZXJmb3JtYW5j
ZUxvZ2dpbmdFbmFibGVkKCkpCi0gICAgICAgICAgICBsb2dUaHJlYWRlZFNjcm9sbGluZ01vZGUo
c3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKCkpOwotICAgIH0KLQotICAgIGlmIChzY3JvbGxp
bmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZTo6V2hlZWxFdmVudEhhbmRsZXJDb3VudCkpIHsKLSAgICAgICAgaWYgKHNjcm9sbGluZ1RyZWUo
KS5zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKCkpCi0gICAgICAgICAgICBsb2dX
aGVlbEV2ZW50SGFuZGxlckNvdW50Q2hhbmdlZChzY3JvbGxpbmdTdGF0ZU5vZGUud2hlZWxFdmVu
dEhhbmRsZXJDb3VudCgpKTsKLSAgICB9Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVNYWM6OnVwZGF0ZUFmdGVyQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJiBz
dGF0ZU5vZGUpCi17Ci0gICAgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OnVwZGF0ZUFmdGVy
Q2hpbGRyZW4oc3RhdGVOb2RlKTsKLQotICAgIGNvbnN0IGF1dG8mIHNjcm9sbGluZ1N0YXRlTm9k
ZSA9IHRvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlKHN0YXRlTm9kZSk7Ci0KLSAgICAvLyBV
cGRhdGUgdGhlIHNjcm9sbCBwb3NpdGlvbiBhZnRlciBjaGlsZCBub2RlcyBoYXZlIGJlZW4gdXBk
YXRlZCwgYmVjYXVzZSB0aGV5IG5lZWQgdG8gaGF2ZSB1cGRhdGVkIHRoZWlyIGNvbnN0cmFpbnRz
IGJlZm9yZSBhbnkgc2Nyb2xsaW5nIGhhcHBlbnMuCi0gICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9k
ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpSZXF1ZXN0
ZWRTY3JvbGxQb3NpdGlvbikpCi0gICAgICAgIHNldFNjcm9sbFBvc2l0aW9uKHNjcm9sbGluZ1N0
YXRlTm9kZS5yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbigpKTsKLQotICAgIGlmIChzY3JvbGxpbmdT
dGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6U2Nyb2xsTGF5
ZXIpIHx8IHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlOjpUb3RhbENvbnRlbnRzU2l6ZSkgfHwgc2Nyb2xsaW5nU3RhdGVOb2Rl
Lmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlZpZXdwb3J0
U2l6ZSkpCi0gICAgICAgIHVwZGF0ZU1haW5GcmFtZVBpblN0YXRlKHNjcm9sbFBvc2l0aW9uKCkp
OwotfQotCi12b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlTWFjOjpoYW5kbGVXaGVlbEV2
ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKLXsKLSAgICBpZiAoIWNh
bkhhdmVTY3JvbGxiYXJzKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICh3aGVlbEV2ZW50
Lm1vbWVudHVtUGhhc2UoKSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUJlZ2FuKSB7Ci0gICAg
ICAgIFttX3ZlcnRpY2FsU2Nyb2xsYmFyUGFpbnRlciBzZXRVc2VQcmVzZW50YXRpb25WYWx1ZTpZ
RVNdOwotICAgICAgICBbbV9ob3Jpem9udGFsU2Nyb2xsYmFyUGFpbnRlciBzZXRVc2VQcmVzZW50
YXRpb25WYWx1ZTpZRVNdOwotICAgIH0KLSAgICBpZiAod2hlZWxFdmVudC5tb21lbnR1bVBoYXNl
KCkgPT0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VFbmRlZCB8fCB3aGVlbEV2ZW50Lm1vbWVudHVt
UGhhc2UoKSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUNhbmNlbGxlZCkgewotICAgICAgICBb
bV92ZXJ0aWNhbFNjcm9sbGJhclBhaW50ZXIgc2V0VXNlUHJlc2VudGF0aW9uVmFsdWU6Tk9dOwot
ICAgICAgICBbbV9ob3Jpem9udGFsU2Nyb2xsYmFyUGFpbnRlciBzZXRVc2VQcmVzZW50YXRpb25W
YWx1ZTpOT107Ci0gICAgfQotCi0gICAgbV9zY3JvbGxFbGFzdGljaXR5Q29udHJvbGxlci5oYW5k
bGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQpOwotICAgIHNjcm9sbGluZ1RyZWUoKS5zZXRPckNsZWFy
TGF0Y2hlZE5vZGUod2hlZWxFdmVudCwgc2Nyb2xsaW5nTm9kZUlEKCkpOwotICAgIHNjcm9sbGlu
Z1RyZWUoKS5oYW5kbGVXaGVlbEV2ZW50UGhhc2Uod2hlZWxFdmVudC5waGFzZSgpKTsKLX0KLQot
Ym9vbCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZU1hYzo6YWxsb3dzSG9yaXpvbnRhbFN0cmV0
Y2hpbmcoKQotewotICAgIHN3aXRjaCAoaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkoKSkgewot
ICAgIGNhc2UgU2Nyb2xsRWxhc3RpY2l0eUF1dG9tYXRpYzoKLSAgICAgICAgcmV0dXJuIGhhc0Vu
YWJsZWRIb3Jpem9udGFsU2Nyb2xsYmFyKCkgfHwgIWhhc0VuYWJsZWRWZXJ0aWNhbFNjcm9sbGJh
cigpOwotICAgIGNhc2UgU2Nyb2xsRWxhc3RpY2l0eU5vbmU6Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBjYXNlIFNjcm9sbEVsYXN0aWNpdHlBbGxvd2VkOgotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KLWJvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWM6OmFsbG93c1ZlcnRpY2Fs
U3RyZXRjaGluZygpCi17Ci0gICAgc3dpdGNoICh2ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoKSkg
ewotICAgIGNhc2UgU2Nyb2xsRWxhc3RpY2l0eUF1dG9tYXRpYzoKLSAgICAgICAgcmV0dXJuIGhh
c0VuYWJsZWRWZXJ0aWNhbFNjcm9sbGJhcigpIHx8ICFoYXNFbmFibGVkSG9yaXpvbnRhbFNjcm9s
bGJhcigpOwotICAgIGNhc2UgU2Nyb2xsRWxhc3RpY2l0eU5vbmU6Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBjYXNlIFNjcm9sbEVsYXN0aWNpdHlBbGxvd2VkOgotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFs
c2U7Ci19Ci0KLUludFNpemUgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWM6OnN0cmV0Y2hB
bW91bnQoKQotewotICAgIEludFNpemUgc3RyZXRjaDsKLQotICAgIGlmIChzY3JvbGxQb3NpdGlv
bigpLnkoKSA8IG1pbmltdW1TY3JvbGxQb3NpdGlvbigpLnkoKSkKLSAgICAgICAgc3RyZXRjaC5z
ZXRIZWlnaHQoc2Nyb2xsUG9zaXRpb24oKS55KCkgLSBtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKS55
KCkpOwotICAgIGVsc2UgaWYgKHNjcm9sbFBvc2l0aW9uKCkueSgpID4gbWF4aW11bVNjcm9sbFBv
c2l0aW9uKCkueSgpKQotICAgICAgICBzdHJldGNoLnNldEhlaWdodChzY3JvbGxQb3NpdGlvbigp
LnkoKSAtIG1heGltdW1TY3JvbGxQb3NpdGlvbigpLnkoKSk7Ci0KLSAgICBpZiAoc2Nyb2xsUG9z
aXRpb24oKS54KCkgPCBtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKS54KCkpCi0gICAgICAgIHN0cmV0
Y2guc2V0V2lkdGgoc2Nyb2xsUG9zaXRpb24oKS54KCkgLSBtaW5pbXVtU2Nyb2xsUG9zaXRpb24o
KS54KCkpOwotICAgIGVsc2UgaWYgKHNjcm9sbFBvc2l0aW9uKCkueCgpID4gbWF4aW11bVNjcm9s
bFBvc2l0aW9uKCkueCgpKQotICAgICAgICBzdHJldGNoLnNldFdpZHRoKHNjcm9sbFBvc2l0aW9u
KCkueCgpIC0gbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkueCgpKTsKLQotICAgIGlmIChzY3JvbGxp
bmdUcmVlKCkucm9vdE5vZGUoKSA9PSB0aGlzKSB7Ci0gICAgICAgIGlmIChzdHJldGNoLmlzWmVy
bygpKQotICAgICAgICAgICAgc2Nyb2xsaW5nVHJlZSgpLnNldE1haW5GcmFtZUlzUnViYmVyQmFu
ZGluZyhmYWxzZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNjcm9sbGluZ1RyZWUoKS5z
ZXRNYWluRnJhbWVJc1J1YmJlckJhbmRpbmcodHJ1ZSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHN0
cmV0Y2g7Ci19Ci0KLWJvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWM6OnBpbm5lZElu
RGlyZWN0aW9uKGNvbnN0IEZsb2F0U2l6ZSYgZGVsdGEpCi17Ci0gICAgRmxvYXRTaXplIGxpbWl0
RGVsdGE7Ci0KLSAgICBpZiAoZmFic2YoZGVsdGEuaGVpZ2h0KCkpID49IGZhYnNmKGRlbHRhLndp
ZHRoKCkpKSB7Ci0gICAgICAgIGlmIChkZWx0YS5oZWlnaHQoKSA8IDApIHsKLSAgICAgICAgICAg
IC8vIFdlIGFyZSB0cnlpbmcgdG8gc2Nyb2xsIHVwLiAgTWFrZSBzdXJlIHdlIGFyZSBub3QgcGlu
bmVkIHRvIHRoZSB0b3AKLSAgICAgICAgICAgIGxpbWl0RGVsdGEuc2V0SGVpZ2h0KHNjcm9sbFBv
c2l0aW9uKCkueSgpIC0gbWluaW11bVNjcm9sbFBvc2l0aW9uKCkueSgpKTsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIC8vIFdlIGFyZSB0cnlpbmcgdG8gc2Nyb2xsIGRvd24uICBNYWtl
IHN1cmUgd2UgYXJlIG5vdCBwaW5uZWQgdG8gdGhlIGJvdHRvbQotICAgICAgICAgICAgbGltaXRE
ZWx0YS5zZXRIZWlnaHQobWF4aW11bVNjcm9sbFBvc2l0aW9uKCkueSgpIC0gc2Nyb2xsUG9zaXRp
b24oKS55KCkpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChkZWx0YS53aWR0aCgpKSB7Ci0g
ICAgICAgIGlmIChkZWx0YS53aWR0aCgpIDwgMCkgewotICAgICAgICAgICAgLy8gV2UgYXJlIHRy
eWluZyB0byBzY3JvbGwgbGVmdC4gIE1ha2Ugc3VyZSB3ZSBhcmUgbm90IHBpbm5lZCB0byB0aGUg
bGVmdAotICAgICAgICAgICAgbGltaXREZWx0YS5zZXRXaWR0aChzY3JvbGxQb3NpdGlvbigpLngo
KSAtIG1pbmltdW1TY3JvbGxQb3NpdGlvbigpLngoKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAvLyBXZSBhcmUgdHJ5aW5nIHRvIHNjcm9sbCByaWdodC4gIE1ha2Ugc3VyZSB3ZSBh
cmUgbm90IHBpbm5lZCB0byB0aGUgcmlnaHQKLSAgICAgICAgICAgIGxpbWl0RGVsdGEuc2V0V2lk
dGgobWF4aW11bVNjcm9sbFBvc2l0aW9uKCkueCgpIC0gc2Nyb2xsUG9zaXRpb24oKS54KCkpOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKChkZWx0YS53aWR0aCgpIHx8IGRlbHRhLmhlaWdo
dCgpKSAmJiAobGltaXREZWx0YS53aWR0aCgpIDwgMSAmJiBsaW1pdERlbHRhLmhlaWdodCgpIDwg
MSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29s
IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlTWFjOjpjYW5TY3JvbGxIb3Jpem9udGFsbHkoKQot
ewotICAgIHJldHVybiBoYXNFbmFibGVkSG9yaXpvbnRhbFNjcm9sbGJhcigpOwotfQotCi1ib29s
IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlTWFjOjpjYW5TY3JvbGxWZXJ0aWNhbGx5KCkKLXsK
LSAgICByZXR1cm4gaGFzRW5hYmxlZFZlcnRpY2FsU2Nyb2xsYmFyKCk7Ci19Ci0KLWJvb2wgU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWM6OnNob3VsZFJ1YmJlckJhbmRJbkRpcmVjdGlvbihT
Y3JvbGxEaXJlY3Rpb24pCi17Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLUludFBvaW50IFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlTWFjOjphYnNvbHV0ZVNjcm9sbFBvc2l0aW9uKCkKLXsKLSAg
ICByZXR1cm4gcm91bmRlZEludFBvaW50KHNjcm9sbFBvc2l0aW9uKCkpOwotfQotCi12b2lkIFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlTWFjOjppbW1lZGlhdGVTY3JvbGxCeShjb25zdCBGbG9h
dFNpemUmIG9mZnNldCkKLXsKLSAgICBzY3JvbGxCeShyb3VuZGVkSW50U2l6ZShvZmZzZXQpKTsK
LX0KLQotdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZU1hYzo6aW1tZWRpYXRlU2Nyb2xs
QnlXaXRob3V0Q29udGVudEVkZ2VDb25zdHJhaW50cyhjb25zdCBGbG9hdFNpemUmIG9mZnNldCkK
LXsKLSAgICBzY3JvbGxCeVdpdGhvdXRDb250ZW50RWRnZUNvbnN0cmFpbnRzKHJvdW5kZWRJbnRT
aXplKG9mZnNldCkpOwotfQotCi12b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlTWFjOjpz
dGFydFNuYXBSdWJiZXJiYW5kVGltZXIoKQotewotICAgIEFTU0VSVCghbV9zbmFwUnViYmVyYmFu
ZFRpbWVyKTsKLQotICAgIENGVGltZUludGVydmFsIHRpbWVySW50ZXJ2YWwgPSAxLjAgLyA2MC4w
OwotCi0gICAgbV9zbmFwUnViYmVyYmFuZFRpbWVyID0gYWRvcHRDRihDRlJ1bkxvb3BUaW1lckNy
ZWF0ZVdpdGhIYW5kbGVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIENGQWJzb2x1dGVUaW1lR2V0Q3Vy
cmVudCgpICsgdGltZXJJbnRlcnZhbCwgdGltZXJJbnRlcnZhbCwgMCwgMCwgXihDRlJ1bkxvb3BU
aW1lclJlZikgewotICAgICAgICBtX3Njcm9sbEVsYXN0aWNpdHlDb250cm9sbGVyLnNuYXBSdWJi
ZXJCYW5kVGltZXJGaXJlZCgpOwotICAgIH0pKTsKLSAgICBDRlJ1bkxvb3BBZGRUaW1lcihDRlJ1
bkxvb3BHZXRDdXJyZW50KCksIG1fc25hcFJ1YmJlcmJhbmRUaW1lci5nZXQoKSwga0NGUnVuTG9v
cERlZmF1bHRNb2RlKTsKLX0KLQotdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZU1hYzo6
c3RvcFNuYXBSdWJiZXJiYW5kVGltZXIoKQotewotICAgIGlmICghbV9zbmFwUnViYmVyYmFuZFRp
bWVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzY3JvbGxpbmdUcmVlKCkuc2V0TWFpbkZyYW1l
SXNSdWJiZXJCYW5kaW5nKGZhbHNlKTsKLQotICAgIC8vIFNpbmNlIHRoZSBydWJiZXJiYW5kIHRp
bWVyIGhhcyBzdG9wcGVkLCB0b3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQgY2FuIGJlIHN5
bmNocm9uaXplZCB3aXRoIHRvdGFsQ29udGVudHNTaXplLgotICAgIHNldFRvdGFsQ29udGVudHNT
aXplRm9yUnViYmVyQmFuZCh0b3RhbENvbnRlbnRzU2l6ZSgpKTsKLQotICAgIENGUnVuTG9vcFRp
bWVySW52YWxpZGF0ZShtX3NuYXBSdWJiZXJiYW5kVGltZXIuZ2V0KCkpOwotICAgIG1fc25hcFJ1
YmJlcmJhbmRUaW1lciA9IG51bGxwdHI7Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVNYWM6OmFkanVzdFNjcm9sbFBvc2l0aW9uVG9Cb3VuZHNJZk5lY2Vzc2FyeSgpCi17Ci0g
ICAgRmxvYXRQb2ludCBjdXJyZW50U2Nyb2xsUG9zaXRpb24gPSBhYnNvbHV0ZVNjcm9sbFBvc2l0
aW9uKCk7Ci0gICAgRmxvYXRQb2ludCBtaW5Qb3NpdGlvbiA9IG1pbmltdW1TY3JvbGxQb3NpdGlv
bigpOwotICAgIEZsb2F0UG9pbnQgbWF4UG9zaXRpb24gPSBtYXhpbXVtU2Nyb2xsUG9zaXRpb24o
KTsKLQotICAgIGZsb2F0IG5lYXJlc3RYV2l0aGluQm91bmRzID0gc3RkOjptYXgoc3RkOjptaW4o
Y3VycmVudFNjcm9sbFBvc2l0aW9uLngoKSwgbWF4UG9zaXRpb24ueCgpKSwgbWluUG9zaXRpb24u
eCgpKTsKLSAgICBmbG9hdCBuZWFyZXN0WVdpdGhpbkJvdW5kcyA9IHN0ZDo6bWF4KHN0ZDo6bWlu
KGN1cnJlbnRTY3JvbGxQb3NpdGlvbi55KCksIG1heFBvc2l0aW9uLnkoKSksIG1pblBvc2l0aW9u
LnkoKSk7Ci0KLSAgICBGbG9hdFBvaW50IG5lYXJlc3RQb2ludFdpdGhpbkJvdW5kcyhuZWFyZXN0
WFdpdGhpbkJvdW5kcywgbmVhcmVzdFlXaXRoaW5Cb3VuZHMpOwotICAgIGltbWVkaWF0ZVNjcm9s
bEJ5KG5lYXJlc3RQb2ludFdpdGhpbkJvdW5kcyAtIGN1cnJlbnRTY3JvbGxQb3NpdGlvbik7Ci19
Ci0KLUZsb2F0UG9pbnQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWM6OnNjcm9sbFBvc2l0
aW9uKCkgY29uc3QKLXsKLSAgICBpZiAoc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvblN5
bmNocm9ub3VzbHkoKSkKLSAgICAgICAgcmV0dXJuIG1fcHJvYmFibGVNYWluVGhyZWFkU2Nyb2xs
UG9zaXRpb247Ci0KLSAgICBDR1BvaW50IHNjcm9sbExheWVyUG9zaXRpb24gPSBtX3Njcm9sbExh
eWVyLmdldCgpLnBvc2l0aW9uOwotICAgIHJldHVybiBJbnRQb2ludCgtc2Nyb2xsTGF5ZXJQb3Np
dGlvbi54ICsgc2Nyb2xsT3JpZ2luKCkueCgpLCAtc2Nyb2xsTGF5ZXJQb3NpdGlvbi55ICsgc2Ny
b2xsT3JpZ2luKCkueSgpKTsKLX0KLQotdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZU1h
Yzo6c2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24pCi17
Ci0gICAgRmxvYXRQb2ludCBuZXdTY3JvbGxQb3NpdGlvbiA9IHNjcm9sbFBvc2l0aW9uOwotICAg
IG5ld1Njcm9sbFBvc2l0aW9uID0gbmV3U2Nyb2xsUG9zaXRpb24uc2hydW5rVG8obWF4aW11bVNj
cm9sbFBvc2l0aW9uKCkpOwotICAgIG5ld1Njcm9sbFBvc2l0aW9uID0gbmV3U2Nyb2xsUG9zaXRp
b24uZXhwYW5kZWRUbyhtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSk7Ci0KLSAgICBzZXRTY3JvbGxQ
b3NpdGlvbldpdGhvdXRDb250ZW50RWRnZUNvbnN0cmFpbnRzKG5ld1Njcm9sbFBvc2l0aW9uKTsK
LQotICAgIGlmIChzY3JvbGxpbmdUcmVlKCkuc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5h
YmxlZCgpKQotICAgICAgICBsb2dFeHBvc2VkVW5maWxsZWRBcmVhKCk7Ci19Ci0KLXZvaWQgU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWM6OnNldFNjcm9sbFBvc2l0aW9uV2l0aG91dENvbnRl
bnRFZGdlQ29uc3RyYWludHMoY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24pCi17Ci0g
ICAgdXBkYXRlTWFpbkZyYW1lUGluU3RhdGUoc2Nyb2xsUG9zaXRpb24pOwotCi0gICAgaWYgKHNo
b3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25TeW5jaHJvbm91c2x5KCkpIHsKLSAgICAgICAg
bV9wcm9iYWJsZU1haW5UaHJlYWRTY3JvbGxQb3NpdGlvbiA9IHNjcm9sbFBvc2l0aW9uOwotICAg
ICAgICBzY3JvbGxpbmdUcmVlKCkuc2Nyb2xsaW5nVHJlZU5vZGVEaWRTY3JvbGwoc2Nyb2xsaW5n
Tm9kZUlEKCksIHNjcm9sbFBvc2l0aW9uLCBTZXRTY3JvbGxpbmdMYXllclBvc2l0aW9uKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHNldFNjcm9sbExheWVyUG9zaXRpb24oc2Nyb2xs
UG9zaXRpb24pOwotICAgIHNjcm9sbGluZ1RyZWUoKS5zY3JvbGxpbmdUcmVlTm9kZURpZFNjcm9s
bChzY3JvbGxpbmdOb2RlSUQoKSwgc2Nyb2xsUG9zaXRpb24pOwotfQotCi12b2lkIFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlTWFjOjpzZXRTY3JvbGxMYXllclBvc2l0aW9uKGNvbnN0IEZsb2F0
UG9pbnQmIHBvc2l0aW9uKQotewotICAgIEFTU0VSVCghc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQ
b3NpdGlvblN5bmNocm9ub3VzbHkoKSk7Ci0gICAgbV9zY3JvbGxMYXllci5nZXQoKS5wb3NpdGlv
biA9IENHUG9pbnRNYWtlKC1wb3NpdGlvbi54KCkgKyBzY3JvbGxPcmlnaW4oKS54KCksIC1wb3Np
dGlvbi55KCkgKyBzY3JvbGxPcmlnaW4oKS55KCkpOwotCi0gICAgU2Nyb2xsQmVoYXZpb3JGb3JG
aXhlZEVsZW1lbnRzIGJlaGF2aW9yRm9yRml4ZWQgPSBzY3JvbGxCZWhhdmlvckZvckZpeGVkRWxl
bWVudHMoKTsKLSAgICBGbG9hdFBvaW50IHNjcm9sbE9mZnNldCA9IHBvc2l0aW9uIC0gdG9GbG9h
dFNpemUoc2Nyb2xsT3JpZ2luKCkpOwotICAgIEZsb2F0UmVjdCB2aWV3cG9ydFJlY3QoRmxvYXRQ
b2ludCgpLCB2aWV3cG9ydFNpemUoKSk7Ci0gICAgCi0gICAgLy8gRklYTUU6IHNjcm9sbE9mZnNl
dEZvckZpeGVkUG9zaXRpb24oKSBuZWVkcyB0byBkbyBmbG9hdCBtYXRoLgotICAgIEZsb2F0U2l6
ZSBzY3JvbGxPZmZzZXRGb3JGaXhlZENoaWxkcmVuID0gRnJhbWVWaWV3OjpzY3JvbGxPZmZzZXRG
b3JGaXhlZFBvc2l0aW9uKGVuY2xvc2luZ0xheW91dFJlY3Qodmlld3BvcnRSZWN0KSwKLSAgICAg
ICAgdG90YWxDb250ZW50c1NpemUoKSwgZmxvb3JlZEludFBvaW50KHNjcm9sbE9mZnNldCksIHNj
cm9sbE9yaWdpbigpLCBmcmFtZVNjYWxlRmFjdG9yKCksIGZhbHNlLCBiZWhhdmlvckZvckZpeGVk
LCBoZWFkZXJIZWlnaHQoKSwgZm9vdGVySGVpZ2h0KCkpOwotICAgIAotICAgIGlmIChtX2NvdW50
ZXJTY3JvbGxpbmdMYXllcikKLSAgICAgICAgbV9jb3VudGVyU2Nyb2xsaW5nTGF5ZXIuZ2V0KCku
cG9zaXRpb24gPSBGbG9hdFBvaW50KHNjcm9sbE9mZnNldEZvckZpeGVkQ2hpbGRyZW4pOwotCi0g
ICAgZmxvYXQgdG9wQ29udGVudEluc2V0ID0gdGhpcy0+dG9wQ29udGVudEluc2V0KCk7Ci0gICAg
aWYgKG1faW5zZXRDbGlwTGF5ZXIgJiYgbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXIgJiYgdG9wQ29u
dGVudEluc2V0KSB7Ci0gICAgICAgIG1faW5zZXRDbGlwTGF5ZXIuZ2V0KCkucG9zaXRpb24gPSBG
bG9hdFBvaW50KDAsIEZyYW1lVmlldzo6eVBvc2l0aW9uRm9ySW5zZXRDbGlwTGF5ZXIocG9zaXRp
b24sIHRvcENvbnRlbnRJbnNldCkpOwotICAgICAgICBtX3Njcm9sbGVkQ29udGVudHNMYXllci5n
ZXQoKS5wb3NpdGlvbiA9IEZsb2F0UG9pbnQobV9zY3JvbGxlZENvbnRlbnRzTGF5ZXIuZ2V0KCku
cG9zaXRpb24ueCwKLSAgICAgICAgICAgIEZyYW1lVmlldzo6eVBvc2l0aW9uRm9yUm9vdENvbnRl
bnRMYXllcihwb3NpdGlvbiwgdG9wQ29udGVudEluc2V0LCBoZWFkZXJIZWlnaHQoKSkpOwotICAg
ICAgICBpZiAobV9jb250ZW50U2hhZG93TGF5ZXIpCi0gICAgICAgICAgICBtX2NvbnRlbnRTaGFk
b3dMYXllci5nZXQoKS5wb3NpdGlvbiA9IG1fc2Nyb2xsZWRDb250ZW50c0xheWVyLmdldCgpLnBv
c2l0aW9uOwotICAgIH0KLQotICAgIGlmIChtX2hlYWRlckxheWVyIHx8IG1fZm9vdGVyTGF5ZXIp
IHsKLSAgICAgICAgLy8gR2VuZXJhbGx5IHRoZSBiYW5uZXJzIHNob3VsZCBoYXZlIHRoZSBzYW1l
IGhvcml6b250YWwtcG9zaXRpb24gY29tcHV0YXRpb24gYXMgYSBmaXhlZCBlbGVtZW50LiBIb3dl
dmVyLAotICAgICAgICAvLyB0aGUgYmFubmVycyBhcmUgbm90IGFmZmVjdGVkIGJ5IHRoZSBmcmFt
ZVNjYWxlRmFjdG9yKCksIHNvIGlmIHRoZXJlIGlzIGN1cnJlbnRseSBhIG5vbi0xIGZyYW1lU2Nh
bGVGYWN0b3IoKQotICAgICAgICAvLyB0aGVuIHdlIHNob3VsZCByZWNvbXB1dGUgc2Nyb2xsT2Zm
c2V0Rm9yRml4ZWRDaGlsZHJlbiBmb3IgdGhlIGJhbm5lciB3aXRoIGEgc2NhbGUgZmFjdG9yIG9m
IDEuCi0gICAgICAgIGZsb2F0IGhvcml6b250YWxTY3JvbGxPZmZzZXRGb3JCYW5uZXIgPSBzY3Jv
bGxPZmZzZXRGb3JGaXhlZENoaWxkcmVuLndpZHRoKCk7Ci0gICAgICAgIGlmIChmcmFtZVNjYWxl
RmFjdG9yKCkgIT0gMSkKLSAgICAgICAgICAgIGhvcml6b250YWxTY3JvbGxPZmZzZXRGb3JCYW5u
ZXIgPSBGcmFtZVZpZXc6OnNjcm9sbE9mZnNldEZvckZpeGVkUG9zaXRpb24oZW5jbG9zaW5nTGF5
b3V0UmVjdCh2aWV3cG9ydFJlY3QpLCB0b3RhbENvbnRlbnRzU2l6ZSgpLCBmbG9vcmVkSW50UG9p
bnQoc2Nyb2xsT2Zmc2V0KSwgc2Nyb2xsT3JpZ2luKCksIDEsIGZhbHNlLCBiZWhhdmlvckZvckZp
eGVkLCBoZWFkZXJIZWlnaHQoKSwgZm9vdGVySGVpZ2h0KCkpLndpZHRoKCk7Ci0KLSAgICAgICAg
aWYgKG1faGVhZGVyTGF5ZXIpCi0gICAgICAgICAgICBtX2hlYWRlckxheWVyLmdldCgpLnBvc2l0
aW9uID0gRmxvYXRQb2ludChob3Jpem9udGFsU2Nyb2xsT2Zmc2V0Rm9yQmFubmVyLCBGcmFtZVZp
ZXc6OnlQb3NpdGlvbkZvckhlYWRlckxheWVyKHBvc2l0aW9uLCB0b3BDb250ZW50SW5zZXQpKTsK
LQotICAgICAgICBpZiAobV9mb290ZXJMYXllcikKLSAgICAgICAgICAgIG1fZm9vdGVyTGF5ZXIu
Z2V0KCkucG9zaXRpb24gPSBGbG9hdFBvaW50KGhvcml6b250YWxTY3JvbGxPZmZzZXRGb3JCYW5u
ZXIsCi0gICAgICAgICAgICAgICAgRnJhbWVWaWV3Ojp5UG9zaXRpb25Gb3JGb290ZXJMYXllcihw
b3NpdGlvbiwgdG9wQ29udGVudEluc2V0LCB0b3RhbENvbnRlbnRzU2l6ZSgpLmhlaWdodCgpLCBm
b290ZXJIZWlnaHQoKSkpOwotICAgIH0KLQotICAgIGlmIChtX3ZlcnRpY2FsU2Nyb2xsYmFyUGFp
bnRlciB8fCBtX2hvcml6b250YWxTY3JvbGxiYXJQYWludGVyKSB7Ci0gICAgICAgIFtDQVRyYW5z
YWN0aW9uIGJlZ2luXTsKLSAgICAgICAgW0NBVHJhbnNhY3Rpb24gbG9ja107Ci0KLSAgICAgICAg
aWYgKFttX3ZlcnRpY2FsU2Nyb2xsYmFyUGFpbnRlciBzaG91bGRVc2VQcmVzZW50YXRpb25WYWx1
ZV0pIHsKLSAgICAgICAgICAgIGZsb2F0IHByZXNlbnRhdGlvblZhbHVlOwotICAgICAgICAgICAg
ZmxvYXQgb3ZlcmhhbmdBbW91bnQ7Ci0gICAgICAgICAgICBTY3JvbGxhYmxlQXJlYTo6Y29tcHV0
ZVNjcm9sbGJhclZhbHVlQW5kT3ZlcmhhbmcocG9zaXRpb24ueSgpLCB0b3RhbENvbnRlbnRzU2l6
ZSgpLmhlaWdodCgpLCB2aWV3cG9ydFJlY3QuaGVpZ2h0KCksIHByZXNlbnRhdGlvblZhbHVlLCBv
dmVyaGFuZ0Ftb3VudCk7Ci0gICAgICAgICAgICBbbV92ZXJ0aWNhbFNjcm9sbGJhclBhaW50ZXIg
c2V0UHJlc2VudGF0aW9uVmFsdWU6cHJlc2VudGF0aW9uVmFsdWVdOwotICAgICAgICB9Ci0KLSAg
ICAgICAgaWYgKFttX2hvcml6b250YWxTY3JvbGxiYXJQYWludGVyIHNob3VsZFVzZVByZXNlbnRh
dGlvblZhbHVlXSkgewotICAgICAgICAgICAgZmxvYXQgcHJlc2VudGF0aW9uVmFsdWU7Ci0gICAg
ICAgICAgICBmbG9hdCBvdmVyaGFuZ0Ftb3VudDsKLSAgICAgICAgICAgIFNjcm9sbGFibGVBcmVh
Ojpjb21wdXRlU2Nyb2xsYmFyVmFsdWVBbmRPdmVyaGFuZyhwb3NpdGlvbi54KCksIHRvdGFsQ29u
dGVudHNTaXplKCkud2lkdGgoKSwgdmlld3BvcnRSZWN0LndpZHRoKCksIHByZXNlbnRhdGlvblZh
bHVlLCBvdmVyaGFuZ0Ftb3VudCk7Ci0gICAgICAgICAgICBbbV9ob3Jpem9udGFsU2Nyb2xsYmFy
UGFpbnRlciBzZXRQcmVzZW50YXRpb25WYWx1ZTpwcmVzZW50YXRpb25WYWx1ZV07Ci0gICAgICAg
IH0KLSAgICAgICAgW0NBVHJhbnNhY3Rpb24gdW5sb2NrXTsKLSAgICAgICAgW0NBVHJhbnNhY3Rp
b24gY29tbWl0XTsKLSAgICB9Ci0KLSAgICBpZiAoIW1fY2hpbGRyZW4pCi0gICAgICAgIHJldHVy
bjsKLQotICAgIHZpZXdwb3J0UmVjdC5zZXRMb2NhdGlvbihGbG9hdFBvaW50KCkgKyBzY3JvbGxP
ZmZzZXRGb3JGaXhlZENoaWxkcmVuKTsKLQotICAgIHNpemVfdCBzaXplID0gbV9jaGlsZHJlbi0+
c2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBt
X2NoaWxkcmVuLT5hdChpKS0+cGFyZW50U2Nyb2xsUG9zaXRpb25EaWRDaGFuZ2Uodmlld3BvcnRS
ZWN0LCBGbG9hdFNpemUoKSk7Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVN
YWM6OnVwZGF0ZUxheWVyc0FmdGVyVmlld3BvcnRDaGFuZ2UoY29uc3QgRmxvYXRSZWN0JiwgZG91
YmxlKQotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1GbG9hdFBvaW50IFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlTWFjOjptaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdAot
ewotICAgIEludFBvaW50IHBvc2l0aW9uOwotICAgIAotICAgIGlmIChzY3JvbGxpbmdUcmVlKCku
cm9vdE5vZGUoKSA9PSB0aGlzICYmIHNjcm9sbGluZ1RyZWUoKS5zY3JvbGxQaW5uaW5nQmVoYXZp
b3IoKSA9PSBQaW5Ub0JvdHRvbSkKLSAgICAgICAgcG9zaXRpb24uc2V0WShtYXhpbXVtU2Nyb2xs
UG9zaXRpb24oKS55KCkpOwotCi0gICAgcmV0dXJuIHBvc2l0aW9uOwotfQotCi1GbG9hdFBvaW50
IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlTWFjOjptYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSBj
b25zdAotewotICAgIEZsb2F0UG9pbnQgcG9zaXRpb24odG90YWxDb250ZW50c1NpemVGb3JSdWJi
ZXJCYW5kKCkud2lkdGgoKSAtIHZpZXdwb3J0U2l6ZSgpLndpZHRoKCksCi0gICAgICAgIHRvdGFs
Q29udGVudHNTaXplRm9yUnViYmVyQmFuZCgpLmhlaWdodCgpIC0gdmlld3BvcnRTaXplKCkuaGVp
Z2h0KCkpOwotCi0gICAgcG9zaXRpb24gPSBwb3NpdGlvbi5leHBhbmRlZFRvKEZsb2F0UG9pbnQo
KSk7Ci0KLSAgICBpZiAoc2Nyb2xsaW5nVHJlZSgpLnJvb3ROb2RlKCkgPT0gdGhpcyAmJiBzY3Jv
bGxpbmdUcmVlKCkuc2Nyb2xsUGlubmluZ0JlaGF2aW9yKCkgPT0gUGluVG9Ub3ApCi0gICAgICAg
IHBvc2l0aW9uLnNldFkobWluaW11bVNjcm9sbFBvc2l0aW9uKCkueSgpKTsKLQotICAgIHJldHVy
biBwb3NpdGlvbjsKLX0KLQotdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZU1hYzo6c2Ny
b2xsQnkoY29uc3QgSW50U2l6ZSYgb2Zmc2V0KQotewotICAgIHNldFNjcm9sbFBvc2l0aW9uKHNj
cm9sbFBvc2l0aW9uKCkgKyBvZmZzZXQpOwotfQotCi12b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlTWFjOjpzY3JvbGxCeVdpdGhvdXRDb250ZW50RWRnZUNvbnN0cmFpbnRzKGNvbnN0IElu
dFNpemUmIG9mZnNldCkKLXsKLSAgICBzZXRTY3JvbGxQb3NpdGlvbldpdGhvdXRDb250ZW50RWRn
ZUNvbnN0cmFpbnRzKHNjcm9sbFBvc2l0aW9uKCkgKyBvZmZzZXQpOwotfQotCi12b2lkIFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlTWFjOjp1cGRhdGVNYWluRnJhbWVQaW5TdGF0ZShjb25zdCBG
bG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbikKLXsKLSAgICBib29sIHBpbm5lZFRvVGhlTGVmdCA9
IHNjcm9sbFBvc2l0aW9uLngoKSA8PSBtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKS54KCk7Ci0gICAg
Ym9vbCBwaW5uZWRUb1RoZVJpZ2h0ID0gc2Nyb2xsUG9zaXRpb24ueCgpID49IG1heGltdW1TY3Jv
bGxQb3NpdGlvbigpLngoKTsKLSAgICBib29sIHBpbm5lZFRvVGhlVG9wID0gc2Nyb2xsUG9zaXRp
b24ueSgpIDw9IG1pbmltdW1TY3JvbGxQb3NpdGlvbigpLnkoKTsKLSAgICBib29sIHBpbm5lZFRv
VGhlQm90dG9tID0gc2Nyb2xsUG9zaXRpb24ueSgpID49IG1heGltdW1TY3JvbGxQb3NpdGlvbigp
LnkoKTsKLQotICAgIHNjcm9sbGluZ1RyZWUoKS5zZXRNYWluRnJhbWVQaW5TdGF0ZShwaW5uZWRU
b1RoZUxlZnQsIHBpbm5lZFRvVGhlUmlnaHQsIHBpbm5lZFRvVGhlVG9wLCBwaW5uZWRUb1RoZUJv
dHRvbSk7Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWM6OmxvZ0V4cG9z
ZWRVbmZpbGxlZEFyZWEoKQotewotICAgIFJlZ2lvbiBwYWludGVkVmlzaWJsZVRpbGVzOwotCi0g
ICAgRGVxdWU8Q0FMYXllcio+IGxheWVyUXVldWU7Ci0gICAgbGF5ZXJRdWV1ZS5hcHBlbmQobV9z
Y3JvbGxMYXllci5nZXQoKSk7Ci0gICAgUGxhdGZvcm1MYXllckxpc3QgdGlsZXM7Ci0KLSAgICB3
aGlsZSAoIWxheWVyUXVldWUuaXNFbXB0eSgpICYmIHRpbGVzLmlzRW1wdHkoKSkgewotICAgICAg
ICBDQUxheWVyKiBsYXllciA9IGxheWVyUXVldWUudGFrZUZpcnN0KCk7Ci0gICAgICAgIE5TQXJy
YXkqIHN1YmxheWVycyA9IFtbbGF5ZXIgc3VibGF5ZXJzXSBjb3B5XTsKLQotICAgICAgICAvLyBJ
ZiB0aGlzIGxheWVyIGlzIHRoZSBwYXJlbnQgb2YgYSB0aWxlLCBpdCBpcyB0aGUgcGFyZW50IG9m
IGFsbCBvZiB0aGUgdGlsZXMgYW5kIG5vdGhpbmcgZWxzZS4KLSAgICAgICAgaWYgKFtbW3N1Ymxh
eWVycyBvYmplY3RBdEluZGV4OjBdIHZhbHVlRm9yS2V5OkAiaXNUaWxlIl0gYm9vbFZhbHVlXSkg
ewotICAgICAgICAgICAgZm9yIChDQUxheWVyKiBzdWJsYXllciBpbiBzdWJsYXllcnMpCi0gICAg
ICAgICAgICAgICAgdGlsZXMuYXBwZW5kKHN1YmxheWVyKTsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIGZvciAoQ0FMYXllciogc3VibGF5ZXIgaW4gc3VibGF5ZXJzKQotICAgICAgICAg
ICAgICAgIGxheWVyUXVldWUuYXBwZW5kKHN1YmxheWVyKTsKLSAgICAgICAgfQotCi0gICAgICAg
IFtzdWJsYXllcnMgcmVsZWFzZV07Ci0gICAgfQotCi0gICAgRmxvYXRQb2ludCBzY3JvbGxQb3Np
dGlvbiA9IHRoaXMtPnNjcm9sbFBvc2l0aW9uKCk7Ci0gICAgRmxvYXRSZWN0IHZpZXdQb3J0UmVj
dChGbG9hdFBvaW50KCksIHZpZXdwb3J0U2l6ZSgpKTsKLSAgICB1bnNpZ25lZCB1bmZpbGxlZEFy
ZWEgPSBUaWxlQ29udHJvbGxlcjo6YmxhbmtQaXhlbENvdW50Rm9yVGlsZXModGlsZXMsIHZpZXdQ
b3J0UmVjdCwgSW50UG9pbnQoLXNjcm9sbFBvc2l0aW9uLngoKSwgLXNjcm9sbFBvc2l0aW9uLnko
KSkpOwotCi0gICAgaWYgKHVuZmlsbGVkQXJlYSB8fCBtX2xhc3RTY3JvbGxIYWRVbmZpbGxlZFBp
eGVscykKLSAgICAgICAgV1RGTG9nQWx3YXlzKCJTQ1JPTExJTkc6IEV4cG9zZWQgdGlsZWxlc3Mg
YXJlYS4gVGltZTogJWYgVW5maWxsZWQgUGl4ZWxzOiAldVxuIiwgV1RGOjptb25vdG9uaWNhbGx5
SW5jcmVhc2luZ1RpbWUoKSwgdW5maWxsZWRBcmVhKTsKLQotICAgIG1fbGFzdFNjcm9sbEhhZFVu
ZmlsbGVkUGl4ZWxzID0gdW5maWxsZWRBcmVhOwotfQotCi1zdGF0aWMgdm9pZCBsb2dUaHJlYWRl
ZFNjcm9sbGluZ01vZGUodW5zaWduZWQgc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKQotewot
ICAgIGlmIChzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMpIHsKLSAgICAgICAgU3RyaW5nQnVp
bGRlciByZWFzb25zRGVzY3JpcHRpb247Ci0KLSAgICAgICAgaWYgKHN5bmNocm9ub3VzU2Nyb2xs
aW5nUmVhc29ucyAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpGb3JjZWRPbk1haW5UaHJlYWQpCi0g
ICAgICAgICAgICByZWFzb25zRGVzY3JpcHRpb24uYXBwZW5kKCJmb3JjZWQsIik7Ci0gICAgICAg
IGlmIChzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6
SGFzU2xvd1JlcGFpbnRPYmplY3RzKQotICAgICAgICAgICAgcmVhc29uc0Rlc2NyaXB0aW9uLmFw
cGVuZCgic2xvdy1yZXBhaW50IG9iamVjdHMsIik7Ci0gICAgICAgIGlmIChzeW5jaHJvbm91c1Nj
cm9sbGluZ1JlYXNvbnMgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6SGFzVmlld3BvcnRDb25zdHJh
aW5lZE9iamVjdHNXaXRob3V0U3VwcG9ydGluZ0ZpeGVkTGF5ZXJzKQotICAgICAgICAgICAgcmVh
c29uc0Rlc2NyaXB0aW9uLmFwcGVuZCgidmlld3BvcnQtY29uc3RyYWluZWQgb2JqZWN0cywiKTsK
LSAgICAgICAgaWYgKHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyAmIFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yOjpIYXNOb25MYXllclZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzKQotICAgICAgICAg
ICAgcmVhc29uc0Rlc2NyaXB0aW9uLmFwcGVuZCgibm9uLWxheWVyIHZpZXdwb3J0LWNvbnN0cmFp
bmVkIG9iamVjdHMsIik7Ci0gICAgICAgIGlmIChzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMg
JiBTY3JvbGxpbmdDb29yZGluYXRvcjo6SXNJbWFnZURvY3VtZW50KQotICAgICAgICAgICAgcmVh
c29uc0Rlc2NyaXB0aW9uLmFwcGVuZCgiaW1hZ2UgZG9jdW1lbnQsIik7Ci0KLSAgICAgICAgLy8g
U3RyaXAgdGhlIHRyYWlsaW5nIGNvbW1hLgotICAgICAgICBTdHJpbmcgcmVhc29uc0Rlc2NyaXB0
aW9uVHJpbW1lZCA9IHJlYXNvbnNEZXNjcmlwdGlvbi50b1N0cmluZygpLmxlZnQocmVhc29uc0Rl
c2NyaXB0aW9uLmxlbmd0aCgpIC0gMSk7Ci0KLSAgICAgICAgV1RGTG9nQWx3YXlzKCJTQ1JPTExJ
Tkc6IFN3aXRjaGluZyB0byBtYWluLXRocmVhZCBzY3JvbGxpbmcgbW9kZS4gVGltZTogJWYgUmVh
c29uKHMpOiAlc1xuIiwgV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSwgcmVhc29u
c0Rlc2NyaXB0aW9uVHJpbW1lZC5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgfSBlbHNlCi0gICAgICAg
IFdURkxvZ0Fsd2F5cygiU0NST0xMSU5HOiBTd2l0Y2hpbmcgdG8gdGhyZWFkZWQgc2Nyb2xsaW5n
IG1vZGUuIFRpbWU6ICVmXG4iLCBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpKTsK
LX0KLQotdm9pZCBsb2dXaGVlbEV2ZW50SGFuZGxlckNvdW50Q2hhbmdlZCh1bnNpZ25lZCBjb3Vu
dCkKLXsKLSAgICBXVEZMb2dBbHdheXMoIlNDUk9MTElORzogV2hlZWwgZXZlbnQgaGFuZGxlciBj
b3VudCBjaGFuZ2VkLiBUaW1lOiAlZiBDb3VudDogJXVcbiIsIFdURjo6bW9ub3RvbmljYWxseUlu
Y3JlYXNpbmdUaW1lKCksIGNvdW50KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggYmE4YTUyNGM4YmRlZWJi
M2NlYTVhYmVjOWY0NjI1NmEzNTUzZDZkOC4uN2NjM2RlODc5M2RjNTA4NzRiZjJiYzk3MTM4NDRl
MTM0NWNmMDg1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHAKQEAgLTM2NTIsMTMgKzM2NTIsMTQgQEAgdm9pZCBSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OnVwZGF0ZVNjcm9sbENvb3JkaW5hdGVkTGF5ZXIoUmVuZGVyTGF5ZXImIGxh
eWVyLCBTY3IKICAgICAgICAgICAgIHNjcm9sbGVkQ29udGVudHNMYXllciA9IG1fcm9vdENvbnRl
bnRMYXllci5nZXQoKTsKICAgICAgICAgICAgIGNvdW50ZXJTY3JvbGxpbmdMYXllciA9IGZpeGVk
Um9vdEJhY2tncm91bmRMYXllcigpOwogICAgICAgICAgICAgaW5zZXRDbGlwTGF5ZXIgPSBjbGlw
TGF5ZXIoKTsKLSAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT51cGRhdGVTY3JvbGxp
bmdOb2RlKG5vZGVJRCwgc2Nyb2xsaW5nTGF5ZXIsIHNjcm9sbGVkQ29udGVudHNMYXllciwgY291
bnRlclNjcm9sbGluZ0xheWVyLCBpbnNldENsaXBMYXllcik7CisgICAgICAgICAgICBzY3JvbGxp
bmdDb29yZGluYXRvci0+dXBkYXRlRnJhbWVTY3JvbGxpbmdOb2RlKG5vZGVJRCwgc2Nyb2xsaW5n
TGF5ZXIsIGNvdW50ZXJTY3JvbGxpbmdMYXllciwgaW5zZXRDbGlwTGF5ZXIpOwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OlNjcm9sbGluZ0dlb21l
dHJ5IHNjcm9sbGluZ0dlb21ldHJ5OwogICAgICAgICAgICAgc2Nyb2xsaW5nR2VvbWV0cnkuc2Ny
b2xsT3JpZ2luID0gbGF5ZXIuc2Nyb2xsT3JpZ2luKCk7CiAgICAgICAgICAgICBzY3JvbGxpbmdH
ZW9tZXRyeS5zY3JvbGxQb3NpdGlvbiA9IGxheWVyLnNjcm9sbFBvc2l0aW9uKCk7CisgICAgICAg
ICAgICBzY3JvbGxpbmdHZW9tZXRyeS5zY3JvbGxhYmxlQXJlYVNpemUgPSBsYXllci52aXNpYmxl
U2l6ZSgpOwogICAgICAgICAgICAgc2Nyb2xsaW5nR2VvbWV0cnkuY29udGVudFNpemUgPSBsYXll
ci5jb250ZW50c1NpemUoKTsKLSAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT51cGRh
dGVTY3JvbGxpbmdOb2RlKG5vZGVJRCwgc2Nyb2xsaW5nTGF5ZXIsIHNjcm9sbGVkQ29udGVudHNM
YXllciwgY291bnRlclNjcm9sbGluZ0xheWVyLCBpbnNldENsaXBMYXllciwgJnNjcm9sbGluZ0dl
b21ldHJ5KTsKKyAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT51cGRhdGVPdmVyZmxv
d1Njcm9sbGluZ05vZGUobm9kZUlELCBzY3JvbGxpbmdMYXllciwgc2Nyb2xsZWRDb250ZW50c0xh
eWVyLCAmc2Nyb2xsaW5nR2VvbWV0cnkpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdDb29yZGlu
YXRvclRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TY3JvbGxpbmcvUmVt
b3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKaW5kZXggMWJmNDgzZTBjMzE4
NTA2OTljZmE4YWZlNWRkNDJmYzFmZWM0NmI5MC4uNDhhMmJiNGQwYzZkZmNjOTlkNGNmZDhmYmQ3
NDZhMDlhMmNmOWJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1Njcm9sbGlu
Zy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNh
Y3Rpb24uY3BwCkBAIC0zMiw3ICszMiw4IEBACiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xs
aW5nU3RhdGVTY3JvbGxpbmdOb2RlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxpbmdTdGF0
ZUZyYW1lU2Nyb2xsaW5nTm9kZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsaW5nU3RhdGVP
dmVyZmxvd1Njcm9sbGluZ05vZGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGluZ1N0YXRl
U3RpY2t5Tm9kZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsaW5nU3RhdGVUcmVlLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9UZXh0U3RyZWFtLmg+CkBAIC01Niw3ICs1NywxNyBAQCB0ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT4gewog
ICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImLCBjb25zdCBTY3JvbGxpbmdT
dGF0ZVNjcm9sbGluZ05vZGUmKTsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNv
ZGVyJiwgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlJik7CiB9OwotCisgICAgCit0ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2Rl
PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYsIGNvbnN0IFNjcm9s
bGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlJik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFy
Z3VtZW50RGVjb2RlciYsIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlJik7Cit9Owor
ICAgIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0ZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZT4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29k
ZXImLCBjb25zdCBTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZSYpOworICAgIHN0
YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXImLCBTY3JvbGxpbmdTdGF0ZU92ZXJmbG93
U2Nyb2xsaW5nTm9kZSYpOworfTsKKyAgICAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8U2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGU+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJn
dW1lbnRFbmNvZGVyJiwgY29uc3QgU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGUmKTsKICAgICBzdGF0
aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyJiwgU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGUm
KTsKQEAgLTEwMSw0OCArMTEyLDU5IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0
ZU5vZGU+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBTY3JvbGxpCiB9CiAKICNk
ZWZpbmUgU0NST0xMSU5HX05PREVfRU5DT0RFKHByb3BlcnR5LCBnZXR0ZXIpIFwKLSAgICBpZiAo
bm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpwcm9w
ZXJ0eSkpIFwKKyAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkocHJvcGVydHkpKSBcCiAg
ICAgICAgIGVuY29kZXIgPDwgbm9kZS5nZXR0ZXIoKTsKIAogI2RlZmluZSBTQ1JPTExJTkdfTk9E
RV9FTkNPREVfRU5VTShwcm9wZXJ0eSwgZ2V0dGVyKSBcCi0gICAgaWYgKG5vZGUuaGFzQ2hhbmdl
ZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6cHJvcGVydHkpKSBcCisgICAg
aWYgKG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KHByb3BlcnR5KSkgXAogICAgICAgICBlbmNvZGVy
LmVuY29kZUVudW0obm9kZS5nZXR0ZXIoKSk7CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxTY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGU+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUmIG5vZGUpCiB7CiAgICAgZW5jb2RlciA8
PCBzdGF0aWNfY2FzdDxjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmPihub2RlKTsKICAgICAKLSAg
ICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoVmlld3BvcnRTaXplLCB2aWV3cG9ydFNpemUpCi0gICAg
U0NST0xMSU5HX05PREVfRU5DT0RFKFRvdGFsQ29udGVudHNTaXplLCB0b3RhbENvbnRlbnRzU2l6
ZSkKLSAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsUG9zaXRpb24sIHNjcm9sbFBvc2l0
aW9uKQotICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxPcmlnaW4sIHNjcm9sbE9yaWdp
bikKLSAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoRnJhbWVTY2FsZUZhY3RvciwgZnJhbWVTY2Fs
ZUZhY3RvcikKLSAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoTm9uRmFzdFNjcm9sbGFibGVSZWdp
b24sIG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKQotICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShX
aGVlbEV2ZW50SGFuZGxlckNvdW50LCB3aGVlbEV2ZW50SGFuZGxlckNvdW50KQotICAgIFNDUk9M
TElOR19OT0RFX0VOQ09ERShSZWFzb25zRm9yU3luY2hyb25vdXNTY3JvbGxpbmcsIHN5bmNocm9u
b3VzU2Nyb2xsaW5nUmVhc29ucykKLSAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsYWJs
ZUFyZWFQYXJhbXMsIHNjcm9sbGFibGVBcmVhUGFyYW1ldGVycykKLSAgICBTQ1JPTExJTkdfTk9E
RV9FTkNPREVfRU5VTShCZWhhdmlvckZvckZpeGVkRWxlbWVudHMsIHNjcm9sbEJlaGF2aW9yRm9y
Rml4ZWRFbGVtZW50cykKLSAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoUmVxdWVzdGVkU2Nyb2xs
UG9zaXRpb24sIHJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKQotICAgIFNDUk9MTElOR19OT0RFX0VO
Q09ERShSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbiwgcmVxdWVzdGVkU2Nyb2xsUG9zaXRpb25SZXBy
ZXNlbnRzUHJvZ3JhbW1hdGljU2Nyb2xsKQotICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShIZWFk
ZXJIZWlnaHQsIGhlYWRlckhlaWdodCkKLSAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoRm9vdGVy
SGVpZ2h0LCBmb290ZXJIZWlnaHQpCi0gICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFRvcENvbnRl
bnRJbnNldCwgdG9wQ29udGVudEluc2V0KQotCi0gICAgaWYgKG5vZGUuaGFzQ2hhbmdlZFByb3Bl
cnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsZWRDb250ZW50c0xheWVyKSkK
LSAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxh
eWVySUQ+KG5vZGUuc2Nyb2xsZWRDb250ZW50c0xheWVyKCkpOworICAgIFNDUk9MTElOR19OT0RF
X0VOQ09ERShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGFibGVBcmVhU2l6ZSwg
c2Nyb2xsYWJsZUFyZWFTaXplKQorICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdT
dGF0ZVNjcm9sbGluZ05vZGU6OlRvdGFsQ29udGVudHNTaXplLCB0b3RhbENvbnRlbnRzU2l6ZSkK
KyAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpT
Y3JvbGxQb3NpdGlvbiwgc2Nyb2xsUG9zaXRpb24pCisgICAgU0NST0xMSU5HX05PREVfRU5DT0RF
KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsT3JpZ2luLCBzY3JvbGxPcmlnaW4p
CisgICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6
U2Nyb2xsYWJsZUFyZWFQYXJhbXMsIHNjcm9sbGFibGVBcmVhUGFyYW1ldGVycykKKyAgICBTQ1JP
TExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpSZXF1ZXN0ZWRT
Y3JvbGxQb3NpdGlvbiwgcmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24pCisgICAgU0NST0xMSU5HX05P
REVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6UmVxdWVzdGVkU2Nyb2xsUG9z
aXRpb24sIHJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uUmVwcmVzZW50c1Byb2dyYW1tYXRpY1Njcm9s
bCkKK30KIAotICAgIGlmIChub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGU6OkNvdW50ZXJTY3JvbGxpbmdMYXllcikpCit2b2lkIEFyZ3VtZW50Q29kZXI8
U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZSYgbm9kZSkK
K3sKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGNvbnN0IFNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZSY+KG5vZGUpOworICAgIAorICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxp
bmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6RnJhbWVTY2FsZUZhY3RvciwgZnJhbWVTY2FsZUZh
Y3RvcikKKyAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9s
bGluZ05vZGU6Ok5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uLCBub25GYXN0U2Nyb2xsYWJsZVJlZ2lv
bikKKyAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGlu
Z05vZGU6OldoZWVsRXZlbnRIYW5kbGVyQ291bnQsIHdoZWVsRXZlbnRIYW5kbGVyQ291bnQpCisg
ICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2Rl
OjpSZWFzb25zRm9yU3luY2hyb25vdXNTY3JvbGxpbmcsIHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVh
c29ucykKKyAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREVfRU5VTShTY3JvbGxpbmdTdGF0ZUZyYW1l
U2Nyb2xsaW5nTm9kZTo6QmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzLCBzY3JvbGxCZWhhdmlvckZv
ckZpeGVkRWxlbWVudHMpCisgICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRl
RnJhbWVTY3JvbGxpbmdOb2RlOjpIZWFkZXJIZWlnaHQsIGhlYWRlckhlaWdodCkKKyAgICBTQ1JP
TExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkZvb3Rl
ckhlaWdodCwgZm9vdGVySGVpZ2h0KQorICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxp
bmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6VG9wQ29udGVudEluc2V0LCB0b3BDb250ZW50SW5z
ZXQpCisKKyAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFt
ZVNjcm9sbGluZ05vZGU6OkNvdW50ZXJTY3JvbGxpbmdMYXllcikpCiAgICAgICAgIGVuY29kZXIg
PDwgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEPihub2RlLmNvdW50
ZXJTY3JvbGxpbmdMYXllcigpKTsKIAotICAgIGlmIChub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShT
Y3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6Okluc2V0Q2xpcExheWVyKSkKKyAgICBpZiAobm9k
ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6Oklu
c2V0Q2xpcExheWVyKSkKICAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxHcmFwaGljc0xh
eWVyOjpQbGF0Zm9ybUxheWVySUQ+KG5vZGUuaW5zZXRDbGlwTGF5ZXIoKSk7CiAKLSAgICBpZiAo
bm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpDb250
ZW50U2hhZG93TGF5ZXIpKQorICAgIGlmIChub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxp
bmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6Q29udGVudFNoYWRvd0xheWVyKSkKICAgICAgICAg
ZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+KG5v
ZGUuY29udGVudFNoYWRvd0xheWVyKCkpOwogfQogCit2b2lkIEFyZ3VtZW50Q29kZXI8U2Nyb2xs
aW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGU+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZSYgbm9kZSkK
K3sKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGNvbnN0IFNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZSY+KG5vZGUpOworICAgIAorICAgIGlmIChub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShT
Y3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZTo6U2Nyb2xsZWRDb250ZW50c0xheWVy
KSkKKyAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyOjpQbGF0Zm9y
bUxheWVySUQ+KG5vZGUuc2Nyb2xsZWRDb250ZW50c0xheWVyKCkpOworfQorCiAjZGVmaW5lIFND
Uk9MTElOR19OT0RFX0RFQ09ERShwcm9wZXJ0eSwgdHlwZSwgc2V0dGVyKSBcCi0gICAgaWYgKG5v
ZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6cHJvcGVy
dHkpKSB7IFwKKyAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkocHJvcGVydHkpKSB7IFwK
ICAgICAgICAgdHlwZSBkZWNvZGVkVmFsdWU7IFwKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShkZWNvZGVkVmFsdWUpKSBcCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IFwKQEAgLTE1MCw3
ICsxNzIsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2Rl
Pjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcgogICAgIH0KIAogI2RlZmluZSBTQ1JP
TExJTkdfTk9ERV9ERUNPREVfRU5VTShwcm9wZXJ0eSwgdHlwZSwgc2V0dGVyKSBcCi0gICAgaWYg
KG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6cHJv
cGVydHkpKSB7IFwKKyAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkocHJvcGVydHkpKSB7
IFwKICAgICAgICAgdHlwZSBkZWNvZGVkVmFsdWU7IFwKICAgICAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZUVudW0oZGVjb2RlZFZhbHVlKSkgXAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyBcCkBA
IC0xNjIsMTcgKzE4NCwxMiBAQCBib29sIEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlcgogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoc3RhdGljX2Nhc3Q8U2Nyb2xsaW5nU3RhdGVOb2RlJj4obm9kZSkpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoVmlld3BvcnRT
aXplLCBGbG9hdFNpemUsIHNldFZpZXdwb3J0U2l6ZSk7Ci0gICAgU0NST0xMSU5HX05PREVfREVD
T0RFKFRvdGFsQ29udGVudHNTaXplLCBJbnRTaXplLCBzZXRUb3RhbENvbnRlbnRzU2l6ZSk7Ci0g
ICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbFBvc2l0aW9uLCBGbG9hdFBvaW50LCBzZXRT
Y3JvbGxQb3NpdGlvbik7Ci0gICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbE9yaWdpbiwg
SW50UG9pbnQsIHNldFNjcm9sbE9yaWdpbik7Ci0gICAgU0NST0xMSU5HX05PREVfREVDT0RFKEZy
YW1lU2NhbGVGYWN0b3IsIGZsb2F0LCBzZXRGcmFtZVNjYWxlRmFjdG9yKTsKLSAgICBTQ1JPTExJ
TkdfTk9ERV9ERUNPREUoTm9uRmFzdFNjcm9sbGFibGVSZWdpb24sIFJlZ2lvbiwgc2V0Tm9uRmFz
dFNjcm9sbGFibGVSZWdpb24pOwotICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShXaGVlbEV2ZW50
SGFuZGxlckNvdW50LCBpbnQsIHNldFdoZWVsRXZlbnRIYW5kbGVyQ291bnQpOwotICAgIFNDUk9M
TElOR19OT0RFX0RFQ09ERShSZWFzb25zRm9yU3luY2hyb25vdXNTY3JvbGxpbmcsIFN5bmNocm9u
b3VzU2Nyb2xsaW5nUmVhc29ucywgc2V0U3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKTsKLSAg
ICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsYWJsZUFyZWFQYXJhbXMsIFNjcm9sbGFibGVB
cmVhUGFyYW1ldGVycywgc2V0U2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzKTsKLSAgICBTQ1JPTExJ
TkdfTk9ERV9ERUNPREVfRU5VTShCZWhhdmlvckZvckZpeGVkRWxlbWVudHMsIFNjcm9sbEJlaGF2
aW9yRm9yRml4ZWRFbGVtZW50cywgc2V0U2Nyb2xsQmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzKTsK
LQorICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6
OlNjcm9sbGFibGVBcmVhU2l6ZSwgRmxvYXRTaXplLCBzZXRTY3JvbGxhYmxlQXJlYVNpemUpOwor
ICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlRv
dGFsQ29udGVudHNTaXplLCBGbG9hdFNpemUsIHNldFRvdGFsQ29udGVudHNTaXplKTsKKyAgICBT
Q1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxQ
b3NpdGlvbiwgRmxvYXRQb2ludCwgc2V0U2Nyb2xsUG9zaXRpb24pOworICAgIFNDUk9MTElOR19O
T0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbE9yaWdpbiwgSW50
UG9pbnQsIHNldFNjcm9sbE9yaWdpbik7CisgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9s
bGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsYWJsZUFyZWFQYXJhbXMsIFNjcm9sbGFibGVB
cmVhUGFyYW1ldGVycywgc2V0U2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzKTsKKyAgICAKICAgICBp
ZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpS
ZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbikpIHsKICAgICAgICAgRmxvYXRQb2ludCBzY3JvbGxQb3Np
dGlvbjsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzY3JvbGxQb3NpdGlvbikpCkBAIC0x
ODUsMzYgKzIwMiw1OCBAQCBib29sIEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlcgogICAgICAgICBub2RlLnNl
dFJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKHNjcm9sbFBvc2l0aW9uLCByZXByZXNlbnRzUHJvZ3Jh
bW1hdGljU2Nyb2xsKTsKICAgICB9CiAKLSAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoSGVhZGVy
SGVpZ2h0LCBpbnQsIHNldEhlYWRlckhlaWdodCk7Ci0gICAgU0NST0xMSU5HX05PREVfREVDT0RF
KEZvb3RlckhlaWdodCwgaW50LCBzZXRGb290ZXJIZWlnaHQpOwotICAgIFNDUk9MTElOR19OT0RF
X0RFQ09ERShUb3BDb250ZW50SW5zZXQsIGZsb2F0LCBzZXRUb3BDb250ZW50SW5zZXQpOworICAg
IHJldHVybiB0cnVlOworfQorCitib29sIEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVGcmFt
ZVNjcm9sbGluZ05vZGU+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBTY3JvbGxp
bmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZSYgbm9kZSkKK3sKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHN0YXRpY19jYXN0PFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSY+KG5vZGUpKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGlu
Z1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpGcmFtZVNjYWxlRmFjdG9yLCBmbG9hdCwgc2V0RnJh
bWVTY2FsZUZhY3Rvcik7CisgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRl
RnJhbWVTY3JvbGxpbmdOb2RlOjpOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbiwgUmVnaW9uLCBzZXRO
b25GYXN0U2Nyb2xsYWJsZVJlZ2lvbik7CisgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9s
bGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpXaGVlbEV2ZW50SGFuZGxlckNvdW50LCBpbnQs
IHNldFdoZWVsRXZlbnRIYW5kbGVyQ291bnQpOworICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShT
Y3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6UmVhc29uc0ZvclN5bmNocm9ub3VzU2Ny
b2xsaW5nLCBTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMsIHNldFN5bmNocm9ub3VzU2Nyb2xs
aW5nUmVhc29ucyk7CisgICAgU0NST0xMSU5HX05PREVfREVDT0RFX0VOVU0oU2Nyb2xsaW5nU3Rh
dGVGcmFtZVNjcm9sbGluZ05vZGU6OkJlaGF2aW9yRm9yRml4ZWRFbGVtZW50cywgU2Nyb2xsQmVo
YXZpb3JGb3JGaXhlZEVsZW1lbnRzLCBzZXRTY3JvbGxCZWhhdmlvckZvckZpeGVkRWxlbWVudHMp
OwogCi0gICAgaWYgKG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZTo6U2Nyb2xsZWRDb250ZW50c0xheWVyKSkgeworICAgIFNDUk9MTElOR19OT0RFX0RF
Q09ERShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6SGVhZGVySGVpZ2h0LCBpbnQs
IHNldEhlYWRlckhlaWdodCk7CisgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0
YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpGb290ZXJIZWlnaHQsIGludCwgc2V0Rm9vdGVySGVpZ2h0
KTsKKyAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGlu
Z05vZGU6OlRvcENvbnRlbnRJbnNldCwgZmxvYXQsIHNldFRvcENvbnRlbnRJbnNldCk7CisKKyAg
ICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGlu
Z05vZGU6OkNvdW50ZXJTY3JvbGxpbmdMYXllcikpIHsKICAgICAgICAgR3JhcGhpY3NMYXllcjo6
UGxhdGZvcm1MYXllcklEIGxheWVySUQ7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUobGF5
ZXJJRCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIG5vZGUuc2V0U2Nyb2xs
ZWRDb250ZW50c0xheWVyKGxheWVySUQpOworICAgICAgICBub2RlLnNldENvdW50ZXJTY3JvbGxp
bmdMYXllcihsYXllcklEKTsKICAgICB9CiAKLSAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVy
dHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpDb3VudGVyU2Nyb2xsaW5nTGF5ZXIpKSB7
CisgICAgaWYgKG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3Jv
bGxpbmdOb2RlOjpJbnNldENsaXBMYXllcikpIHsKICAgICAgICAgR3JhcGhpY3NMYXllcjo6UGxh
dGZvcm1MYXllcklEIGxheWVySUQ7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUobGF5ZXJJ
RCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIG5vZGUuc2V0Q291bnRlclNj
cm9sbGluZ0xheWVyKGxheWVySUQpOworICAgICAgICBub2RlLnNldEluc2V0Q2xpcExheWVyKGxh
eWVySUQpOwogICAgIH0KIAotICAgIGlmIChub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGU6Okluc2V0Q2xpcExheWVyKSkgeworICAgIGlmIChub2RlLmhh
c0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6Q29udGVu
dFNoYWRvd0xheWVyKSkgewogICAgICAgICBHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQg
bGF5ZXJJRDsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShsYXllcklEKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgbm9kZS5zZXRJbnNldENsaXBMYXllcihsYXllcklE
KTsKKyAgICAgICAgbm9kZS5zZXRDb250ZW50U2hhZG93TGF5ZXIobGF5ZXJJRCk7CiAgICAgfQog
Ci0gICAgaWYgKG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5n
Tm9kZTo6Q29udGVudFNoYWRvd0xheWVyKSkgeworICAgIHJldHVybiB0cnVlOworfQorCitib29s
IEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGU+OjpkZWNv
ZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xs
aW5nTm9kZSYgbm9kZSkKK3sKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpY19jYXN0PFNj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSY+KG5vZGUpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlOjpTY3JvbGxlZENvbnRlbnRzTGF5ZXIpKSB7CiAgICAgICAgIEdyYXBo
aWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBsYXllcklEOwogICAgICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGxheWVySUQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBub2Rl
LnNldENvbnRlbnRTaGFkb3dMYXllcihsYXllcklEKTsKKyAgICAgICAgbm9kZS5zZXRTY3JvbGxl
ZENvbnRlbnRzTGF5ZXIobGF5ZXJJRCk7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0y
NzIsOCArMzExLDEwIEBAIHN0YXRpYyB2b2lkIGVuY29kZU5vZGVBbmREZXNjZW5kYW50cyhJUEM6
OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2Nyb2xsCiB7CiAgICAgc3dpdGNoIChz
dGF0ZU5vZGUubm9kZVR5cGUoKSkgewogICAgIGNhc2UgRnJhbWVTY3JvbGxpbmdOb2RlOgorICAg
ICAgICBlbmNvZGVyIDw8IHRvU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUoc3RhdGVO
b2RlKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBPdmVyZmxvd1Njcm9sbGluZ05vZGU6Ci0g
ICAgICAgIGVuY29kZXIgPDwgdG9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUoc3RhdGVOb2Rl
KTsKKyAgICAgICAgZW5jb2RlciA8PCB0b1Njcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlKHN0YXRlTm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRml4ZWROb2RlOgogICAg
ICAgICBlbmNvZGVyIDw8IHRvU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGUoc3RhdGVOb2RlKTsKQEAg
LTM1NCw4ICszOTUsMTEgQEAgYm9vbCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0
aW9uOjpkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIKICAgICAgICAgCiAgICAg
ICAgIHN3aXRjaCAobm9kZVR5cGUpIHsKICAgICAgICAgY2FzZSBGcmFtZVNjcm9sbGluZ05vZGU6
CisgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCp0b1Njcm9sbGluZ1N0YXRlRnJhbWVT
Y3JvbGxpbmdOb2RlKG5ld05vZGUpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBPdmVyZmxvd1Njcm9sbGluZ05vZGU6Ci0g
ICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCp0b1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5n
Tm9kZShuZXdOb2RlKSkpCisgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCp0b1Njcm9s
bGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlKG5ld05vZGUpKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBGaXhlZE5v
ZGU6CkBAIC00MDMsNiArNDQ3LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBkdW1wKGNvbnN0IFNj
cm9sbGluZ1N0YXRlTm9kZSYsIGJvb2wgY2hhbmdlZFByb3BlcnRpZXNPbmx5ID0gdHJ1ZSk7CiAg
ICAgdm9pZCBkdW1wKGNvbnN0IFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSYsIGJvb2wgY2hh
bmdlZFByb3BlcnRpZXNPbmx5ID0gdHJ1ZSk7CisgICAgdm9pZCBkdW1wKGNvbnN0IFNjcm9sbGlu
Z1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlJiwgYm9vbCBjaGFuZ2VkUHJvcGVydGllc09ubHkgPSB0
cnVlKTsKKyAgICB2b2lkIGR1bXAoY29uc3QgU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGlu
Z05vZGUmLCBib29sIGNoYW5nZWRQcm9wZXJ0aWVzT25seSA9IHRydWUpOwogICAgIHZvaWQgZHVt
cChjb25zdCBTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZSYsIGJvb2wgY2hhbmdlZFByb3BlcnRpZXNP
bmx5ID0gdHJ1ZSk7CiAgICAgdm9pZCBkdW1wKGNvbnN0IFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9k
ZSYsIGJvb2wgY2hhbmdlZFByb3BlcnRpZXNPbmx5ID0gdHJ1ZSk7CiAKQEAgLTQ4OCw4ICs1MzQs
MTAgQEAgdm9pZCBSZW1vdGVTY3JvbGxpbmdUcmVlVGV4dFN0cmVhbTo6ZHVtcChjb25zdCBTY3Jv
bGxpbmdTdGF0ZU5vZGUmIG5vZGUsIGJvb2wgY2gKICAgICAKICAgICBzd2l0Y2ggKG5vZGUubm9k
ZVR5cGUoKSkgewogICAgIGNhc2UgRnJhbWVTY3JvbGxpbmdOb2RlOgorICAgICAgICBkdW1wKHRv
U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUobm9kZSksIGNoYW5nZWRQcm9wZXJ0aWVz
T25seSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgT3ZlcmZsb3dTY3JvbGxpbmdOb2RlOgot
ICAgICAgICBkdW1wKHRvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlKG5vZGUpLCBjaGFuZ2Vk
UHJvcGVydGllc09ubHkpOworICAgICAgICBkdW1wKHRvU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Nj
cm9sbGluZ05vZGUobm9kZSksIGNoYW5nZWRQcm9wZXJ0aWVzT25seSk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgRml4ZWROb2RlOgogICAgICAgICBkdW1wKHRvU2Nyb2xsaW5nU3RhdGVGaXhl
ZE5vZGUobm9kZSksIGNoYW5nZWRQcm9wZXJ0aWVzT25seSk7CkBAIC00OTksMTMgKzU0NywxMyBA
QCB2b2lkIFJlbW90ZVNjcm9sbGluZ1RyZWVUZXh0U3RyZWFtOjpkdW1wKGNvbnN0IFNjcm9sbGlu
Z1N0YXRlTm9kZSYgbm9kZSwgYm9vbCBjaAogICAgICAgICBicmVhazsKICAgICB9CiB9Ci0KKyAg
ICAKIHZvaWQgUmVtb3RlU2Nyb2xsaW5nVHJlZVRleHRTdHJlYW06OmR1bXAoY29uc3QgU2Nyb2xs
aW5nU3RhdGVTY3JvbGxpbmdOb2RlJiBub2RlLCBib29sIGNoYW5nZWRQcm9wZXJ0aWVzT25seSkK
IHsKICAgICBSZW1vdGVTY3JvbGxpbmdUcmVlVGV4dFN0cmVhbSYgdHMgPSAqdGhpczsKLQotICAg
IGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6Vmlld3BvcnRTaXplKSkKLSAgICAgICAgZHVtcFBy
b3BlcnR5KHRzLCAidmlld3BvcnQtc2l6ZSIsIG5vZGUudmlld3BvcnRTaXplKCkpOworICAgIAor
ICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5
KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsYWJsZUFyZWFTaXplKSkKKyAgICAg
ICAgZHVtcFByb3BlcnR5KHRzLCAic2Nyb2xsYWJsZS1hcmVhLXNpemUiLCBub2RlLnRvdGFsQ29u
dGVudHNTaXplKCkpOwogCiAgICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5o
YXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpUb3RhbENvbnRl
bnRzU2l6ZSkpCiAgICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgInRvdGFsLWNvbnRlbnRzLXNpemUi
LCBub2RlLnRvdGFsQ29udGVudHNTaXplKCkpOwpAQCAtNTE2LDcgKzU2NCwyMCBAQCB2b2lkIFJl
bW90ZVNjcm9sbGluZ1RyZWVUZXh0U3RyZWFtOjpkdW1wKGNvbnN0IFNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZSYgbm9kZQogICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUu
aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsT3Jp
Z2luKSkKICAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAic2Nyb2xsLW9yaWdpbiIsIG5vZGUuc2Ny
b2xsT3JpZ2luKCkpOwogCi0gICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5o
YXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpGcmFtZVNjYWxl
RmFjdG9yKSkKKyAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5n
ZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6RnJhbWVTY2FsZUZh
Y3RvcikpCisgICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2Vk
UHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpSZXF1ZXN0ZWRTY3JvbGxQb3Np
dGlvbikpIHsKKyAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAicmVxdWVzdGVkLXNjcm9sbC1wb3Np
dGlvbiIsIG5vZGUucmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24oKSk7CisgICAgICAgIGR1bXBQcm9w
ZXJ0eSh0cywgInJlcXVlc3RlZC1zY3JvbGwtcG9zaXRpb24taXMtcHJvZ3JhbWF0aWMiLCBub2Rl
LnJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uUmVwcmVzZW50c1Byb2dyYW1tYXRpY1Njcm9sbCgpKTsK
KyAgICB9Cit9CisgICAgCit2b2lkIFJlbW90ZVNjcm9sbGluZ1RyZWVUZXh0U3RyZWFtOjpkdW1w
KGNvbnN0IFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlJiBub2RlLCBib29sIGNoYW5n
ZWRQcm9wZXJ0aWVzT25seSkKK3sKKyAgICBSZW1vdGVTY3JvbGxpbmdUcmVlVGV4dFN0cmVhbSYg
dHMgPSAqdGhpczsKKyAgICAKKyAgICBkdW1wKHN0YXRpY19jYXN0PGNvbnN0IFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZSY+KG5vZGUpLCBjaGFuZ2VkUHJvcGVydGllc09ubHkpOworICAgIAor
ICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5
KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpGcmFtZVNjYWxlRmFjdG9yKSkKICAg
ICAgICAgZHVtcFByb3BlcnR5KHRzLCAiZnJhbWUtc2NhbGUtZmFjdG9yIiwgbm9kZS5mcmFtZVNj
YWxlRmFjdG9yKCkpOwogCiAgICAgLy8gRklYTUU6IGR1bXAgbm9uRmFzdFNjcm9sbGFibGVSZWdp
b24KQEAgLTUyNSwzOCArNTg2LDM4IEBAIHZvaWQgUmVtb3RlU2Nyb2xsaW5nVHJlZVRleHRTdHJl
YW06OmR1bXAoY29uc3QgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlJiBub2RlCiAgICAgLy8g
RklYTUU6IGR1bXAgc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzCiAgICAgLy8gRklYTUU6IGR1bXAg
c2Nyb2xsQmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzCiAKLSAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0
aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGU6OlJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKSkgewotICAgICAgICBkdW1wUHJvcGVydHko
dHMsICJyZXF1ZXN0ZWQtc2Nyb2xsLXBvc2l0aW9uIiwgbm9kZS5yZXF1ZXN0ZWRTY3JvbGxQb3Np
dGlvbigpKTsKLSAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAicmVxdWVzdGVkLXNjcm9sbC1wb3Np
dGlvbi1pcy1wcm9ncmFtYXRpYyIsIG5vZGUucmVxdWVzdGVkU2Nyb2xsUG9zaXRpb25SZXByZXNl
bnRzUHJvZ3JhbW1hdGljU2Nyb2xsKCkpOwotICAgIH0KLQotICAgIGlmICghY2hhbmdlZFByb3Bl
cnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZTo6SGVhZGVySGVpZ2h0KSkKKyAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8
fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9k
ZTo6SGVhZGVySGVpZ2h0KSkKICAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAiaGVhZGVyLWhlaWdo
dCIsIG5vZGUuaGVhZGVySGVpZ2h0KCkpOwogCi0gICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09u
bHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2Rl
OjpGb290ZXJIZWlnaHQpKQorICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUu
aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpGb290
ZXJIZWlnaHQpKQogICAgICAgICBkdW1wUHJvcGVydHkodHMsICJmb290ZXItaGVpZ2h0Iiwgbm9k
ZS5mb290ZXJIZWlnaHQoKSk7CiAKLSAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBu
b2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlRvcENv
bnRlbnRJbnNldCkpCisgICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXND
aGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OlRvcENvbnRl
bnRJbnNldCkpCiAgICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgInRvcC1jb250ZW50LWluc2V0Iiwg
bm9kZS50b3BDb250ZW50SW5zZXQoKSk7CiAKLSAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25s
eSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6
OlNjcm9sbGVkQ29udGVudHNMYXllcikpCi0gICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgInNjcm9s
bGVkLWNvbnRlbnRzLWxheWVyIiwgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1M
YXllcklEPihub2RlLnNjcm9sbGVkQ29udGVudHNMYXllcigpKSk7Ci0KLSAgICBpZiAoIWNoYW5n
ZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGU6OkNvdW50ZXJTY3JvbGxpbmdMYXllcikpCi0gICAgICAgIGR1bXBQcm9w
ZXJ0eSh0cywgImNvdW50ZXItc2Nyb2xsaW5nLWxheWVyIiwgc3RhdGljX2Nhc3Q8R3JhcGhpY3NM
YXllcjo6UGxhdGZvcm1MYXllcklEPihub2RlLmNvdW50ZXJTY3JvbGxpbmdMYXllcigpKSk7Ci0K
LSAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6Okluc2V0Q2xpcExheWVyKSkKKyAgICBpZiAo
IWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxp
bmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6SW5zZXRDbGlwTGF5ZXIpKQogICAgICAgICBkdW1w
UHJvcGVydHkodHMsICJjbGlwLWluc2V0LWxheWVyIiwgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXll
cjo6UGxhdGZvcm1MYXllcklEPihub2RlLmluc2V0Q2xpcExheWVyKCkpKTsKIAotICAgIGlmICgh
Y2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZTo6Q29udGVudFNoYWRvd0xheWVyKSkKKworICAgIGlmICghY2hh
bmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0
YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpDb250ZW50U2hhZG93TGF5ZXIpKQogICAgICAgICBkdW1w
UHJvcGVydHkodHMsICJjb250ZW50LXNoYWRvdy1sYXllciIsIHN0YXRpY19jYXN0PEdyYXBoaWNz
TGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4obm9kZS5jb250ZW50U2hhZG93TGF5ZXIoKSkpOwogCi0g
ICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHko
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpIZWFkZXJMYXllcikpCisgICAgaWYgKCFjaGFu
Z2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3Rh
dGVGcmFtZVNjcm9sbGluZ05vZGU6OkhlYWRlckxheWVyKSkKICAgICAgICAgZHVtcFByb3BlcnR5
KHRzLCAiaGVhZGVyLWxheWVyIiwgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1M
YXllcklEPihub2RlLmhlYWRlckxheWVyKCkpKTsKIAotICAgIGlmICghY2hhbmdlZFByb3BlcnRp
ZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5n
Tm9kZTo6Rm9vdGVyTGF5ZXIpKQorICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5v
ZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpG
b290ZXJMYXllcikpCiAgICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgImZvb3Rlci1sYXllciIsIHN0
YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4obm9kZS5mb290ZXJMYXll
cigpKSk7CiB9CisgICAgCit2b2lkIFJlbW90ZVNjcm9sbGluZ1RyZWVUZXh0U3RyZWFtOjpkdW1w
KGNvbnN0IFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlJiBub2RlLCBib29sIGNo
YW5nZWRQcm9wZXJ0aWVzT25seSkKK3sKKyAgICBSZW1vdGVTY3JvbGxpbmdUcmVlVGV4dFN0cmVh
bSYgdHMgPSAqdGhpczsKKyAgICAKKyAgICBkdW1wKHN0YXRpY19jYXN0PGNvbnN0IFNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZSY+KG5vZGUpLCBjaGFuZ2VkUHJvcGVydGllc09ubHkpOworICAg
IAorICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3Bl
cnR5KFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlOjpTY3JvbGxlZENvbnRlbnRz
TGF5ZXIpKQorICAgICAgICBkdW1wUHJvcGVydHkodHMsICJzY3JvbGxlZC1jb250ZW50cy1sYXll
ciIsIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4obm9kZS5zY3Jv
bGxlZENvbnRlbnRzTGF5ZXIoKSkpOworfQogCiB2b2lkIFJlbW90ZVNjcm9sbGluZ1RyZWVUZXh0
U3RyZWFtOjpkdW1wKGNvbnN0IFNjcm9sbGluZ1N0YXRlRml4ZWROb2RlJiBub2RlLCBib29sIGNo
YW5nZWRQcm9wZXJ0aWVzT25seSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
UHJveHkuY3BwCmluZGV4IDcyYTg3ZjVjZjBmMmZhYmE2NTNjZWJhYThjYjU1OWVmNjQ0OWI0YzEu
LjllNjk2M2RmNmU0OTkwYzYyN2IzY2I4NWIyYmUwZDJjMDc2YTRmY2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0
b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGluZy9SZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmNwcApAQCAtMzgsNiArMzgsOCBAQAogI2luY2x1
ZGUgIlJlbW90ZVNjcm9sbGluZ1RyZWUuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGluZ1N0
YXRlRnJhbWVTY3JvbGxpbmdOb2RlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxpbmdTdGF0
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsaW5nU3Rh
dGVUcmVlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5o
PgogCkBAIC05NCw0NSArOTYsNDQgQEAgdm9pZCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclBy
b3h5Ojp1cGRhdGVTY3JvbGxpbmdUcmVlKGNvbnN0IFJlbW90ZVNjcm9sbGluZ0MKIHZvaWQgUmVt
b3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6Y29ubmVjdFN0YXRlTm9kZUxheWVycyhTY3Jv
bGxpbmdTdGF0ZVRyZWUmIHN0YXRlVHJlZSwgY29uc3QgUmVtb3RlTGF5ZXJUcmVlSG9zdCYgbGF5
ZXJUcmVlSG9zdCwgYm9vbCYgZml4ZWRPclN0aWNreUxheWVyQ2hhbmdlZCkKIHsKICAgICBmb3Ig
KGF1dG8mIGN1cnJOb2RlIDogc3RhdGVUcmVlLm5vZGVNYXAoKS52YWx1ZXMoKSkgeworICAgICAg
ICBpZiAoY3Vyck5vZGUtPmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlNj
cm9sbExheWVyKSkKKyAgICAgICAgICAgIGN1cnJOb2RlLT5zZXRMYXllcihsYXllclRyZWVIb3N0
LmdldExheWVyKGN1cnJOb2RlLT5sYXllcigpKSk7CisKICAgICAgICAgc3dpdGNoIChjdXJyTm9k
ZS0+bm9kZVR5cGUoKSkgewotICAgICAgICBjYXNlIEZyYW1lU2Nyb2xsaW5nTm9kZToKLSAgICAg
ICAgY2FzZSBPdmVyZmxvd1Njcm9sbGluZ05vZGU6IHsKLSAgICAgICAgICAgIFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZSogc2Nyb2xsaW5nU3RhdGVOb2RlID0gdG9TY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGUoY3Vyck5vZGUpOworICAgICAgICBjYXNlIEZyYW1lU2Nyb2xsaW5nTm9kZTog
eworICAgICAgICAgICAgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUqIHNjcm9sbGlu
Z1N0YXRlTm9kZSA9IHRvU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUoY3Vyck5vZGUp
OwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLT5oYXND
aGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpTY3JvbGxMYXllcikpCi0gICAgICAg
ICAgICAgICAgc2Nyb2xsaW5nU3RhdGVOb2RlLT5zZXRMYXllcihsYXllclRyZWVIb3N0LmdldExh
eWVyKHNjcm9sbGluZ1N0YXRlTm9kZS0+bGF5ZXIoKSkpOwotCi0gICAgICAgICAgICBpZiAoc2Ny
b2xsaW5nU3RhdGVOb2RlLT5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlOjpTY3JvbGxlZENvbnRlbnRzTGF5ZXIpKQotICAgICAgICAgICAgICAgIHNjcm9sbGlu
Z1N0YXRlTm9kZS0+c2V0U2Nyb2xsZWRDb250ZW50c0xheWVyKGxheWVyVHJlZUhvc3QuZ2V0TGF5
ZXIoc2Nyb2xsaW5nU3RhdGVOb2RlLT5zY3JvbGxlZENvbnRlbnRzTGF5ZXIoKSkpOwotCi0gICAg
ICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLT5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xs
aW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpDb3VudGVyU2Nyb2xsaW5nTGF5ZXIpKQorICAgICAgICAg
ICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0
YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpDb3VudGVyU2Nyb2xsaW5nTGF5ZXIpKQogICAgICAgICAg
ICAgICAgIHNjcm9sbGluZ1N0YXRlTm9kZS0+c2V0Q291bnRlclNjcm9sbGluZ0xheWVyKGxheWVy
VHJlZUhvc3QuZ2V0TGF5ZXIoc2Nyb2xsaW5nU3RhdGVOb2RlLT5jb3VudGVyU2Nyb2xsaW5nTGF5
ZXIoKSkpOwogCi0gICAgICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLT5oYXNDaGFuZ2Vk
UHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpJbnNldENsaXBMYXllcikpCisg
ICAgICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLT5oYXNDaGFuZ2VkUHJvcGVydHkoU2Ny
b2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6Okluc2V0Q2xpcExheWVyKSkKICAgICAgICAg
ICAgICAgICBzY3JvbGxpbmdTdGF0ZU5vZGUtPnNldEluc2V0Q2xpcExheWVyKGxheWVyVHJlZUhv
c3QuZ2V0TGF5ZXIoc2Nyb2xsaW5nU3RhdGVOb2RlLT5pbnNldENsaXBMYXllcigpKSk7CiAKLSAg
ICAgICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUtPmhhc0NoYW5nZWRQcm9wZXJ0eShTY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OkNvbnRlbnRTaGFkb3dMYXllcikpCisgICAgICAgICAg
ICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLT5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3Rh
dGVGcmFtZVNjcm9sbGluZ05vZGU6OkNvbnRlbnRTaGFkb3dMYXllcikpCiAgICAgICAgICAgICAg
ICAgc2Nyb2xsaW5nU3RhdGVOb2RlLT5zZXRDb250ZW50U2hhZG93TGF5ZXIobGF5ZXJUcmVlSG9z
dC5nZXRMYXllcihzY3JvbGxpbmdTdGF0ZU5vZGUtPmNvbnRlbnRTaGFkb3dMYXllcigpKSk7CiAK
ICAgICAgICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgbmV2ZXIgaGF2ZSBoZWFkZXIgYW5kIGZv
b3RlciBsYXllcnMgY29taW5nIGZyb20gdGhlIFdlYlByb2Nlc3MuCi0gICAgICAgICAgICBpZiAo
c2Nyb2xsaW5nU3RhdGVOb2RlLT5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlOjpIZWFkZXJMYXllcikpCisgICAgICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVO
b2RlLT5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6
OkhlYWRlckxheWVyKSkKICAgICAgICAgICAgICAgICBzY3JvbGxpbmdTdGF0ZU5vZGUtPnNldEhl
YWRlckxheWVyKGxheWVyVHJlZUhvc3QuZ2V0TGF5ZXIoc2Nyb2xsaW5nU3RhdGVOb2RlLT5oZWFk
ZXJMYXllcigpKSk7CiAKLSAgICAgICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUtPmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OkZvb3RlckxheWVyKSkK
KyAgICAgICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUtPmhhc0NoYW5nZWRQcm9wZXJ0eShT
Y3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6Rm9vdGVyTGF5ZXIpKQogICAgICAgICAg
ICAgICAgIHNjcm9sbGluZ1N0YXRlTm9kZS0+c2V0Rm9vdGVyTGF5ZXIobGF5ZXJUcmVlSG9zdC5n
ZXRMYXllcihzY3JvbGxpbmdTdGF0ZU5vZGUtPmZvb3RlckxheWVyKCkpKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2UgT3ZlcmZsb3dTY3JvbGxpbmdOb2RlOiB7
CisgICAgICAgICAgICBTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZSogc2Nyb2xs
aW5nU3RhdGVOb2RlID0gdG9TY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZShjdXJy
Tm9kZSk7CisKKyAgICAgICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUtPmhhc0NoYW5nZWRQ
cm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZTo6U2Nyb2xsZWRDb250
ZW50c0xheWVyKSkKKyAgICAgICAgICAgICAgICBzY3JvbGxpbmdTdGF0ZU5vZGUtPnNldFNjcm9s
bGVkQ29udGVudHNMYXllcihsYXllclRyZWVIb3N0LmdldExheWVyKHNjcm9sbGluZ1N0YXRlTm9k
ZS0+c2Nyb2xsZWRDb250ZW50c0xheWVyKCkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CiAgICAgICAgIGNhc2UgRml4ZWROb2RlOgotICAgICAgICAgICAgaWYgKGN1cnJOb2RlLT5o
YXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpTY3JvbGxMYXllcikpIHsKLSAg
ICAgICAgICAgICAgICBjdXJyTm9kZS0+c2V0TGF5ZXIobGF5ZXJUcmVlSG9zdC5nZXRMYXllcihj
dXJyTm9kZS0+bGF5ZXIoKSkpOworICAgICAgICAgICAgaWYgKGN1cnJOb2RlLT5oYXNDaGFuZ2Vk
UHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpTY3JvbGxMYXllcikpCiAgICAgICAgICAgICAg
ICAgZml4ZWRPclN0aWNreUxheWVyQ2hhbmdlZCA9IHRydWU7Ci0gICAgICAgICAgICB9CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTdGlja3lOb2RlOgotICAgICAgICAgICAgaWYg
KGN1cnJOb2RlLT5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpTY3JvbGxM
YXllcikpIHsKLSAgICAgICAgICAgICAgICBjdXJyTm9kZS0+c2V0TGF5ZXIobGF5ZXJUcmVlSG9z
dC5nZXRMYXllcihjdXJyTm9kZS0+bGF5ZXIoKSkpOworICAgICAgICAgICAgaWYgKGN1cnJOb2Rl
LT5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpTY3JvbGxMYXllcikpCiAg
ICAgICAgICAgICAgICAgZml4ZWRPclN0aWNreUxheWVyQ2hhbmdlZCA9IHRydWU7Ci0gICAgICAg
ICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nVHJlZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ1Ry
ZWUuY3BwCmluZGV4IDc4NTg1ODljOWM2N2EzMmFmZThlNmYyNGViZTYxNGMzNTVmNTU3OGMuLjU5
ZTc2NGQ5MDAxYmFhNmFlMzM0ZTY3ZWRjZmRjMzQzMGQ4OGZkZjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nVHJlZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdUcmVl
LmNwcApAQCAtMzUsOSArMzUsOSBAQAogCiAjaWYgUExBVEZPUk0oSU9TKQogI2luY2x1ZGUgIlNj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MuaCIKLSNpbmNsdWRlIDxXZWJDb3Jl
L1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TLmg+CiAjZWxzZQotI2luY2x1ZGUgPFdlYkNv
cmUvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Nj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMuaD4KICNlbmRpZgogCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKQEAgLTkyLDE1ICs5MiwxNiBAQCBQYXNzT3duUHRyPFNjcm9sbGluZ1Ry
ZWVOb2RlPiBSZW1vdGVTY3JvbGxpbmdUcmVlOjpjcmVhdGVOb2RlKFNjcm9sbGluZ05vZGVUeXBl
CiAgICAgc3dpdGNoIChub2RlVHlwZSkgewogICAgIGNhc2UgRnJhbWVTY3JvbGxpbmdOb2RlOgog
I2lmIFBMQVRGT1JNKElPUykKLSAgICAgICAgcmV0dXJuIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlSU9TOjpjcmVhdGUoKnRoaXMsIG5vZGVUeXBlLCBub2RlSUQpOworICAgICAgICByZXR1cm4g
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUzo6Y3JlYXRlKCp0aGlzLCBub2RlSUQp
OwogI2Vsc2UKLSAgICAgICAgcmV0dXJuIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlTWFjOjpj
cmVhdGUoKnRoaXMsIG5vZGVUeXBlLCBub2RlSUQpOworICAgICAgICByZXR1cm4gU2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6Y3JlYXRlKCp0aGlzLCBub2RlSUQpOwogI2VuZGlm
CiAgICAgY2FzZSBPdmVyZmxvd1Njcm9sbGluZ05vZGU6CiAjaWYgUExBVEZPUk0oSU9TKQogICAg
ICAgICByZXR1cm4gU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6Y3JlYXRl
KCp0aGlzLCBub2RlSUQpOwogI2Vsc2UKLSAgICAgICAgcmV0dXJuIFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlTWFjOjpjcmVhdGUoKnRoaXMsIG5vZGVUeXBlLCBub2RlSUQpOworICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYKICAg
ICBjYXNlIEZpeGVkTm9kZToKICAgICAgICAgcmV0dXJuIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGU6
OmNyZWF0ZSgqdGhpcywgbm9kZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9TY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1Mu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVP
dmVyZmxvd1Njcm9sbGluZ05vZGVJT1MuaAppbmRleCA2ZTBjODZmMzg5OGExOTM5YTViMjE1YmQx
NjcwOTE5ZjI5ZjI3NDkyLi40MGM4NTU5NDMyZjJiYTc5NDE0YTdhZjc2MzdiY2NjNjI5NDM1MDkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2Nyb2xsaW5nL2lvcy9TY3Jv
bGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZUlPUy5oCkBAIC0yNiwzNSArMjYsNDUgQEAKICNpZm5kZWYgU2Nyb2xsaW5nVHJlZU92ZXJmbG93
U2Nyb2xsaW5nTm9kZUlPU19oCiAjZGVmaW5lIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGlu
Z05vZGVJT1NfaAogCi0jaWYgUExBVEZPUk0oSU9TKQotI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJ
TkcpCisjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgUExBVEZPUk0oSU9TKQogCiAjaW5j
bHVkZSA8V2ViQ29yZS9TY3JvbGxpbmdDb29yZGluYXRvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1MuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Njcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUuaD4KIAogT0JKQ19DTEFTUyBXS092ZXJmbG93
U2Nyb2xsVmlld0RlbGVnYXRlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgU2Nyb2xs
aW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUyA6IHB1YmxpYyBXZWJDb3JlOjpTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZUlPUyB7CitjbGFzcyBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlSU9TIDogcHVibGljIFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFNjcm9sbGluZ1RyZWVP
dmVyZmxvd1Njcm9sbGluZ05vZGVJT1M+IGNyZWF0ZShXZWJDb3JlOjpTY3JvbGxpbmdUcmVlJiwg
V2ViQ29yZTo6U2Nyb2xsaW5nTm9kZUlEKTsKICAgICB2aXJ0dWFsIH5TY3JvbGxpbmdUcmVlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlSU9TKCk7CiAKICAgICB2b2lkIHNjcm9sbFZpZXdEaWRTY3JvbGwo
Y29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGJvb2wgaW5Vc2VySW50ZXJhdGlvbik7CisgICAg
CisgICAgQ0FMYXllciAqc2Nyb2xsTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbExheWVy
LmdldCgpOyB9CiAKIHByaXZhdGU6CiAgICAgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5n
Tm9kZUlPUyhXZWJDb3JlOjpTY3JvbGxpbmdUcmVlJiwgV2ViQ29yZTo6U2Nyb2xsaW5nTm9kZUlE
KTsKIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBXZWJDb3Jl
OjpTY3JvbGxpbmdTdGF0ZU5vZGUmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
QWZ0ZXJDaGlsZHJlbihjb25zdCBXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGUmKSBvdmVycmlk
ZTsKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsTGF5ZXJQb3NpdGlvbihjb25zdCBX
ZWJDb3JlOjpGbG9hdFBvaW50Jikgb3ZlcnJpZGU7CisKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
TGF5ZXJzQWZ0ZXJWaWV3cG9ydENoYW5nZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHZpZXdw
b3J0UmVjdCwgZG91YmxlIHNjYWxlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlV2hlZWxF
dmVudChjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnQmKSBvdmVycmlkZSB7IH0KKwor
ICAgIHZvaWQgdXBkYXRlQ2hpbGROb2Rlc0FmdGVyU2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkZsb2F0
UG9pbnQmKTsKKyAgICAKKyAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9zY3JvbGxMYXllcjsKKyAg
ICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXI7CiAKICAgICBSZXRh
aW5QdHI8V0tPdmVyZmxvd1Njcm9sbFZpZXdEZWxlZ2F0ZT4gbV9zY3JvbGxWaWV3RGVsZWdhdGU7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19T
Q1JPTExJTkcpCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIEVOQUJMRShBU1lO
Q19TQ1JPTExJTkcpICYmIFBMQVRGT1JNKElPUykKIAogI2VuZGlmIC8vIFNjcm9sbGluZ1RyZWVP
dmVyZmxvd1Njcm9sbGluZ05vZGVJT1NfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlP
Uy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0KaW5kZXggZDgzNmE5NTY5Njc1Y2E0ODU1Yjg1
YjQ4ZmMwNzBlZGYzOGZlMmZlYi4uMDQ5ZWEwZGNhMGJiYzViZDJlYTFmZTUxNGIyYTJmNWFmMzNh
NmFhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGluZy9pb3Mv
U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvU2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlSU9TLm1tCkBAIC0yOSw4ICsyOSw5IEBACiAjaWYgUExBVEZPUk0oSU9TKQogI2lmIEVO
QUJMRShBU1lOQ19TQ1JPTExJTkcpCiAKKyNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9CbG9ja0V4Y2VwdGlvbnMuaD4KLSNpbXBvcnQgPFdlYkNvcmUv
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbGlu
Z1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbGlu
Z1RyZWUuaD4KICNpbXBvcnQgPFVJS2l0L1VJU2Nyb2xsVmlldy5oPgogCkBAIC05Miw3ICs5Myw3
IEBAIFBhc3NPd25QdHI8U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUz4gU2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nCiB9CiAKIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Nj
cm9sbGluZ05vZGVJT1M6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MoV2Vi
Q29yZTo6U2Nyb2xsaW5nVHJlZSYgc2Nyb2xsaW5nVHJlZSwgV2ViQ29yZTo6U2Nyb2xsaW5nTm9k
ZUlEIG5vZGVJRCkKLSAgICA6IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TKHNjcm9sbGlu
Z1RyZWUsIE92ZXJmbG93U2Nyb2xsaW5nTm9kZSwgbm9kZUlEKQorICAgIDogU2Nyb2xsaW5nVHJl
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZShzY3JvbGxpbmdUcmVlLCBub2RlSUQpCiB7CiB9CiAKQEAg
LTExNywxNCArMTE4LDIxIEBAIHZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZUlPUzo6dXBkYXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgV2ViQ29yZTo6CiAgICAgICAgIEVORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICB9CiAKLSAgICBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZUlPUzo6dXBkYXRlQmVmb3JlQ2hpbGRyZW4oc3RhdGVOb2RlKTsKKyAgICBTY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlOjp1cGRhdGVCZWZvcmVDaGlsZHJlbihzdGF0ZU5vZGUp
OworCisgICAgY29uc3QgYXV0byYgc2Nyb2xsaW5nU3RhdGVOb2RlID0gdG9TY3JvbGxpbmdTdGF0
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZShzdGF0ZU5vZGUpOworICAgIGlmIChzY3JvbGxpbmdTdGF0
ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6U2Nyb2xsTGF5ZXIp
KQorICAgICAgICBtX3Njcm9sbExheWVyID0gc2Nyb2xsaW5nU3RhdGVOb2RlLmxheWVyKCk7CisK
KyAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdT
dGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZTo6U2Nyb2xsZWRDb250ZW50c0xheWVyKSkKKyAgICAg
ICAgbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXIgPSBzY3JvbGxpbmdTdGF0ZU5vZGUuc2Nyb2xsZWRD
b250ZW50c0xheWVyKCk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5n
Tm9kZUlPUzo6dXBkYXRlQWZ0ZXJDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmIHN0
YXRlTm9kZSkKIHsKLSAgICBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUzo6dXBkYXRlQWZ0
ZXJDaGlsZHJlbihzdGF0ZU5vZGUpOworICAgIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGlu
Z05vZGU6OnVwZGF0ZUFmdGVyQ2hpbGRyZW4oc3RhdGVOb2RlKTsKIAotICAgIGNvbnN0IGF1dG8m
IHNjcm9sbGluZ1N0YXRlTm9kZSA9IHRvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlKHN0YXRl
Tm9kZSk7CisgICAgY29uc3QgYXV0byYgc2Nyb2xsaW5nU3RhdGVOb2RlID0gdG9TY3JvbGxpbmdT
dGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZShzdGF0ZU5vZGUpOwogCiAgICAgaWYgKHNjcm9sbGlu
Z1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2Rl
OjpTY3JvbGxMYXllcikKICAgICAgICAgfHwgc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQ
cm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlRvdGFsQ29udGVudHNTaXplKQpA
QCAtMTUwLDYgKzE1OCwyMSBAQCB2b2lkIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05v
ZGVJT1M6OnVwZGF0ZUFmdGVyQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nUwogICAgIH0KIH0KIAor
dm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjpzZXRTY3JvbGxMYXll
clBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uKQoreworICAgIFttX3Nj
cm9sbExheWVyIHNldFBvc2l0aW9uOkNHUG9pbnRNYWtlKC1zY3JvbGxQb3NpdGlvbi54KCkgKyBz
Y3JvbGxPcmlnaW4oKS54KCksIC1zY3JvbGxQb3NpdGlvbi55KCkgKyBzY3JvbGxPcmlnaW4oKS55
KCkpXTsKKworICAgIHVwZGF0ZUNoaWxkTm9kZXNBZnRlclNjcm9sbChzY3JvbGxQb3NpdGlvbik7
Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6dXBkYXRl
Q2hpbGROb2Rlc0FmdGVyU2Nyb2xsKGNvbnN0IEZsb2F0UG9pbnQmKQoreworICAgIGlmICghbV9j
aGlsZHJlbikKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6IHRoaXMgbmVlZHMgdG8g
YWRqdXN0IGNoaWxkIGZpeGVkL3N0aWNreSBub2Rlcy4KK30KKwogdm9pZCBTY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjpzY3JvbGxWaWV3RGlkU2Nyb2xsKGNvbnN0IEZsb2F0
UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBib29sIGluVXNlckludGVyYXRpb24pCiB7CiAgICAgc2Ny
b2xsaW5nVHJlZSgpLnNjcm9sbFBvc2l0aW9uQ2hhbmdlZFZpYURlbGVnYXRlZFNjcm9sbGluZyhz
Y3JvbGxpbmdOb2RlSUQoKSwgc2Nyb2xsUG9zaXRpb24sIGluVXNlckludGVyYXRpb24pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29y
ZGluYXRvclByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9SZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tCmluZGV4IGUxMGFiMzlmMDBjYTlmMjQzYjQ1
OGRjY2I3MDg5NTYzNWRhYzg0MmIuLmQ5Y2YyYWI2ZWYyZmRmZWRlOGE4ODVmMTUzNTZkZGU5YTQx
Y2FjZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUmVtb3RlU2Ny
b2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0KQEAgLTMxLDYgKzMx
LDggQEAKIAogI2luY2x1ZGUgIkxheWVyUmVwcmVzZW50YXRpb24uaCIKICNpbmNsdWRlICJSZW1v
dGVMYXllclRyZWVIb3N0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxpbmdTdGF0ZUZyYW1l
U2Nyb2xsaW5nTm9kZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsaW5nU3RhdGVPdmVyZmxv
d1Njcm9sbGluZ05vZGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGluZ1N0YXRlVHJlZS5o
PgogI2luY2x1ZGUgPFVJS2l0L1VJVmlldy5oPgogCkBAIC00NywyNCArNDksMzAgQEAgdm9pZCBS
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5Ojpjb25uZWN0U3RhdGVOb2RlTGF5ZXJzKFNj
cm9sbGluZ1N0YXRlVHJlZSYKIHsKICAgICBmb3IgKGF1dG8mIGN1cnJOb2RlIDogc3RhdGVUcmVl
Lm5vZGVNYXAoKS52YWx1ZXMoKSkgewogICAgICAgICBzd2l0Y2ggKGN1cnJOb2RlLT5ub2RlVHlw
ZSgpKSB7Ci0gICAgICAgIGNhc2UgRnJhbWVTY3JvbGxpbmdOb2RlOgogICAgICAgICBjYXNlIE92
ZXJmbG93U2Nyb2xsaW5nTm9kZTogewotICAgICAgICAgICAgU2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlKiBzY3JvbGxpbmdTdGF0ZU5vZGUgPSB0b1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZShjdXJyTm9kZSk7CisgICAgICAgICAgICBTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5n
Tm9kZSogc2Nyb2xsaW5nU3RhdGVOb2RlID0gdG9TY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xs
aW5nTm9kZShjdXJyTm9kZSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChzY3JvbGxp
bmdTdGF0ZU5vZGUtPmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlNjcm9s
bExheWVyKSkKICAgICAgICAgICAgICAgICBzY3JvbGxpbmdTdGF0ZU5vZGUtPnNldExheWVyKGxh
eWVyUmVwcmVzZW50YXRpb25Gcm9tTGF5ZXJPclZpZXcobGF5ZXJUcmVlSG9zdC5nZXRMYXllcihz
Y3JvbGxpbmdTdGF0ZU5vZGUtPmxheWVyKCkpKSk7Ci0KLSAgICAgICAgICAgIGlmIChzY3JvbGxp
bmdTdGF0ZU5vZGUtPmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05v
ZGU6OlNjcm9sbGVkQ29udGVudHNMYXllcikpCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlm
IChzY3JvbGxpbmdTdGF0ZU5vZGUtPmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU92
ZXJmbG93U2Nyb2xsaW5nTm9kZTo6U2Nyb2xsZWRDb250ZW50c0xheWVyKSkKICAgICAgICAgICAg
ICAgICBzY3JvbGxpbmdTdGF0ZU5vZGUtPnNldFNjcm9sbGVkQ29udGVudHNMYXllcihsYXllclJl
cHJlc2VudGF0aW9uRnJvbUxheWVyT3JWaWV3KGxheWVyVHJlZUhvc3QuZ2V0TGF5ZXIoc2Nyb2xs
aW5nU3RhdGVOb2RlLT5zY3JvbGxlZENvbnRlbnRzTGF5ZXIoKSkpKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9OworICAgICAgICBjYXNlIEZyYW1lU2Nyb2xsaW5nTm9kZTogeworICAg
ICAgICAgICAgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUqIHNjcm9sbGluZ1N0YXRl
Tm9kZSA9IHRvU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUoY3Vyck5vZGUpOworICAg
ICAgICAgICAgCisgICAgICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLT5oYXNDaGFuZ2Vk
UHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpTY3JvbGxMYXllcikpCisgICAgICAgICAgICAg
ICAgc2Nyb2xsaW5nU3RhdGVOb2RlLT5zZXRMYXllcihsYXllclJlcHJlc2VudGF0aW9uRnJvbUxh
eWVyT3JWaWV3KGxheWVyVHJlZUhvc3QuZ2V0TGF5ZXIoc2Nyb2xsaW5nU3RhdGVOb2RlLT5sYXll
cigpKSkpOwogCi0gICAgICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLT5oYXNDaGFuZ2Vk
UHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpDb3VudGVyU2Nyb2xsaW5nTGF5
ZXIpKQorICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS0+aGFzQ2hhbmdlZFByb3Bl
cnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpDb3VudGVyU2Nyb2xsaW5nTGF5
ZXIpKQogICAgICAgICAgICAgICAgIHNjcm9sbGluZ1N0YXRlTm9kZS0+c2V0Q291bnRlclNjcm9s
bGluZ0xheWVyKGxheWVyUmVwcmVzZW50YXRpb25Gcm9tTGF5ZXJPclZpZXcobGF5ZXJUcmVlSG9z
dC5nZXRMYXllcihzY3JvbGxpbmdTdGF0ZU5vZGUtPmNvdW50ZXJTY3JvbGxpbmdMYXllcigpKSkp
OwogCiAgICAgICAgICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIG5ldmVyIGhhdmUgaGVhZGVyIGFu
ZCBmb290ZXIgbGF5ZXJzIGNvbWluZyBmcm9tIHRoZSBXZWJQcm9jZXNzLgotICAgICAgICAgICAg
aWYgKHNjcm9sbGluZ1N0YXRlTm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZTo6SGVhZGVyTGF5ZXIpKQorICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1N0
YXRlTm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdO
b2RlOjpIZWFkZXJMYXllcikpCiAgICAgICAgICAgICAgICAgc2Nyb2xsaW5nU3RhdGVOb2RlLT5z
ZXRIZWFkZXJMYXllcihsYXllclJlcHJlc2VudGF0aW9uRnJvbUxheWVyT3JWaWV3KGxheWVyVHJl
ZUhvc3QuZ2V0TGF5ZXIoc2Nyb2xsaW5nU3RhdGVOb2RlLT5oZWFkZXJMYXllcigpKSkpOwogCi0g
ICAgICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLT5oYXNDaGFuZ2VkUHJvcGVydHkoU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpGb290ZXJMYXllcikpCisgICAgICAgICAgICBpZiAo
c2Nyb2xsaW5nU3RhdGVOb2RlLT5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFt
ZVNjcm9sbGluZ05vZGU6OkZvb3RlckxheWVyKSkKICAgICAgICAgICAgICAgICBzY3JvbGxpbmdT
dGF0ZU5vZGUtPnNldEZvb3RlckxheWVyKGxheWVyUmVwcmVzZW50YXRpb25Gcm9tTGF5ZXJPclZp
ZXcobGF5ZXJUcmVlSG9zdC5nZXRMYXllcihzY3JvbGxpbmdTdGF0ZU5vZGUtPmZvb3RlckxheWVy
KCkpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDBjNmVkNTZhOWU4
ODUyNWU3NmFiNjdmYmMwMTc1NjAzOWRhNTBiMzMuLmExZDg5YzhkYmUxY2Y3ZTQ4NDkxNTJlOGNl
ZDQwYjYzNGUyMTcyMDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxNC0wNS0xNiAgU2ltb24g
RnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBzY3JvbGxp
bmcgdHJlZSBTY3JvbGxpbmdOb2RlcyBpbnRvIEZyYW1lU2Nyb2xsaW5nTm9kZXMgYW5kIE92ZXJm
bG93U2Nyb2xsaW5nTm9kZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEzMzAyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
ICAgICAgICAKKyAgICAgICAgVXBkYXRlZCBmb3IgbmV3IG5vZGUgbmFtZS4gTm8gZ2VvbWV0cnkg
Y2hhbmdlcy4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9jbGFt
cC1vdXQtb2YtYm91bmRzLXNjcm9sbHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy13azIvdGlsZWQtZHJhd2luZy9maXhlZC9hYnNvbHV0ZS1pbnNpZGUtZml4ZWQtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9maXhlZC9h
YnNvbHV0ZS1pbnNpZGUtb3V0LW9mLXZpZXctZml4ZWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IHBsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9maXhlZC9maXhlZC1pbi1vdmVyZmxvdy1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL2Zp
eGVkL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvZml4ZWQvZml4ZWQtcG9zaXRpb24tb3V0LW9m
LXZpZXctbmVnYXRpdmUtemluZGV4LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMtd2syL3RpbGVkLWRyYXdpbmcvZml4ZWQvZm91ci1iYXJzLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvZml4ZWQvZm91ci1iYXJzLXdpdGgt
aGVhZGVyLWFuZC1mb290ZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy13
azIvdGlsZWQtZHJhd2luZy9maXhlZC9uZWdhdGl2ZS1zY3JvbGwtb2Zmc2V0LWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvZml4ZWQvbmVnYXRp
dmUtc2Nyb2xsLW9mZnNldC1pbi12aWV3LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvZml4ZWQvbmVzdGVkLWZpeGVkLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvZml4ZWQvcGVyY2VudGFn
ZS1pbnNpZGUtZml4ZWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmctdHJlZS1hZnRlci1zY3JvbGwtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmctdHJlZS1z
bG93LXNjcm9sbGluZy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi90
aWxlZC1kcmF3aW5nL3N0aWNreS9uZWdhdGl2ZS1zY3JvbGwtb2Zmc2V0LWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvc3RpY2t5L3N0aWNreS1o
b3Jpem9udGFsLWV4cGVjdGVkLnR4dDoKKwogMjAxNC0wNS0xNiAgS2lyYW4gIDxraXJhbi5ndWR1
cnVAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgUlRDRHRtZlNlbmRlciBkZWZhdWx0IHZhbHVlcyBu
ZWVkIHRvIGJlIHVwZGF0ZWQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2syL3RpbGVkLWRyYXdpbmcvY2xhbXAtb3V0LW9mLWJvdW5kcy1zY3JvbGxzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9jbGFtcC1vdXQt
b2YtYm91bmRzLXNjcm9sbHMtZXhwZWN0ZWQudHh0CmluZGV4IDQyMTMwMjdiMjAzMjE4YTU1NTI4
YjU5M2YzYTdiMzU0NDdiZWRhMjUuLjRjM2JkOWNiYWUzY2Q3M2VkYTc4YWY2MjYwODI1OTQ3NTNj
ZTA0MWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJh
d2luZy9jbGFtcC1vdXQtb2YtYm91bmRzLXNjcm9sbHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9jbGFtcC1vdXQtb2YtYm91bmRz
LXNjcm9sbHMtZXhwZWN0ZWQudHh0CkBAIC0xLDM4ICsxLDM4IEBACiBBdHRlbXB0ZWQgc2Nyb2xs
IHRvIC01MDAwLCAwCi0oU2Nyb2xsaW5nIG5vZGUKLSAgKHZpZXdwb3J0IHJlY3QgNzg1IDU4NSkK
KyhGcmFtZSBzY3JvbGxpbmcgbm9kZQorICAoc2Nyb2xsYWJsZSBhcmVhIHNpemUgNzg1IDU4NSkK
ICAgKGNvbnRlbnRzIHNpemUgNTAwOCA1MDIxKQogKQogCiBBdHRlbXB0ZWQgc2Nyb2xsIHRvIDAs
IC01MDAwCi0oU2Nyb2xsaW5nIG5vZGUKLSAgKHZpZXdwb3J0IHJlY3QgNzg1IDU4NSkKKyhGcmFt
ZSBzY3JvbGxpbmcgbm9kZQorICAoc2Nyb2xsYWJsZSBhcmVhIHNpemUgNzg1IDU4NSkKICAgKGNv
bnRlbnRzIHNpemUgNTAwOCA1MDIxKQogKQogCiBBdHRlbXB0ZWQgc2Nyb2xsIHRvIC01MDAwLCAt
NTAwMAotKFNjcm9sbGluZyBub2RlCi0gICh2aWV3cG9ydCByZWN0IDc4NSA1ODUpCisoRnJhbWUg
c2Nyb2xsaW5nIG5vZGUKKyAgKHNjcm9sbGFibGUgYXJlYSBzaXplIDc4NSA1ODUpCiAgIChjb250
ZW50cyBzaXplIDUwMDggNTAyMSkKICkKIAogQXR0ZW1wdGVkIHNjcm9sbCB0byAxMDAwMCwgMAot
KFNjcm9sbGluZyBub2RlCi0gICh2aWV3cG9ydCByZWN0IDc4NSA1ODUpCisoRnJhbWUgc2Nyb2xs
aW5nIG5vZGUKKyAgKHNjcm9sbGFibGUgYXJlYSBzaXplIDc4NSA1ODUpCiAgIChjb250ZW50cyBz
aXplIDUwMDggNTAyMSkKICAgKHJlcXVlc3RlZCBzY3JvbGwgcG9zaXRpb24gNDIyMyAwKQogKQog
CiBBdHRlbXB0ZWQgc2Nyb2xsIHRvIDAsIDEwMDAwCi0oU2Nyb2xsaW5nIG5vZGUKLSAgKHZpZXdw
b3J0IHJlY3QgNzg1IDU4NSkKKyhGcmFtZSBzY3JvbGxpbmcgbm9kZQorICAoc2Nyb2xsYWJsZSBh
cmVhIHNpemUgNzg1IDU4NSkKICAgKGNvbnRlbnRzIHNpemUgNTAwOCA1MDIxKQogICAocmVxdWVz
dGVkIHNjcm9sbCBwb3NpdGlvbiAwIDQ0MzYpCiApCiAKIEF0dGVtcHRlZCBzY3JvbGwgdG8gMTAw
MDAsIDEwMDAwCi0oU2Nyb2xsaW5nIG5vZGUKLSAgKHZpZXdwb3J0IHJlY3QgNzg1IDU4NSkKKyhG
cmFtZSBzY3JvbGxpbmcgbm9kZQorICAoc2Nyb2xsYWJsZSBhcmVhIHNpemUgNzg1IDU4NSkKICAg
KGNvbnRlbnRzIHNpemUgNTAwOCA1MDIxKQogICAocmVxdWVzdGVkIHNjcm9sbCBwb3NpdGlvbiA0
MjIzIDQ0MzYpCiApCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3Rp
bGVkLWRyYXdpbmcvZml4ZWQvYWJzb2x1dGUtaW5zaWRlLWZpeGVkLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9maXhlZC9hYnNvbHV0ZS1p
bnNpZGUtZml4ZWQtZXhwZWN0ZWQudHh0CmluZGV4IDUyYmU3Yjg3MTY3YmZlM2Y2Nzg1Mjc5NTRl
MDY1YTI3ZWE3ZWQ3NjUuLjRhNTg5M2FjZDg1ZjFhOTg4ZTc1OGRhNjczM2Q0YjRlODU5YzBiMzMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9m
aXhlZC9hYnNvbHV0ZS1pbnNpZGUtZml4ZWQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9maXhlZC9hYnNvbHV0ZS1pbnNpZGUtZml4
ZWQtZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsNSBAQAotKFNjcm9sbGluZyBub2RlCi0gICh2aWV3
cG9ydCByZWN0IDc4NSA2MDApCisoRnJhbWUgc2Nyb2xsaW5nIG5vZGUKKyAgKHNjcm9sbGFibGUg
YXJlYSBzaXplIDc4NSA2MDApCiAgIChjb250ZW50cyBzaXplIDc4NSAyNzEwKQogICAocmVxdWVz
dGVkIHNjcm9sbCBwb3NpdGlvbiAwIDIwMCkKICAgKGNoaWxkcmVuIDEKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9maXhlZC9hYnNvbHV0ZS1p
bnNpZGUtb3V0LW9mLXZpZXctZml4ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL2ZpeGVkL2Fic29sdXRlLWluc2lkZS1vdXQtb2Ytdmll
dy1maXhlZC1leHBlY3RlZC50eHQKaW5kZXggZjg4ZDYyOGUxMTY4NGQ2ZDFjZGU4MDYwNjQwNDFh
NmMyN2NlMDI3Yy4uMmExMTJkMzMzZDIwZjQ0MTY2ZGM2ZTIxZjBhNzE1MzIyMzQ1NmYyYiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL2ZpeGVk
L2Fic29sdXRlLWluc2lkZS1vdXQtb2Ytdmlldy1maXhlZC1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL2ZpeGVkL2Fic29sdXRlLWlu
c2lkZS1vdXQtb2Ytdmlldy1maXhlZC1leHBlY3RlZC50eHQKQEAgLTEsNSArMSw1IEBACi0oU2Ny
b2xsaW5nIG5vZGUKLSAgKHZpZXdwb3J0IHJlY3QgNzg1IDYwMCkKKyhGcmFtZSBzY3JvbGxpbmcg
bm9kZQorICAoc2Nyb2xsYWJsZSBhcmVhIHNpemUgNzg1IDYwMCkKICAgKGNvbnRlbnRzIHNpemUg
Nzg1IDI1MTMpCiAgIChyZXF1ZXN0ZWQgc2Nyb2xsIHBvc2l0aW9uIDAgMjAwKQogICAoY2hpbGRy
ZW4gMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3
aW5nL2ZpeGVkL2ZpeGVkLWluLW92ZXJmbG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9maXhlZC9maXhlZC1pbi1vdmVyZmxvdy1leHBl
Y3RlZC50eHQKaW5kZXggOTU4M2VlYTdjMzY0MzI4YmIyM2EyZGI3MjMwNWU2Zjk5NjlhNjg5Ni4u
YTQ4ZDBmYjljN2I0NmE1OGM2OWFjZGE0ODgwOTZiNzNjYjFiNDIwNSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL2ZpeGVkL2ZpeGVkLWluLW92
ZXJmbG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3Rp
bGVkLWRyYXdpbmcvZml4ZWQvZml4ZWQtaW4tb3ZlcmZsb3ctZXhwZWN0ZWQudHh0CkBAIC0xLDUg
KzEsNSBAQAotKFNjcm9sbGluZyBub2RlCi0gICh2aWV3cG9ydCByZWN0IDc4NSA2MDApCisoRnJh
bWUgc2Nyb2xsaW5nIG5vZGUKKyAgKHNjcm9sbGFibGUgYXJlYSBzaXplIDc4NSA2MDApCiAgIChj
b250ZW50cyBzaXplIDc4NSAyMjEzKQogICAocmVxdWVzdGVkIHNjcm9sbCBwb3NpdGlvbiAwIDIw
MCkKICAgKGNoaWxkcmVuIDEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azIvdGlsZWQtZHJhd2luZy9maXhlZC9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvZml4ZWQv
Zml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctZXhwZWN0ZWQudHh0CmluZGV4IDZhY2JlODQyMDM5
MmYyYWFhZGFiOTMyZTcxNjIxNmQ3ZjAzZjNlYTIuLjI1YzQyOGE3YjA3Y2E0N2FmZjQ3OGQ4YzAw
MjA0NTIzMjg4NDg3ZTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIv
dGlsZWQtZHJhd2luZy9maXhlZC9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL2ZpeGVk
L2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUgQEAK
LShTY3JvbGxpbmcgbm9kZQotICAodmlld3BvcnQgcmVjdCA3ODUgNjAwKQorKEZyYW1lIHNjcm9s
bGluZyBub2RlCisgIChzY3JvbGxhYmxlIGFyZWEgc2l6ZSA3ODUgNjAwKQogICAoY29udGVudHMg
c2l6ZSA3ODUgMTAyMSkKICAgKGNoaWxkcmVuIDEKICAgICAoRml4ZWQgbm9kZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL2ZpeGVkL2ZpeGVk
LXBvc2l0aW9uLW91dC1vZi12aWV3LW5lZ2F0aXZlLXppbmRleC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvZml4ZWQvZml4ZWQtcG9zaXRp
b24tb3V0LW9mLXZpZXctbmVnYXRpdmUtemluZGV4LWV4cGVjdGVkLnR4dAppbmRleCA2YWNiZTg0
MjAzOTJmMmFhYWRhYjkzMmU3MTYyMTZkN2YwM2YzZWEyLi4yNWM0MjhhN2IwN2NhNDdhZmY0Nzhk
OGMwMDIwNDUyMzI4ODQ4N2U2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2syL3RpbGVkLWRyYXdpbmcvZml4ZWQvZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctbmVnYXRp
dmUtemluZGV4LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sy
L3RpbGVkLWRyYXdpbmcvZml4ZWQvZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctbmVnYXRpdmUt
emluZGV4LWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUgQEAKLShTY3JvbGxpbmcgbm9kZQotICAo
dmlld3BvcnQgcmVjdCA3ODUgNjAwKQorKEZyYW1lIHNjcm9sbGluZyBub2RlCisgIChzY3JvbGxh
YmxlIGFyZWEgc2l6ZSA3ODUgNjAwKQogICAoY29udGVudHMgc2l6ZSA3ODUgMTAyMSkKICAgKGNo
aWxkcmVuIDEKICAgICAoRml4ZWQgbm9kZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL2ZpeGVkL2ZvdXItYmFycy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvZml4ZWQvZm91ci1iYXJz
LWV4cGVjdGVkLnR4dAppbmRleCAyNTlkMjkzMTgwZjU0ZTk2OTNjYzY2ZjQwZmI5ZjRiZjViYjBm
NGE4Li43NzI4YjZmZjllOGI2M2YwN2QxODAzZDBkYzhiZTFmNTBkNWVmNzRmIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvZml4ZWQvZm91ci1i
YXJzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVk
LWRyYXdpbmcvZml4ZWQvZm91ci1iYXJzLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUgQEAKLShT
Y3JvbGxpbmcgbm9kZQotICAodmlld3BvcnQgcmVjdCA3ODUgNjAwKQorKEZyYW1lIHNjcm9sbGlu
ZyBub2RlCisgIChzY3JvbGxhYmxlIGFyZWEgc2l6ZSA3ODUgNjAwKQogICAoY29udGVudHMgc2l6
ZSA3ODUgMjIyMSkKICAgKHJlcXVlc3RlZCBzY3JvbGwgcG9zaXRpb24gMCAyMDApCiAgIChjaGls
ZHJlbiA0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRy
YXdpbmcvZml4ZWQvZm91ci1iYXJzLXdpdGgtaGVhZGVyLWFuZC1mb290ZXItZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL2ZpeGVkL2ZvdXIt
YmFycy13aXRoLWhlYWRlci1hbmQtZm9vdGVyLWV4cGVjdGVkLnR4dAppbmRleCA5MTJkNjI1NmNl
ODJkNThjM2VkNDE4N2VlMjJmZDMzNDg3ZjhiMzNkLi44YjBjYWVkMjgyOGU3YjZlNWU0MzA4ZDc5
NmNkNzYxYjBmMjlkOGVkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sy
L3RpbGVkLWRyYXdpbmcvZml4ZWQvZm91ci1iYXJzLXdpdGgtaGVhZGVyLWFuZC1mb290ZXItZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2lu
Zy9maXhlZC9mb3VyLWJhcnMtd2l0aC1oZWFkZXItYW5kLWZvb3Rlci1leHBlY3RlZC50eHQKQEAg
LTEsNSArMSw1IEBACi0oU2Nyb2xsaW5nIG5vZGUKLSAgKHZpZXdwb3J0IHJlY3QgNzg1IDYwMCkK
KyhGcmFtZSBzY3JvbGxpbmcgbm9kZQorICAoc2Nyb2xsYWJsZSBhcmVhIHNpemUgNzg1IDYwMCkK
ICAgKGNvbnRlbnRzIHNpemUgNzg1IDI0MjEpCiAgIChyZXF1ZXN0ZWQgc2Nyb2xsIHBvc2l0aW9u
IDAgMjAwKQogICAoY2hpbGRyZW4gNApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXdrMi90aWxlZC1kcmF3aW5nL2ZpeGVkL25lZ2F0aXZlLXNjcm9sbC1vZmZzZXQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL2ZpeGVk
L25lZ2F0aXZlLXNjcm9sbC1vZmZzZXQtZXhwZWN0ZWQudHh0CmluZGV4IGViOTAxOTFjOTQwMTNj
NjM3ZmFiYzljY2E0MTFhOTU4ZWY2ZjA2OTcuLjE5OTJjYTM1YmJlNjQ1MzMxMzhkNzY4MDJlOGJk
ZDA1MDY0ZWZiNjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGls
ZWQtZHJhd2luZy9maXhlZC9uZWdhdGl2ZS1zY3JvbGwtb2Zmc2V0LWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvZml4ZWQvbmVnYXRp
dmUtc2Nyb2xsLW9mZnNldC1leHBlY3RlZC50eHQKQEAgLTEsNSArMSw1IEBACi0oU2Nyb2xsaW5n
IG5vZGUKLSAgKHZpZXdwb3J0IHJlY3QgNzg1IDYwMCkKKyhGcmFtZSBzY3JvbGxpbmcgbm9kZQor
ICAoc2Nyb2xsYWJsZSBhcmVhIHNpemUgNzg1IDYwMCkKICAgKGNvbnRlbnRzIHNpemUgNzg1IDIy
MjEpCiAgIChjaGlsZHJlbiAxCiAgICAgKEZpeGVkIG5vZGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9maXhlZC9uZWdhdGl2ZS1zY3JvbGwt
b2Zmc2V0LWluLXZpZXctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
Mi90aWxlZC1kcmF3aW5nL2ZpeGVkL25lZ2F0aXZlLXNjcm9sbC1vZmZzZXQtaW4tdmlldy1leHBl
Y3RlZC50eHQKaW5kZXggNDBjOWFkNTA4NzY3NTQzOGI2MWQyNzlhMmI5YzQ0YmY1ZTU5MzFkZS4u
ZmNlMjI5NTdkOGJlYTJmOTQ5ZTM0ZGE4MjhlYjI1ZGY5MTBmY2U4NSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL2ZpeGVkL25lZ2F0aXZlLXNj
cm9sbC1vZmZzZXQtaW4tdmlldy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL2ZpeGVkL25lZ2F0aXZlLXNjcm9sbC1vZmZzZXQtaW4t
dmlldy1leHBlY3RlZC50eHQKQEAgLTEsNSArMSw1IEBACi0oU2Nyb2xsaW5nIG5vZGUKLSAgKHZp
ZXdwb3J0IHJlY3QgNzg1IDYwMCkKKyhGcmFtZSBzY3JvbGxpbmcgbm9kZQorICAoc2Nyb2xsYWJs
ZSBhcmVhIHNpemUgNzg1IDYwMCkKICAgKGNvbnRlbnRzIHNpemUgNzg1IDIyMjEpCiAgIChjaGls
ZHJlbiAxCiAgICAgKEZpeGVkIG5vZGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy13azIvdGlsZWQtZHJhd2luZy9maXhlZC9uZXN0ZWQtZml4ZWQtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL2ZpeGVkL25lc3RlZC1m
aXhlZC1leHBlY3RlZC50eHQKaW5kZXggY2JlMmNhNmQyNWEwNDg1OGM1YzNiZTY2OTdhZTBiZWNh
N2Y3MjFjYS4uMWYzOGE3MmQ5MjU3YTI5NzNlYmMzZTg2ZjdmODc0NGQ4MjE1NzExNSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL2ZpeGVkL25l
c3RlZC1maXhlZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
Mi90aWxlZC1kcmF3aW5nL2ZpeGVkL25lc3RlZC1maXhlZC1leHBlY3RlZC50eHQKQEAgLTEsNSAr
MSw1IEBACi0oU2Nyb2xsaW5nIG5vZGUKLSAgKHZpZXdwb3J0IHJlY3QgNzg1IDYwMCkKKyhGcmFt
ZSBzY3JvbGxpbmcgbm9kZQorICAoc2Nyb2xsYWJsZSBhcmVhIHNpemUgNzg1IDYwMCkKICAgKGNv
bnRlbnRzIHNpemUgNzg1IDIyMTMpCiAgIChyZXF1ZXN0ZWQgc2Nyb2xsIHBvc2l0aW9uIDAgMjAw
KQogICAoY2hpbGRyZW4gMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
Mi90aWxlZC1kcmF3aW5nL2ZpeGVkL3BlcmNlbnRhZ2UtaW5zaWRlLWZpeGVkLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9maXhlZC9wZXJj
ZW50YWdlLWluc2lkZS1maXhlZC1leHBlY3RlZC50eHQKaW5kZXggM2I3ZjA2YmRlYWUwYjlhNGRi
YjgyZDcyNmFkNGM4NDcyMzYxZjFiZS4uM2I5MmJjMDFiYjIyZTViOTQyNTk2MzJlZTYzMjlmMWNh
Y2QzYTU3NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1k
cmF3aW5nL2ZpeGVkL3BlcmNlbnRhZ2UtaW5zaWRlLWZpeGVkLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvZml4ZWQvcGVyY2VudGFn
ZS1pbnNpZGUtZml4ZWQtZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsNSBAQAotKFNjcm9sbGluZyBu
b2RlCi0gICh2aWV3cG9ydCByZWN0IDc4NSA2MDApCisoRnJhbWUgc2Nyb2xsaW5nIG5vZGUKKyAg
KHNjcm9sbGFibGUgYXJlYSBzaXplIDc4NSA2MDApCiAgIChjb250ZW50cyBzaXplIDc4NSAyNTEz
KQogICAocmVxdWVzdGVkIHNjcm9sbCBwb3NpdGlvbiAwIDIwMCkKICAgKGNoaWxkcmVuIDEKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmctdHJlZS1hZnRlci1zY3JvbGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy10cmVlLWFmdGVyLXNjcm9sbC1leHBl
Y3RlZC50eHQKaW5kZXggODkwNWFmNzVhZDNkODVkNmMzYmE0ZjEwNzU2ZTY0NGMxNzZmYjQ2Yi4u
ZTg5NzRiNzQ5ZGYxYTM4Y2ZkMDM2NzlmZjhjNGI2NTg5M2E4MWMxYSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy10cmVlLWFm
dGVyLXNjcm9sbC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
Mi90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy10cmVlLWFmdGVyLXNjcm9sbC1leHBlY3RlZC50eHQK
QEAgLTEsNSArMSw1IEBACi0oU2Nyb2xsaW5nIG5vZGUKLSAgKHZpZXdwb3J0IHJlY3QgNzg1IDYw
MCkKKyhGcmFtZSBzY3JvbGxpbmcgbm9kZQorICAoc2Nyb2xsYWJsZSBhcmVhIHNpemUgNzg1IDYw
MCkKICAgKGNvbnRlbnRzIHNpemUgNzg1IDUwMjEpCiAgIChyZXF1ZXN0ZWQgc2Nyb2xsIHBvc2l0
aW9uIDAgMzAwMCkKICkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmctdHJlZS1zbG93LXNjcm9sbGluZy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nLXRy
ZWUtc2xvdy1zY3JvbGxpbmctZXhwZWN0ZWQudHh0CmluZGV4IGZlMmJhM2RjYjg2NjE5Y2NjOGYx
OGJhNDg0NzI3ZjFiYWFmNDg5ODMuLjQyNWJhYzBmM2Y4YjU1OTI0YWMxYzJmOGI4N2UyYzM4YTA5
NDVjMWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmctdHJlZS1zbG93LXNjcm9sbGluZy1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy10cmVlLXNs
b3ctc2Nyb2xsaW5nLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUgQEAKLShTY3JvbGxpbmcgbm9k
ZQotICAodmlld3BvcnQgcmVjdCA4MDAgNjAwKQorKEZyYW1lIHNjcm9sbGluZyBub2RlCisgIChz
Y3JvbGxhYmxlIGFyZWEgc2l6ZSA4MDAgNjAwKQogICAoY29udGVudHMgc2l6ZSA4MDAgNjAwKQog
ICAoU2Nyb2xsaW5nIG9uIG1haW4gdGhyZWFkIGJlY2F1c2U6IEhhcyBzbG93IHJlcGFpbnQgb2Jq
ZWN0cykKICkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQt
ZHJhd2luZy9zdGlja3kvbmVnYXRpdmUtc2Nyb2xsLW9mZnNldC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvc3RpY2t5L25lZ2F0aXZlLXNj
cm9sbC1vZmZzZXQtZXhwZWN0ZWQudHh0CmluZGV4IDVkNzY5N2U0ZDk0MDk4NmZmNWZiNDllMGQ4
MjI1ZGFlMjViYzk4NDIuLmNiMjBjMDg1OGU5ZjE4Njg1NWQ1OTg0Mzg2NjZiN2E3MzM2MjhiODAg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9z
dGlja3kvbmVnYXRpdmUtc2Nyb2xsLW9mZnNldC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3N0aWNreS9uZWdhdGl2ZS1zY3JvbGwt
b2Zmc2V0LWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUgQEAKLShTY3JvbGxpbmcgbm9kZQotICAo
dmlld3BvcnQgcmVjdCA3ODUgNjAwKQorKEZyYW1lIHNjcm9sbGluZyBub2RlCisgIChzY3JvbGxh
YmxlIGFyZWEgc2l6ZSA3ODUgNjAwKQogICAoY29udGVudHMgc2l6ZSA3ODUgMjIxNikKICAgKGNo
aWxkcmVuIDEKICAgICAoU3RpY2t5IG5vZGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9zdGlja3kvc3RpY2t5LWhvcml6b250YWwtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3N0aWNr
eS9zdGlja3ktaG9yaXpvbnRhbC1leHBlY3RlZC50eHQKaW5kZXggZDc4MjdjMDE3ZWQ1MDU0NjJk
NTk0ZGM1OTMzMDg1MzgzYjMzNmZiYi4uMTgxMjNkZjA1ZDQwYmQ3Y2VjOGY4MDk4YTRmYjVjMDBl
NjY0NzNkNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1k
cmF3aW5nL3N0aWNreS9zdGlja3ktaG9yaXpvbnRhbC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3N0aWNreS9zdGlja3ktaG9yaXpv
bnRhbC1leHBlY3RlZC50eHQKQEAgLTEsNiArMSw2IEBACiBMZWZ0IHN0aWNreSBSaWdodCBzdGlj
a3kgTGVmdCAlIHN0aWNreSBSaWdodCAlIHN0aWNreSBMZWZ0IGFuZCBSaWdodCBMZWZ0IGFuZCBS
aWdodCAlCi0oU2Nyb2xsaW5nIG5vZGUKLSAgKHZpZXdwb3J0IHJlY3QgODAwIDU4NSkKKyhGcmFt
ZSBzY3JvbGxpbmcgbm9kZQorICAoc2Nyb2xsYWJsZSBhcmVhIHNpemUgODAwIDU4NSkKICAgKGNv
bnRlbnRzIHNpemUgMjAwOCA1ODUpCiAgIChyZXF1ZXN0ZWQgc2Nyb2xsIHBvc2l0aW9uIDgwMCAw
KQogICAoY2hpbGRyZW4gNgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231703</attachid>
            <date>2014-05-19 11:06:25 -0700</date>
            <delta_ts>2014-05-19 14:04:52 -0700</delta_ts>
            <desc>EWS for EFL</desc>
            <filename>bug-133022-20140519110600.patch</filename>
            <type>text/plain</type>
            <size>285761</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY5MDQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGI3ZWZkNGQ2MmM5NTNj
ZWJmZWJhNDFmNjdjZDQwNzU5MmE5NDVhZS4uODc2NmYxNjUyMjYzMzU4Y2MzMjNiZDMyNzMyODlj
OTdjZDBlNjcyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwOCBAQAorMjAxNC0wNS0xNiAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBzY3Jv
bGxpbmcgdHJlZSBTY3JvbGxpbmdOb2RlcyBpbnRvIEZyYW1lU2Nyb2xsaW5nTm9kZXMgYW5kIE92
ZXJmbG93U2Nyb2xsaW5nTm9kZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzMzAyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEluIGJvdGggdGhlIHNjcm9sbGluZyBzdGF0ZSB0cmVlIGFuZCB0aGUgc2Ny
b2xsaW5nIHRyZWUsIHNwbGl0IHRoZSAic2Nyb2xsaW5nIG5vZGVzIgorICAgICAgICBpbnRvIEZy
YW1lU2Nyb2xsaW5nIGFuZCBPdmVyZmxvd1Njcm9sbGluZyBub2Rlcy4KKyAgICAgICAgCisgICAg
ICAgIE1vdmUgd2hhdCB3YXMgdGhlICJ2aWV3cG9ydFNpemUiIHByb3BlcnR5IG9udG8gdGhlIGJh
c2UgY2xhc3MgZm9yIHRoZSBzY3JvbGxpbmcKKyAgICAgICAgbm9kZXMsIGNhbGxpbmcgaXQgInNj
cm9sbGFibGVBcmVhU2l6ZSIuCisgICAgICAgIAorICAgICAgICBNYWtlIG1pbmltdW0vbWF4aW11
bVNjcm9sbFBvc2l0aW9uKCkgdmlydHVhbCBzbyB3ZSBjYW4gc2hhcmUgbW9yZSBjb2RlIChhbmQg
dGhlcmUKKyAgICAgICAgaXMgbW9yZSBjb2RlIHNoYXJpbmcgdG8gYmUgZG9uZSBpbiBmdXR1cmUp
LgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2NvbmZpZzogUmVtb3ZlIFNj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZU1hYy5tbSBhbmQgU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVNYWMubW0KKyAgICAgICAgZnJvbSB0aGUgbGlzdCwgdXNpbmcgI2lmZGVmcyBpbiB0aGUg
ZmlsZSBpbnN0ZWFkLgorICAgICAgICAqIFdlYkNvcmUuZXhwLmluOiBMb3RzIG9mIGV4cG9ydHMu
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBOZXcgZmlsZXMu
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdM
YXlvdXRVcGRhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OmZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpBc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVGcmFtZVNjcm9sbGluZ05vZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OnJlY29tcHV0ZVdoZWVsRXZlbnRIYW5kbGVyQ291bnRGb3JGcmFtZVZpZXcpOgorICAgICAgICAo
V2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsaW5nTm9kZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpz
ZXRTY3JvbGxiYXJQYWludGVyc0Zyb21TY3JvbGxiYXJzRm9yTm9kZSk6IERlbGV0ZWQuCisgICAg
ICAgIFRoaXMgdGlueSBmdW5jdGlvbiBkaWRuJ3QgbmVlZCB0byBleGlzdC4KKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmg6CisgICAgICAgICogcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVGcmFtZVNjcm9sbGluZ05vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xs
aW5nTm9kZSk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVGcmFtZVNjcm9sbGluZ05vZGUuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwLgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsaW5nU3Rh
dGVGcmFtZVNjcm9sbGluZ05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVG
cmFtZVNjcm9sbGluZ05vZGU6On5TY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6Y2xvbmUp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OnNl
dEZyYW1lU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVGcmFt
ZVNjcm9sbGluZ05vZGU6OnNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRXaGVlbEV2ZW50SGFu
ZGxlckNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxp
bmdOb2RlOjpzZXRTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OnNldFNjcm9sbEJlaGF2aW9yRm9y
Rml4ZWRFbGVtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZUZyYW1lU2Ny
b2xsaW5nTm9kZTo6c2V0SGVhZGVySGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRGb290ZXJIZWlnaHQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OnNldFRvcENvbnRlbnRJbnNl
dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6
c2V0Q291bnRlclNjcm9sbGluZ0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0
YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRJbnNldENsaXBMYXllcik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0Q29udGVudFNoYWRvd0xh
eWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2Rl
OjpzZXRIZWFkZXJMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZUZyYW1l
U2Nyb2xsaW5nTm9kZTo6c2V0Rm9vdGVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
aW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OnNldFNjcm9sbGJhclBhaW50ZXJzRnJvbVNjcm9s
bGJhcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05v
ZGU6OmR1bXBQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdT
dGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaC4KKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
UmVwcmVzZW50YXRpb246OmxheWVySUQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3Rh
dGVOb2RlOjppc0ZyYW1lU2Nyb2xsaW5nTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdTdGF0ZU5vZGU6OmlzT3ZlcmZsb3dTY3JvbGxpbmdOb2RlKToKKyAgICAgICAgKiBwYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGU6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5n
Tm9kZTo6U2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGU6On5TY3JvbGxpbmdTdGF0
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZTo6Y2xvbmUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
aW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGU6OnNldFNjcm9sbGVkQ29udGVudHNMYXllcik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZTo6
ZHVtcFByb3BlcnRpZXMpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGVNYWMubW0uCisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZTo6c2Nyb2xsZWRD
b250ZW50c0xheWVyKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlOjpTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTY3JvbGxhYmxlQXJlYVNpemUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRUb3RhbENvbnRl
bnRzU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6
OmR1bXBQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZTo6Y2xvbmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRWaWV3cG9ydFNpemUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRGcmFtZVNjYWxl
RmFjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZTo6c2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24pOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRXaGVlbEV2ZW50SGFuZGxl
ckNvdW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZTo6c2V0U3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0U2Nyb2xsQmVoYXZp
b3JGb3JGaXhlZEVsZW1lbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0SGVhZGVySGVpZ2h0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0Rm9vdGVySGVpZ2h0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6
c2V0VG9wQ29udGVudEluc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0U2Nyb2xsZWRDb250ZW50c0xheWVyKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0Q291bnRl
clNjcm9sbGluZ0xheWVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZTo6c2V0SW5zZXRDbGlwTGF5ZXIpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRDb250ZW50U2hhZG93TGF5
ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdO
b2RlOjpzZXRIZWFkZXJMYXllcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldEZvb3RlckxheWVyKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0U2Nyb2xsYmFyUGFpbnRl
cnNGcm9tU2Nyb2xsYmFycyk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdT
dGF0ZVNjcm9sbGluZ05vZGU6OnNjcm9sbGFibGVBcmVhU2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnRvdGFsQ29udGVudHNTaXplKToKKyAgICAg
ICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nU3RhdGVUcmVlOjphdHRhY2hOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1N0YXRlVHJlZTo6Y29tbWl0KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdTdGF0ZVRyZWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlVHJl
ZTo6cm9vdFN0YXRlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVRyZWU6
OnNldFJvb3RTdGF0ZU5vZGUpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6Y29tbWl0TmV3VHJlZVN0
YXRlKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxp
bmdOb2RlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU6On5TY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGU6OnVwZGF0ZUJlZm9yZUNoaWxkcmVuKToKKyAgICAgICAgKiBwYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLmg6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgu
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlOjp1cGRh
dGVMYXllcnNBZnRlckRlbGVnYXRlZFNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlOjpzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2hvdWxk
VXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvblN5bmNocm9ub3VzbHkpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZTo6ZnJhbWVTY2FsZUZhY3Rvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlOjpoZWFkZXJI
ZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9k
ZTo6Zm9vdGVySGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGU6OnRvcENvbnRlbnRJbnNldCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlOjpzY3JvbGxCZWhhdmlvckZvckZpeGVkRWxlbWVudHMp
OgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmg6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlTm9kZTo6aXNGcmFtZVNjcm9sbGluZ05vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU5vZGU6OmlzT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGlu
Zy9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5oLgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZTo6U2Nyb2xsaW5nVHJl
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlOjp+U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xs
aW5nTm9kZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2Nyb2xsaW5n
L2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmguCisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OlNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjp1
cGRhdGVCZWZvcmVDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZTo6dXBkYXRlQWZ0ZXJDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6c2V0U2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OnNldFNjcm9sbFBvc2l0aW9uV2l0aG91
dENvbnRlbnRFZGdlQ29uc3RyYWludHMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGU6Om1pbmltdW1TY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6bWF4aW11bVNjcm9sbFBvc2l0aW9uKToKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OnNjcm9sbGFibGVBcmVh
U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6dG90
YWxDb250ZW50c1NpemUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGU6OnRvdGFsQ29udGVudHNTaXplRm9yUnViYmVyQmFuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6c2V0VG90YWxDb250ZW50c1NpemVGb3JSdWJi
ZXJCYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpz
eW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OnNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRp
b25TeW5jaHJvbm91c2x5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlOjp2aWV3cG9ydFNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OmZyYW1lU2NhbGVGYWN0b3IpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OmhlYWRlckhl
aWdodCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZTo6Zm9vdGVySGVpZ2h0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlOjpzY3JvbGxCZWhhdmlvckZvckZpeGVkRWxlbWVudHMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OnRvcENv
bnRlbnRJbnNldCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9s
bGluZ0Nvb3JkaW5hdG9ySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRp
bmF0b3JJT1M6OmNyZWF0ZVNjcm9sbGluZ1RyZWVOb2RlKToKKyAgICAgICAgKiBwYWdlL3Njcm9s
bGluZy9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUy5oOiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlSU9TLmguCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxp
bmdOb2RlSU9TOjpzY3JvbGxMYXllcik6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvaW9zL1Nj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1MubW06IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1Mu
bW0uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9T
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZUlPUzo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUyk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TOjp+U2Nyb2xsaW5nVHJl
ZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlSU9TOjp1cGRhdGVCZWZvcmVDaGlsZHJlbik6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TOjp1cGRhdGVBZnRlckNo
aWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVJT1M6OnNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVJT1M6OnNldFNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1M6OnNldFNjcm9sbFBvc2l0aW9u
V2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUzo6c2V0U2Nyb2xsTGF5ZXJQb3NpdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TOjp1cGRh
dGVMYXllcnNBZnRlclZpZXdwb3J0Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1M6OnVwZGF0ZUxheWVyc0FmdGVyRGVsZWdhdGVkU2Ny
b2xsKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJ
T1M6OnVwZGF0ZUNoaWxkTm9kZXNBZnRlclNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TOjptaW5pbXVtU2Nyb2xsUG9zaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUzo6bWF4
aW11bVNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGVJT1M6OnNjcm9sbEJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1M6OnNjcm9sbEJ5V2l0aG91dENvbnRlbnRFZGdlQ29u
c3RyYWludHMpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGlu
YXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjpj
cmVhdGVTY3JvbGxpbmdUcmVlTm9kZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Nj
cm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZU1h
Yy5tbS4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2Rl
OjpzZXRTY3JvbGxiYXJQYWludGVyc0Zyb21TY3JvbGxiYXJzKToKKyAgICAgICAgKiBwYWdlL3Nj
cm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlTWFjLmguCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW06IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWMubW0uCisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYyk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjp+U2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZU1hYyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlTWFjOjp1cGRhdGVCZWZvcmVDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjp1cGRhdGVBZnRlckNoaWxkcmVuKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6Omhh
bmRsZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZU1hYzo6YWxsb3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6YWxsb3dzVmVydGljYWxT
dHJldGNoaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVNYWM6OnN0cmV0Y2hBbW91bnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJl
ZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6cGlubmVkSW5EaXJlY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6Y2FuU2Nyb2xsSG9yaXpv
bnRhbGx5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVNYWM6OmNhblNjcm9sbFZlcnRpY2FsbHkpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6c2hvdWxkUnViYmVyQmFuZEluRGlyZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6OmFi
c29sdXRlU2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZU1hYzo6aW1tZWRpYXRlU2Nyb2xsQnkpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6aW1tZWRpYXRlU2Nyb2xsQnlX
aXRob3V0Q29udGVudEVkZ2VDb25zdHJhaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjpzdGFydFNuYXBSdWJiZXJiYW5kVGltZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6c3Rv
cFNuYXBSdWJiZXJiYW5kVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZU1hYzo6YWRqdXN0U2Nyb2xsUG9zaXRpb25Ub0JvdW5kc0lmTmVjZXNz
YXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVN
YWM6OnNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGVNYWM6OnNldFNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6OnNldFNjcm9sbFBvc2l0aW9uV2l0
aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6c2V0U2Nyb2xsTGF5ZXJQb3NpdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjp1cGRhdGVM
YXllcnNBZnRlclZpZXdwb3J0Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6Om1pbmltdW1TY3JvbGxQb3NpdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjptYXhpbXVtU2Ny
b2xsUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZU1hYzo6c2Nyb2xsQnkpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZU1hYzo6c2Nyb2xsQnlXaXRob3V0Q29udGVudEVkZ2VDb25zdHJhaW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFj
Ojp1cGRhdGVNYWluRnJhbWVQaW5TdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjpsb2dFeHBvc2VkVW5maWxsZWRBcmVhKToKKyAgICAg
ICAgKFdlYkNvcmU6OmxvZ1RocmVhZGVkU2Nyb2xsaW5nTW9kZSk6CisgICAgICAgIChXZWJDb3Jl
Ojpsb2dXaGVlbEV2ZW50SGFuZGxlckNvdW50Q2hhbmdlZCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OnVwZGF0ZVNjcm9sbENvb3JkaW5hdGVkTGF5ZXIpOgorCiAyMDE0LTA1LTE4
ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IGlP
UzogdXNpbmcgQVhBdHRyaWJ1dGVDYWNoZUVuYWJsZXIgaXMgdG9vIHNsb3cgZm9yIGV2ZXJ5IGFj
Y2Vzc2liaWxpdHlFbGVtZW50QXRJbmRleDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBiZmFiYjg4ZmI4M2ZmODZm
MjBjZjkyOWJjMjhkMWMzZTk5YTgzZjY0Li42N2M2Nzg5ZDk0ODY3ZGI4ZTBkNTYwODg2NDFmZTM1
YTg1NDdjZTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTQtMDUtMTYgIFNpbW9u
IEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgU3BsaXQgc2Nyb2xs
aW5nIHRyZWUgU2Nyb2xsaW5nTm9kZXMgaW50byBGcmFtZVNjcm9sbGluZ05vZGVzIGFuZCBPdmVy
Zmxvd1Njcm9sbGluZ05vZGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzMwMjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KyAgICAgICAgCisgICAgICAgIEluIGJvdGggdGhlIHNjcm9sbGluZyBzdGF0ZSB0cmVlIGFuZCB0
aGUgc2Nyb2xsaW5nIHRyZWUsIHNwbGl0IHRoZSAic2Nyb2xsaW5nIG5vZGVzIgorICAgICAgICBp
bnRvIEZyYW1lU2Nyb2xsaW5nIGFuZCBPdmVyZmxvd1Njcm9sbGluZyBub2Rlcy4KKyAgICAgICAg
CisgICAgICAgIE1vdmUgd2hhdCB3YXMgdGhlICJ2aWV3cG9ydFNpemUiIHByb3BlcnR5IG9udG8g
dGhlIGJhc2UgY2xhc3MgZm9yIHRoZSBzY3JvbGxpbmcKKyAgICAgICAgbm9kZXMsIGNhbGxpbmcg
aXQgInNjcm9sbGFibGVBcmVhU2l6ZSIuCisgICAgICAgIAorICAgICAgICBNYWtlIG1pbmltdW0v
bWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgdmlydHVhbCBzbyB3ZSBjYW4gc2hhcmUgbW9yZSBjb2Rl
IChhbmQgdGhlcmUKKyAgICAgICAgaXMgbW9yZSBjb2RlIHNoYXJpbmcgdG8gYmUgZG9uZSBpbiBm
dXR1cmUpLgorCisgICAgICAgICogU2hhcmVkL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdDb29y
ZGluYXRvclRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlPjo6ZW5jb2RlKToKKyAgICAgICAgKEFyZ3VtZW50Q29kZXI8U2Ny
b2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU+OjplbmNvZGUpOgorICAgICAgICAoQXJndW1l
bnRDb2RlcjxTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZT46OmVuY29kZSk6Cisg
ICAgICAgIChBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT46OmRlY29k
ZSk6CisgICAgICAgIChBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdO
b2RlPjo6ZGVjb2RlKToKKyAgICAgICAgKEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVPdmVy
Zmxvd1Njcm9sbGluZ05vZGU+OjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjplbmNvZGVOb2Rl
QW5kRGVzY2VuZGFudHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdDb29yZGlu
YXRvclRyYW5zYWN0aW9uOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxp
bmdUcmVlVGV4dFN0cmVhbTo6ZHVtcCk6CisgICAgICAgICogVUlQcm9jZXNzL1Njcm9sbGluZy9S
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6Y29ubmVjdFN0YXRlTm9kZUxheWVycyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdUcmVlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5nVHJlZTo6Y3JlYXRlTm9kZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5n
Tm9kZUlPUy5oOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlSU9TOjpzY3JvbGxMYXllcik6CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVP
dmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6OnVwZGF0ZUxheWVyc0FmdGVyVmlld3BvcnRDaGFuZ2Up
OgorICAgICAgICAqIFVJUHJvY2Vzcy9TY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbGluZ05vZGVJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVPdmVy
Zmxvd1Njcm9sbGluZ05vZGVJT1M6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJ
T1MpOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
SU9TOjp1cGRhdGVCZWZvcmVDaGlsZHJlbik6CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6OnVwZGF0ZUFmdGVyQ2hpbGRyZW4pOgorICAgICAg
ICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjpzZXRTY3Jv
bGxMYXllclBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93
U2Nyb2xsaW5nTm9kZUlPUzo6dXBkYXRlQ2hpbGROb2Rlc0FmdGVyU2Nyb2xsKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW06Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OmNvbm5lY3RT
dGF0ZU5vZGVMYXllcnMpOgorCiAyMDE0LTA1LTE5ICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5j
b20+CiAKICAgICAgICAgQnVpbGQgZml4IGFmdGVyIHIxNjkwMjMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CmluZGV4IGQ3MmU2MTNiZmNjZDcyNjM1YmIwNDRmYjk3M2NkNzg4ZTMwZDhiYjYuLjE2Mjg2OTU1
NTgyZDk5MDQzMWY3YzZkYmIyM2UyODEyNDI2YjBlMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBA
IC0xOTM1LDYgKzE5MzUsOSBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGUuY3BwCiAgICAgcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nU3RhdGVOb2RlLmNwcAogICAgIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZS5jcHAKKyAgICBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xs
aW5nTm9kZS5jcHAKKyAgICBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZS5jcHAKKyAgICBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGUuY3BwCiAgICAgcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlLmNw
cAogICAgIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHAKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2NvbmZpZyBiL1NvdXJj
ZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNjb25maWcKaW5kZXggZjIyOWM1NGFh
NjU3MWI2NjNkOWUzYjRkMGU5ZDEwMzgzYWM0YWE4MC4uMDUxNTA4MDI5M2M0NGEyM2U3MGUzYzUz
NzAwZDE2NzhjZmE5OGIwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlv
bnMvV2ViQ29yZS54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9X
ZWJDb3JlLnhjY29uZmlnCkBAIC0xMTIsNiArMTEyLDYgQEAgSkFWQVNDUklQVENPUkVfUFJJVkFU
RV9IRUFERVJTX0RJUl9Qcm9kdWN0aW9uX21hY29zeCA9ICQoU0RLUk9PVCkkKFBST0RVQ1RJT05f
RlIKIEpBVkFTQ1JJUFRDT1JFX1BSSVZBVEVfSEVBREVSU19lbmdpbmVlcmluZyA9ICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9KYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsvUHJpdmF0ZUhlYWRlcnM7CiAK
IEVYQ0xVREVEX1NPVVJDRV9GSUxFX05BTUVTID0gJChFWENMVURFRF9TT1VSQ0VfRklMRV9OQU1F
U18kKFBMQVRGT1JNX05BTUUpKTsKLUVYQ0xVREVEX1NPVVJDRV9GSUxFX05BTUVTX2lwaG9uZW9z
ID0gKi50aWZmICpDdXJzb3IucG5nIEFjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0gQVhPYmplY3RD
YWNoZU1hYy5tbSBDb2xvck1hYy5tbSBDdXJzb3IuY3BwIEN1cnNvck1hYy5tbSBEYXRhVHJhbnNm
ZXJNYWMubW0gRWRpdG9yTWFjLm1tIEV2ZW50SGFuZGxlck1hYy5tbSBFdmVudExvb3BNYWMubW0g
R2VvbG9jYXRpb25TZXJ2aWNlTWFjLm1tIEdyYXBoaWNzQ29udGV4dDNET3BlbkdMRVMuY3BwIElj
b25EYXRhYmFzZS5jcHAgSWNvbk1hYy5tbSBLaWxsUmluZ01hYy5tbSBMb2NhbEN1cnJlbnRHcmFw
aGljc0NvbnRleHQubW0gTUlNRVR5cGVSZWdpc3RyeU1hYy5tbSBNZWRpYVBsYXllclByaXZhdGVR
VEtpdC5tbSBOU1Njcm9sbGVySW1wRGV0YWlscy5tbSBOZXR3b3JrU3RhdGVOb3RpZmllck1hYy5j
cHAgUGFzdGVib2FyZE1hYy5tbSBQbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbSBQbGF0Zm9ybU1v
dXNlRXZlbnRNYWMubW0gUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIFBsYXRmb3JtU2NyZWVuTWFj
Lm1tIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW0gUGx1Z2luTWFpblRocmVhZFNjaGVk
dWxlci5jcHAgUnVuTG9vcE1hYy5tbSBTU0xLZXlHZW5lcmF0b3JNYWMuY3BwIFNjcm9sbGluZ0Nv
b3JkaW5hdG9yTWFjLm1tIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZU1hYy5tbSBTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZU1hYy5tbSBTY3JvbGxWaWV3TWFjLm1tIFNjcm9sbGJhclRoZW1l
TWFjLm1tIFNoYXJlZFRpbWVyTWFjLm1tIFNvdW5kTWFjLm1tIFN5c3RlbVRpbWVNYWMuY3BwIFRo
ZW1lTWFjLm1tIFRocmVhZENoZWNrLm1tIFVzZXJBZ2VudE1hYy5tbSBXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlck1hYy5tbSBXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tIFdlYkNvcmVVUkxS
ZXNwb25zZS5tbSBXZWJDb3JlVmlldy5tIFdlYkZvbnRDYWNoZS5tbSBXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyLm1tIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0g
V2ViV2luZG93QW5pbWF0aW9uLm1tIFdpZGdldE1hYy5tbSBtYWMvTGF5ZXJQb29sLm1tIERpc3Bs
YXlSZWZyZXNoTW9uaXRvck1hYy5jcHA7CitFWENMVURFRF9TT1VSQ0VfRklMRV9OQU1FU19pcGhv
bmVvcyA9ICoudGlmZiAqQ3Vyc29yLnBuZyBBY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tIEFYT2Jq
ZWN0Q2FjaGVNYWMubW0gQ29sb3JNYWMubW0gQ3Vyc29yLmNwcCBDdXJzb3JNYWMubW0gRGF0YVRy
YW5zZmVyTWFjLm1tIEVkaXRvck1hYy5tbSBFdmVudEhhbmRsZXJNYWMubW0gRXZlbnRMb29wTWFj
Lm1tIEdlb2xvY2F0aW9uU2VydmljZU1hYy5tbSBHcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNw
cCBJY29uRGF0YWJhc2UuY3BwIEljb25NYWMubW0gS2lsbFJpbmdNYWMubW0gTG9jYWxDdXJyZW50
R3JhcGhpY3NDb250ZXh0Lm1tIE1JTUVUeXBlUmVnaXN0cnlNYWMubW0gTWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXQubW0gTlNTY3JvbGxlckltcERldGFpbHMubW0gTmV0d29ya1N0YXRlTm90aWZpZXJN
YWMuY3BwIFBhc3RlYm9hcmRNYWMubW0gUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMubW0gUGxhdGZv
cm1Nb3VzZUV2ZW50TWFjLm1tIFBsYXRmb3JtUGFzdGVib2FyZE1hYy5tbSBQbGF0Zm9ybVNjcmVl
bk1hYy5tbSBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tIFBsdWdpbk1haW5UaHJlYWRT
Y2hlZHVsZXIuY3BwIFJ1bkxvb3BNYWMubW0gU1NMS2V5R2VuZXJhdG9yTWFjLmNwcCBTY3JvbGxp
bmdDb29yZGluYXRvck1hYy5tbSBTY3JvbGxWaWV3TWFjLm1tIFNjcm9sbGJhclRoZW1lTWFjLm1t
IFNoYXJlZFRpbWVyTWFjLm1tIFNvdW5kTWFjLm1tIFN5c3RlbVRpbWVNYWMuY3BwIFRoZW1lTWFj
Lm1tIFRocmVhZENoZWNrLm1tIFVzZXJBZ2VudE1hYy5tbSBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbSBXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tIFdlYkNvcmVVUkxSZXNwb25z
ZS5tbSBXZWJDb3JlVmlldy5tIFdlYkZvbnRDYWNoZS5tbSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyLm1tIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0gV2ViV2lu
ZG93QW5pbWF0aW9uLm1tIFdpZGdldE1hYy5tbSBtYWMvTGF5ZXJQb29sLm1tIERpc3BsYXlSZWZy
ZXNoTW9uaXRvck1hYy5jcHA7CiBFWENMVURFRF9TT1VSQ0VfRklMRV9OQU1FU19pcGhvbmVzaW11
bGF0b3IgPSAkKEVYQ0xVREVEX1NPVVJDRV9GSUxFX05BTUVTX2lwaG9uZW9zKTsKIEVYQ0xVREVE
X1NPVVJDRV9GSUxFX05BTUVTX21hY29zeCA9ICpJT1MuaCAqSU9TLmNwcCAqSU9TLm1tIEpTVG91
Y2gqIEpTR2VzdHVyZSogRE9NR2VzdHVyZSogRE9NVG91Y2gqIEtpbGxSaW5nTm9uZS5jcHAgV0FL
QXBwS2l0U3R1YnMuaCBXQUtDbGlwVmlldy5oIFdBS1Jlc3BvbmRlci5oIFdBS1Njcm9sbFZpZXcu
aCBXQUtWaWV3LmggV0FLVmlld1ByaXZhdGUuaCBXQUtXaW5kb3cuaCBXS0NvbnRlbnRPYnNlcnZh
dGlvbi5oIFdLR3JhcGhpY3MuaCBXS1R5cGVzLmggV0tVdGlsaXRpZXMuaCBXS1ZpZXcuaCBXS1Zp
ZXdQcml2YXRlLmggV2ViQ29yZVRocmVhZC5oIFdlYkNvcmVUaHJlYWRNZXNzYWdlLmggV2ViQ29y
ZVRocmVhZFJ1bi5oIFdlYkNvcmVUaHJlYWRTeXN0ZW1JbnRlcmZhY2UuaDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KaW5kZXggYmY1ZTlhOTRjYzg5MTc3ODBjNzhhMWM5YzIzMzY2ODA5NTViYTY4OS4uNzk3
NTEzNjA1ZDcwMmUwYjk1ODhiYjZhN2Y2M2FiMzZmMDkxN2ZhNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4KQEAgLTI4MTQsMTAgKzI4MTQsMTEgQEAgX19aTjdXZWJDb3JlMjVBc3luY1Njcm9sbGluZ0Nv
b3JkaW5hdG9yMTRjbGVhclN0YXRlVHJlZUV2CiBfX1pON1dlYkNvcmUyNUFzeW5jU2Nyb2xsaW5n
Q29vcmRpbmF0b3IxN2F0dGFjaFRvU3RhdGVUcmVlRU5TXzE3U2Nyb2xsaW5nTm9kZVR5cGVFeXkK
IF9fWk43V2ViQ29yZTI1QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjE4c3luY0NoaWxkUG9zaXRp
b25zRVJLTlNfMTBMYXlvdXRSZWN0RQogX19aTjdXZWJDb3JlMjVBc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yMTlkZXRhY2hGcm9tU3RhdGVUcmVlRXkKLV9fWk43V2ViQ29yZTI1QXN5bmNTY3JvbGxp
bmdDb29yZGluYXRvcjE5dXBkYXRlU2Nyb2xsaW5nTm9kZUV5UE5TXzEzR3JhcGhpY3NMYXllckVT
Ml9TMl9TMl9QS05TXzIwU2Nyb2xsaW5nQ29vcmRpbmF0b3IxN1Njcm9sbGluZ0dlb21ldHJ5RQog
X19aTjdXZWJDb3JlMjVBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yMjJmcmFtZVZpZXdMYXlvdXRV
cGRhdGVkRVBOU185RnJhbWVWaWV3RQorX19aTjdXZWJDb3JlMjVBc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yMjR1cGRhdGVGcmFtZVNjcm9sbGluZ05vZGVFeVBOU18xM0dyYXBoaWNzTGF5ZXJFUzJf
UzJfUEtOU18yMFNjcm9sbGluZ0Nvb3JkaW5hdG9yMTdTY3JvbGxpbmdHZW9tZXRyeUUKIF9fWk43
V2ViQ29yZTI1QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjI3ZnJhbWVWaWV3Um9vdExheWVyRGlk
Q2hhbmdlRVBOU185RnJhbWVWaWV3RQogX19aTjdXZWJDb3JlMjVBc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yMjdyZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGVFUE5TXzlGcmFtZVZpZXdFUktOU184
SW50UG9pbnRFCitfX1pON1dlYkNvcmUyNUFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IyN3VwZGF0
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUV5UE5TXzEzR3JhcGhpY3NMYXllckVTMl9QS05TXzIwU2Ny
b2xsaW5nQ29vcmRpbmF0b3IxN1Njcm9sbGluZ0dlb21ldHJ5RQogX19aTjdXZWJDb3JlMjVBc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yMjl1cGRhdGVWaWV3cG9ydENvbnN0cmFpbmVkTm9kZUV5UktO
U18xOVZpZXdwb3J0Q29uc3RyYWludHNFUE5TXzEzR3JhcGhpY3NMYXllckUKIF9fWk43V2ViQ29y
ZTI1QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjMwc2V0U3luY2hyb25vdXNTY3JvbGxpbmdSZWFz
b25zRWoKIF9fWk43V2ViQ29yZTI1QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjM3c2Nyb2xsYWJs
ZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZUVQTlNfMTRTY3JvbGxhYmxlQXJlYUVOU18yMFNj
cm9sbGJhck9yaWVudGF0aW9uRQpAQCAtMjgyNiw0MyArMjgyNyw0MyBAQCBfX1pON1dlYkNvcmUy
NUFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I0M3JlY29tcHV0ZVdoZWVsRXZlbnRIYW5kbGVyQ291
bnRGb3JGcmFtZQogX19aTjdXZWJDb3JlMjVBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yNDRzY2hl
ZHVsZVVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbEV5UktOU18xMEZsb2F0UG9p
bnRFYk5TXzMxU2V0T3JTeW5jU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkUKIF9fWk43V2ViQ29yZTI1
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvckMyRVBOU180UGFnZUUKIF9fWk43V2ViQ29yZTI1QXN5
bmNTY3JvbGxpbmdDb29yZGluYXRvckQyRXYKLV9fWk43V2ViQ29yZTI3U2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlMTRzZXRGb290ZXJMYXllckVSS05TXzE5TGF5ZXJSZXByZXNlbnRhdGlvbkUK
LV9fWk43V2ViQ29yZTI3U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlMTRzZXRIZWFkZXJMYXll
ckVSS05TXzE5TGF5ZXJSZXByZXNlbnRhdGlvbkUKLV9fWk43V2ViQ29yZTI3U2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlMTVzZXRGb290ZXJIZWlnaHRFaQotX19aTjdXZWJDb3JlMjdTY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGUxNXNldEhlYWRlckhlaWdodEVpCitfX1pON1dlYkNvcmUyNlNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlMTdzZXRTY3JvbGxQb3NpdGlvbkVSS05TXzEwRmxvYXRQ
b2ludEUKK19fWk43V2ViQ29yZTI2U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUxOXVwZGF0ZUFm
dGVyQ2hpbGRyZW5FUktOU18xOFNjcm9sbGluZ1N0YXRlTm9kZUUKK19fWk43V2ViQ29yZTI2U2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGUyMHVwZGF0ZUJlZm9yZUNoaWxkcmVuRVJLTlNfMThTY3Jv
bGxpbmdTdGF0ZU5vZGVFCitfX1pON1dlYkNvcmUyNlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
NDZzZXRTY3JvbGxQb3NpdGlvbldpdGhvdXRDb250ZW50RWRnZUNvbnN0cmFpbnRzRVJLTlNfMTBG
bG9hdFBvaW50RQogX19aTjdXZWJDb3JlMjdTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUxNXNl
dFNjcm9sbE9yaWdpbkVSS05TXzhJbnRQb2ludEUKLV9fWk43V2ViQ29yZTI3U2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlMTVzZXRWaWV3cG9ydFNpemVFUktOU185RmxvYXRTaXplRQotX19aTjdX
ZWJDb3JlMjdTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUxN3NldEluc2V0Q2xpcExheWVyRVJL
TlNfMTlMYXllclJlcHJlc2VudGF0aW9uRQogX19aTjdXZWJDb3JlMjdTY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGUxN3NldFNjcm9sbFBvc2l0aW9uRVJLTlNfMTBGbG9hdFBvaW50RQotX19aTjdX
ZWJDb3JlMjdTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUxOHNldFRvcENvbnRlbnRJbnNldEVm
Ci1fX1pON1dlYkNvcmUyN1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTE5c2V0RnJhbWVTY2Fs
ZUZhY3RvckVmCi1fX1pON1dlYkNvcmUyN1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTIwc2V0
VG90YWxDb250ZW50c1NpemVFUktOU183SW50U2l6ZUUKLV9fWk43V2ViQ29yZTI3U2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlMjFzZXRDb250ZW50U2hhZG93TGF5ZXJFUktOU18xOUxheWVyUmVw
cmVzZW50YXRpb25FCi1fX1pON1dlYkNvcmUyN1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTI0
c2V0Q291bnRlclNjcm9sbGluZ0xheWVyRVJLTlNfMTlMYXllclJlcHJlc2VudGF0aW9uRQotX19a
TjdXZWJDb3JlMjdTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUyNHNldFNjcm9sbGVkQ29udGVu
dHNMYXllckVSS05TXzE5TGF5ZXJSZXByZXNlbnRhdGlvbkUKLV9fWk43V2ViQ29yZTI3U2Nyb2xs
aW5nU3RhdGVTY3JvbGxpbmdOb2RlMjVzZXRXaGVlbEV2ZW50SGFuZGxlckNvdW50RWoKLV9fWk43
V2ViQ29yZTI3U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlMjZzZXROb25GYXN0U2Nyb2xsYWJs
ZVJlZ2lvbkVSS05TXzZSZWdpb25FCitfX1pON1dlYkNvcmUyN1Njcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZTIwc2V0VG90YWxDb250ZW50c1NpemVFUktOU185RmxvYXRTaXplRQorX19aTjdXZWJD
b3JlMjdTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUyMXNldFNjcm9sbGFibGVBcmVhU2l6ZUVS
S05TXzlGbG9hdFNpemVFCiBfX1pON1dlYkNvcmUyN1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZTI2c2V0UmVxdWVzdGVkU2Nyb2xsUG9zaXRpb25FUktOU18xMEZsb2F0UG9pbnRFYgogX19aTjdX
ZWJDb3JlMjdTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUyN3NldFNjcm9sbGFibGVBcmVhUGFy
YW1ldGVyc0VSS05TXzI0U2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzRQotX19aTjdXZWJDb3JlMjdT
Y3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUzMHNldFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29u
c0VqCi1fX1pON1dlYkNvcmUyN1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTMzc2V0U2Nyb2xs
QmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzRU5TXzMwU2Nyb2xsQmVoYXZpb3JGb3JGaXhlZEVsZW1l
bnRzRQorX19aTjdXZWJDb3JlMzJTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTE0c2V0
Rm9vdGVyTGF5ZXJFUktOU18xOUxheWVyUmVwcmVzZW50YXRpb25FCitfX1pON1dlYkNvcmUzMlNj
cm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlMTRzZXRIZWFkZXJMYXllckVSS05TXzE5TGF5
ZXJSZXByZXNlbnRhdGlvbkUKK19fWk43V2ViQ29yZTMyU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9s
bGluZ05vZGUxNXNldEZvb3RlckhlaWdodEVpCitfX1pON1dlYkNvcmUzMlNjcm9sbGluZ1N0YXRl
RnJhbWVTY3JvbGxpbmdOb2RlMTVzZXRIZWFkZXJIZWlnaHRFaQorX19aTjdXZWJDb3JlMzJTY3Jv
bGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTE3c2V0SW5zZXRDbGlwTGF5ZXJFUktOU18xOUxh
eWVyUmVwcmVzZW50YXRpb25FCitfX1pON1dlYkNvcmUzMlNjcm9sbGluZ1N0YXRlRnJhbWVTY3Jv
bGxpbmdOb2RlMThzZXRUb3BDb250ZW50SW5zZXRFZgorX19aTjdXZWJDb3JlMzJTY3JvbGxpbmdT
dGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTE5c2V0RnJhbWVTY2FsZUZhY3RvckVmCitfX1pON1dlYkNv
cmUzMlNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlMjFzZXRDb250ZW50U2hhZG93TGF5
ZXJFUktOU18xOUxheWVyUmVwcmVzZW50YXRpb25FCitfX1pON1dlYkNvcmUzMlNjcm9sbGluZ1N0
YXRlRnJhbWVTY3JvbGxpbmdOb2RlMjRzZXRDb3VudGVyU2Nyb2xsaW5nTGF5ZXJFUktOU18xOUxh
eWVyUmVwcmVzZW50YXRpb25FCitfX1pON1dlYkNvcmUzMlNjcm9sbGluZ1N0YXRlRnJhbWVTY3Jv
bGxpbmdOb2RlMjVzZXRXaGVlbEV2ZW50SGFuZGxlckNvdW50RWoKK19fWk43V2ViQ29yZTMyU2Ny
b2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUyNnNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9u
RVJLTlNfNlJlZ2lvbkUKK19fWk43V2ViQ29yZTMyU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGlu
Z05vZGUzMHNldFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uc0VqCitfX1pON1dlYkNvcmUzMlNj
cm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlMzNzZXRTY3JvbGxCZWhhdmlvckZvckZpeGVk
RWxlbWVudHNFTlNfMzBTY3JvbGxCZWhhdmlvckZvckZpeGVkRWxlbWVudHNFCitfX1pON1dlYkNv
cmUzNFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVDMkVSTlNfMTNTY3JvbGxpbmdU
cmVlRXkKK19fWk43V2ViQ29yZTM0U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUQy
RXYKK19fWk43V2ViQ29yZTM1U2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGUyNHNl
dFNjcm9sbGVkQ29udGVudHNMYXllckVSS05TXzE5TGF5ZXJSZXByZXNlbnRhdGlvbkUKIF9fWk5L
N1dlYkNvcmUyNUFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IyNHNjcm9sbGluZ1N0YXRlVHJlZUFz
VGV4dEV2CitfX1pOSzdXZWJDb3JlMjZTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTIxbWF4aW11
bVNjcm9sbFBvc2l0aW9uRXYKK19fWk5LN1dlYkNvcmUyNlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlMjFtaW5pbXVtU2Nyb2xsUG9zaXRpb25FdgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVNZTkNf
U0NST0xMSU5HKSAmJiBQTEFURk9STShNQUMpCi1fX1pON1dlYkNvcmUyOVNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlTWFjNmNyZWF0ZUVSTlNfMTNTY3JvbGxpbmdUcmVlRU5TXzE3U2Nyb2xsaW5n
Tm9kZVR5cGVFeQorX19aTjdXZWJDb3JlMzRTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
TWFjNmNyZWF0ZUVSTlNfMTNTY3JvbGxpbmdUcmVlRXkKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFT
WU5DX1NDUk9MTElORykgJiYgUExBVEZPUk0oSU9TKQotX19aTjdXZWJDb3JlMjlTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZUlPUzE3c2V0U2Nyb2xsUG9zaXRpb25FUktOU18xMEZsb2F0UG9pbnRF
Ci1fX1pON1dlYkNvcmUyOVNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TMTl1cGRhdGVBZnRl
ckNoaWxkcmVuRVJLTlNfMThTY3JvbGxpbmdTdGF0ZU5vZGVFCi1fX1pON1dlYkNvcmUyOVNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TMjB1cGRhdGVCZWZvcmVDaGlsZHJlbkVSS05TXzE4U2Ny
b2xsaW5nU3RhdGVOb2RlRQotX19aTjdXZWJDb3JlMjlTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZUlPUzMxdXBkYXRlTGF5ZXJzQWZ0ZXJWaWV3cG9ydENoYW5nZUVSS05TXzlGbG9hdFJlY3RFZAot
X19aTjdXZWJDb3JlMjlTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUzMydXBkYXRlTGF5ZXJz
QWZ0ZXJEZWxlZ2F0ZWRTY3JvbGxFUktOU18xMEZsb2F0UG9pbnRFCi1fX1pON1dlYkNvcmUyOVNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TNDZzZXRTY3JvbGxQb3NpdGlvbldpdGhvdXRDb250
ZW50RWRnZUNvbnN0cmFpbnRzRVJLTlNfMTBGbG9hdFBvaW50RQotX19aTjdXZWJDb3JlMjlTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUzZjcmVhdGVFUk5TXzEzU2Nyb2xsaW5nVHJlZUVOU18x
N1Njcm9sbGluZ05vZGVUeXBlRXkKLV9fWk43V2ViQ29yZTI5U2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVJT1NDMkVSTlNfMTNTY3JvbGxpbmdUcmVlRU5TXzE3U2Nyb2xsaW5nTm9kZVR5cGVFeQot
X19aTjdXZWJDb3JlMjlTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPU0QyRXYKK19fWk43V2Vi
Q29yZTM0U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUzZjcmVhdGVFUk5TXzEzU2Ny
b2xsaW5nVHJlZUV5CiAjZW5kaWYKIAogI2lmIFVTRShBVkZPVU5EQVRJT04pCkBAIC0zMjMxLDcg
KzMyMzIsOSBAQCBfX1pON1dlYkNvcmUxNlNjcmlwdENvbnRyb2xsZXIxNmNyZWF0ZVJvb3RPYmpl
Y3RFUHYKIAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiBfX1pON1dlYkNvcmUxME1vdXNlRXZl
bnQ2Y3JlYXRlRVJLTjNXVEYxMkF0b21pY1N0cmluZ0ViYmROUzFfMTBQYXNzUmVmUHRySU5TXzlE
T01XaW5kb3dFRUVpaWlpaWlpYmJiYnROUzVfSU5TXzExRXZlbnRUYXJnZXRFRUVOUzVfSU5TXzEy
RGF0YVRyYW5zZmVyRUVFYgotI2Vsc2UKKyNlbmRpZgorCisjaWYgIUVOQUJMRShQT0lOVEVSX0xP
Q0spCiBfX1pON1dlYkNvcmUxME1vdXNlRXZlbnQ2Y3JlYXRlRVJLTjNXVEYxMkF0b21pY1N0cmlu
Z0ViYmROUzFfMTBQYXNzUmVmUHRySU5TXzlET01XaW5kb3dFRUVpaWlpaWJiYmJ0TlM1X0lOU18x
MUV2ZW50VGFyZ2V0RUVFTlM1X0lOU18xMkRhdGFUcmFuc2ZlckVFRWIKICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
OGM5ZmNjOWZjNjBhZTllMDA2YWE0OGVlZjczMWJkYWUxM2FlYzExOS4uYmZlODg1ZGQwYjFjZTBh
NDIzN2ZhMzQ0OGI5ZDYyNGM1NzFmOTdjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTIwLDcgKzUyMCw3IEBACiAJCTBGOTdB
NjU4MTU1REE4MUUwMEZBREQ0QyAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjk3QTY1NzE1NURBODFF
MDBGQURENEMgLyogRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TLm1tICovOyB9OwogCQkwRkEyNEQ3
OTE2MkRGOTE5MDBBM0Y0QzAgLyogR3JhcGhpY3NMYXllclVwZGF0ZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBMjRENzcxNjJERjkxOTAwQTNG
NEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmNwcCAqLzsgfTsKIAkJMEZBMjREN0ExNjJERjkx
OTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkEyNEQ3ODE2MkRGOTE5MDBBM0Y0QzAgLyogR3Jh
cGhpY3NMYXllclVwZGF0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwotCQkwRkE4OEVCRDE2QThEMUJEMDBGOTk5ODQgLyogU2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZBODhFQkMxNkE4RDFCRDAwRjk5OTg0IC8qIFNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZU1hYy5tbSAqLzsgfTsKKwkJMEZBODhFQkQxNkE4RDFCRDAwRjk5OTg0IC8qIFNjcm9s
bGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBODhFQkMxNkE4RDFCRDAwRjk5OTg0IC8qIFNjcm9s
bGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tICovOyB9OwogCQkwRkI2MjUyRTE4REUx
QjE1MDBBMDdDMDUgLyogR2VvbWV0cnlVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNjI1MkMxOERFMUIxNTAwQTA3QzA1IC8qIEdl
b21ldHJ5VXRpbGl0aWVzLmNwcCAqLzsgfTsKIAkJMEZCNjI1MkYxOERFMUIxNTAwQTA3QzA1IC8q
IEdlb21ldHJ5VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkI2MjUyRDE4REUxQjE1MDBBMDdDMDUgLyogR2VvbWV0cnlVdGlsaXRpZXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkI4
ODkwQTE2N0QyRkExMDAxMENEQTUgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjg4OTA4MTY3RDJGQTEw
MDEwQ0RBNSAvKiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01MzEsOCArNTMxLDggQEAKIAkJMEZDNEU0
MEUxODdGODJFMTAwNDU4ODJDIC8qIFNjcm9sbGluZ0Nvb3JkaW5hdG9ySU9TLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDNEU0MDgxODdGODJFMTAw
NDU4ODJDIC8qIFNjcm9sbGluZ0Nvb3JkaW5hdG9ySU9TLm1tICovOyB9OwogCQkwRkM0RTQwRjE4
N0Y4MkUxMDA0NTg4MkMgLyogU2Nyb2xsaW5nVHJlZUlPUy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkM0RTQwOTE4N0Y4MkUxMDA0NTg4MkMgLyog
U2Nyb2xsaW5nVHJlZUlPUy5jcHAgKi87IH07CiAJCTBGQzRFNDEwMTg3RjgyRTEwMDQ1ODgyQyAv
KiBTY3JvbGxpbmdUcmVlSU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkM0RTQwQTE4N0Y4MkUxMDA0NTg4MkMgLyogU2Nyb2xsaW5nVHJlZUlPUy5o
ICovOyB9OwotCQkwRkM0RTQxMTE4N0Y4MkUxMDA0NTg4MkMgLyogU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGQzRFNDBCMTg3RjgyRTEwMDQ1ODgyQyAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZUlPUy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0J
CTBGQzRFNDEyMTg3RjgyRTEwMDQ1ODgyQyAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlP
Uy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzRF
NDBDMTg3RjgyRTEwMDQ1ODgyQyAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUy5tbSAq
LzsgfTsKKwkJMEZDNEU0MTExODdGODJFMTAwNDU4ODJDIC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGQzRFNDBCMTg3RjgyRTEwMDQ1ODgyQyAvKiBTY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlSU9TLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJMEZDNEU0MTIxODdGODJFMTAwNDU4ODJDIC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkM0RTQwQzE4N0Y4MkUxMDA0NTg4MkMgLyogU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZUlPUy5tbSAqLzsgfTsKIAkJMEZDRjMzMjQwRjJCOTcxNTAwNEI2Nzk1IC8qIENv
bG9yQ0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZDRjMzMjMwRjJCOTcxNTAwNEI2Nzk1IC8qIENvbG9yQ0cuY3BwICovOyB9OwogCQkwRkNGMzMy
RTBGMkI5QTI1MDA0QjY3OTUgLyogV2ViTGF5ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkNGMzMyQTBGMkI5QTI1MDA0QjY3OTUgLyogV2ViTGF5
ZXIubW0gKi87IH07CiAJCTBGQ0YzMzJGMEYyQjlBMjUwMDRCNjc5NSAvKiBXZWJMYXllci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDRjMzMkIwRjJC
OUEyNTAwNEI2Nzk1IC8qIFdlYkxheWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTU1Niw2ICs1NTYsMTQgQEAKIAkJMEZEQTdDMjcxODgzMzMz
MjAwQzk1NEI1IC8qIEpTV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEQTdDMjUxODgz
MzMzMjAwQzk1NEI1IC8qIEpTV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5o
ICovOyB9OwogCQkwRkU3MTQwNTE0MjE3MEI4MDBEQjMzQkEgLyogU2Nyb2xsYmFyVGhlbWVNb2Nr
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTcx
NDAzMTQyMTcwQjgwMERCMzNCQSAvKiBTY3JvbGxiYXJUaGVtZU1vY2suY3BwICovOyB9OwogCQkw
RkU3MTQwNjE0MjE3MEI4MDBEQjMzQkEgLyogU2Nyb2xsYmFyVGhlbWVNb2NrLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkU3MTQwNDE0MjE3MEI4MDBE
QjMzQkEgLyogU2Nyb2xsYmFyVGhlbWVNb2NrLmggKi87IH07CisJCTBGRUEzRTdCMTkxQjJGQzUw
MDBGMUI1NSAvKiBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQTNFNzkxOTFCMkZDNTAwMEYx
QjU1IC8qIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZFQTNFN0MxOTFCMkZDNTAwMEYx
QjU1IC8qIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUEzRTdBMTkxQjJGQzUwMDBGMUI1
NSAvKiBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5jcHAgKi87IH07CisJCTBGRUEz
RTdGMTkxQjMxNjkwMDBGMUI1NSAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUEz
RTdEMTkxQjMxNjkwMDBGMUI1NSAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
LmNwcCAqLzsgfTsKKwkJMEZFQTNFODAxOTFCMzE2OTAwMEYxQjU1IC8qIFNjcm9sbGluZ1RyZWVP
dmVyZmxvd1Njcm9sbGluZ05vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGRUEzRTdFMTkxQjMxNjkwMDBGMUI1NSAvKiBTY3JvbGxpbmdUcmVlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJMEZFQTNFODMxOTFCMzFCRjAwMEYxQjU1IC8qIFNjcm9sbGluZ1N0YXRl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGRUEzRTgxMTkxQjMxQkYwMDBGMUI1NSAvKiBTY3JvbGxpbmdTdGF0
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5jcHAgKi87IH07CisJCTBGRUEzRTg0MTkxQjMxQkYwMDBG
MUI1NSAvKiBTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQTNFODIxOTFCMzFCRjAwMEYx
QjU1IC8qIFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZFQTNFODcxOTFCM0JENzAw
MEYxQjU1IC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQTNFODUxOTFCM0JENzAwMEYx
QjU1IC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuY3BwICovOyB9OworCQkwRkVB
M0U4ODE5MUIzQkQ3MDAwRjFCNTUgLyogU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQTNFODYx
OTFCM0JENzAwMEYxQjU1IC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkY1MDI1QjEw
MkJBOTAxMDA2NkYzOUEgLyogRE9NU3R5bGVNZWRpYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNTAyNTkxMDJCQTkwMTAwNjZGMzlBIC8qIERPTVN0
eWxlTWVkaWEuaCAqLzsgfTsKIAkJMEZGNTAyNUMxMDJCQTkwMTAwNjZGMzlBIC8qIERPTVN0eWxl
TWVkaWEubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkY1MDI1QTEwMkJBOTAxMDA2NkYzOUEgLyogRE9NU3R5bGVNZWRpYS5tbSAqLzsgfTsKIAkJMEZG
NTAyNjMxMDJCQTkyQzAwNjZGMzlBIC8qIERPTVN0eWxlTWVkaWFJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNTAyNjIxMDJCQTkyQjAw
NjZGMzlBIC8qIERPTVN0eWxlTWVkaWFJbnRlcm5hbC5oICovOyB9OwpAQCAtMzI1NSw4ICszMjYz
LDggQEAKIAkJOTNDMzhDMDMxNjQ0NzNERDAwMDkxRUIyIC8qIFNjcm9sbGluZ1RyZWVGaXhlZE5v
ZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQzM4
QzAxMTY0NDczREQwMDA5MUVCMiAvKiBTY3JvbGxpbmdUcmVlRml4ZWROb2RlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNDMzhDMDQxNjQ0NzNE
RDAwMDkxRUIyIC8qIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGUubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0MzOEMwMjE2NDQ3M0REMDAwOTFFQjIgLyog
U2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5tbSAqLzsgfTsKIAkJOTNDNDQyMDAwRjgxM0FFMTAwQzFB
NjM0IC8qIENvbGxlY3Rpb25UeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0M0NDFGRjBGODEzQUUxMDBDMUE2MzQgLyogQ29sbGVjdGlvblR5cGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk5M0M0
QTQxNTE2MjlERjVBMDBDM0VCNkUgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQzRBNDEzMTYy
OURGNUEwMEMzRUI2RSAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZU1hYy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTkzQzRBNDE2MTYyOURG
NUEwMEMzRUI2RSAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZU1hYy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQzRBNDE0MTYyOURGNUEwMEMz
RUI2RSAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZU1hYy5tbSAqLzsgfTsKKwkJOTNDNEE0
MTUxNjI5REY1QTAwQzNFQjZFIC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQzRBNDEz
MTYyOURGNUEwMEMzRUI2RSAvKiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTNDNEE0
MTYxNjI5REY1QTAwQzNFQjZFIC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0M0QTQx
NDE2MjlERjVBMDBDM0VCNkUgLyogU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5t
bSAqLzsgfTsKIAkJOTNDNEY2RUIxMTA4RjlBNTAwOTlEMERCIC8qIEFjY2Vzc2liaWxpdHlTY3Jv
bGxiYXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
QzRGNkU5MTEwOEY5QTUwMDk5RDBEQiAvKiBBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmggKi87IH07
CiAJCTkzQzg0MUY4MDlDRTg1NUMwMERGRjVFNSAvKiBET01JbXBsZW1lbnRhdGlvbkZyb250Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0M4NDFGNzA5
Q0U4NTVDMDBERkY1RTUgLyogRE9NSW1wbGVtZW50YXRpb25Gcm9udC5oICovOyB9OwogCQk5M0M4
NDFGRjA5Q0U4NTgzMDBERkY1RTUgLyogRE9NSW1wbGVtZW50YXRpb25Gcm9udC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0M4NDFGRTA5Q0U4NTgz
MDBERkY1RTUgLyogRE9NSW1wbGVtZW50YXRpb25Gcm9udC5jcHAgKi87IH07CkBAIC03MzkxLDcg
KzczOTksNyBAQAogCQkwRjk3QTY1NzE1NURBODFFMDBGQURENEMgLyogRGlzcGxheVJlZnJlc2hN
b25pdG9ySU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRGlz
cGxheVJlZnJlc2hNb25pdG9ySU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RkEyNEQ3NzE2MkRGOTE5MDBBM0Y0QzAgLyogR3JhcGhpY3NMYXllclVwZGF0ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NMYXllclVwZGF0ZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkEyNEQ3ODE2MkRGOTE5MDBBM0Y0QzAg
LyogR3JhcGhpY3NMYXllclVwZGF0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR3JhcGhpY3NMYXllclVwZGF0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MEZBODhFQkMxNkE4RDFCRDAwRjk5OTg0IC8qIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZU1h
Yy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZB
ODhFQkMxNkE4RDFCRDAwRjk5OTg0IC8qIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2Rl
TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsaW5n
U3RhdGVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGQjYyNTJDMThERTFCMTUwMEEwN0MwNSAvKiBHZW9tZXRyeVV0aWxpdGllcy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW9tZXRyeVV0aWxpdGllcy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQjYyNTJEMThERTFCMTUwMEEwN0MwNSAv
KiBHZW9tZXRyeVV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBH
ZW9tZXRyeVV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI4ODkw
ODE2N0QyRkExMDAxMENEQTUgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc0MDIsOCArNzQxMCw4IEBACiAJCTBGQzRFNDA4MTg3
RjgyRTEwMDQ1ODgyQyAvKiBTY3JvbGxpbmdDb29yZGluYXRvcklPUy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFNjcm9sbGluZ0Nvb3JkaW5hdG9ySU9TLm1tOyBw
YXRoID0gaW9zL1Njcm9sbGluZ0Nvb3JkaW5hdG9ySU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRkM0RTQwOTE4N0Y4MkUxMDA0NTg4MkMgLyogU2Nyb2xsaW5nVHJlZUlPUy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTY3JvbGxpbmdUcmVlSU9T
LmNwcDsgcGF0aCA9IGlvcy9TY3JvbGxpbmdUcmVlSU9TLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEZDNEU0MEExODdGODJFMTAwNDU4ODJDIC8qIFNjcm9sbGluZ1RyZWVJT1Mu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU2Nyb2xsaW5nVHJlZUlPUy5oOyBw
YXRoID0gaW9zL1Njcm9sbGluZ1RyZWVJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMEZDNEU0MEIxODdGODJFMTAwNDU4ODJDIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
SU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlSU9TLmg7IHBhdGggPSBpb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1Mu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEZDNEU0MEMxODdGODJFMTAwNDU4ODJD
IC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBuYW1lID0gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1MubW07IHBh
dGggPSBpb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1MubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGQzRFNDBCMTg3RjgyRTEwMDQ1ODgyQyAvKiBTY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlSU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1MuaDsgcGF0aCA9IGlvcy9TY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGQzRFNDBDMTg3RjgyRTEwMDQ1ODgyQyAvKiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxp
bmdOb2RlSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gU2Ny
b2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUy5tbTsgcGF0aCA9IGlvcy9TY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRkNGMzMyMzBGMkI5NzE1MDA0QjY3OTUgLyogQ29sb3JDRy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb2xvckNHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEZDRjMzMkEwRjJCOUEyNTAwNEI2Nzk1IC8qIFdlYkxheWVyLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViTGF5ZXIubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGQ0YzMzJCMEYyQjlBMjUwMDRCNjc5NSAvKiBXZWJMYXllci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJMYXllci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNzQyOCw2ICs3NDM2LDE0IEBACiAJCTBGRTcxNDAzMTQyMTcw
QjgwMERCMzNCQSAvKiBTY3JvbGxiYXJUaGVtZU1vY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEZFNzE0MDQxNDIxNzBCODAwREIzM0JBIC8qIFNjcm9sbGJhclRoZW1l
TW9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxiYXJUaGVtZU1v
Y2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFNzE0MTUxNDIxODlGQzAwREIz
M0JBIC8qIFNjcm9sbGJhclRoZW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNjcm9sbGJhclRoZW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEZFQTNFNzkxOTFCMkZDNTAwMEYxQjU1IC8qIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdO
b2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbGluZ1N0YXRlRnJh
bWVTY3JvbGxpbmdOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRUEzRTdB
MTkxQjJGQzUwMDBGMUI1NSAvKiBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxpbmdTdGF0ZUZyYW1l
U2Nyb2xsaW5nTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRUEzRTdE
MTkxQjMxNjkwMDBGMUI1NSAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9sbGluZ1RyZWVPdmVy
Zmxvd1Njcm9sbGluZ05vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkVB
M0U3RTE5MUIzMTY5MDAwRjFCNTUgLyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxpbmdUcmVlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRUEzRTgx
MTkxQjMxQkYwMDBGMUI1NSAvKiBTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxpbmdTdGF0ZU92
ZXJmbG93U2Nyb2xsaW5nTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
RUEzRTgyMTkxQjMxQkYwMDBGMUI1NSAvKiBTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5n
Tm9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxpbmdTdGF0ZU92
ZXJmbG93U2Nyb2xsaW5nTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkVB
M0U4NTE5MUIzQkQ3MDAwRjFCNTUgLyogU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQTNF
ODYxOTFCM0JENzAwMEYxQjU1IC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkY1MDI1OTEwMkJBOTAx
MDA2NkYzOUEgLyogRE9NU3R5bGVNZWRpYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBET01TdHlsZU1lZGlhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRjUw
MjVBMTAyQkE5MDEwMDY2RjM5QSAvKiBET01TdHlsZU1lZGlhLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NU3R5bGVNZWRpYS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEZGNTAyNjIxMDJCQTkyQjAwNjZGMzlBIC8qIERPTVN0eWxlTWVkaWFJ
bnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01TdHlsZU1lZGlh
SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMzI3LDggKzEwMzQz
LDggQEAKIAkJOTNDMzhDMDExNjQ0NzNERDAwMDkxRUIyIC8qIFNjcm9sbGluZ1RyZWVGaXhlZE5v
ZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsaW5nVHJlZUZpeGVk
Tm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0MzOEMwMjE2NDQ3M0REMDAw
OTFFQjIgLyogU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFNjcm9sbGluZ1RyZWVGaXhlZE5vZGUubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTkzQzQ0MUZGMEY4MTNBRTEwMEMxQTYzNCAvKiBDb2xsZWN0aW9u
VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2xsZWN0aW9uVHlwZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5M0M0QTQxMzE2MjlERjVBMDBDM0VCNkUg
LyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJOTNDNEE0MTQxNjI5REY1QTAwQzNFQjZFIC8qIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTkzQzRBNDEzMTYyOURGNUEwMEMzRUI2RSAvKiBTY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTNDNEE0MTQxNjI5REY1QTAwQzNFQjZFIC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5M0M0RjZFOTExMDhGOUE1MDA5OUQwREIgLyogQWNjZXNzaWJpbGl0eVNj
cm9sbGJhci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5
U2Nyb2xsYmFyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQzg0MUY3MDlDRTg1
NUMwMERGRjVFNSAvKiBET01JbXBsZW1lbnRhdGlvbkZyb250LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERPTUltcGxlbWVudGF0aW9uRnJvbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTNDODQxRkUwOUNFODU4MzAwREZGNUU1IC8qIERPTUltcGxlbWVudGF0
aW9uRnJvbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NSW1w
bGVtZW50YXRpb25Gcm9udC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDcz
Niw4ICsxNDc1Miw4IEBACiAJCQkJMEZDNEU0MDgxODdGODJFMTAwNDU4ODJDIC8qIFNjcm9sbGlu
Z0Nvb3JkaW5hdG9ySU9TLm1tICovLAogCQkJCTBGQzRFNDA5MTg3RjgyRTEwMDQ1ODgyQyAvKiBT
Y3JvbGxpbmdUcmVlSU9TLmNwcCAqLywKIAkJCQkwRkM0RTQwQTE4N0Y4MkUxMDA0NTg4MkMgLyog
U2Nyb2xsaW5nVHJlZUlPUy5oICovLAotCQkJCTBGQzRFNDBCMTg3RjgyRTEwMDQ1ODgyQyAvKiBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUy5oICovLAotCQkJCTBGQzRFNDBDMTg3RjgyRTEw
MDQ1ODgyQyAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUy5tbSAqLywKKwkJCQkwRkM0
RTQwQjE4N0Y4MkUxMDA0NTg4MkMgLyogU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlP
Uy5oICovLAorCQkJCTBGQzRFNDBDMTg3RjgyRTEwMDQ1ODgyQyAvKiBTY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlSU9TLm1tICovLAogCQkJKTsKIAkJCW5hbWUgPSBpb3M7CiAJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTQ5ODUsNiArMTUwMDEsMTAgQEAKIAkJCQk5MzFDQkQw
NzE2MUE0NEU5MDBFNEM4NzQgLyogU2Nyb2xsaW5nU3RhdGVOb2RlLmggKi8sCiAJCQkJOTMxQ0JE
MDgxNjFBNDRFOTAwRTRDODc0IC8qIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAgKi8s
CiAJCQkJOTMxQ0JEMDkxNjFBNDRFOTAwRTRDODc0IC8qIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5n
Tm9kZS5oICovLAorCQkJCTBGRUEzRTdBMTkxQjJGQzUwMDBGMUI1NSAvKiBTY3JvbGxpbmdTdGF0
ZUZyYW1lU2Nyb2xsaW5nTm9kZS5jcHAgKi8sCisJCQkJMEZFQTNFNzkxOTFCMkZDNTAwMEYxQjU1
IC8qIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlLmggKi8sCisJCQkJMEZFQTNFODEx
OTFCMzFCRjAwMEYxQjU1IC8qIFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmNw
cCAqLywKKwkJCQkwRkVBM0U4MjE5MUIzMUJGMDAwRjFCNTUgLyogU2Nyb2xsaW5nU3RhdGVPdmVy
Zmxvd1Njcm9sbGluZ05vZGUuaCAqLywKIAkJCQkwRkI4ODkwQzE2N0QzMDE2MDAxMENEQTUgLyog
U2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlLmNwcCAqLywKIAkJCQkwRkI4ODkwRDE2N0QzMDE2MDAx
MENEQTUgLyogU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlLmggKi8sCiAJCQkJOTMxQ0JEMEExNjFB
NDRFOTAwRTRDODc0IC8qIFNjcm9sbGluZ1N0YXRlVHJlZS5jcHAgKi8sCkBAIC0xNDk5NSw2ICsx
NTAxNSwxMCBAQAogCQkJCTFBQUFEREEyMTREQjQwOUYwMEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVl
LmggKi8sCiAJCQkJMUFBQURERTExNERDOEM4RjAwQUY2NEIzIC8qIFNjcm9sbGluZ1RyZWVOb2Rl
LmNwcCAqLywKIAkJCQkxQUFBRERFMjE0REM4QzhGMDBBRjY0QjMgLyogU2Nyb2xsaW5nVHJlZU5v
ZGUuaCAqLywKKwkJCQkwRkVBM0U4NTE5MUIzQkQ3MDAwRjFCNTUgLyogU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZS5jcHAgKi8sCisJCQkJMEZFQTNFODYxOTFCM0JENzAwMEYxQjU1IC8q
IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaCAqLywKKwkJCQkwRkVBM0U3RDE5MUIz
MTY5MDAwRjFCNTUgLyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5jcHAgKi8s
CisJCQkJMEZFQTNFN0UxOTFCMzE2OTAwMEYxQjU1IC8qIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Nj
cm9sbGluZ05vZGUuaCAqLywKIAkJCQk5MzkxQTk5QTE2MjlENkZGMDAyOTczMzAgLyogU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwICovLAogCQkJCTkzOTFBOTlCMTYyOUQ3MDAwMDI5NzMz
MCAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oICovLAogCQkJCTBGNjM4M0RCMTg2MTVC
MjkwMDNFNURCNSAvKiBUaHJlYWRlZFNjcm9sbGluZ1RyZWUuY3BwICovLApAQCAtMTUwMDksMTIg
KzE1MDMzLDEyIEBACiAJCQkJOTM5MUE5OTAxNjI3NDZDQjAwMjk3MzMwIC8qIFNjcm9sbGluZ0Nv
b3JkaW5hdG9yTWFjLmggKi8sCiAJCQkJMUFGNjJFRTMxNERBMjJBNzAwNDE1NTZDIC8qIFNjcm9s
bGluZ0Nvb3JkaW5hdG9yTWFjLm1tICovLAogCQkJCTkzMUNCRDEyMTYxQTQ0RjgwMEU0Qzg3NCAv
KiBTY3JvbGxpbmdTdGF0ZU5vZGVNYWMubW0gKi8sCi0JCQkJMEZBODhFQkMxNkE4RDFCRDAwRjk5
OTg0IC8qIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZU1hYy5tbSAqLywKKwkJCQkwRkE4OEVC
QzE2QThEMUJEMDBGOTk5ODQgLyogU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGVNYWMu
bW0gKi8sCiAJCQkJMUFGNjJGMjMxNERBRkU5MTAwNDE1NTZDIC8qIFNjcm9sbGluZ1RocmVhZE1h
Yy5tbSAqLywKIAkJCQk5M0MzOEMwMTE2NDQ3M0REMDAwOTFFQjIgLyogU2Nyb2xsaW5nVHJlZUZp
eGVkTm9kZS5oICovLAogCQkJCTkzQzM4QzAyMTY0NDczREQwMDA5MUVCMiAvKiBTY3JvbGxpbmdU
cmVlRml4ZWROb2RlLm1tICovLAotCQkJCTkzQzRBNDEzMTYyOURGNUEwMEMzRUI2RSAvKiBTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZU1hYy5oICovLAotCQkJCTkzQzRBNDE0MTYyOURGNUEwMEMz
RUI2RSAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZU1hYy5tbSAqLywKKwkJCQk5M0M0QTQx
MzE2MjlERjVBMDBDM0VCNkUgLyogU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5o
ICovLAorCQkJCTkzQzRBNDE0MTYyOURGNUEwMEMzRUI2RSAvKiBTY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlTWFjLm1tICovLAogCQkJCTBGQjg4OTA4MTY3RDJGQTEwMDEwQ0RBNSAvKiBT
Y3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oICovLAogCQkJCTBGQjg4OTA5MTY3RDJGQTEwMDEwQ0RB
NSAvKiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbSAqLywKIAkJCSk7CkBAIC0yNDAxNCw2ICsy
NDAzOCw3IEBACiAJCQkJRDcyRjZEN0ExNTMxNTlBMzAwMUVFNDRFIC8qIEZsb3dUaHJlYWRDb250
cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDk5M0JFNjBCMkYyQjFDMDA1MDQ5N0YgLyog
Rm9jdXNDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNjIyODc4NDBCNERCMzIyMDAw
QzM0REYgLyogRm9jdXNEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRUEzRTg4MTkx
QjNCRDcwMDBGMUI1NSAvKiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCNkQ5RDIzNTE0RUFCRDI2MDA5MEQ3NUUgLyogRm9jdXNFdmVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBNjEwRDAwNkNENjAwRUY2RjI2IC8qIEZvbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDQjkyRDRGMTI5MzU1MEIwMEM4Mzg3RiAvKiBGb250QmFzZWxpbmUu
aCBpbiBIZWFkZXJzICovLApAQCAtMjQ1MjIsNiArMjQ1NDcsNyBAQAogCQkJCUZFODBEQTY0MEU5
QzQ3MDMwMDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTgw
REE2NjBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9wb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZEQTdDMUYxODgzMjJGQzAwQzk1NEI1IC8qIEpTR2VzdHVyZUV2ZW50LmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRkVBM0U4MDE5MUIzMTY5MDAwRjFCNTUgLyogU2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ4MkI3NTIxMTk4Q0I2QjAw
QkZCMDA1IC8qIEpTSGFzaENoYW5nZUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzk0RDE0
RjBDMjc1QzY4MDA2QkM2MTcgLyogSlNIaXN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzk3
RTQxMzEwOTE1NEZBMDAxMEQzNjEgLyogSlNIVE1MQWxsQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yNTYxOCw4ICsyNTY0NCw4IEBACiAJCQkJMEZDNEU0MTAxODdGODJFMTAwNDU4ODJD
IC8qIFNjcm9sbGluZ1RyZWVJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQUFEREU0MTREQzhD
OEYwMEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5
MUE5OUQxNjI5RDcwMDAwMjk3MzMwIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmggaW4g
SGVhZGVycyAqLywKLQkJCQkwRkM0RTQxMTE4N0Y4MkUxMDA0NTg4MkMgLyogU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVJT1MuaCBpbiBIZWFkZXJzICovLAotCQkJCTkzQzRBNDE1MTYyOURGNUEw
MEMzRUI2RSAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZU1hYy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMEZDNEU0MTExODdGODJFMTAwNDU4ODJDIC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGVJT1MuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzQzRBNDE1MTYyOURGNUEwMEMzRUI2
RSAvKiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkI4ODkwQTE2N0QyRkExMDAxMENEQTUgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzQzA5Qzg2MEIwNjU3QUEwMDVBQkQ0RCAvKiBTY3JvbGxU
eXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2RDZFMjYwOUFGOTQzNTAwRjU5NzU5IC8qIFNj
cm9sbFZpZXcuaCBpbiBIZWFkZXJzICovLApAQCAtMjU5MDQsNiArMjU5MzAsNyBAQAogCQkJCTA4
MUVCRjNCMEZEMzRGNDEwMERBNzU1OSAvKiBTVkdGaWx0ZXJCdWlsZGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCMjIyN0EwQzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRmlsdGVyRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBMEYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZFQTNFODQx
OTFCMzFCRjAwMEYxQjU1IC8qIFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0ExMjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRml0VG9W
aWV3Qm94LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjM3QzhBODBEMzQ0RDExMDAxM0Y3MDcgLyog
U1ZHRm9udERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQTFGMkFCMENFRjBBQkYwMDQ0MkY2
QSAvKiBTVkdGb250RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjI5OSw2ICsyNjMyNiw3
IEBACiAJCQkJNkVCRjBFNTUxMkE4OTI5ODAwREIxNzA5IC8qIFdlYkdMRXh0ZW5zaW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0OUM3QjlDRjEwNDJEMzJGMDAwOUQ0NDcgLyogV2ViR0xGcmFtZWJ1
ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkU0N0U2NjExMEI3OTQ0QjAwQjE4NkM4IC8qIFdl
YkdMR2V0SW5mby5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZFQTNFN0IxOTFCMkZDNTAwMEYxQjU1
IC8qIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0OUZGQkYzRjExQzkzRUUzMDA2QTcxMTggLyogV2ViR0xMYXllci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTNGMUQ1QkIxMkQ1MzJDNDAwODMyQkVDIC8qIFdlYkdMTG9zZUNvbnRleHQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQ5QzdCOUQ1MTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJHTE9iamVjdC5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yNzE5OCw2ICsyNzIyNiw3IEBACiAJCQkJODUwMzJERTAwQUE4
QzlCRTAwN0QzQjdEIC8qIERPTUNTU1BhZ2VSdWxlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODU4
QzM4MkQwQUE4RTQwNTAwQjE4N0E0IC8qIERPTUNTU1ByaW1pdGl2ZVZhbHVlLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJODUwMzJERTIwQUE4QzlCRTAwN0QzQjdEIC8qIERPTUNTU1J1bGUubW0gaW4g
U291cmNlcyAqLywKKwkJCQkwRkVBM0U4NzE5MUIzQkQ3MDAwRjFCNTUgLyogU2Nyb2xsaW5nVHJl
ZUZyYW1lU2Nyb2xsaW5nTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTAzMkRFNDBBQThD
OUJFMDA3RDNCN0QgLyogRE9NQ1NTUnVsZUxpc3QubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NTAz
MkRFNjBBQThDOUJFMDA3RDNCN0QgLyogRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbi5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTg1MDMyREU4MEFBOEM5QkUwMDdEM0I3RCAvKiBET01DU1NTdHlsZVJ1bGUu
bW0gaW4gU291cmNlcyAqLywKQEAgLTI3MzQyLDYgKzI3MzcxLDcgQEAKIAkJCQkyRTM3REZEQTEy
REJBRkI4MDBBNkIyMzMgLyogRE9NVVJMLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEOURFMTgx
MTdBQUQ2QTQwMEVBMzg2RCAvKiBET01VUkxNZWRpYVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCQzFBMzdCRjA5N0M3MTVGMDAxOUYzRDggLyogRE9NVXRpbGl0eS5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCTBGRUEzRTdDMTkxQjJGQzUwMDBGMUI1NSAvKiBTY3JvbGxpbmdTdGF0ZUZyYW1l
U2Nyb2xsaW5nTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNUM3NzBBNTEwMEQ0MUNEMDA1
QkEyNjcgLyogRE9NVmFsaWRpdHlTdGF0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTMxQzBGRjRB
MEU0Q0VGREQwMDdENkZFNSAvKiBET01XZWJLaXRBbmltYXRpb25FdmVudC5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTMxMDYwMzdBMTQzMjgxQ0QwMEFCRjRCQSAvKiBET01XZWJLaXRDU1NGaWx0ZXJW
YWx1ZS5tbSBpbiBTb3VyY2VzICovLApAQCAtMjgyMjgsNiArMjgyNTgsNyBAQAogCQkJCUI1OURE
NkE2MTE5MDJBNjIwMDdFOTY4NCAvKiBKU1NRTFN0YXRlbWVudENhbGxiYWNrLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUI1OURENkFBMTE5MDJBNzEwMDdFOTY4NCAvKiBKU1NRTFN0YXRlbWVudEVy
cm9yQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2MzgwQ0U5MjI1RTAwN0VG
M0NEIC8qIEpTU1FMVHJhbnNhY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZFQTNFN0Yx
OTFCMzE2OTAwMEYxQjU1IC8qIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQjU5REQ2OUUxMTkwMkE0MjAwN0U5Njg0IC8qIEpTU1FMVHJh
bnNhY3Rpb25DYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUQyMzE2RTBDRDI2OUU3
MDBDMUYxOTQgLyogSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCNTlERDZBMjExOTAyQTUyMDA3RTk2ODQgLyogSlNTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJh
Y2suY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yODI2Miw2ICsyODI5Myw3IEBACiAJCQkJQjJGQTNE
NEMwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHQW5pbWF0ZWRSZWN0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUIyRkEzRDRFMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0FuaW1hdGVkU3RyaW5nLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUIyRkEzRDUwMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0Fu
aW1hdGVkVHJhbnNmb3JtTGlzdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkVBM0U4MzE5MUIz
MUJGMDAwRjFCNTUgLyogU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNENTIwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHQW5pbWF0
ZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDQ5NkUzOUQxMzk4MTM2QzAwM0VFMzJB
IC8qIEpTU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJG
QTNENTQwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC0yOTAxMSw3ICsyOTA0Myw3IEBACiAJCQkJOTMxQ0JEMEMxNjFB
NDRFOTAwRTRDODc0IC8qIFNjcm9sbGluZ1N0YXRlTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5MzFDQkQxMzE2MUE0NEY4MDBFNEM4NzQgLyogU2Nyb2xsaW5nU3RhdGVOb2RlTWFjLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOTMxQ0JEMEUxNjFBNDRFOTAwRTRDODc0IC8qIFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkwRkE4OEVCRDE2QThEMUJE
MDBGOTk5ODQgLyogU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlTWFjLm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJMEZBODhFQkQxNkE4RDFCRDAwRjk5OTg0IC8qIFNjcm9sbGluZ1N0YXRlRnJhbWVT
Y3JvbGxpbmdOb2RlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCODg5MEUxNjdEMzAxNjAw
MTBDREE1IC8qIFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5MzFDQkQxMDE2MUE0NEU5MDBFNEM4NzQgLyogU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTFBRjYyRjI1MTREQUZFOUUwMDQxNTU2QyAvKiBTY3JvbGxpbmdUaHJl
YWQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTAyMSw4ICsyOTA1Myw4IEBACiAJCQkJMEZDNEU0
MEYxODdGODJFMTAwNDU4ODJDIC8qIFNjcm9sbGluZ1RyZWVJT1MuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUFBQURERTMxNERDOEM4RjAwQUY2NEIzIC8qIFNjcm9sbGluZ1RyZWVOb2RlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTkzOTFBOTlDMTYyOUQ3MDAwMDI5NzMzMCAvKiBTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkwRkM0RTQxMjE4N0Y4MkUx
MDA0NTg4MkMgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1MubW0gaW4gU291cmNlcyAq
LywKLQkJCQk5M0M0QTQxNjE2MjlERjVBMDBDM0VCNkUgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQkwRkM0RTQxMjE4N0Y4MkUxMDA0NTg4MkMg
LyogU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUy5tbSBpbiBTb3VyY2VzICovLAor
CQkJCTkzQzRBNDE2MTYyOURGNUEwMEMzRUI2RSAvKiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxp
bmdOb2RlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCODg5MEIxNjdEMkZBMTAwMTBDREE1
IC8qIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMyNDQx
QzQwRThCNjVEMDAwNTUzMjBGIC8qIFNjcm9sbFZpZXcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RTQ1MzkwNDUwRUFGRDYzNzAwMzY5NUM4IC8qIFNjcm9sbFZpZXdJT1MubW0gaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNT
Y3JvbGxpbmdDb29yZGluYXRvci5jcHAKaW5kZXggODI4M2MxYjY0OWRhYTlhYmFiNzcwNzdmOWMy
NmM1NzBjYmI4ZjlmNy4uN2ZlYTllODhjZTJkZTBhMzRjNDM5YjIyZGFiY2IzNGI3MjEwZjI2ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdD
b29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNT
Y3JvbGxpbmdDb29yZGluYXRvci5jcHAKQEAgLTM1LDcgKzM1LDggQEAKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nQ29uc3RyYWludHMuaCIKICNpbmNsdWRlICJTY3JvbGxp
bmdTdGF0ZUZpeGVkTm9kZS5oIgotI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZS5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlLmgiCisjaW5j
bHVkZSAiU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGUuaCIKICNpbmNsdWRlICJT
Y3JvbGxpbmdTdGF0ZVN0aWNreU5vZGUuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdTdGF0ZVRyZWUu
aCIKIApAQCAtNzYsMjEgKzc3LDIxIEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6
ZnJhbWVWaWV3TGF5b3V0VXBkYXRlZChGcmFtZVZpZXcqIGZyYW1lVmlldykKICAgICBpZiAoIWNv
b3JkaW5hdGVzU2Nyb2xsaW5nRm9yRnJhbWVWaWV3KGZyYW1lVmlldykpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSogbm9kZSA9IHRvU2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlKG1fc2Nyb2xsaW5nU3RhdGVUcmVlLT5zdGF0ZU5vZGVGb3JJRChm
cmFtZVZpZXctPnNjcm9sbExheWVySUQoKSkpOworICAgIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3Jv
bGxpbmdOb2RlKiBub2RlID0gdG9TY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZShtX3Nj
cm9sbGluZ1N0YXRlVHJlZS0+c3RhdGVOb2RlRm9ySUQoZnJhbWVWaWV3LT5zY3JvbGxMYXllcklE
KCkpKTsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIFNjcm9sbGJhciog
dmVydGljYWxTY3JvbGxiYXIgPSBmcmFtZVZpZXctPnZlcnRpY2FsU2Nyb2xsYmFyKCk7CiAgICAg
U2Nyb2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFyID0gZnJhbWVWaWV3LT5ob3Jpem9udGFsU2Ny
b2xsYmFyKCk7Ci0gICAgc2V0U2Nyb2xsYmFyUGFpbnRlcnNGcm9tU2Nyb2xsYmFyc0Zvck5vZGUo
dmVydGljYWxTY3JvbGxiYXIsIGhvcml6b250YWxTY3JvbGxiYXIsIG5vZGUpOwotCisgICAgbm9k
ZS0+c2V0U2Nyb2xsYmFyUGFpbnRlcnNGcm9tU2Nyb2xsYmFycyh2ZXJ0aWNhbFNjcm9sbGJhciwg
aG9yaXpvbnRhbFNjcm9sbGJhcik7CisgICAgCiAgICAgbm9kZS0+c2V0RnJhbWVTY2FsZUZhY3Rv
cihmcmFtZVZpZXctPmZyYW1lKCkuZnJhbWVTY2FsZUZhY3RvcigpKTsKICAgICBub2RlLT5zZXRI
ZWFkZXJIZWlnaHQoZnJhbWVWaWV3LT5oZWFkZXJIZWlnaHQoKSk7CiAgICAgbm9kZS0+c2V0Rm9v
dGVySGVpZ2h0KGZyYW1lVmlldy0+Zm9vdGVySGVpZ2h0KCkpOwogICAgIG5vZGUtPnNldFRvcENv
bnRlbnRJbnNldChmcmFtZVZpZXctPnRvcENvbnRlbnRJbnNldCgpKTsKIAogICAgIG5vZGUtPnNl
dFNjcm9sbE9yaWdpbihmcmFtZVZpZXctPnNjcm9sbE9yaWdpbigpKTsKLSAgICBub2RlLT5zZXRW
aWV3cG9ydFNpemUoZnJhbWVWaWV3LT52aXNpYmxlQ29udGVudFJlY3QoKS5zaXplKCkpOworICAg
IG5vZGUtPnNldFNjcm9sbGFibGVBcmVhU2l6ZShmcmFtZVZpZXctPnZpc2libGVDb250ZW50UmVj
dCgpLnNpemUoKSk7CiAgICAgbm9kZS0+c2V0VG90YWxDb250ZW50c1NpemUoZnJhbWVWaWV3LT50
b3RhbENvbnRlbnRzU2l6ZSgpKTsKIAogICAgIFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyBzY3Jv
bGxQYXJhbWV0ZXJzOwpAQCAtMTMxLDcgKzEzMiw3IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvcjo6ZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKEZyYW1lVmlldyogZnJhbWVWaWV3
CiAKICAgICBTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hhbmdl
KGZyYW1lVmlldyk7CiAKLSAgICBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUqIG5vZGUgPSB0
b1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZShtX3Njcm9sbGluZ1N0YXRlVHJlZS0+c3RhdGVO
b2RlRm9ySUQoZnJhbWVWaWV3LT5zY3JvbGxMYXllcklEKCkpKTsKKyAgICBTY3JvbGxpbmdTdGF0
ZUZyYW1lU2Nyb2xsaW5nTm9kZSogbm9kZSA9IHRvU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGlu
Z05vZGUobV9zY3JvbGxpbmdTdGF0ZVRyZWUtPnN0YXRlTm9kZUZvcklEKGZyYW1lVmlldy0+c2Ny
b2xsTGF5ZXJJRCgpKSk7CiAgICAgbm9kZS0+c2V0TGF5ZXIoc2Nyb2xsTGF5ZXJGb3JGcmFtZVZp
ZXcoZnJhbWVWaWV3KSk7CiAgICAgbm9kZS0+c2V0Q291bnRlclNjcm9sbGluZ0xheWVyKGNvdW50
ZXJTY3JvbGxpbmdMYXllckZvckZyYW1lVmlldyhmcmFtZVZpZXcpKTsKICAgICBub2RlLT5zZXRJ
bnNldENsaXBMYXllcihpbnNldENsaXBMYXllckZvckZyYW1lVmlldyhmcmFtZVZpZXcpKTsKQEAg
LTMyNywxNSArMzI4LDE0IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6ZW5zdXJl
Um9vdFN0YXRlTm9kZUZvckZyYW1lVmlldyhGcmFtZVZpZXcqIGZyYW1lCiAgICAgYXR0YWNoVG9T
dGF0ZVRyZWUoRnJhbWVTY3JvbGxpbmdOb2RlLCBmcmFtZVZpZXctPnNjcm9sbExheWVySUQoKSwg
MCk7CiB9CiAKLXZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsaW5n
Tm9kZShTY3JvbGxpbmdOb2RlSUQgbm9kZUlELCBHcmFwaGljc0xheWVyKiBsYXllciwgR3JhcGhp
Y3NMYXllciogc2Nyb2xsZWRDb250ZW50c0xheWVyLCBHcmFwaGljc0xheWVyKiBjb3VudGVyU2Ny
b2xsaW5nTGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIGluc2V0Q2xpcExheWVyLCBjb25zdCBTY3JvbGxp
bmdHZW9tZXRyeSogc2Nyb2xsaW5nR2VvbWV0cnkpCit2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRp
bmF0b3I6OnVwZGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZShTY3JvbGxpbmdOb2RlSUQgbm9kZUlELCBH
cmFwaGljc0xheWVyKiBsYXllciwgR3JhcGhpY3NMYXllciogY291bnRlclNjcm9sbGluZ0xheWVy
LCBHcmFwaGljc0xheWVyKiBpbnNldENsaXBMYXllciwgY29uc3QgU2Nyb2xsaW5nR2VvbWV0cnkq
IHNjcm9sbGluZ0dlb21ldHJ5KQogewotICAgIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSog
bm9kZSA9IHRvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlKG1fc2Nyb2xsaW5nU3RhdGVUcmVl
LT5zdGF0ZU5vZGVGb3JJRChub2RlSUQpKTsKKyAgICBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xs
aW5nTm9kZSogbm9kZSA9IHRvU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUobV9zY3Jv
bGxpbmdTdGF0ZVRyZWUtPnN0YXRlTm9kZUZvcklEKG5vZGVJRCkpOwogICAgIEFTU0VSVChub2Rl
KTsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIG5vZGUtPnNldExheWVy
KGxheWVyKTsKLSAgICBub2RlLT5zZXRTY3JvbGxlZENvbnRlbnRzTGF5ZXIoc2Nyb2xsZWRDb250
ZW50c0xheWVyKTsKICAgICBub2RlLT5zZXRJbnNldENsaXBMYXllcihpbnNldENsaXBMYXllcik7
CiAgICAgbm9kZS0+c2V0Q291bnRlclNjcm9sbGluZ0xheWVyKGNvdW50ZXJTY3JvbGxpbmdMYXll
cik7CiAKQEAgLTM0Myw2ICszNDMsMjUgQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9y
Ojp1cGRhdGVTY3JvbGxpbmdOb2RlKFNjcm9sbGluZ05vZGVJRCBub2RlSUQsIEdyYXAKICAgICAg
ICAgbm9kZS0+c2V0U2Nyb2xsT3JpZ2luKHNjcm9sbGluZ0dlb21ldHJ5LT5zY3JvbGxPcmlnaW4p
OwogICAgICAgICBub2RlLT5zZXRTY3JvbGxQb3NpdGlvbihzY3JvbGxpbmdHZW9tZXRyeS0+c2Ny
b2xsUG9zaXRpb24pOwogICAgICAgICBub2RlLT5zZXRUb3RhbENvbnRlbnRzU2l6ZShzY3JvbGxp
bmdHZW9tZXRyeS0+Y29udGVudFNpemUpOworICAgICAgICBub2RlLT5zZXRTY3JvbGxhYmxlQXJl
YVNpemUoc2Nyb2xsaW5nR2VvbWV0cnktPnNjcm9sbGFibGVBcmVhU2l6ZSk7CisgICAgfQorfQor
ICAgIAordm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVPdmVyZmxvd1Njcm9s
bGluZ05vZGUoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCwgR3JhcGhpY3NMYXllciogbGF5ZXIsIEdy
YXBoaWNzTGF5ZXIqIHNjcm9sbGVkQ29udGVudHNMYXllciwgY29uc3QgU2Nyb2xsaW5nR2VvbWV0
cnkqIHNjcm9sbGluZ0dlb21ldHJ5KQoreworICAgIFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlKiBub2RlID0gdG9TY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZSht
X3Njcm9sbGluZ1N0YXRlVHJlZS0+c3RhdGVOb2RlRm9ySUQobm9kZUlEKSk7CisgICAgQVNTRVJU
KG5vZGUpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbm9kZS0+c2V0
TGF5ZXIobGF5ZXIpOworICAgIG5vZGUtPnNldFNjcm9sbGVkQ29udGVudHNMYXllcihzY3JvbGxl
ZENvbnRlbnRzTGF5ZXIpOworICAgIAorICAgIGlmIChzY3JvbGxpbmdHZW9tZXRyeSkgeworICAg
ICAgICBub2RlLT5zZXRTY3JvbGxPcmlnaW4oc2Nyb2xsaW5nR2VvbWV0cnktPnNjcm9sbE9yaWdp
bik7CisgICAgICAgIG5vZGUtPnNldFNjcm9sbFBvc2l0aW9uKHNjcm9sbGluZ0dlb21ldHJ5LT5z
Y3JvbGxQb3NpdGlvbik7CisgICAgICAgIG5vZGUtPnNldFRvdGFsQ29udGVudHNTaXplKHNjcm9s
bGluZ0dlb21ldHJ5LT5jb250ZW50U2l6ZSk7CisgICAgICAgIG5vZGUtPnNldFNjcm9sbGFibGVB
cmVhU2l6ZShzY3JvbGxpbmdHZW9tZXRyeS0+c2Nyb2xsYWJsZUFyZWFTaXplKTsKICAgICB9CiB9
CiAKQEAgLTM3MCwxMiArMzg5LDYgQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1
cGRhdGVWaWV3cG9ydENvbnN0cmFpbmVkTm9kZShTY3JvbGxpbmdOb2RlSUQgbm8KICAgICB9CiB9
CiAKLS8vIEZJWE1FOiBub3Qgc3VyZSBpZiB0aGlzIGJlbG9uZ3MgaGVyZS4KLXZvaWQgQXN5bmNT
Y3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U2Nyb2xsYmFyUGFpbnRlcnNGcm9tU2Nyb2xsYmFyc0Zv
ck5vZGUoU2Nyb2xsYmFyKiB2ZXJ0aWNhbFNjcm9sbGJhciwgU2Nyb2xsYmFyKiBob3Jpem9udGFs
U2Nyb2xsYmFyLCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUqIG5vZGUpCi17Ci0gICAgbm9k
ZS0+c2V0U2Nyb2xsYmFyUGFpbnRlcnNGcm9tU2Nyb2xsYmFycyh2ZXJ0aWNhbFNjcm9sbGJhciwg
aG9yaXpvbnRhbFNjcm9sbGJhcik7Ci19Ci0KIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
cjo6c2V0U3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVh
c29ucyByZWFzb25zKQogewogICAgIGlmICghbV9zY3JvbGxpbmdTdGF0ZVRyZWUtPnJvb3RTdGF0
ZU5vZGUoKSkKQEAgLTQwNiw3ICs0MTksNyBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OnVwZGF0ZU1haW5GcmFtZVNjcm9sbExheWVyUG9zaXRpb24oKQogCiB2b2lkIEFzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OnJlY29tcHV0ZVdoZWVsRXZlbnRIYW5kbGVyQ291bnRGb3JGcmFt
ZVZpZXcoRnJhbWVWaWV3KiBmcmFtZVZpZXcpCiB7Ci0gICAgU2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlKiBub2RlID0gdG9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUobV9zY3JvbGxpbmdT
dGF0ZVRyZWUtPnN0YXRlTm9kZUZvcklEKGZyYW1lVmlldy0+c2Nyb2xsTGF5ZXJJRCgpKSk7Cisg
ICAgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUqIG5vZGUgPSB0b1Njcm9sbGluZ1N0
YXRlRnJhbWVTY3JvbGxpbmdOb2RlKG1fc2Nyb2xsaW5nU3RhdGVUcmVlLT5zdGF0ZU5vZGVGb3JJ
RChmcmFtZVZpZXctPnNjcm9sbExheWVySUQoKSkpOwogICAgIGlmICghbm9kZSkKICAgICAgICAg
cmV0dXJuOwogICAgIG5vZGUtPnNldFdoZWVsRXZlbnRIYW5kbGVyQ291bnQoY29tcHV0ZUN1cnJl
bnRXaGVlbEV2ZW50SGFuZGxlckNvdW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oCmluZGV4IDQ4Y2Yw
OTkwZDdmYjNmYzIzNTUzMDdiZmUxZGNlMDU4NjQyMTRiYTMuLjVkNWVmYzI3ZjNmOTY4MzFmZmJj
N2Q5OWYzNWQwZmNjMTUzMTkyNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKQEAgLTg1LDkgKzg1LDEy
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBTY3JvbGxpbmdOb2RlSUQgYXR0YWNoVG9TdGF0ZVRy
ZWUoU2Nyb2xsaW5nTm9kZVR5cGUsIFNjcm9sbGluZ05vZGVJRCBuZXdOb2RlSUQsIFNjcm9sbGlu
Z05vZGVJRCBwYXJlbnRJRCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaEZyb21T
dGF0ZVRyZWUoU2Nyb2xsaW5nTm9kZUlEKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY2xl
YXJTdGF0ZVRyZWUoKSBvdmVycmlkZTsKLQorICAgIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVW
aWV3cG9ydENvbnN0cmFpbmVkTm9kZShTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IFZpZXdwb3J0Q29u
c3RyYWludHMmLCBHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZVNjcm9sbGluZ05vZGUoU2Nyb2xsaW5nTm9kZUlELCBHcmFwaGljc0xheWVyKiwgR3JhcGhp
Y3NMYXllciogc2Nyb2xsZWRDb250ZW50c0xheWVyLCBHcmFwaGljc0xheWVyKiBjb3VudGVyU2Ny
b2xsaW5nTGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIGluc2V0Q2xpcExheWVyLCBjb25zdCBTY3JvbGxp
bmdHZW9tZXRyeSogPSBudWxscHRyKSBvdmVycmlkZTsKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlRnJhbWVTY3JvbGxpbmdOb2RlKFNjcm9sbGluZ05vZGVJRCwgR3JhcGhpY3NMYXllciog
c2Nyb2xsTGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIGNvdW50ZXJTY3JvbGxpbmdMYXllciwgR3JhcGhp
Y3NMYXllciogaW5zZXRDbGlwTGF5ZXIsIGNvbnN0IFNjcm9sbGluZ0dlb21ldHJ5KiA9IG51bGxw
dHIpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGUoU2Nyb2xs
aW5nTm9kZUlELCBHcmFwaGljc0xheWVyKiBzY3JvbGxMYXllciwgR3JhcGhpY3NMYXllciogc2Ny
b2xsZWRDb250ZW50c0xheWVyLCBjb25zdCBTY3JvbGxpbmdHZW9tZXRyeSogPSBudWxscHRyKTsK
KyAgICAKICAgICB2aXJ0dWFsIFN0cmluZyBzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoKSBjb25z
dCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgaXNSdWJiZXJCYW5kSW5Qcm9ncmVzcygpIGNv
bnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3Io
U2Nyb2xsUGlubmluZ0JlaGF2aW9yKSBvdmVycmlkZTsKQEAgLTEwMyw5ICsxMDYsNiBAQCBwcml2
YXRlOgogICAgIHZvaWQgZW5zdXJlUm9vdFN0YXRlTm9kZUZvckZyYW1lVmlldyhGcmFtZVZpZXcq
KTsKICAgICB2b2lkIHVwZGF0ZU1haW5GcmFtZVNjcm9sbExheWVyUG9zaXRpb24oKTsKIAotICAg
IC8vIEZJWE1FOiBtb3ZlIHNvbWV3aGVyZSBlbHNlPwotICAgIHZvaWQgc2V0U2Nyb2xsYmFyUGFp
bnRlcnNGcm9tU2Nyb2xsYmFyc0Zvck5vZGUoU2Nyb2xsYmFyKiB2ZXJ0aWNhbFNjcm9sbGJhciwg
U2Nyb2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFyLCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05v
ZGUqKTsKLQogICAgIHZvaWQgdXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsVGlt
ZXJGaXJlZChUaW1lcjxBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yPiopOwogCiAgICAgVGltZXI8
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcj4gbV91cGRhdGVOb2RlU2Nyb2xsUG9zaXRpb25UaW1l
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nv
b3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29y
ZGluYXRvci5oCmluZGV4IDQ0NTc5MGQyZWFhYjZkY2U1MjFjYzg2ZWY0NGVhZTI5OWIwZGY1MjYu
LjM1ODA2OWIzMWQ5ODRlZjJiN2Y3N2M1NjkzMDdhOTgyNjM2YTk3NTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaApAQCAt
MTU5LDEyICsxNTksMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWV3cG9y
dENvbnN0cmFpbmVkTm9kZShTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IFZpZXdwb3J0Q29uc3RyYWlu
dHMmLCBHcmFwaGljc0xheWVyKikgeyB9CiAKICAgICBzdHJ1Y3QgU2Nyb2xsaW5nR2VvbWV0cnkg
ewotICAgICAgICBJbnRTaXplIGNvbnRlbnRTaXplOworICAgICAgICBGbG9hdFNpemUgc2Nyb2xs
YWJsZUFyZWFTaXplOworICAgICAgICBGbG9hdFNpemUgY29udGVudFNpemU7CiAgICAgICAgIEZs
b2F0UG9pbnQgc2Nyb2xsUG9zaXRpb247CiAgICAgICAgIEludFBvaW50IHNjcm9sbE9yaWdpbjsK
ICAgICB9OwogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNjcm9sbGluZ05vZGUoU2Nyb2xsaW5n
Tm9kZUlELCBHcmFwaGljc0xheWVyKiAvKnNjcm9sbExheWVyKi8sIEdyYXBoaWNzTGF5ZXIqIC8q
c2Nyb2xsZWRDb250ZW50c0xheWVyKi8sIEdyYXBoaWNzTGF5ZXIqIC8qY291bnRlclNjcm9sbGlu
Z0xheWVyKi8sIEdyYXBoaWNzTGF5ZXIqIC8qaW5zZXRDbGlwTGF5ZXIqLywgY29uc3QgU2Nyb2xs
aW5nR2VvbWV0cnkqID0gbnVsbHB0cikgeyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyYW1l
U2Nyb2xsaW5nTm9kZShTY3JvbGxpbmdOb2RlSUQsIEdyYXBoaWNzTGF5ZXIqIC8qc2Nyb2xsTGF5
ZXIqLywgR3JhcGhpY3NMYXllciogLypjb3VudGVyU2Nyb2xsaW5nTGF5ZXIqLywgR3JhcGhpY3NM
YXllciogLyppbnNldENsaXBMYXllciovLCBjb25zdCBTY3JvbGxpbmdHZW9tZXRyeSogPSBudWxs
cHRyKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlKFNj
cm9sbGluZ05vZGVJRCwgR3JhcGhpY3NMYXllciogLypzY3JvbGxMYXllciovLCBHcmFwaGljc0xh
eWVyKiAvKnNjcm9sbGVkQ29udGVudHNMYXllciovLCBjb25zdCBTY3JvbGxpbmdHZW9tZXRyeSog
PSBudWxscHRyKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc3luY0NoaWxkUG9zaXRpb25zKGNvbnN0
IExheW91dFJlY3QmKSB7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBzY3JvbGxpbmdTdGF0ZVRyZWVB
c1RleHQoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNSdWJiZXJCYW5kSW5Qcm9ncmVzcygp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uM2YzYTRmYWM3YWYyYTE1NGZjZTdhOWFiNmZlOThhMjEwNDUxN2M3Ywot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlLmNwcApAQCAtMCwwICsxLDI0NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdTdGF0ZUZyYW1lU2Ny
b2xsaW5nTm9kZS5oIgorCisjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgfHwgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKQorCisjaW5jbHVkZSAiU2Nyb2xsaW5nU3RhdGVUcmVlLmgiCisjaW5j
bHVkZSAiVGV4dFN0cmVhbS5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitQYXNzT3duUHRyPFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2Rl
PiBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6Y3JlYXRlKFNjcm9sbGluZ1N0YXRl
VHJlZSYgc3RhdGVUcmVlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQoreworICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUoc3RhdGVUcmVlLCBu
b2RlSUQpKTsKK30KKworU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OlNjcm9sbGlu
Z1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlKFNjcm9sbGluZ1N0YXRlVHJlZSYgc3RhdGVUcmVlLCBT
Y3JvbGxpbmdOb2RlSUQgbm9kZUlEKQorICAgIDogU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2Rl
KHN0YXRlVHJlZSwgRnJhbWVTY3JvbGxpbmdOb2RlLCBub2RlSUQpCisjaWYgUExBVEZPUk0oTUFD
KQorICAgICwgbV92ZXJ0aWNhbFNjcm9sbGJhclBhaW50ZXIoMCkKKyAgICAsIG1faG9yaXpvbnRh
bFNjcm9sbGJhclBhaW50ZXIoMCkKKyNlbmRpZgorICAgICwgbV9mcmFtZVNjYWxlRmFjdG9yKDEp
CisgICAgLCBtX3doZWVsRXZlbnRIYW5kbGVyQ291bnQoMCkKKyAgICAsIG1fc3luY2hyb25vdXNT
Y3JvbGxpbmdSZWFzb25zKDApCisgICAgLCBtX2JlaGF2aW9yRm9yRml4ZWQoU3RpY2tUb0RvY3Vt
ZW50Qm91bmRzKQorICAgICwgbV9oZWFkZXJIZWlnaHQoMCkKKyAgICAsIG1fZm9vdGVySGVpZ2h0
KDApCisgICAgLCBtX3JlcXVlc3RlZFNjcm9sbFBvc2l0aW9uUmVwcmVzZW50c1Byb2dyYW1tYXRp
Y1Njcm9sbChmYWxzZSkKKyAgICAsIG1fdG9wQ29udGVudEluc2V0KDApCit7Cit9CisKK1Njcm9s
bGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5n
Tm9kZShjb25zdCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZSYgc3RhdGVOb2RlLCBT
Y3JvbGxpbmdTdGF0ZVRyZWUmIGFkb3B0aXZlVHJlZSkKKyAgICA6IFNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZShzdGF0ZU5vZGUsIGFkb3B0aXZlVHJlZSkKKyNpZiBQTEFURk9STShNQUMpCisg
ICAgLCBtX3ZlcnRpY2FsU2Nyb2xsYmFyUGFpbnRlcihzdGF0ZU5vZGUudmVydGljYWxTY3JvbGxi
YXJQYWludGVyKCkpCisgICAgLCBtX2hvcml6b250YWxTY3JvbGxiYXJQYWludGVyKHN0YXRlTm9k
ZS5ob3Jpem9udGFsU2Nyb2xsYmFyUGFpbnRlcigpKQorI2VuZGlmCisgICAgLCBtX25vbkZhc3RT
Y3JvbGxhYmxlUmVnaW9uKHN0YXRlTm9kZS5ub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbigpKQorICAg
ICwgbV9mcmFtZVNjYWxlRmFjdG9yKHN0YXRlTm9kZS5mcmFtZVNjYWxlRmFjdG9yKCkpCisgICAg
LCBtX3doZWVsRXZlbnRIYW5kbGVyQ291bnQoc3RhdGVOb2RlLndoZWVsRXZlbnRIYW5kbGVyQ291
bnQoKSkKKyAgICAsIG1fc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKHN0YXRlTm9kZS5zeW5j
aHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoKSkKKyAgICAsIG1fYmVoYXZpb3JGb3JGaXhlZChzdGF0
ZU5vZGUuc2Nyb2xsQmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzKCkpCisgICAgLCBtX2hlYWRlckhl
aWdodChzdGF0ZU5vZGUuaGVhZGVySGVpZ2h0KCkpCisgICAgLCBtX2Zvb3RlckhlaWdodChzdGF0
ZU5vZGUuZm9vdGVySGVpZ2h0KCkpCisgICAgLCBtX3JlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKHN0
YXRlTm9kZS5yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbigpKQorICAgICwgbV9yZXF1ZXN0ZWRTY3Jv
bGxQb3NpdGlvblJlcHJlc2VudHNQcm9ncmFtbWF0aWNTY3JvbGwoc3RhdGVOb2RlLnJlcXVlc3Rl
ZFNjcm9sbFBvc2l0aW9uUmVwcmVzZW50c1Byb2dyYW1tYXRpY1Njcm9sbCgpKQorICAgICwgbV90
b3BDb250ZW50SW5zZXQoc3RhdGVOb2RlLnRvcENvbnRlbnRJbnNldCgpKQoreworICAgIGlmICho
YXNDaGFuZ2VkUHJvcGVydHkoQ291bnRlclNjcm9sbGluZ0xheWVyKSkKKyAgICAgICAgc2V0Q291
bnRlclNjcm9sbGluZ0xheWVyKHN0YXRlTm9kZS5jb3VudGVyU2Nyb2xsaW5nTGF5ZXIoKS50b1Jl
cHJlc2VudGF0aW9uKGFkb3B0aXZlVHJlZS5wcmVmZXJyZWRMYXllclJlcHJlc2VudGF0aW9uKCkp
KTsKKworICAgIGlmIChoYXNDaGFuZ2VkUHJvcGVydHkoSW5zZXRDbGlwTGF5ZXIpKQorICAgICAg
ICBzZXRJbnNldENsaXBMYXllcihzdGF0ZU5vZGUuaW5zZXRDbGlwTGF5ZXIoKS50b1JlcHJlc2Vu
dGF0aW9uKGFkb3B0aXZlVHJlZS5wcmVmZXJyZWRMYXllclJlcHJlc2VudGF0aW9uKCkpKTsKKwor
ICAgIGlmIChoYXNDaGFuZ2VkUHJvcGVydHkoQ29udGVudFNoYWRvd0xheWVyKSkKKyAgICAgICAg
c2V0Q29udGVudFNoYWRvd0xheWVyKHN0YXRlTm9kZS5jb250ZW50U2hhZG93TGF5ZXIoKS50b1Jl
cHJlc2VudGF0aW9uKGFkb3B0aXZlVHJlZS5wcmVmZXJyZWRMYXllclJlcHJlc2VudGF0aW9uKCkp
KTsKKworICAgIGlmIChoYXNDaGFuZ2VkUHJvcGVydHkoSGVhZGVyTGF5ZXIpKQorICAgICAgICBz
ZXRIZWFkZXJMYXllcihzdGF0ZU5vZGUuaGVhZGVyTGF5ZXIoKS50b1JlcHJlc2VudGF0aW9uKGFk
b3B0aXZlVHJlZS5wcmVmZXJyZWRMYXllclJlcHJlc2VudGF0aW9uKCkpKTsKKworICAgIGlmICho
YXNDaGFuZ2VkUHJvcGVydHkoRm9vdGVyTGF5ZXIpKQorICAgICAgICBzZXRGb290ZXJMYXllcihz
dGF0ZU5vZGUuZm9vdGVyTGF5ZXIoKS50b1JlcHJlc2VudGF0aW9uKGFkb3B0aXZlVHJlZS5wcmVm
ZXJyZWRMYXllclJlcHJlc2VudGF0aW9uKCkpKTsKK30KKworU2Nyb2xsaW5nU3RhdGVGcmFtZVNj
cm9sbGluZ05vZGU6On5TY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZSgpCit7Cit9CisK
K1Bhc3NPd25QdHI8U2Nyb2xsaW5nU3RhdGVOb2RlPiBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xs
aW5nTm9kZTo6Y2xvbmUoU2Nyb2xsaW5nU3RhdGVUcmVlJiBhZG9wdGl2ZVRyZWUpCit7CisgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZSgqdGhp
cywgYWRvcHRpdmVUcmVlKSk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGlu
Z05vZGU6OnNldEZyYW1lU2NhbGVGYWN0b3IoZmxvYXQgc2NhbGVGYWN0b3IpCit7CisgICAgaWYg
KG1fZnJhbWVTY2FsZUZhY3RvciA9PSBzY2FsZUZhY3RvcikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9mcmFtZVNjYWxlRmFjdG9yID0gc2NhbGVGYWN0b3I7CisKKyAgICBzZXRQcm9wZXJ0eUNo
YW5nZWQoRnJhbWVTY2FsZUZhY3Rvcik7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nU3RhdGVGcmFtZVNj
cm9sbGluZ05vZGU6OnNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKGNvbnN0IFJlZ2lvbiYgbm9u
RmFzdFNjcm9sbGFibGVSZWdpb24pCit7CisgICAgaWYgKG1fbm9uRmFzdFNjcm9sbGFibGVSZWdp
b24gPT0gbm9uRmFzdFNjcm9sbGFibGVSZWdpb24pCisgICAgICAgIHJldHVybjsKKworICAgIG1f
bm9uRmFzdFNjcm9sbGFibGVSZWdpb24gPSBub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbjsKKyAgICBz
ZXRQcm9wZXJ0eUNoYW5nZWQoTm9uRmFzdFNjcm9sbGFibGVSZWdpb24pOworfQorCit2b2lkIFNj
cm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRXaGVlbEV2ZW50SGFuZGxlckNvdW50
KHVuc2lnbmVkIHdoZWVsRXZlbnRIYW5kbGVyQ291bnQpCit7CisgICAgaWYgKG1fd2hlZWxFdmVu
dEhhbmRsZXJDb3VudCA9PSB3aGVlbEV2ZW50SGFuZGxlckNvdW50KQorICAgICAgICByZXR1cm47
CisKKyAgICBtX3doZWVsRXZlbnRIYW5kbGVyQ291bnQgPSB3aGVlbEV2ZW50SGFuZGxlckNvdW50
OworICAgIHNldFByb3BlcnR5Q2hhbmdlZChXaGVlbEV2ZW50SGFuZGxlckNvdW50KTsKK30KKwor
dm9pZCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0U3luY2hyb25vdXNTY3Jv
bGxpbmdSZWFzb25zKFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyByZWFzb25zKQoreworICAg
IGlmIChtX3N5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyA9PSByZWFzb25zKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX3N5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyA9IHJlYXNvbnM7Cisg
ICAgc2V0UHJvcGVydHlDaGFuZ2VkKFJlYXNvbnNGb3JTeW5jaHJvbm91c1Njcm9sbGluZyk7Cit9
CisKK3ZvaWQgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OnNldFNjcm9sbEJlaGF2
aW9yRm9yRml4ZWRFbGVtZW50cyhTY3JvbGxCZWhhdmlvckZvckZpeGVkRWxlbWVudHMgYmVoYXZp
b3JGb3JGaXhlZCkKK3sKKyAgICBpZiAobV9iZWhhdmlvckZvckZpeGVkID09IGJlaGF2aW9yRm9y
Rml4ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fYmVoYXZpb3JGb3JGaXhlZCA9IGJlaGF2
aW9yRm9yRml4ZWQ7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkKEJlaGF2aW9yRm9yRml4ZWRFbGVt
ZW50cyk7Cit9CisgICAgCit2b2lkIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpz
ZXRIZWFkZXJIZWlnaHQoaW50IGhlYWRlckhlaWdodCkKK3sKKyAgICBpZiAobV9oZWFkZXJIZWln
aHQgPT0gaGVhZGVySGVpZ2h0KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2hlYWRlckhlaWdo
dCA9IGhlYWRlckhlaWdodDsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoSGVhZGVySGVpZ2h0KTsK
K30KKwordm9pZCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0Rm9vdGVySGVp
Z2h0KGludCBmb290ZXJIZWlnaHQpCit7CisgICAgaWYgKG1fZm9vdGVySGVpZ2h0ID09IGZvb3Rl
ckhlaWdodCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9mb290ZXJIZWlnaHQgPSBmb290ZXJI
ZWlnaHQ7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkKEZvb3RlckhlaWdodCk7Cit9CisKK3ZvaWQg
U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OnNldFRvcENvbnRlbnRJbnNldChmbG9h
dCB0b3BDb250ZW50SW5zZXQpCit7CisgICAgaWYgKG1fdG9wQ29udGVudEluc2V0ID09IHRvcENv
bnRlbnRJbnNldCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV90b3BDb250ZW50SW5zZXQgPSB0
b3BDb250ZW50SW5zZXQ7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkKFRvcENvbnRlbnRJbnNldCk7
Cit9CisKK3ZvaWQgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OnNldENvdW50ZXJT
Y3JvbGxpbmdMYXllcihjb25zdCBMYXllclJlcHJlc2VudGF0aW9uJiBsYXllclJlcHJlc2VudGF0
aW9uKQoreworICAgIGlmIChsYXllclJlcHJlc2VudGF0aW9uID09IG1fY291bnRlclNjcm9sbGlu
Z0xheWVyKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgbV9jb3VudGVyU2Nyb2xsaW5nTGF5
ZXIgPSBsYXllclJlcHJlc2VudGF0aW9uOworICAgIHNldFByb3BlcnR5Q2hhbmdlZChDb3VudGVy
U2Nyb2xsaW5nTGF5ZXIpOworfQorCit2b2lkIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdO
b2RlOjpzZXRJbnNldENsaXBMYXllcihjb25zdCBMYXllclJlcHJlc2VudGF0aW9uJiBsYXllclJl
cHJlc2VudGF0aW9uKQoreworICAgIGlmIChsYXllclJlcHJlc2VudGF0aW9uID09IG1faW5zZXRD
bGlwTGF5ZXIpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBtX2luc2V0Q2xpcExheWVyID0g
bGF5ZXJSZXByZXNlbnRhdGlvbjsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoSW5zZXRDbGlwTGF5
ZXIpOworfQorCit2b2lkIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRDb250
ZW50U2hhZG93TGF5ZXIoY29uc3QgTGF5ZXJSZXByZXNlbnRhdGlvbiYgbGF5ZXJSZXByZXNlbnRh
dGlvbikKK3sKKyAgICBpZiAobGF5ZXJSZXByZXNlbnRhdGlvbiA9PSBtX2NvbnRlbnRTaGFkb3dM
YXllcikKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fY29udGVudFNoYWRvd0xheWVyID0g
bGF5ZXJSZXByZXNlbnRhdGlvbjsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoQ29udGVudFNoYWRv
d0xheWVyKTsKK30KKwordm9pZCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0
SGVhZGVyTGF5ZXIoY29uc3QgTGF5ZXJSZXByZXNlbnRhdGlvbiYgbGF5ZXJSZXByZXNlbnRhdGlv
bikKK3sKKyAgICBpZiAobGF5ZXJSZXByZXNlbnRhdGlvbiA9PSBtX2hlYWRlckxheWVyKQorICAg
ICAgICByZXR1cm47CisgICAgCisgICAgbV9oZWFkZXJMYXllciA9IGxheWVyUmVwcmVzZW50YXRp
b247CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkKEhlYWRlckxheWVyKTsKK30KKwordm9pZCBTY3Jv
bGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0Rm9vdGVyTGF5ZXIoY29uc3QgTGF5ZXJS
ZXByZXNlbnRhdGlvbiYgbGF5ZXJSZXByZXNlbnRhdGlvbikKK3sKKyAgICBpZiAobGF5ZXJSZXBy
ZXNlbnRhdGlvbiA9PSBtX2Zvb3RlckxheWVyKQorICAgICAgICByZXR1cm47CisgICAgCisgICAg
bV9mb290ZXJMYXllciA9IGxheWVyUmVwcmVzZW50YXRpb247CisgICAgc2V0UHJvcGVydHlDaGFu
Z2VkKEZvb3RlckxheWVyKTsKK30KKworI2lmICFQTEFURk9STShNQUMpCit2b2lkIFNjcm9sbGlu
Z1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRTY3JvbGxiYXJQYWludGVyc0Zyb21TY3JvbGxi
YXJzKFNjcm9sbGJhciosIFNjcm9sbGJhciopCit7Cit9CisjZW5kaWYKKwordm9pZCBTY3JvbGxp
bmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6ZHVtcFByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMs
IGludCBpbmRlbnQpIGNvbnN0Cit7CisgICAgdHMgPDwgIihGcmFtZSBzY3JvbGxpbmcgbm9kZSIg
PDwgIlxuIjsKKyAgICAKKyAgICBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OmR1bXBQcm9w
ZXJ0aWVzKHRzLCBpbmRlbnQpOworICAgIAorICAgIGlmIChtX2ZyYW1lU2NhbGVGYWN0b3IgIT0g
MSkgeworICAgICAgICB3cml0ZUluZGVudCh0cywgaW5kZW50ICsgMSk7CisgICAgICAgIHRzIDw8
ICIoZnJhbWUgc2NhbGUgZmFjdG9yICIgPDwgbV9mcmFtZVNjYWxlRmFjdG9yIDw8ICIpXG4iOwor
ICAgIH0KKworICAgIGlmIChtX3N5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucykgeworICAgICAg
ICB3cml0ZUluZGVudCh0cywgaW5kZW50ICsgMSk7CisgICAgICAgIHRzIDw8ICIoU2Nyb2xsaW5n
IG9uIG1haW4gdGhyZWFkIGJlY2F1c2U6ICIgPDwgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnN5bmNo
cm9ub3VzU2Nyb2xsaW5nUmVhc29uc0FzVGV4dChtX3N5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29u
cykgPDwgIilcbiI7CisgICAgfQorICAgIAorICAgIC8vIEZJWE1FOiBkdW1wIG1vcmUgcHJvcGVy
dGllcy4KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEFT
WU5DX1NDUk9MTElORykgfHwgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGlu
Z05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlRnJh
bWVTY3JvbGxpbmdOb2RlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTI0NjhmZmY4YjE2MGQ3NDczMTk0Mjk2M2Mx
YmUxMTg5NGU5YWYzNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlLmgKQEAgLTAsMCArMSwxNTQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2Rl
X2gKKyNkZWZpbmUgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGVfaAorCisjaWYgRU5B
QkxFKEFTWU5DX1NDUk9MTElORykgfHwgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorCisjaW5j
bHVkZSAiUmVnaW9uLmgiCisjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKKyNpbmNsdWRlICJTY3Jv
bGxiYXJUaGVtZUNvbXBvc2l0ZS5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgi
CisjaW5jbHVkZSAiU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgiCisjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTY3JvbGxiYXI7
CisKK2NsYXNzIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlIGZpbmFsIDogcHVibGlj
IFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NP
d25QdHI8U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU+IGNyZWF0ZShTY3JvbGxpbmdT
dGF0ZVRyZWUmLCBTY3JvbGxpbmdOb2RlSUQpOworCisgICAgdmlydHVhbCBQYXNzT3duUHRyPFNj
cm9sbGluZ1N0YXRlTm9kZT4gY2xvbmUoU2Nyb2xsaW5nU3RhdGVUcmVlJik7CisKKyAgICB2aXJ0
dWFsIH5TY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZSgpOworCisgICAgZW51bSBDaGFu
Z2VkUHJvcGVydHkgeworICAgICAgICBGcmFtZVNjYWxlRmFjdG9yID0gTnVtU2Nyb2xsaW5nU3Rh
dGVOb2RlQml0cywKKyAgICAgICAgTm9uRmFzdFNjcm9sbGFibGVSZWdpb24sCisgICAgICAgIFdo
ZWVsRXZlbnRIYW5kbGVyQ291bnQsCisgICAgICAgIFJlYXNvbnNGb3JTeW5jaHJvbm91c1Njcm9s
bGluZywKKyAgICAgICAgQ291bnRlclNjcm9sbGluZ0xheWVyLAorICAgICAgICBJbnNldENsaXBM
YXllciwKKyAgICAgICAgQ29udGVudFNoYWRvd0xheWVyLAorICAgICAgICBIZWFkZXJIZWlnaHQs
CisgICAgICAgIEZvb3RlckhlaWdodCwKKyAgICAgICAgSGVhZGVyTGF5ZXIsCisgICAgICAgIEZv
b3RlckxheWVyLAorICAgICAgICBQYWludGVyRm9yU2Nyb2xsYmFyLAorICAgICAgICBCZWhhdmlv
ckZvckZpeGVkRWxlbWVudHMsCisgICAgICAgIFRvcENvbnRlbnRJbnNldAorICAgIH07CisKKyAg
ICBmbG9hdCBmcmFtZVNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZVNjYWxlRmFj
dG9yOyB9CisgICAgdm9pZCBzZXRGcmFtZVNjYWxlRmFjdG9yKGZsb2F0KTsKKworICAgIGNvbnN0
IFJlZ2lvbiYgbm9uRmFzdFNjcm9sbGFibGVSZWdpb24oKSBjb25zdCB7IHJldHVybiBtX25vbkZh
c3RTY3JvbGxhYmxlUmVnaW9uOyB9CisgICAgdm9pZCBzZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lv
bihjb25zdCBSZWdpb24mKTsKKworICAgIHVuc2lnbmVkIHdoZWVsRXZlbnRIYW5kbGVyQ291bnQo
KSBjb25zdCB7IHJldHVybiBtX3doZWVsRXZlbnRIYW5kbGVyQ291bnQ7IH0KKyAgICB2b2lkIHNl
dFdoZWVsRXZlbnRIYW5kbGVyQ291bnQodW5zaWduZWQpOworCisgICAgU3luY2hyb25vdXNTY3Jv
bGxpbmdSZWFzb25zIHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucygpIGNvbnN0IHsgcmV0dXJu
IG1fc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zOyB9CisgICAgdm9pZCBzZXRTeW5jaHJvbm91
c1Njcm9sbGluZ1JlYXNvbnMoU3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKTsKKworICAgIFNj
cm9sbEJlaGF2aW9yRm9yRml4ZWRFbGVtZW50cyBzY3JvbGxCZWhhdmlvckZvckZpeGVkRWxlbWVu
dHMoKSBjb25zdCB7IHJldHVybiBtX2JlaGF2aW9yRm9yRml4ZWQ7IH0KKyAgICB2b2lkIHNldFNj
cm9sbEJlaGF2aW9yRm9yRml4ZWRFbGVtZW50cyhTY3JvbGxCZWhhdmlvckZvckZpeGVkRWxlbWVu
dHMpOworCisgICAgaW50IGhlYWRlckhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faGVhZGVySGVp
Z2h0OyB9CisgICAgdm9pZCBzZXRIZWFkZXJIZWlnaHQoaW50KTsKKworICAgIGludCBmb290ZXJI
ZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2Zvb3RlckhlaWdodDsgfQorICAgIHZvaWQgc2V0Rm9v
dGVySGVpZ2h0KGludCk7CisKKyAgICBmbG9hdCB0b3BDb250ZW50SW5zZXQoKSBjb25zdCB7IHJl
dHVybiBtX3RvcENvbnRlbnRJbnNldDsgfQorICAgIHZvaWQgc2V0VG9wQ29udGVudEluc2V0KGZs
b2F0KTsKKyAgICAKKyAgICAvLyBUaGlzIGlzIGEgbGF5ZXIgbW92ZWQgaW4gdGhlIG9wcG9zaXRl
IGRpcmVjdGlvbiB0byBzY3JvbGxpbmcsIGZvciBleGFtcGxlIGZvciBiYWNrZ3JvdW5kLWF0dGFj
aG1lbnQ6Zml4ZWQKKyAgICBjb25zdCBMYXllclJlcHJlc2VudGF0aW9uJiBjb3VudGVyU2Nyb2xs
aW5nTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvdW50ZXJTY3JvbGxpbmdMYXllcjsgfQorICAg
IHZvaWQgc2V0Q291bnRlclNjcm9sbGluZ0xheWVyKGNvbnN0IExheWVyUmVwcmVzZW50YXRpb24m
KTsKKworICAgIC8vIFRoaXMgaXMgYSBjbGlwcGluZyBsYXllciB0aGF0IHdpbGwgc2Nyb2xsIHdp
dGggdGhlIHBhZ2UgZm9yIGFsbCB5LWRlbHRhIHNjcm9sbCB2YWx1ZXMgYmV0d2VlbiAwCisgICAg
Ly8gYW5kIHRvcENvbnRlbnRJbnNldCgpLiBPbmNlIHRoZSB5LWRlbHRhcyBnZXQgYmV5b25kIHRo
ZSBjb250ZW50IGluc2V0IHBvaW50LCB0aGlzIGxheWVyIG5vIGxvbmdlcgorICAgIC8vIG5lZWRz
IHRvIG1vdmUuIElmIHRoZSB0b3BDb250ZW50SW5zZXQoKSBpcyAwLCB0aGlzIGxheWVyIGRvZXMg
bm90IG5lZWQgdG8gbW92ZSBhdCBhbGwuIFRoaXMgaXMKKyAgICAvLyBvbmx5IHVzZWQgb24gdGhl
IE1hYy4KKyAgICBjb25zdCBMYXllclJlcHJlc2VudGF0aW9uJiBpbnNldENsaXBMYXllcigpIGNv
bnN0IHsgcmV0dXJuIG1faW5zZXRDbGlwTGF5ZXI7IH0KKyAgICB2b2lkIHNldEluc2V0Q2xpcExh
eWVyKGNvbnN0IExheWVyUmVwcmVzZW50YXRpb24mKTsKKworICAgIGNvbnN0IExheWVyUmVwcmVz
ZW50YXRpb24mIGNvbnRlbnRTaGFkb3dMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudFNo
YWRvd0xheWVyOyB9CisgICAgdm9pZCBzZXRDb250ZW50U2hhZG93TGF5ZXIoY29uc3QgTGF5ZXJS
ZXByZXNlbnRhdGlvbiYpOworCisgICAgLy8gVGhlIGhlYWRlciBhbmQgZm9vdGVyIGxheWVycyBz
Y3JvbGwgdmVydGljYWxseSB3aXRoIHRoZSBwYWdlLCB0aGV5IHNob3VsZCByZW1haW4gZml4ZWQg
d2hlbiBzY3JvbGxpbmcgaG9yaXpvbnRhbGx5LgorICAgIGNvbnN0IExheWVyUmVwcmVzZW50YXRp
b24mIGhlYWRlckxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9oZWFkZXJMYXllcjsgfQorICAgIHZv
aWQgc2V0SGVhZGVyTGF5ZXIoY29uc3QgTGF5ZXJSZXByZXNlbnRhdGlvbiYpOworCisgICAgLy8g
VGhlIGhlYWRlciBhbmQgZm9vdGVyIGxheWVycyBzY3JvbGwgdmVydGljYWxseSB3aXRoIHRoZSBw
YWdlLCB0aGV5IHNob3VsZCByZW1haW4gZml4ZWQgd2hlbiBzY3JvbGxpbmcgaG9yaXpvbnRhbGx5
LgorICAgIGNvbnN0IExheWVyUmVwcmVzZW50YXRpb24mIGZvb3RlckxheWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9mb290ZXJMYXllcjsgfQorICAgIHZvaWQgc2V0Rm9vdGVyTGF5ZXIoY29uc3QgTGF5
ZXJSZXByZXNlbnRhdGlvbiYpOworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIFNjcm9sbGJhclBh
aW50ZXIgdmVydGljYWxTY3JvbGxiYXJQYWludGVyKCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0aWNh
bFNjcm9sbGJhclBhaW50ZXIuZ2V0KCk7IH0KKyAgICBTY3JvbGxiYXJQYWludGVyIGhvcml6b250
YWxTY3JvbGxiYXJQYWludGVyKCkgY29uc3QgeyByZXR1cm4gbV9ob3Jpem9udGFsU2Nyb2xsYmFy
UGFpbnRlci5nZXQoKTsgfQorI2VuZGlmCisgICAgdm9pZCBzZXRTY3JvbGxiYXJQYWludGVyc0Zy
b21TY3JvbGxiYXJzKFNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIsIFNjcm9sbGJhciogaG9y
aXpvbnRhbFNjcm9sbGJhcik7CisKKyAgICB2aXJ0dWFsIHZvaWQgZHVtcFByb3BlcnRpZXMoVGV4
dFN0cmVhbSYsIGludCBpbmRlbnQpIGNvbnN0IG92ZXJyaWRlOworCitwcml2YXRlOgorICAgIFNj
cm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlKFNjcm9sbGluZ1N0YXRlVHJlZSYsIFNjcm9s
bGluZ05vZGVJRCk7CisgICAgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUoY29uc3Qg
U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUmLCBTY3JvbGxpbmdTdGF0ZVRyZWUmKTsK
KworICAgIExheWVyUmVwcmVzZW50YXRpb24gbV9jb3VudGVyU2Nyb2xsaW5nTGF5ZXI7CisgICAg
TGF5ZXJSZXByZXNlbnRhdGlvbiBtX2luc2V0Q2xpcExheWVyOworICAgIExheWVyUmVwcmVzZW50
YXRpb24gbV9jb250ZW50U2hhZG93TGF5ZXI7CisgICAgTGF5ZXJSZXByZXNlbnRhdGlvbiBtX2hl
YWRlckxheWVyOworICAgIExheWVyUmVwcmVzZW50YXRpb24gbV9mb290ZXJMYXllcjsKKworI2lm
IFBMQVRGT1JNKE1BQykKKyAgICBSZXRhaW5QdHI8U2Nyb2xsYmFyUGFpbnRlcj4gbV92ZXJ0aWNh
bFNjcm9sbGJhclBhaW50ZXI7CisgICAgUmV0YWluUHRyPFNjcm9sbGJhclBhaW50ZXI+IG1faG9y
aXpvbnRhbFNjcm9sbGJhclBhaW50ZXI7CisjZW5kaWYKKworICAgIFJlZ2lvbiBtX25vbkZhc3RT
Y3JvbGxhYmxlUmVnaW9uOworICAgIGZsb2F0IG1fZnJhbWVTY2FsZUZhY3RvcjsKKyAgICB1bnNp
Z25lZCBtX3doZWVsRXZlbnRIYW5kbGVyQ291bnQ7CisgICAgU3luY2hyb25vdXNTY3JvbGxpbmdS
ZWFzb25zIG1fc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zOworICAgIFNjcm9sbEJlaGF2aW9y
Rm9yRml4ZWRFbGVtZW50cyBtX2JlaGF2aW9yRm9yRml4ZWQ7CisgICAgaW50IG1faGVhZGVySGVp
Z2h0OworICAgIGludCBtX2Zvb3RlckhlaWdodDsKKyAgICBGbG9hdFBvaW50IG1fcmVxdWVzdGVk
U2Nyb2xsUG9zaXRpb247CisgICAgYm9vbCBtX3JlcXVlc3RlZFNjcm9sbFBvc2l0aW9uUmVwcmVz
ZW50c1Byb2dyYW1tYXRpY1Njcm9sbDsKKyAgICBmbG9hdCBtX3RvcENvbnRlbnRJbnNldDsKK307
CisKK1NDUk9MTElOR19TVEFURV9OT0RFX1RZUEVfQ0FTVFMoU2Nyb2xsaW5nU3RhdGVGcmFtZVNj
cm9sbGluZ05vZGUsIGlzRnJhbWVTY3JvbGxpbmdOb2RlKCkpOworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSB8fCBVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1MpCisKKyNlbmRpZiAvLyBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5n
Tm9kZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdTdGF0ZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0
YXRlTm9kZS5oCmluZGV4IDIwM2FhMDBiNDZiYTYxNDQ5YzcxZGU1ZjNhOTNjY2M5MWM3YTNjNTYu
LmM5MGQxNTlhMDk2MWMyYzUwMWFkYzYwOGM3NzkzMTQ2MjFmMjgxMTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5oCkBAIC05MCw2
ICs5MCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChtX3JlcHJlc2VudGF0aW9uID09IFBs
YXRmb3JtTGF5ZXJSZXByZXNlbnRhdGlvbik7CiAgICAgICAgIHJldHVybiBtX3BsYXRmb3JtTGF5
ZXI7CiAgICAgfQorICAgIAorICAgIEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBsYXll
cklEKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2xheWVySUQ7CisgICAgfQogCiAg
ICAgb3BlcmF0b3IgR3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEKCkgY29uc3QKICAgICB7
CkBAIC0xNTYsNiArMTYxLDggQEAgcHVibGljOgogICAgIGJvb2wgaXNGaXhlZE5vZGUoKSBjb25z
dCB7IHJldHVybiBtX25vZGVUeXBlID09IEZpeGVkTm9kZTsgfQogICAgIGJvb2wgaXNTdGlja3lO
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlVHlwZSA9PSBTdGlja3lOb2RlOyB9CiAgICAgYm9v
bCBpc1Njcm9sbGluZ05vZGUoKSBjb25zdCB7IHJldHVybiBtX25vZGVUeXBlID09IEZyYW1lU2Ny
b2xsaW5nTm9kZSB8fCBtX25vZGVUeXBlID09IE92ZXJmbG93U2Nyb2xsaW5nTm9kZTsgfQorICAg
IGJvb2wgaXNGcmFtZVNjcm9sbGluZ05vZGUoKSBjb25zdCB7IHJldHVybiBtX25vZGVUeXBlID09
IEZyYW1lU2Nyb2xsaW5nTm9kZTsgfQorICAgIGJvb2wgaXNPdmVyZmxvd1Njcm9sbGluZ05vZGUo
KSBjb25zdCB7IHJldHVybiBtX25vZGVUeXBlID09IE92ZXJmbG93U2Nyb2xsaW5nTm9kZTsgfQog
CiAgICAgdmlydHVhbCBQYXNzT3duUHRyPFNjcm9sbGluZ1N0YXRlTm9kZT4gY2xvbmUoU2Nyb2xs
aW5nU3RhdGVUcmVlJiBhZG9wdGl2ZVRyZWUpID0gMDsKICAgICBQYXNzT3duUHRyPFNjcm9sbGlu
Z1N0YXRlTm9kZT4gY2xvbmVBbmRSZXNldChTY3JvbGxpbmdTdGF0ZVRyZWUmIGFkb3B0aXZlVHJl
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdT
dGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
N2ZmNGEzNzRhYjk4MmFlOWJkMTVlYzg1N2RmMDliMDc3YWM2YmNjOQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlLmNwcApAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
LmgiCisKKyNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSB8fCBVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1MpCisKKyNpbmNsdWRlICJTY3JvbGxpbmdTdGF0ZVRyZWUuaCIKKyNpbmNsdWRlICJUZXh0
U3RyZWFtLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK1Bhc3NPd25QdHI8U2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGU+IFNjcm9s
bGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlOjpjcmVhdGUoU2Nyb2xsaW5nU3RhdGVUcmVl
JiBzdGF0ZVRyZWUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCit7CisgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZShzdGF0ZVRyZWUsIG5v
ZGVJRCkpOworfQorCitTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZTo6U2Nyb2xs
aW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGUoU2Nyb2xsaW5nU3RhdGVUcmVlJiBzdGF0ZVRy
ZWUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCisgICAgOiBTY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGUoc3RhdGVUcmVlLCBPdmVyZmxvd1Njcm9sbGluZ05vZGUsIG5vZGVJRCkKK3sKK30KKwor
U2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGU6OlNjcm9sbGluZ1N0YXRlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlKGNvbnN0IFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
JiBzdGF0ZU5vZGUsIFNjcm9sbGluZ1N0YXRlVHJlZSYgYWRvcHRpdmVUcmVlKQorICAgIDogU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlKHN0YXRlTm9kZSwgYWRvcHRpdmVUcmVlKQoreworICAg
IGlmIChoYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsZWRDb250ZW50c0xheWVyKSkKKyAgICAgICAg
c2V0U2Nyb2xsZWRDb250ZW50c0xheWVyKHN0YXRlTm9kZS5zY3JvbGxlZENvbnRlbnRzTGF5ZXIo
KS50b1JlcHJlc2VudGF0aW9uKGFkb3B0aXZlVHJlZS5wcmVmZXJyZWRMYXllclJlcHJlc2VudGF0
aW9uKCkpKTsKK30KKworU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGU6On5TY3Jv
bGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZSgpCit7Cit9CisKK1Bhc3NPd25QdHI8U2Ny
b2xsaW5nU3RhdGVOb2RlPiBTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZTo6Y2xv
bmUoU2Nyb2xsaW5nU3RhdGVUcmVlJiBhZG9wdGl2ZVRyZWUpCit7CisgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZSgqdGhpcywgYWRvcHRp
dmVUcmVlKSk7Cit9CisgICAgCit2b2lkIFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlOjpzZXRTY3JvbGxlZENvbnRlbnRzTGF5ZXIoY29uc3QgTGF5ZXJSZXByZXNlbnRhdGlvbiYg
bGF5ZXJSZXByZXNlbnRhdGlvbikKK3sKKyAgICBpZiAobGF5ZXJSZXByZXNlbnRhdGlvbiA9PSBt
X3Njcm9sbGVkQ29udGVudHNMYXllcikKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fc2Ny
b2xsZWRDb250ZW50c0xheWVyID0gbGF5ZXJSZXByZXNlbnRhdGlvbjsKKyAgICBzZXRQcm9wZXJ0
eUNoYW5nZWQoU2Nyb2xsZWRDb250ZW50c0xheWVyKTsKK30KKwordm9pZCBTY3JvbGxpbmdTdGF0
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZTo6ZHVtcFByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMsIGlu
dCBpbmRlbnQpIGNvbnN0Cit7CisgICAgdHMgPDwgIigiIDw8ICJPdmVyZmxvdyBzY3JvbGxpbmcg
bm9kZSIgPDwgIlxuIjsKKyAgICAKKyAgICBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OmR1
bXBQcm9wZXJ0aWVzKHRzLCBpbmRlbnQpOworICAgIAorICAgIGlmIChtX3Njcm9sbGVkQ29udGVu
dHNMYXllci5sYXllcklEKCkpIHsKKyAgICAgICAgd3JpdGVJbmRlbnQodHMsIGluZGVudCArIDEp
OworICAgICAgICB0cyA8PCAiKHNjcm9sbGVkIGNvbnRlbnRzIGxheWVyICIgPDwgbV9zY3JvbGxl
ZENvbnRlbnRzTGF5ZXIubGF5ZXJJRCgpIDw8ICIpXG4iOworICAgIH0KK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykgfHwgVVNF
KENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDY1OWIwMmIzY2RlZTcyOWQ1YjcwNWIwODA5ZDdmZjNjNGE3YzFjMwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGVfaAorI2RlZmlu
ZSBTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZV9oCisKKyNpZiBFTkFCTEUoQVNZ
TkNfU0NST0xMSU5HKSB8fCBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisKKyNpbmNsdWRlICJT
Y3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZSA6IHB1YmxpYyBTY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGUgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPFNj
cm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlPiBjcmVhdGUoU2Nyb2xsaW5nU3RhdGVU
cmVlJiwgU2Nyb2xsaW5nTm9kZUlEKTsKKworICAgIHZpcnR1YWwgUGFzc093blB0cjxTY3JvbGxp
bmdTdGF0ZU5vZGU+IGNsb25lKFNjcm9sbGluZ1N0YXRlVHJlZSYpOworCisgICAgdmlydHVhbCB+
U2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGUoKTsKKworICAgIGVudW0gQ2hhbmdl
ZFByb3BlcnR5IHsKKyAgICAgICAgU2Nyb2xsZWRDb250ZW50c0xheWVyID0gTnVtU2Nyb2xsaW5n
U3RhdGVOb2RlQml0cworICAgIH07CisKKyAgICAvLyBUaGlzIGlzIGEgbGF5ZXIgd2l0aCB0aGUg
Y29udGVudHMgdGhhdCBtb3ZlLgorICAgIGNvbnN0IExheWVyUmVwcmVzZW50YXRpb24mIHNjcm9s
bGVkQ29udGVudHNMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsZWRDb250ZW50c0xheWVy
OyB9CisgICAgdm9pZCBzZXRTY3JvbGxlZENvbnRlbnRzTGF5ZXIoY29uc3QgTGF5ZXJSZXByZXNl
bnRhdGlvbiYpOworICAgIAorICAgIHZpcnR1YWwgdm9pZCBkdW1wUHJvcGVydGllcyhUZXh0U3Ry
ZWFtJiwgaW50IGluZGVudCkgY29uc3Qgb3ZlcnJpZGU7CisKK3ByaXZhdGU6CisgICAgU2Nyb2xs
aW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGUoU2Nyb2xsaW5nU3RhdGVUcmVlJiwgU2Nyb2xs
aW5nTm9kZUlEKTsKKyAgICBTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZShjb25z
dCBTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZSYsIFNjcm9sbGluZ1N0YXRlVHJl
ZSYpOworICAgIAorICAgIExheWVyUmVwcmVzZW50YXRpb24gbV9zY3JvbGxlZENvbnRlbnRzTGF5
ZXI7ICAgIAorfTsKKworU0NST0xMSU5HX1NUQVRFX05PREVfVFlQRV9DQVNUUyhTY3JvbGxpbmdT
dGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZSwgaXNPdmVyZmxvd1Njcm9sbGluZ05vZGUoKSk7CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJ
TkcpIHx8IFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKworI2VuZGlmIC8vIFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcAppbmRleCBlZjY2MmZl
M2IyNmVkNmVhNmY0YTNlOTk1NjAzNTdkODk1ODc5YTE1Li5hZjNmMzcyM2JmOTM2MmZlNDlkMWM0
ZGRiOTA5NjJiMmQzODc5ZTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAKQEAgLTM0LDg4
ICszNCwzOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NPd25QdHI8U2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlPiBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OmNyZWF0ZShT
Y3JvbGxpbmdTdGF0ZVRyZWUmIHN0YXRlVHJlZSwgU2Nyb2xsaW5nTm9kZVR5cGUgbm9kZVR5cGUs
IFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUoc3RhdGVUcmVlLCBub2RlVHlwZSwgbm9kZUlEKSk7Ci19
Ci0KIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdO
b2RlKFNjcm9sbGluZ1N0YXRlVHJlZSYgc3RhdGVUcmVlLCBTY3JvbGxpbmdOb2RlVHlwZSBub2Rl
VHlwZSwgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKICAgICA6IFNjcm9sbGluZ1N0YXRlTm9kZShu
b2RlVHlwZSwgc3RhdGVUcmVlLCBub2RlSUQpCi0jaWYgUExBVEZPUk0oTUFDKQotICAgICwgbV92
ZXJ0aWNhbFNjcm9sbGJhclBhaW50ZXIoMCkKLSAgICAsIG1faG9yaXpvbnRhbFNjcm9sbGJhclBh
aW50ZXIoMCkKLSNlbmRpZgotICAgICwgbV9mcmFtZVNjYWxlRmFjdG9yKDEpCi0gICAgLCBtX3do
ZWVsRXZlbnRIYW5kbGVyQ291bnQoMCkKLSAgICAsIG1fc3luY2hyb25vdXNTY3JvbGxpbmdSZWFz
b25zKDApCi0gICAgLCBtX2JlaGF2aW9yRm9yRml4ZWQoU3RpY2tUb0RvY3VtZW50Qm91bmRzKQot
ICAgICwgbV9oZWFkZXJIZWlnaHQoMCkKLSAgICAsIG1fZm9vdGVySGVpZ2h0KDApCiAgICAgLCBt
X3JlcXVlc3RlZFNjcm9sbFBvc2l0aW9uUmVwcmVzZW50c1Byb2dyYW1tYXRpY1Njcm9sbChmYWxz
ZSkKLSAgICAsIG1fdG9wQ29udGVudEluc2V0KDApCiB7CiB9CiAKIFNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlKGNvbnN0IFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZSYgc3RhdGVOb2RlLCBTY3JvbGxpbmdTdGF0ZVRyZWUmIGFkb3B0aXZl
VHJlZSkKICAgICA6IFNjcm9sbGluZ1N0YXRlTm9kZShzdGF0ZU5vZGUsIGFkb3B0aXZlVHJlZSkK
LSNpZiBQTEFURk9STShNQUMpCi0gICAgLCBtX3ZlcnRpY2FsU2Nyb2xsYmFyUGFpbnRlcihzdGF0
ZU5vZGUudmVydGljYWxTY3JvbGxiYXJQYWludGVyKCkpCi0gICAgLCBtX2hvcml6b250YWxTY3Jv
bGxiYXJQYWludGVyKHN0YXRlTm9kZS5ob3Jpem9udGFsU2Nyb2xsYmFyUGFpbnRlcigpKQotI2Vu
ZGlmCi0gICAgLCBtX3ZpZXdwb3J0U2l6ZShzdGF0ZU5vZGUudmlld3BvcnRTaXplKCkpCisgICAg
LCBtX3Njcm9sbGFibGVBcmVhU2l6ZShzdGF0ZU5vZGUuc2Nyb2xsYWJsZUFyZWFTaXplKCkpCiAg
ICAgLCBtX3RvdGFsQ29udGVudHNTaXplKHN0YXRlTm9kZS50b3RhbENvbnRlbnRzU2l6ZSgpKQog
ICAgICwgbV9zY3JvbGxQb3NpdGlvbihzdGF0ZU5vZGUuc2Nyb2xsUG9zaXRpb24oKSkKKyAgICAs
IG1fcmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24oc3RhdGVOb2RlLnJlcXVlc3RlZFNjcm9sbFBvc2l0
aW9uKCkpCiAgICAgLCBtX3Njcm9sbE9yaWdpbihzdGF0ZU5vZGUuc2Nyb2xsT3JpZ2luKCkpCiAg
ICAgLCBtX3Njcm9sbGFibGVBcmVhUGFyYW1ldGVycyhzdGF0ZU5vZGUuc2Nyb2xsYWJsZUFyZWFQ
YXJhbWV0ZXJzKCkpCi0gICAgLCBtX25vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKHN0YXRlTm9kZS5u
b25GYXN0U2Nyb2xsYWJsZVJlZ2lvbigpKQotICAgICwgbV9mcmFtZVNjYWxlRmFjdG9yKHN0YXRl
Tm9kZS5mcmFtZVNjYWxlRmFjdG9yKCkpCi0gICAgLCBtX3doZWVsRXZlbnRIYW5kbGVyQ291bnQo
c3RhdGVOb2RlLndoZWVsRXZlbnRIYW5kbGVyQ291bnQoKSkKLSAgICAsIG1fc3luY2hyb25vdXNT
Y3JvbGxpbmdSZWFzb25zKHN0YXRlTm9kZS5zeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoKSkK
LSAgICAsIG1fYmVoYXZpb3JGb3JGaXhlZChzdGF0ZU5vZGUuc2Nyb2xsQmVoYXZpb3JGb3JGaXhl
ZEVsZW1lbnRzKCkpCi0gICAgLCBtX2hlYWRlckhlaWdodChzdGF0ZU5vZGUuaGVhZGVySGVpZ2h0
KCkpCi0gICAgLCBtX2Zvb3RlckhlaWdodChzdGF0ZU5vZGUuZm9vdGVySGVpZ2h0KCkpCi0gICAg
LCBtX3JlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKHN0YXRlTm9kZS5yZXF1ZXN0ZWRTY3JvbGxQb3Np
dGlvbigpKQogICAgICwgbV9yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvblJlcHJlc2VudHNQcm9ncmFt
bWF0aWNTY3JvbGwoc3RhdGVOb2RlLnJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uUmVwcmVzZW50c1By
b2dyYW1tYXRpY1Njcm9sbCgpKQotICAgICwgbV90b3BDb250ZW50SW5zZXQoc3RhdGVOb2RlLnRv
cENvbnRlbnRJbnNldCgpKQogewotICAgIGlmIChoYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsZWRD
b250ZW50c0xheWVyKSkKLSAgICAgICAgc2V0U2Nyb2xsZWRDb250ZW50c0xheWVyKHN0YXRlTm9k
ZS5zY3JvbGxlZENvbnRlbnRzTGF5ZXIoKS50b1JlcHJlc2VudGF0aW9uKGFkb3B0aXZlVHJlZS5w
cmVmZXJyZWRMYXllclJlcHJlc2VudGF0aW9uKCkpKTsKLQotICAgIGlmIChoYXNDaGFuZ2VkUHJv
cGVydHkoQ291bnRlclNjcm9sbGluZ0xheWVyKSkKLSAgICAgICAgc2V0Q291bnRlclNjcm9sbGlu
Z0xheWVyKHN0YXRlTm9kZS5jb3VudGVyU2Nyb2xsaW5nTGF5ZXIoKS50b1JlcHJlc2VudGF0aW9u
KGFkb3B0aXZlVHJlZS5wcmVmZXJyZWRMYXllclJlcHJlc2VudGF0aW9uKCkpKTsKLQotICAgIGlm
IChoYXNDaGFuZ2VkUHJvcGVydHkoSW5zZXRDbGlwTGF5ZXIpKQotICAgICAgICBzZXRJbnNldENs
aXBMYXllcihzdGF0ZU5vZGUuaW5zZXRDbGlwTGF5ZXIoKS50b1JlcHJlc2VudGF0aW9uKGFkb3B0
aXZlVHJlZS5wcmVmZXJyZWRMYXllclJlcHJlc2VudGF0aW9uKCkpKTsKLQotICAgIGlmIChoYXND
aGFuZ2VkUHJvcGVydHkoQ29udGVudFNoYWRvd0xheWVyKSkKLSAgICAgICAgc2V0Q29udGVudFNo
YWRvd0xheWVyKHN0YXRlTm9kZS5jb250ZW50U2hhZG93TGF5ZXIoKS50b1JlcHJlc2VudGF0aW9u
KGFkb3B0aXZlVHJlZS5wcmVmZXJyZWRMYXllclJlcHJlc2VudGF0aW9uKCkpKTsKLQotICAgIGlm
IChoYXNDaGFuZ2VkUHJvcGVydHkoSGVhZGVyTGF5ZXIpKQotICAgICAgICBzZXRIZWFkZXJMYXll
cihzdGF0ZU5vZGUuaGVhZGVyTGF5ZXIoKS50b1JlcHJlc2VudGF0aW9uKGFkb3B0aXZlVHJlZS5w
cmVmZXJyZWRMYXllclJlcHJlc2VudGF0aW9uKCkpKTsKLQotICAgIGlmIChoYXNDaGFuZ2VkUHJv
cGVydHkoRm9vdGVyTGF5ZXIpKQotICAgICAgICBzZXRGb290ZXJMYXllcihzdGF0ZU5vZGUuZm9v
dGVyTGF5ZXIoKS50b1JlcHJlc2VudGF0aW9uKGFkb3B0aXZlVHJlZS5wcmVmZXJyZWRMYXllclJl
cHJlc2VudGF0aW9uKCkpKTsKIH0KIAogU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjp+U2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlKCkKIHsKIH0KIAotUGFzc093blB0cjxTY3JvbGxpbmdT
dGF0ZU5vZGU+IFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6Y2xvbmUoU2Nyb2xsaW5nU3Rh
dGVUcmVlJiBhZG9wdGl2ZVRyZWUpCit2b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6
c2V0U2Nyb2xsYWJsZUFyZWFTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKIHsKLSAgICByZXR1
cm4gYWRvcHRQdHIobmV3IFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSgqdGhpcywgYWRvcHRp
dmVUcmVlKSk7Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRWaWV3
cG9ydFNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplKQotewotICAgIGlmIChtX3ZpZXdwb3J0U2l6
ZSA9PSBzaXplKQorICAgIGlmIChtX3Njcm9sbGFibGVBcmVhU2l6ZSA9PSBzaXplKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX3ZpZXdwb3J0U2l6ZSA9IHNpemU7Ci0gICAgc2V0UHJvcGVydHlD
aGFuZ2VkKFZpZXdwb3J0U2l6ZSk7CisgICAgbV9zY3JvbGxhYmxlQXJlYVNpemUgPSBzaXplOwor
ICAgIHNldFByb3BlcnR5Q2hhbmdlZChTY3JvbGxhYmxlQXJlYVNpemUpOwogfQogCi12b2lkIFNj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0VG90YWxDb250ZW50c1NpemUoY29uc3QgSW50
U2l6ZSYgdG90YWxDb250ZW50c1NpemUpCit2b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZTo6c2V0VG90YWxDb250ZW50c1NpemUoY29uc3QgRmxvYXRTaXplJiB0b3RhbENvbnRlbnRzU2l6
ZSkKIHsKICAgICBpZiAobV90b3RhbENvbnRlbnRzU2l6ZSA9PSB0b3RhbENvbnRlbnRzU2l6ZSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTUxLDUyICsxMDEsNiBAQCB2b2lkIFNjcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZTo6c2V0U2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzKGNvbnN0IFNjcm9sbGFi
bGVBcgogICAgIHNldFByb3BlcnR5Q2hhbmdlZChTY3JvbGxhYmxlQXJlYVBhcmFtcyk7CiB9CiAK
LXZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRGcmFtZVNjYWxlRmFjdG9yKGZs
b2F0IHNjYWxlRmFjdG9yKQotewotICAgIGlmIChtX2ZyYW1lU2NhbGVGYWN0b3IgPT0gc2NhbGVG
YWN0b3IpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fZnJhbWVTY2FsZUZhY3RvciA9IHNjYWxl
RmFjdG9yOwotCi0gICAgc2V0UHJvcGVydHlDaGFuZ2VkKEZyYW1lU2NhbGVGYWN0b3IpOwotfQot
Ci12b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0Tm9uRmFzdFNjcm9sbGFibGVS
ZWdpb24oY29uc3QgUmVnaW9uJiBub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbikKLXsKLSAgICBpZiAo
bV9ub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbiA9PSBub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbikKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgbV9ub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbiA9IG5vbkZhc3RT
Y3JvbGxhYmxlUmVnaW9uOwotICAgIHNldFByb3BlcnR5Q2hhbmdlZChOb25GYXN0U2Nyb2xsYWJs
ZVJlZ2lvbik7Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRXaGVl
bEV2ZW50SGFuZGxlckNvdW50KHVuc2lnbmVkIHdoZWVsRXZlbnRIYW5kbGVyQ291bnQpCi17Ci0g
ICAgaWYgKG1fd2hlZWxFdmVudEhhbmRsZXJDb3VudCA9PSB3aGVlbEV2ZW50SGFuZGxlckNvdW50
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3doZWVsRXZlbnRIYW5kbGVyQ291bnQgPSB3aGVl
bEV2ZW50SGFuZGxlckNvdW50OwotICAgIHNldFByb3BlcnR5Q2hhbmdlZChXaGVlbEV2ZW50SGFu
ZGxlckNvdW50KTsKLX0KLQotdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFN5
bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyhTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMgcmVh
c29ucykKLXsKLSAgICBpZiAobV9zeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMgPT0gcmVhc29u
cykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMg
PSByZWFzb25zOwotICAgIHNldFByb3BlcnR5Q2hhbmdlZChSZWFzb25zRm9yU3luY2hyb25vdXNT
Y3JvbGxpbmcpOwotfQotCi12b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0U2Ny
b2xsQmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzKFNjcm9sbEJlaGF2aW9yRm9yRml4ZWRFbGVtZW50
cyBiZWhhdmlvckZvckZpeGVkKQotewotICAgIGlmIChtX2JlaGF2aW9yRm9yRml4ZWQgPT0gYmVo
YXZpb3JGb3JGaXhlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9iZWhhdmlvckZvckZpeGVk
ID0gYmVoYXZpb3JGb3JGaXhlZDsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoQmVoYXZpb3JGb3JG
aXhlZEVsZW1lbnRzKTsKLX0KLQogdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNl
dFJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHJlcXVlc3RlZFNjcm9s
bFBvc2l0aW9uLCBib29sIHJlcHJlc2VudHNQcm9ncmFtbWF0aWNTY3JvbGwpCiB7CiAgICAgbV9y
ZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbiA9IHJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uOwpAQCAtMjA0
LDEwNSArMTA4LDggQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFJlcXVl
c3RlZFNjcm9sbFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHIKICAgICBzZXRQcm9wZXJ0eUNo
YW5nZWQoUmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24pOwogfQogCi12b2lkIFNjcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZTo6c2V0SGVhZGVySGVpZ2h0KGludCBoZWFkZXJIZWlnaHQpCi17Ci0gICAg
aWYgKG1faGVhZGVySGVpZ2h0ID09IGhlYWRlckhlaWdodCkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgbV9oZWFkZXJIZWlnaHQgPSBoZWFkZXJIZWlnaHQ7Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2Vk
KEhlYWRlckhlaWdodCk7Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpz
ZXRGb290ZXJIZWlnaHQoaW50IGZvb3RlckhlaWdodCkKLXsKLSAgICBpZiAobV9mb290ZXJIZWln
aHQgPT0gZm9vdGVySGVpZ2h0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2Zvb3RlckhlaWdo
dCA9IGZvb3RlckhlaWdodDsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoRm9vdGVySGVpZ2h0KTsK
LX0KLQotdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFRvcENvbnRlbnRJbnNl
dChmbG9hdCB0b3BDb250ZW50SW5zZXQpCi17Ci0gICAgaWYgKG1fdG9wQ29udGVudEluc2V0ID09
IHRvcENvbnRlbnRJbnNldCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV90b3BDb250ZW50SW5z
ZXQgPSB0b3BDb250ZW50SW5zZXQ7Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkKFRvcENvbnRlbnRJ
bnNldCk7Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTY3JvbGxl
ZENvbnRlbnRzTGF5ZXIoY29uc3QgTGF5ZXJSZXByZXNlbnRhdGlvbiYgbGF5ZXJSZXByZXNlbnRh
dGlvbikKLXsKLSAgICBpZiAobGF5ZXJSZXByZXNlbnRhdGlvbiA9PSBtX3Njcm9sbGVkQ29udGVu
dHNMYXllcikKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIG1fc2Nyb2xsZWRDb250ZW50c0xh
eWVyID0gbGF5ZXJSZXByZXNlbnRhdGlvbjsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoU2Nyb2xs
ZWRDb250ZW50c0xheWVyKTsKLX0KLQotdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6
OnNldENvdW50ZXJTY3JvbGxpbmdMYXllcihjb25zdCBMYXllclJlcHJlc2VudGF0aW9uJiBsYXll
clJlcHJlc2VudGF0aW9uKQotewotICAgIGlmIChsYXllclJlcHJlc2VudGF0aW9uID09IG1fY291
bnRlclNjcm9sbGluZ0xheWVyKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgbV9jb3VudGVy
U2Nyb2xsaW5nTGF5ZXIgPSBsYXllclJlcHJlc2VudGF0aW9uOwotICAgIHNldFByb3BlcnR5Q2hh
bmdlZChDb3VudGVyU2Nyb2xsaW5nTGF5ZXIpOwotfQotCi12b2lkIFNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZTo6c2V0SW5zZXRDbGlwTGF5ZXIoY29uc3QgTGF5ZXJSZXByZXNlbnRhdGlvbiYg
bGF5ZXJSZXByZXNlbnRhdGlvbikKLXsKLSAgICBpZiAobGF5ZXJSZXByZXNlbnRhdGlvbiA9PSBt
X2luc2V0Q2xpcExheWVyKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgbV9pbnNldENsaXBM
YXllciA9IGxheWVyUmVwcmVzZW50YXRpb247Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkKEluc2V0
Q2xpcExheWVyKTsKLX0KLQotdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldENv
bnRlbnRTaGFkb3dMYXllcihjb25zdCBMYXllclJlcHJlc2VudGF0aW9uJiBsYXllclJlcHJlc2Vu
dGF0aW9uKQotewotICAgIGlmIChsYXllclJlcHJlc2VudGF0aW9uID09IG1fY29udGVudFNoYWRv
d0xheWVyKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgbV9jb250ZW50U2hhZG93TGF5ZXIg
PSBsYXllclJlcHJlc2VudGF0aW9uOwotICAgIHNldFByb3BlcnR5Q2hhbmdlZChDb250ZW50U2hh
ZG93TGF5ZXIpOwotfQotCi12b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0SGVh
ZGVyTGF5ZXIoY29uc3QgTGF5ZXJSZXByZXNlbnRhdGlvbiYgbGF5ZXJSZXByZXNlbnRhdGlvbikK
LXsKLSAgICBpZiAobGF5ZXJSZXByZXNlbnRhdGlvbiA9PSBtX2hlYWRlckxheWVyKQotICAgICAg
ICByZXR1cm47Ci0gICAgCi0gICAgbV9oZWFkZXJMYXllciA9IGxheWVyUmVwcmVzZW50YXRpb247
Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkKEhlYWRlckxheWVyKTsKLX0KLQotCi12b2lkIFNjcm9s
bGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0Rm9vdGVyTGF5ZXIoY29uc3QgTGF5ZXJSZXByZXNl
bnRhdGlvbiYgbGF5ZXJSZXByZXNlbnRhdGlvbikKLXsKLSAgICBpZiAobGF5ZXJSZXByZXNlbnRh
dGlvbiA9PSBtX2Zvb3RlckxheWVyKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgbV9mb290
ZXJMYXllciA9IGxheWVyUmVwcmVzZW50YXRpb247Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkKEZv
b3RlckxheWVyKTsKLX0KLQotI2lmICFQTEFURk9STShNQUMpCi12b2lkIFNjcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZTo6c2V0U2Nyb2xsYmFyUGFpbnRlcnNGcm9tU2Nyb2xsYmFycyhTY3JvbGxi
YXIqLCBTY3JvbGxiYXIqKQotewotfQotI2VuZGlmCi0KIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlOjpkdW1wUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywgaW50IGluZGVudCkgY29u
c3QKIHsKLSAgICB0cyA8PCAiKCIgPDwgIlNjcm9sbGluZyBub2RlIiA8PCAiXG4iOwotCi0gICAg
aWYgKCFtX3ZpZXdwb3J0U2l6ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgd3JpdGVJbmRlbnQodHMs
IGluZGVudCArIDEpOwotICAgICAgICB0cyA8PCAiKHZpZXdwb3J0IHJlY3QgIgotICAgICAgICAg
ICAgPDwgVGV4dFN0cmVhbTo6Rm9ybWF0TnVtYmVyUmVzcGVjdGluZ0ludGVnZXJzKG1fdmlld3Bv
cnRTaXplLndpZHRoKCkpIDw8ICIgIgotICAgICAgICAgICAgPDwgVGV4dFN0cmVhbTo6Rm9ybWF0
TnVtYmVyUmVzcGVjdGluZ0ludGVnZXJzKG1fdmlld3BvcnRTaXplLmhlaWdodCgpKSA8PCAiKVxu
IjsKLSAgICB9Ci0KICAgICBpZiAobV9zY3JvbGxQb3NpdGlvbiAhPSBGbG9hdFBvaW50KCkpIHsK
ICAgICAgICAgd3JpdGVJbmRlbnQodHMsIGluZGVudCArIDEpOwogICAgICAgICB0cyA8PCAiKHNj
cm9sbCBwb3NpdGlvbiAiCkBAIC0zMTAsMjQgKzExNywyNSBAQCB2b2lkIFNjcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZTo6ZHVtcFByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMsIGludCBpbmRlbnQp
IGNvbgogICAgICAgICAgICAgPDwgVGV4dFN0cmVhbTo6Rm9ybWF0TnVtYmVyUmVzcGVjdGluZ0lu
dGVnZXJzKG1fc2Nyb2xsUG9zaXRpb24ueSgpKSA8PCAiKVxuIjsKICAgICB9CiAKLSAgICBpZiAo
IW1fdG90YWxDb250ZW50c1NpemUuaXNFbXB0eSgpKSB7CisgICAgaWYgKCFtX3Njcm9sbGFibGVB
cmVhU2l6ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgd3JpdGVJbmRlbnQodHMsIGluZGVudCArIDEp
OwotICAgICAgICB0cyA8PCAiKGNvbnRlbnRzIHNpemUgIiA8PCBtX3RvdGFsQ29udGVudHNTaXpl
LndpZHRoKCkgPDwgIiAiIDw8IG1fdG90YWxDb250ZW50c1NpemUuaGVpZ2h0KCkgPDwgIilcbiI7
CisgICAgICAgIHRzIDw8ICIoc2Nyb2xsYWJsZSBhcmVhIHNpemUgIgorICAgICAgICAgICAgPDwg
VGV4dFN0cmVhbTo6Rm9ybWF0TnVtYmVyUmVzcGVjdGluZ0ludGVnZXJzKG1fc2Nyb2xsYWJsZUFy
ZWFTaXplLndpZHRoKCkpIDw8ICIgIgorICAgICAgICAgICAgPDwgVGV4dFN0cmVhbTo6Rm9ybWF0
TnVtYmVyUmVzcGVjdGluZ0ludGVnZXJzKG1fc2Nyb2xsYWJsZUFyZWFTaXplLmhlaWdodCgpKSA8
PCAiKVxuIjsKICAgICB9CiAKLSAgICBpZiAobV9mcmFtZVNjYWxlRmFjdG9yICE9IDEpIHsKLSAg
ICAgICAgd3JpdGVJbmRlbnQodHMsIGluZGVudCArIDEpOwotICAgICAgICB0cyA8PCAiKGZyYW1l
IHNjYWxlIGZhY3RvciAiIDw8IG1fZnJhbWVTY2FsZUZhY3RvciA8PCAiKVxuIjsKLSAgICB9Ci0K
LSAgICBpZiAobV9zeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMpIHsKKyAgICBpZiAoIW1fdG90
YWxDb250ZW50c1NpemUuaXNFbXB0eSgpKSB7CiAgICAgICAgIHdyaXRlSW5kZW50KHRzLCBpbmRl
bnQgKyAxKTsKLSAgICAgICAgdHMgPDwgIihTY3JvbGxpbmcgb24gbWFpbiB0aHJlYWQgYmVjYXVz
ZTogIiA8PCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25z
QXNUZXh0KG1fc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKSA8PCAiKVxuIjsKKyAgICAgICAg
dHMgPDwgIihjb250ZW50cyBzaXplICIKKyAgICAgICAgICAgIDw8IFRleHRTdHJlYW06OkZvcm1h
dE51bWJlclJlc3BlY3RpbmdJbnRlZ2VycyhtX3RvdGFsQ29udGVudHNTaXplLndpZHRoKCkpIDw8
ICIgIgorICAgICAgICAgICAgPDwgVGV4dFN0cmVhbTo6Rm9ybWF0TnVtYmVyUmVzcGVjdGluZ0lu
dGVnZXJzKG1fdG90YWxDb250ZW50c1NpemUuaGVpZ2h0KCkpIDw8ICIpXG4iOwogICAgIH0KIAog
ICAgIGlmIChtX3JlcXVlc3RlZFNjcm9sbFBvc2l0aW9uICE9IEludFBvaW50KCkpIHsKICAgICAg
ICAgd3JpdGVJbmRlbnQodHMsIGluZGVudCArIDEpOwotICAgICAgICB0cyA8PCAiKHJlcXVlc3Rl
ZCBzY3JvbGwgcG9zaXRpb24gIiA8PCBUZXh0U3RyZWFtOjpGb3JtYXROdW1iZXJSZXNwZWN0aW5n
SW50ZWdlcnMobV9yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbi54KCkpIDw8ICIgIiA8PCBUZXh0U3Ry
ZWFtOjpGb3JtYXROdW1iZXJSZXNwZWN0aW5nSW50ZWdlcnMobV9yZXF1ZXN0ZWRTY3JvbGxQb3Np
dGlvbi55KCkpIDw8ICIpXG4iOworICAgICAgICB0cyA8PCAiKHJlcXVlc3RlZCBzY3JvbGwgcG9z
aXRpb24gIgorICAgICAgICAgICAgPDwgVGV4dFN0cmVhbTo6Rm9ybWF0TnVtYmVyUmVzcGVjdGlu
Z0ludGVnZXJzKG1fcmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24ueCgpKSA8PCAiICIKKyAgICAgICAg
ICAgIDw8IFRleHRTdHJlYW06OkZvcm1hdE51bWJlclJlc3BlY3RpbmdJbnRlZ2VycyhtX3JlcXVl
c3RlZFNjcm9sbFBvc2l0aW9uLnkoKSkgPDwgIilcbiI7CiAgICAgfQogCiAgICAgaWYgKG1fc2Ny
b2xsT3JpZ2luICE9IEludFBvaW50KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgKaW5kZXggYzJh
Y2UyYTBhMzRhNjU0ZDkyYTRlNzliZmJlNWJhYWYwNTQwZTQwNi4uMzVkZGZmZWIxNDU4NDJjMjEw
Zjc4ZTkxYTA1NDZlOGM5MmUyMjhjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgKQEAgLTI4LDU2
ICsyOCwzMiBAQAogCiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgfHwgVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTKQogCi0jaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgotI2luY2x1ZGUgIklu
dFJlY3QuaCIKLSNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgot
I2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdTdGF0ZU5vZGUuaCIKICNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNjcm9s
bGJhcjsKLQotY2xhc3MgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlIGZpbmFsIDogcHVibGlj
IFNjcm9sbGluZ1N0YXRlTm9kZSB7CitjbGFzcyBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUg
OiBwdWJsaWMgU2Nyb2xsaW5nU3RhdGVOb2RlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093
blB0cjxTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU+IGNyZWF0ZShTY3JvbGxpbmdTdGF0ZVRy
ZWUmLCBTY3JvbGxpbmdOb2RlVHlwZSwgU2Nyb2xsaW5nTm9kZUlEKTsKLQotICAgIHZpcnR1YWwg
UGFzc093blB0cjxTY3JvbGxpbmdTdGF0ZU5vZGU+IGNsb25lKFNjcm9sbGluZ1N0YXRlVHJlZSYp
OwotCiAgICAgdmlydHVhbCB+U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlKCk7CiAKICAgICBl
bnVtIENoYW5nZWRQcm9wZXJ0eSB7Ci0gICAgICAgIFZpZXdwb3J0U2l6ZSA9IE51bVN0YXRlTm9k
ZUJpdHMsCisgICAgICAgIFNjcm9sbGFibGVBcmVhU2l6ZSA9IE51bVN0YXRlTm9kZUJpdHMsCiAg
ICAgICAgIFRvdGFsQ29udGVudHNTaXplLAogICAgICAgICBTY3JvbGxQb3NpdGlvbiwKICAgICAg
ICAgU2Nyb2xsT3JpZ2luLAogICAgICAgICBTY3JvbGxhYmxlQXJlYVBhcmFtcywKLSAgICAgICAg
RnJhbWVTY2FsZUZhY3RvciwKLSAgICAgICAgTm9uRmFzdFNjcm9sbGFibGVSZWdpb24sCi0gICAg
ICAgIFdoZWVsRXZlbnRIYW5kbGVyQ291bnQsCi0gICAgICAgIFJlYXNvbnNGb3JTeW5jaHJvbm91
c1Njcm9sbGluZywKICAgICAgICAgUmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24sCi0gICAgICAgIFNj
cm9sbGVkQ29udGVudHNMYXllciwKLSAgICAgICAgQ291bnRlclNjcm9sbGluZ0xheWVyLAotICAg
ICAgICBJbnNldENsaXBMYXllciwKLSAgICAgICAgQ29udGVudFNoYWRvd0xheWVyLAotICAgICAg
ICBIZWFkZXJIZWlnaHQsCi0gICAgICAgIEZvb3RlckhlaWdodCwKLSAgICAgICAgSGVhZGVyTGF5
ZXIsCi0gICAgICAgIEZvb3RlckxheWVyLAotICAgICAgICBQYWludGVyRm9yU2Nyb2xsYmFyLAot
ICAgICAgICBCZWhhdmlvckZvckZpeGVkRWxlbWVudHMsCi0gICAgICAgIFRvcENvbnRlbnRJbnNl
dAorICAgICAgICBOdW1TY3JvbGxpbmdTdGF0ZU5vZGVCaXRzLAogICAgIH07CiAKLSAgICBjb25z
dCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld3BvcnRTaXpl
OyB9Ci0gICAgdm9pZCBzZXRWaWV3cG9ydFNpemUoY29uc3QgRmxvYXRTaXplJik7CisgICAgY29u
c3QgRmxvYXRTaXplJiBzY3JvbGxhYmxlQXJlYVNpemUoKSBjb25zdCB7IHJldHVybiBtX3Njcm9s
bGFibGVBcmVhU2l6ZTsgfQorICAgIHZvaWQgc2V0U2Nyb2xsYWJsZUFyZWFTaXplKGNvbnN0IEZs
b2F0U2l6ZSYpOwogCi0gICAgY29uc3QgSW50U2l6ZSYgdG90YWxDb250ZW50c1NpemUoKSBjb25z
dCB7IHJldHVybiBtX3RvdGFsQ29udGVudHNTaXplOyB9Ci0gICAgdm9pZCBzZXRUb3RhbENvbnRl
bnRzU2l6ZShjb25zdCBJbnRTaXplJik7CisgICAgY29uc3QgRmxvYXRTaXplJiB0b3RhbENvbnRl
bnRzU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxDb250ZW50c1NpemU7IH0KKyAgICB2b2lk
IHNldFRvdGFsQ29udGVudHNTaXplKGNvbnN0IEZsb2F0U2l6ZSYpOwogCiAgICAgY29uc3QgRmxv
YXRQb2ludCYgc2Nyb2xsUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbFBvc2l0aW9u
OyB9CiAgICAgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50Jik7CkBAIC04
NSwxMDMgKzYxLDI3IEBAIHB1YmxpYzoKICAgICBjb25zdCBJbnRQb2ludCYgc2Nyb2xsT3JpZ2lu
KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxPcmlnaW47IH0KICAgICB2b2lkIHNldFNjcm9sbE9y
aWdpbihjb25zdCBJbnRQb2ludCYpOwogCi0gICAgZmxvYXQgZnJhbWVTY2FsZUZhY3RvcigpIGNv
bnN0IHsgcmV0dXJuIG1fZnJhbWVTY2FsZUZhY3RvcjsgfQotICAgIHZvaWQgc2V0RnJhbWVTY2Fs
ZUZhY3RvcihmbG9hdCk7Ci0KLSAgICBjb25zdCBSZWdpb24mIG5vbkZhc3RTY3JvbGxhYmxlUmVn
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9ub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbjsgfQotICAgIHZv
aWQgc2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24oY29uc3QgUmVnaW9uJik7Ci0KLSAgICB1bnNp
Z25lZCB3aGVlbEV2ZW50SGFuZGxlckNvdW50KCkgY29uc3QgeyByZXR1cm4gbV93aGVlbEV2ZW50
SGFuZGxlckNvdW50OyB9Ci0gICAgdm9pZCBzZXRXaGVlbEV2ZW50SGFuZGxlckNvdW50KHVuc2ln
bmVkKTsKLQotICAgIFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyBzeW5jaHJvbm91c1Njcm9s
bGluZ1JlYXNvbnMoKSBjb25zdCB7IHJldHVybiBtX3N5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29u
czsgfQotICAgIHZvaWQgc2V0U3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKFN5bmNocm9ub3Vz
U2Nyb2xsaW5nUmVhc29ucyk7Ci0KICAgICBjb25zdCBTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMm
IHNjcm9sbGFibGVBcmVhUGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFy
ZWFQYXJhbWV0ZXJzOyB9CiAgICAgdm9pZCBzZXRTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMoY29u
c3QgU2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzJiBwYXJhbXMpOwogCi0gICAgU2Nyb2xsQmVoYXZp
b3JGb3JGaXhlZEVsZW1lbnRzIHNjcm9sbEJlaGF2aW9yRm9yRml4ZWRFbGVtZW50cygpIGNvbnN0
IHsgcmV0dXJuIG1fYmVoYXZpb3JGb3JGaXhlZDsgfQotICAgIHZvaWQgc2V0U2Nyb2xsQmVoYXZp
b3JGb3JGaXhlZEVsZW1lbnRzKFNjcm9sbEJlaGF2aW9yRm9yRml4ZWRFbGVtZW50cyk7Ci0KICAg
ICBjb25zdCBGbG9hdFBvaW50JiByZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fcmVxdWVzdGVkU2Nyb2xsUG9zaXRpb247IH0KICAgICBib29sIHJlcXVlc3RlZFNjcm9s
bFBvc2l0aW9uUmVwcmVzZW50c1Byb2dyYW1tYXRpY1Njcm9sbCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVxdWVzdGVkU2Nyb2xsUG9zaXRpb25SZXByZXNlbnRzUHJvZ3JhbW1hdGljU2Nyb2xsOyB9CiAg
ICAgdm9pZCBzZXRSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiwgYm9v
bCByZXByZXNlbnRzUHJvZ3JhbW1hdGljU2Nyb2xsKTsKICAgICAKLSAgICBpbnQgaGVhZGVySGVp
Z2h0KCkgY29uc3QgeyByZXR1cm4gbV9oZWFkZXJIZWlnaHQ7IH0KLSAgICB2b2lkIHNldEhlYWRl
ckhlaWdodChpbnQpOwotCi0gICAgaW50IGZvb3RlckhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1f
Zm9vdGVySGVpZ2h0OyB9Ci0gICAgdm9pZCBzZXRGb290ZXJIZWlnaHQoaW50KTsKLQotICAgIGZs
b2F0IHRvcENvbnRlbnRJbnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fdG9wQ29udGVudEluc2V0OyB9
Ci0gICAgdm9pZCBzZXRUb3BDb250ZW50SW5zZXQoZmxvYXQpOwotCi0gICAgLy8gVGhpcyBpcyBh
IGxheWVyIHdpdGggdGhlIGNvbnRlbnRzIHRoYXQgbW92ZS4KLSAgICBjb25zdCBMYXllclJlcHJl
c2VudGF0aW9uJiBzY3JvbGxlZENvbnRlbnRzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3Njcm9s
bGVkQ29udGVudHNMYXllcjsgfQotICAgIHZvaWQgc2V0U2Nyb2xsZWRDb250ZW50c0xheWVyKGNv
bnN0IExheWVyUmVwcmVzZW50YXRpb24mKTsKLQotICAgIC8vIFRoaXMgaXMgYSBsYXllciBtb3Zl
ZCBpbiB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9uIHRvIHNjcm9sbGluZywgZm9yIGV4YW1wbGUgZm9y
IGJhY2tncm91bmQtYXR0YWNobWVudDpmaXhlZAotICAgIGNvbnN0IExheWVyUmVwcmVzZW50YXRp
b24mIGNvdW50ZXJTY3JvbGxpbmdMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fY291bnRlclNjcm9s
bGluZ0xheWVyOyB9Ci0gICAgdm9pZCBzZXRDb3VudGVyU2Nyb2xsaW5nTGF5ZXIoY29uc3QgTGF5
ZXJSZXByZXNlbnRhdGlvbiYpOwotCi0gICAgLy8gVGhpcyBpcyBhIGNsaXBwaW5nIGxheWVyIHRo
YXQgd2lsbCBzY3JvbGwgd2l0aCB0aGUgcGFnZSBmb3IgYWxsIHktZGVsdGEgc2Nyb2xsIHZhbHVl
cyBiZXR3ZWVuIDAKLSAgICAvLyBhbmQgdG9wQ29udGVudEluc2V0KCkuIE9uY2UgdGhlIHktZGVs
dGFzIGdldCBiZXlvbmQgdGhlIGNvbnRlbnQgaW5zZXQgcG9pbnQsIHRoaXMgbGF5ZXIgbm8gbG9u
Z2VyCi0gICAgLy8gbmVlZHMgdG8gbW92ZS4gSWYgdGhlIHRvcENvbnRlbnRJbnNldCgpIGlzIDAs
IHRoaXMgbGF5ZXIgZG9lcyBub3QgbmVlZCB0byBtb3ZlIGF0IGFsbC4gVGhpcyBpcwotICAgIC8v
IG9ubHkgdXNlZCBvbiB0aGUgTWFjLgotICAgIGNvbnN0IExheWVyUmVwcmVzZW50YXRpb24mIGlu
c2V0Q2xpcExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9pbnNldENsaXBMYXllcjsgfQotICAgIHZv
aWQgc2V0SW5zZXRDbGlwTGF5ZXIoY29uc3QgTGF5ZXJSZXByZXNlbnRhdGlvbiYpOwotCi0gICAg
Y29uc3QgTGF5ZXJSZXByZXNlbnRhdGlvbiYgY29udGVudFNoYWRvd0xheWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb250ZW50U2hhZG93TGF5ZXI7IH0KLSAgICB2b2lkIHNldENvbnRlbnRTaGFkb3dM
YXllcihjb25zdCBMYXllclJlcHJlc2VudGF0aW9uJik7Ci0KLSAgICAvLyBUaGUgaGVhZGVyIGFu
ZCBmb290ZXIgbGF5ZXJzIHNjcm9sbCB2ZXJ0aWNhbGx5IHdpdGggdGhlIHBhZ2UsIHRoZXkgc2hv
dWxkIHJlbWFpbiBmaXhlZCB3aGVuIHNjcm9sbGluZyBob3Jpem9udGFsbHkuCi0gICAgY29uc3Qg
TGF5ZXJSZXByZXNlbnRhdGlvbiYgaGVhZGVyTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2hlYWRl
ckxheWVyOyB9Ci0gICAgdm9pZCBzZXRIZWFkZXJMYXllcihjb25zdCBMYXllclJlcHJlc2VudGF0
aW9uJik7Ci0KLSAgICAvLyBUaGUgaGVhZGVyIGFuZCBmb290ZXIgbGF5ZXJzIHNjcm9sbCB2ZXJ0
aWNhbGx5IHdpdGggdGhlIHBhZ2UsIHRoZXkgc2hvdWxkIHJlbWFpbiBmaXhlZCB3aGVuIHNjcm9s
bGluZyBob3Jpem9udGFsbHkuCi0gICAgY29uc3QgTGF5ZXJSZXByZXNlbnRhdGlvbiYgZm9vdGVy
TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2Zvb3RlckxheWVyOyB9Ci0gICAgdm9pZCBzZXRGb290
ZXJMYXllcihjb25zdCBMYXllclJlcHJlc2VudGF0aW9uJik7Ci0KLSNpZiBQTEFURk9STShNQUMp
Ci0gICAgU2Nyb2xsYmFyUGFpbnRlciB2ZXJ0aWNhbFNjcm9sbGJhclBhaW50ZXIoKSBjb25zdCB7
IHJldHVybiBtX3ZlcnRpY2FsU2Nyb2xsYmFyUGFpbnRlci5nZXQoKTsgfQotICAgIFNjcm9sbGJh
clBhaW50ZXIgaG9yaXpvbnRhbFNjcm9sbGJhclBhaW50ZXIoKSBjb25zdCB7IHJldHVybiBtX2hv
cml6b250YWxTY3JvbGxiYXJQYWludGVyLmdldCgpOyB9Ci0jZW5kaWYKLSAgICB2b2lkIHNldFNj
cm9sbGJhclBhaW50ZXJzRnJvbVNjcm9sbGJhcnMoU2Nyb2xsYmFyKiB2ZXJ0aWNhbFNjcm9sbGJh
ciwgU2Nyb2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFyKTsKLQogICAgIHZpcnR1YWwgdm9pZCBk
dW1wUHJvcGVydGllcyhUZXh0U3RyZWFtJiwgaW50IGluZGVudCkgY29uc3Qgb3ZlcnJpZGU7Ci0K
LXByaXZhdGU6CisgICAgCitwcm90ZWN0ZWQ6CiAgICAgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdO
b2RlKFNjcm9sbGluZ1N0YXRlVHJlZSYsIFNjcm9sbGluZ05vZGVUeXBlLCBTY3JvbGxpbmdOb2Rl
SUQpOwogICAgIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZShjb25zdCBTY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGUmLCBTY3JvbGxpbmdTdGF0ZVRyZWUmKTsKLQotICAgIExheWVyUmVwcmVz
ZW50YXRpb24gbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXI7Ci0gICAgTGF5ZXJSZXByZXNlbnRhdGlv
biBtX2NvdW50ZXJTY3JvbGxpbmdMYXllcjsKLSAgICBMYXllclJlcHJlc2VudGF0aW9uIG1faW5z
ZXRDbGlwTGF5ZXI7Ci0gICAgTGF5ZXJSZXByZXNlbnRhdGlvbiBtX2NvbnRlbnRTaGFkb3dMYXll
cjsKLSAgICBMYXllclJlcHJlc2VudGF0aW9uIG1faGVhZGVyTGF5ZXI7Ci0gICAgTGF5ZXJSZXBy
ZXNlbnRhdGlvbiBtX2Zvb3RlckxheWVyOwotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIFJldGFp
blB0cjxTY3JvbGxiYXJQYWludGVyPiBtX3ZlcnRpY2FsU2Nyb2xsYmFyUGFpbnRlcjsKLSAgICBS
ZXRhaW5QdHI8U2Nyb2xsYmFyUGFpbnRlcj4gbV9ob3Jpem9udGFsU2Nyb2xsYmFyUGFpbnRlcjsK
LSNlbmRpZgotCi0gICAgRmxvYXRTaXplIG1fdmlld3BvcnRTaXplOwotICAgIEludFNpemUgbV90
b3RhbENvbnRlbnRzU2l6ZTsKKyAgICAKK3ByaXZhdGU6CisgICAgRmxvYXRTaXplIG1fc2Nyb2xs
YWJsZUFyZWFTaXplOworICAgIEZsb2F0U2l6ZSBtX3RvdGFsQ29udGVudHNTaXplOwogICAgIEZs
b2F0UG9pbnQgbV9zY3JvbGxQb3NpdGlvbjsKKyAgICBGbG9hdFBvaW50IG1fcmVxdWVzdGVkU2Ny
b2xsUG9zaXRpb247CiAgICAgSW50UG9pbnQgbV9zY3JvbGxPcmlnaW47Ci0gICAgCiAgICAgU2Ny
b2xsYWJsZUFyZWFQYXJhbWV0ZXJzIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzOwotICAgIFJl
Z2lvbiBtX25vbkZhc3RTY3JvbGxhYmxlUmVnaW9uOwotICAgIGZsb2F0IG1fZnJhbWVTY2FsZUZh
Y3RvcjsKLSAgICB1bnNpZ25lZCBtX3doZWVsRXZlbnRIYW5kbGVyQ291bnQ7Ci0gICAgU3luY2hy
b25vdXNTY3JvbGxpbmdSZWFzb25zIG1fc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zOwotICAg
IFNjcm9sbEJlaGF2aW9yRm9yRml4ZWRFbGVtZW50cyBtX2JlaGF2aW9yRm9yRml4ZWQ7Ci0gICAg
aW50IG1faGVhZGVySGVpZ2h0OwotICAgIGludCBtX2Zvb3RlckhlaWdodDsKLSAgICBGbG9hdFBv
aW50IG1fcmVxdWVzdGVkU2Nyb2xsUG9zaXRpb247CiAgICAgYm9vbCBtX3JlcXVlc3RlZFNjcm9s
bFBvc2l0aW9uUmVwcmVzZW50c1Byb2dyYW1tYXRpY1Njcm9sbDsKLSAgICBmbG9hdCBtX3RvcENv
bnRlbnRJbnNldDsKIH07CiAKIFNDUk9MTElOR19TVEFURV9OT0RFX1RZUEVfQ0FTVFMoU2Nyb2xs
aW5nU3RhdGVTY3JvbGxpbmdOb2RlLCBpc1Njcm9sbGluZ05vZGUoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcAppbmRleCA1
NzllOTliOTVlZjdmNTAxNDliNDlkZWE2ZWRiMjhhZTlmNzFjNWQxLi43YzAyNGE3NGM0ZGRkMjhi
YjVlZGI1ZmRkYzIyMDA1YjU4MjU5OTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHAKQEAgLTMwLDcgKzMwLDggQEAKIAog
I2luY2x1ZGUgIkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJTY3JvbGxp
bmdTdGF0ZUZpeGVkTm9kZS5oIgotI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZS5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlLmgiCisjaW5j
bHVkZSAiU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGUuaCIKICNpbmNsdWRlICJT
Y3JvbGxpbmdTdGF0ZVN0aWNreU5vZGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODYs
NyArODcsNyBAQCBTY3JvbGxpbmdOb2RlSUQgU2Nyb2xsaW5nU3RhdGVUcmVlOjphdHRhY2hOb2Rl
KFNjcm9sbGluZ05vZGVUeXBlIG5vZGVUeXBlLCBTY3JvbAogICAgICAgICAvLyBJZiB3ZSdyZSBy
ZXNldHRpbmcgdGhlIHJvb3Qgbm9kZSwgd2Ugc2hvdWxkIGNsZWFyIHRoZSBIYXNoTWFwIGFuZCBk
ZXN0cm95IHRoZSBjdXJyZW50IGNoaWxkcmVuLgogICAgICAgICBjbGVhcigpOwogCi0gICAgICAg
IHNldFJvb3RTdGF0ZU5vZGUoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpjcmVhdGUoKnRo
aXMsIEZyYW1lU2Nyb2xsaW5nTm9kZSwgbmV3Tm9kZUlEKSk7CisgICAgICAgIHNldFJvb3RTdGF0
ZU5vZGUoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OmNyZWF0ZSgqdGhpcywgbmV3
Tm9kZUlEKSk7CiAgICAgICAgIG5ld05vZGUgPSByb290U3RhdGVOb2RlKCk7CiAgICAgICAgIG1f
aGFzTmV3Um9vdFN0YXRlTm9kZSA9IHRydWU7CiAgICAgfSBlbHNlIHsKQEAgLTEwNyw5ICsxMDgs
MTQgQEAgU2Nyb2xsaW5nTm9kZUlEIFNjcm9sbGluZ1N0YXRlVHJlZTo6YXR0YWNoTm9kZShTY3Jv
bGxpbmdOb2RlVHlwZSBub2RlVHlwZSwgU2Nyb2wKICAgICAgICAgICAgIHBhcmVudC0+YXBwZW5k
Q2hpbGQoc3RpY2t5Tm9kZS5yZWxlYXNlKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KLSAgICAgICAgY2FzZSBGcmFtZVNjcm9sbGluZ05vZGU6CisgICAgICAgIGNhc2UgRnJhbWVT
Y3JvbGxpbmdOb2RlOiB7CisgICAgICAgICAgICBPd25QdHI8U2Nyb2xsaW5nU3RhdGVGcmFtZVNj
cm9sbGluZ05vZGU+IHNjcm9sbGluZ05vZGUgPSBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5n
Tm9kZTo6Y3JlYXRlKCp0aGlzLCBuZXdOb2RlSUQpOworICAgICAgICAgICAgbmV3Tm9kZSA9IHNj
cm9sbGluZ05vZGUuZ2V0KCk7CisgICAgICAgICAgICBwYXJlbnQtPmFwcGVuZENoaWxkKHNjcm9s
bGluZ05vZGUucmVsZWFzZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAg
ICAgIGNhc2UgT3ZlcmZsb3dTY3JvbGxpbmdOb2RlOiB7Ci0gICAgICAgICAgICBPd25QdHI8U2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlPiBzY3JvbGxpbmdOb2RlID0gU2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlOjpjcmVhdGUoKnRoaXMsIG5vZGVUeXBlLCBuZXdOb2RlSUQpOworICAgICAg
ICAgICAgT3duUHRyPFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlPiBzY3JvbGxp
bmdOb2RlID0gU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGU6OmNyZWF0ZSgqdGhp
cywgbmV3Tm9kZUlEKTsKICAgICAgICAgICAgIG5ld05vZGUgPSBzY3JvbGxpbmdOb2RlLmdldCgp
OwogICAgICAgICAgICAgcGFyZW50LT5hcHBlbmRDaGlsZChzY3JvbGxpbmdOb2RlLnJlbGVhc2Uo
KSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE0Nyw3ICsxNTMsNyBAQCBQYXNzT3duUHRyPFNj
cm9sbGluZ1N0YXRlVHJlZT4gU2Nyb2xsaW5nU3RhdGVUcmVlOjpjb21taXQoTGF5ZXJSZXByZXNl
bnRhdGlvbjo6VAogICAgIHRyZWVTdGF0ZUNsb25lLT5zZXRQcmVmZXJyZWRMYXllclJlcHJlc2Vu
dGF0aW9uKHByZWZlcnJlZExheWVyUmVwcmVzZW50YXRpb24pOwogCiAgICAgaWYgKG1fcm9vdFN0
YXRlTm9kZSkKLSAgICAgICAgdHJlZVN0YXRlQ2xvbmUtPnNldFJvb3RTdGF0ZU5vZGUoc3RhdGlj
X3BvaW50ZXJfY2FzdDxTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU+KG1fcm9vdFN0YXRlTm9k
ZS0+Y2xvbmVBbmRSZXNldCgqdHJlZVN0YXRlQ2xvbmUpKSk7CisgICAgICAgIHRyZWVTdGF0ZUNs
b25lLT5zZXRSb290U3RhdGVOb2RlKHN0YXRpY19wb2ludGVyX2Nhc3Q8U2Nyb2xsaW5nU3RhdGVG
cmFtZVNjcm9sbGluZ05vZGU+KG1fcm9vdFN0YXRlTm9kZS0+Y2xvbmVBbmRSZXNldCgqdHJlZVN0
YXRlQ2xvbmUpKSk7CiAKICAgICAvLyBDb3B5IHRoZSBJRHMgb2YgdGhlIG5vZGVzIHRoYXQgaGF2
ZSBiZWVuIHJlbW92ZWQgc2luY2UgdGhlIGxhc3QgY29tbWl0IGludG8gdGhlIGNsb25lLgogICAg
IHRyZWVTdGF0ZUNsb25lLT5tX25vZGVzUmVtb3ZlZFNpbmNlTGFzdENvbW1pdC5zd2FwKG1fbm9k
ZXNSZW1vdmVkU2luY2VMYXN0Q29tbWl0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmgKaW5kZXggMTdkNTRiMWI1NWViZTQyYWFkMjIx
OTA0OGFkNWExMGJlMDQxMzNlOS4uZDNmOWU4NzE0NDZhNmU2N2Y3NjQxMmE1MWNlMDJkNTlmY2Rm
ZDQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
U3RhdGVUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
U3RhdGVUcmVlLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJ
TkcpIHx8IFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKIAotI2luY2x1ZGUgIlNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZS5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxp
bmdOb2RlLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3du
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIFBhc3NPd25QdHI8U2Nyb2xsaW5nU3RhdGVUcmVlPiBjcmVhdGUoQXN5bmNT
Y3JvbGxpbmdDb29yZGluYXRvciogPSAwKTsKICAgICB+U2Nyb2xsaW5nU3RhdGVUcmVlKCk7CiAK
LSAgICBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUqIHJvb3RTdGF0ZU5vZGUoKSBjb25zdCB7
IHJldHVybiBtX3Jvb3RTdGF0ZU5vZGUuZ2V0KCk7IH0KKyAgICBTY3JvbGxpbmdTdGF0ZUZyYW1l
U2Nyb2xsaW5nTm9kZSogcm9vdFN0YXRlTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdFN0YXRl
Tm9kZS5nZXQoKTsgfQogICAgIFNjcm9sbGluZ1N0YXRlTm9kZSogc3RhdGVOb2RlRm9ySUQoU2Ny
b2xsaW5nTm9kZUlEKTsKIAogICAgIFNjcm9sbGluZ05vZGVJRCBhdHRhY2hOb2RlKFNjcm9sbGlu
Z05vZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQsIFNjcm9sbGluZ05vZGVJRCBwYXJlbnRJRCk7CkBA
IC03OSwxNCArNzksMTQgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTY3JvbGxpbmdTdGF0ZVRy
ZWUoQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvciopOwogCi0gICAgdm9pZCBzZXRSb290U3RhdGVO
b2RlKFBhc3NPd25QdHI8U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlPiByb290U3RhdGVOb2Rl
KSB7IG1fcm9vdFN0YXRlTm9kZSA9IHJvb3RTdGF0ZU5vZGU7IH0KKyAgICB2b2lkIHNldFJvb3RT
dGF0ZU5vZGUoUGFzc093blB0cjxTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZT4gcm9v
dFN0YXRlTm9kZSkgeyBtX3Jvb3RTdGF0ZU5vZGUgPSByb290U3RhdGVOb2RlOyB9CiAgICAgdm9p
ZCBhZGROb2RlKFNjcm9sbGluZ1N0YXRlTm9kZSopOwogICAgIHZvaWQgcmVtb3ZlTm9kZShTY3Jv
bGxpbmdTdGF0ZU5vZGUqKTsKICAgICB2b2lkIGRpZFJlbW92ZU5vZGUoU2Nyb2xsaW5nTm9kZUlE
KTsKIAogICAgIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIG1fc2Nyb2xsaW5nQ29vcmRpbmF0
b3I7CiAgICAgU3RhdGVOb2RlTWFwIG1fc3RhdGVOb2RlTWFwOwotICAgIE93blB0cjxTY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGU+IG1fcm9vdFN0YXRlTm9kZTsKKyAgICBPd25QdHI8U2Nyb2xs
aW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU+IG1fcm9vdFN0YXRlTm9kZTsKICAgICBWZWN0b3I8
U2Nyb2xsaW5nTm9kZUlEPiBtX25vZGVzUmVtb3ZlZFNpbmNlTGFzdENvbW1pdDsKICAgICBib29s
IG1faGFzQ2hhbmdlZFByb3BlcnRpZXM7CiAgICAgYm9vbCBtX2hhc05ld1Jvb3RTdGF0ZU5vZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCmlu
ZGV4IDFlMWExOTZhZjQyMGY5OGMzOWVlMTM1NWE3NjFlMDE2MjAxOGViM2IuLmQ4MjFjZjc0Y2My
Yjg2YmM2OTYwNTE3OGEzMmRmOWJjM2MyOTNmMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCkBAIC0xMzMsMTYgKzEzMywxNiBAQCB2b2lk
IFNjcm9sbGluZ1RyZWU6OmNvbW1pdE5ld1RyZWVTdGF0ZShQYXNzT3duUHRyPFNjcm9sbGluZ1N0
YXRlVHJlZT4gc2Nyb2xsaW5nUwogICAgIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSogcm9v
dE5vZGUgPSBzY3JvbGxpbmdTdGF0ZVRyZWUtPnJvb3RTdGF0ZU5vZGUoKTsKICAgICBpZiAocm9v
dE5vZGUKICAgICAgICAgJiYgKHJvb3RTdGF0ZU5vZGVDaGFuZ2VkCi0gICAgICAgICAgICB8fCBy
b290Tm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6
V2hlZWxFdmVudEhhbmRsZXJDb3VudCkKLSAgICAgICAgICAgIHx8IHJvb3ROb2RlLT5oYXNDaGFu
Z2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpOb25GYXN0U2Nyb2xsYWJs
ZVJlZ2lvbikKKyAgICAgICAgICAgIHx8IHJvb3ROb2RlLT5oYXNDaGFuZ2VkUHJvcGVydHkoU2Ny
b2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OldoZWVsRXZlbnRIYW5kbGVyQ291bnQpCisg
ICAgICAgICAgICB8fCByb290Tm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRl
RnJhbWVTY3JvbGxpbmdOb2RlOjpOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbikKICAgICAgICAgICAg
IHx8IHJvb3ROb2RlLT5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpTY3Jv
bGxMYXllcikpKSB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CiAKICAgICAg
ICAgaWYgKHJvb3RTdGF0ZU5vZGVDaGFuZ2VkIHx8IHJvb3ROb2RlLT5oYXNDaGFuZ2VkUHJvcGVy
dHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpTY3JvbGxMYXllcikpCiAgICAgICAgICAgICBtX21haW5G
cmFtZVNjcm9sbFBvc2l0aW9uID0gRmxvYXRQb2ludCgpOwotICAgICAgICBpZiAocm9vdFN0YXRl
Tm9kZUNoYW5nZWQgfHwgcm9vdE5vZGUtPmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGU6OldoZWVsRXZlbnRIYW5kbGVyQ291bnQpKQorICAgICAgICBpZiAocm9v
dFN0YXRlTm9kZUNoYW5nZWQgfHwgcm9vdE5vZGUtPmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxp
bmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6V2hlZWxFdmVudEhhbmRsZXJDb3VudCkpCiAgICAg
ICAgICAgICBtX2hhc1doZWVsRXZlbnRIYW5kbGVycyA9IHNjcm9sbGluZ1N0YXRlVHJlZS0+cm9v
dFN0YXRlTm9kZSgpLT53aGVlbEV2ZW50SGFuZGxlckNvdW50KCk7Ci0gICAgICAgIGlmIChyb290
U3RhdGVOb2RlQ2hhbmdlZCB8fCByb290Tm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZTo6Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24pKQorICAgICAgICBp
ZiAocm9vdFN0YXRlTm9kZUNoYW5nZWQgfHwgcm9vdE5vZGUtPmhhc0NoYW5nZWRQcm9wZXJ0eShT
Y3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24p
KQogICAgICAgICAgICAgbV9ub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbiA9IHNjcm9sbGluZ1N0YXRl
VHJlZS0+cm9vdFN0YXRlTm9kZSgpLT5ub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbigpOwogICAgIH0K
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjk0NGNj
MzkwNzkzMDk5YjFiZDk1NWM1NTgwMjAyMzNiOWJiY2U2MwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGUuY3BwCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5oIgorCisjaWYgRU5B
QkxFKEFTWU5DX1NDUk9MTElORykKKworI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlVHJlZS5oIgor
I2luY2x1ZGUgIlNjcm9sbGluZ1RyZWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlKFNjcm9sbGluZ1RyZWUmIHNjcm9sbGluZ1RyZWUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQp
CisgICAgOiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZShzY3JvbGxpbmdUcmVlLCBGcmFtZVNj
cm9sbGluZ05vZGUsIG5vZGVJRCkKKyAgICAsIG1fZnJhbWVTY2FsZUZhY3RvcigxKQorICAgICwg
bV9oZWFkZXJIZWlnaHQoMCkKKyAgICAsIG1fZm9vdGVySGVpZ2h0KDApCisgICAgLCBtX3RvcENv
bnRlbnRJbnNldCgwKQorICAgICwgbV9zeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoMCkKKyAg
ICAsIG1fYmVoYXZpb3JGb3JGaXhlZChTdGlja1RvRG9jdW1lbnRCb3VuZHMpCit7Cit9CisKK1Nj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU6On5TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxp
bmdOb2RlKCkKK3sKK30KKwordm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlOjp1
cGRhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmIHN0YXRlTm9kZSkK
K3sKKyAgICBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6dXBkYXRlQmVmb3JlQ2hpbGRyZW4o
c3RhdGVOb2RlKTsKKyAgICAKKyAgICBjb25zdCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5n
Tm9kZSYgc3RhdGUgPSB0b1Njcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlKHN0YXRlTm9k
ZSk7CisKKyAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJh
bWVTY3JvbGxpbmdOb2RlOjpGcmFtZVNjYWxlRmFjdG9yKSkKKyAgICAgICAgbV9mcmFtZVNjYWxl
RmFjdG9yID0gc3RhdGUuZnJhbWVTY2FsZUZhY3RvcigpOworCisgICAgaWYgKHN0YXRlLmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6UmVhc29uc0Zv
clN5bmNocm9ub3VzU2Nyb2xsaW5nKSkKKyAgICAgICAgbV9zeW5jaHJvbm91c1Njcm9sbGluZ1Jl
YXNvbnMgPSBzdGF0ZS5zeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoKTsKKworICAgIGlmIChz
dGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6
OkhlYWRlckhlaWdodCkpCisgICAgICAgIG1faGVhZGVySGVpZ2h0ID0gc3RhdGUuaGVhZGVySGVp
Z2h0KCk7CisKKyAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRl
RnJhbWVTY3JvbGxpbmdOb2RlOjpGb290ZXJIZWlnaHQpKQorICAgICAgICBtX2Zvb3RlckhlaWdo
dCA9IHN0YXRlLmZvb3RlckhlaWdodCgpOworCisgICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQcm9w
ZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6QmVoYXZpb3JGb3JGaXhlZEVs
ZW1lbnRzKSkKKyAgICAgICAgbV9iZWhhdmlvckZvckZpeGVkID0gc3RhdGUuc2Nyb2xsQmVoYXZp
b3JGb3JGaXhlZEVsZW1lbnRzKCk7CisKKyAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5
KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpUb3BDb250ZW50SW5zZXQpKQorICAg
ICAgICBtX3RvcENvbnRlbnRJbnNldCA9IHN0YXRlLnRvcENvbnRlbnRJbnNldCgpOworfQorICAg
IAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9M
TElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOWIzMjU3ODE4
YzllODVhNzUwMGRkZWY2Y2I3NWExY2RjM2M4ZGE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5o
CkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNjcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGVfaAorI2RlZmluZSBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
X2gKKworI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCisKKyNpbmNsdWRlICJTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBsYXRm
b3JtV2hlZWxFdmVudDsKK2NsYXNzIFNjcm9sbGluZ1RyZWU7CitjbGFzcyBTY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGU7CisKK2NsYXNzIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUg
OiBwdWJsaWMgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUgeworcHVibGljOgorICAgIHZpcnR1
YWwgflNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUoKTsKKworICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmKSBvdmVycmlk
ZTsKKyAgICAKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGltcGxlbWVudCB0aGlzIHdoZW4gd2Ug
c3VwcG9ydCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZXMgYXMgY2hpbGRyZW4uCisgICAgdmly
dHVhbCB2b2lkIHBhcmVudFNjcm9sbFBvc2l0aW9uRGlkQ2hhbmdlKGNvbnN0IEZsb2F0UmVjdCYg
Lyp2aWV3cG9ydFJlY3QqLywgY29uc3QgRmxvYXRTaXplJiAvKmN1bXVsYXRpdmVEZWx0YSovKSBv
dmVycmlkZSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsUG9zaXRp
b24oY29uc3QgRmxvYXRQb2ludCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsUG9z
aXRpb25XaXRob3V0Q29udGVudEVkZ2VDb25zdHJhaW50cyhjb25zdCBGbG9hdFBvaW50JikgPSAw
OworCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxheWVyc0FmdGVyVmlld3BvcnRDaGFuZ2UoY29u
c3QgRmxvYXRSZWN0JiB2aWV3cG9ydFJlY3QsIGRvdWJsZSBzY2FsZSkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVMYXllcnNBZnRlckRlbGVnYXRlZFNjcm9sbChjb25zdCBGbG9hdFBvaW50
JikgeyB9CisKKyAgICBTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMgc3luY2hyb25vdXNTY3Jv
bGxpbmdSZWFzb25zKCkgY29uc3QgeyByZXR1cm4gbV9zeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNv
bnM7IH0KKyAgICBib29sIHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25TeW5jaHJvbm91
c2x5KCkgY29uc3QgeyByZXR1cm4gbV9zeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnM7IH0KKwor
cHJvdGVjdGVkOgorICAgIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUoU2Nyb2xsaW5n
VHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7CisKKyAgICBmbG9hdCBmcmFtZVNjYWxlRmFjdG9yKCkg
Y29uc3QgeyByZXR1cm4gbV9mcmFtZVNjYWxlRmFjdG9yOyB9CisgICAgaW50IGhlYWRlckhlaWdo
dCgpIGNvbnN0IHsgcmV0dXJuIG1faGVhZGVySGVpZ2h0OyB9CisgICAgaW50IGZvb3RlckhlaWdo
dCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9vdGVySGVpZ2h0OyB9CisgICAgZmxvYXQgdG9wQ29udGVu
dEluc2V0KCkgY29uc3QgeyByZXR1cm4gbV90b3BDb250ZW50SW5zZXQ7IH0KKyAgICAKKyAgICBT
Y3JvbGxCZWhhdmlvckZvckZpeGVkRWxlbWVudHMgc2Nyb2xsQmVoYXZpb3JGb3JGaXhlZEVsZW1l
bnRzKCkgY29uc3QgeyByZXR1cm4gbV9iZWhhdmlvckZvckZpeGVkOyB9CisgICAgCitwcml2YXRl
OgorICAgIGZsb2F0IG1fZnJhbWVTY2FsZUZhY3RvcjsKKworICAgIGludCBtX2hlYWRlckhlaWdo
dDsKKyAgICBpbnQgbV9mb290ZXJIZWlnaHQ7CisgICAgZmxvYXQgbV90b3BDb250ZW50SW5zZXQ7
CisgICAgCisgICAgU3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zIG1fc3luY2hyb25vdXNTY3Jv
bGxpbmdSZWFzb25zOworICAgIFNjcm9sbEJlaGF2aW9yRm9yRml4ZWRFbGVtZW50cyBtX2JlaGF2
aW9yRm9yRml4ZWQ7Cit9OworCitTQ1JPTExJTkdfTk9ERV9UWVBFX0NBU1RTKFNjcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGUsIGlzRnJhbWVTY3JvbGxpbmdOb2RlKCkpOworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQorCisj
ZW5kaWYgLy8gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmgKaW5kZXggNWYwZGRiMTA5ZDQz
YTljNTgxMDI4YzBiNDEyYWEyYjI0OWYyOGI3Ny4uNmFkNDdhZTEwYzY4OWM5ODdjNTlhZGE1ZTI2
ZWE1MmFlN2Y5NjdmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVHJlZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdUcmVlTm9kZS5oCkBAIC00OSw2ICs0OSw4IEBAIHB1YmxpYzoKICAgICBib29sIGlz
Rml4ZWROb2RlKCkgY29uc3QgeyByZXR1cm4gbm9kZVR5cGUoKSA9PSBGaXhlZE5vZGU7IH0KICAg
ICBib29sIGlzU3RpY2t5Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIG5vZGVUeXBlKCkgPT0gU3RpY2t5
Tm9kZTsgfQogICAgIGJvb2wgaXNTY3JvbGxpbmdOb2RlKCkgY29uc3QgeyByZXR1cm4gbm9kZVR5
cGUoKSA9PSBGcmFtZVNjcm9sbGluZ05vZGUgfHwgbm9kZVR5cGUoKSA9PSBPdmVyZmxvd1Njcm9s
bGluZ05vZGU7IH0KKyAgICBib29sIGlzRnJhbWVTY3JvbGxpbmdOb2RlKCkgY29uc3QgeyByZXR1
cm4gbm9kZVR5cGUoKSA9PSBGcmFtZVNjcm9sbGluZ05vZGU7IH0KKyAgICBib29sIGlzT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlKCkgY29uc3QgeyByZXR1cm4gbm9kZVR5cGUoKSA9PSBPdmVyZmxvd1Nj
cm9sbGluZ05vZGU7IH0KIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCZWZvcmVDaGlsZHJlbihj
b25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFm
dGVyQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikgeyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVP
dmVyZmxvd1Njcm9sbGluZ05vZGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxM2UzNTBlNjU0MzQ5NWFlMDM0
NmYzNWI1ZmFjNjJhZDJkZGFjNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmNwcApAQCAt
MCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUuaCIKKworI2lmIEVOQUJMRShBU1lO
Q19TQ1JPTExJTkcpCisKKyNpbmNsdWRlICJTY3JvbGxpbmdTdGF0ZVRyZWUuaCIKKyNpbmNsdWRl
ICJTY3JvbGxpbmdUcmVlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU2Nyb2xsaW5nVHJl
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZTo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZShTY3JvbGxpbmdUcmVlJiBzY3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQor
ICAgIDogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUoc2Nyb2xsaW5nVHJlZSwgT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlLCBub2RlSUQpCit7Cit9CisKK1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGU6On5TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlKCkKK3sKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElO
RykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNTE4ODVm
NjE0YmQ0ODA2MmMxMGQ2ZGU0NzM0MzFhMWYzMWYxNjZjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5n
Tm9kZS5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNjcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVfaAorI2RlZmluZSBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlX2gKKworI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCisKKyNpbmNsdWRl
ICJTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUgOiBwdWJsaWMgU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGUgeworcHVibGljOgorICAgIHZpcnR1YWwgflNjcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUoKTsKKworICAgIAorcHJvdGVjdGVkOgorICAgIFNjcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUoU2Nyb2xsaW5nVHJlZSYsIFNjcm9sbGluZ05v
ZGVJRCk7Cit9OworCitTQ1JPTExJTkdfTk9ERV9UWVBFX0NBU1RTKFNjcm9sbGluZ1RyZWVPdmVy
Zmxvd1Njcm9sbGluZ05vZGUsIGlzT3ZlcmZsb3dTY3JvbGxpbmdOb2RlKCkpOworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQorCisj
ZW5kaWYgLy8gU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZS5jcHAKaW5kZXggNjE2OWQzMzBkNDYzYmFiZjQ4ZThiZGFlMGYyNDg4Mzc2OGVmMzI1
My4uY2Y4Mzc1YzAxODE0NzRlNzBkZWYzY2E3YmI0NzYzMjI0NzhhM2JmOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlLmNwcApAQCAtMzUsMTIgKzM1LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUoU2Ny
b2xsaW5nVHJlZSYgc2Nyb2xsaW5nVHJlZSwgU2Nyb2xsaW5nTm9kZVR5cGUgbm9kZVR5cGUsIFNj
cm9sbGluZ05vZGVJRCBub2RlSUQpCiAgICAgOiBTY3JvbGxpbmdUcmVlTm9kZShzY3JvbGxpbmdU
cmVlLCBub2RlVHlwZSwgbm9kZUlEKQotICAgICwgbV9mcmFtZVNjYWxlRmFjdG9yKDEpCi0gICAg
LCBtX2hlYWRlckhlaWdodCgwKQotICAgICwgbV9mb290ZXJIZWlnaHQoMCkKLSAgICAsIG1fc3lu
Y2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKDApCi0gICAgLCBtX2JlaGF2aW9yRm9yRml4ZWQoU3Rp
Y2tUb0RvY3VtZW50Qm91bmRzKQotICAgICwgbV90b3BDb250ZW50SW5zZXQoMCkKIHsKIH0KIApA
QCAtNTIsMTQgKzQ2LDE1IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OnVwZGF0
ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYKIHsKICAgICBjb25zdCBT
Y3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUmIHN0YXRlID0gdG9TY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGUoc3RhdGVOb2RlKTsKIAotICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHko
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpWaWV3cG9ydFNpemUpKQotICAgICAgICBtX3Zp
ZXdwb3J0U2l6ZSA9IHN0YXRlLnZpZXdwb3J0U2l6ZSgpOworICAgIGlmIChzdGF0ZS5oYXNDaGFu
Z2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxhYmxlQXJlYVNp
emUpKQorICAgICAgICBtX3Njcm9sbGFibGVBcmVhU2l6ZSA9IHN0YXRlLnNjcm9sbGFibGVBcmVh
U2l6ZSgpOwogCiAgICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGU6OlRvdGFsQ29udGVudHNTaXplKSkgewogICAgICAgICBpZiAoc2Nyb2xs
aW5nVHJlZSgpLmlzUnViYmVyQmFuZEluUHJvZ3Jlc3MoKSkKICAgICAgICAgICAgIG1fdG90YWxD
b250ZW50c1NpemVGb3JSdWJiZXJCYW5kID0gbV90b3RhbENvbnRlbnRzU2l6ZTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgbV90b3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQgPSBzdGF0
ZS50b3RhbENvbnRlbnRzU2l6ZSgpOworCiAgICAgICAgIG1fdG90YWxDb250ZW50c1NpemUgPSBz
dGF0ZS50b3RhbENvbnRlbnRzU2l6ZSgpOwogICAgIH0KIApAQCAtNzEsMzMgKzY2LDQyIEBAIHZv
aWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OnVwZGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0
IFNjcm9sbGluZ1N0YXRlTm9kZSYKIAogICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHko
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxhYmxlQXJlYVBhcmFtcykpCiAgICAg
ICAgIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzID0gc3RhdGUuc2Nyb2xsYWJsZUFyZWFQYXJh
bWV0ZXJzKCk7Cit9CiAKLSAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZTo6RnJhbWVTY2FsZUZhY3RvcikpCi0gICAgICAgIG1fZnJhbWVT
Y2FsZUZhY3RvciA9IHN0YXRlLmZyYW1lU2NhbGVGYWN0b3IoKTsKLQotICAgIGlmIChzdGF0ZS5o
YXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpSZWFzb25zRm9y
U3luY2hyb25vdXNTY3JvbGxpbmcpKQotICAgICAgICBtX3N5bmNocm9ub3VzU2Nyb2xsaW5nUmVh
c29ucyA9IHN0YXRlLnN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucygpOwordm9pZCBTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZTo6dXBkYXRlQWZ0ZXJDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdT
dGF0ZU5vZGUmIHN0YXRlTm9kZSkKK3sKKyAgICBjb25zdCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGUmIHNjcm9sbGluZ1N0YXRlTm9kZSA9IHRvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2Rl
KHN0YXRlTm9kZSk7CisgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVy
dHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbikp
CisgICAgICAgIHNjcm9sbGluZ1RyZWUoKS5zY3JvbGxpbmdUcmVlTm9kZVJlcXVlc3RzU2Nyb2xs
KHNjcm9sbGluZ05vZGVJRCgpLCBzY3JvbGxpbmdTdGF0ZU5vZGUucmVxdWVzdGVkU2Nyb2xsUG9z
aXRpb24oKSwgc2Nyb2xsaW5nU3RhdGVOb2RlLnJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uUmVwcmVz
ZW50c1Byb2dyYW1tYXRpY1Njcm9sbCgpKTsKK30KIAotICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2Vk
UHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpIZWFkZXJIZWlnaHQpKQotICAg
ICAgICBtX2hlYWRlckhlaWdodCA9IHN0YXRlLmhlYWRlckhlaWdodCgpOwordm9pZCBTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZTo6c2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYg
c2Nyb2xsUG9zaXRpb24pCit7CisgICAgRmxvYXRQb2ludCBuZXdTY3JvbGxQb3NpdGlvbiA9IHNj
cm9sbFBvc2l0aW9uOworICAgIG5ld1Njcm9sbFBvc2l0aW9uID0gbmV3U2Nyb2xsUG9zaXRpb24u
c2hydW5rVG8obWF4aW11bVNjcm9sbFBvc2l0aW9uKCkpOworICAgIG5ld1Njcm9sbFBvc2l0aW9u
ID0gbmV3U2Nyb2xsUG9zaXRpb24uZXhwYW5kZWRUbyhtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSk7
CiAKLSAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZTo6Rm9vdGVySGVpZ2h0KSkKLSAgICAgICAgbV9mb290ZXJIZWlnaHQgPSBzdGF0ZS5m
b290ZXJIZWlnaHQoKTsKKyAgICBzZXRTY3JvbGxQb3NpdGlvbldpdGhvdXRDb250ZW50RWRnZUNv
bnN0cmFpbnRzKG5ld1Njcm9sbFBvc2l0aW9uKTsKK30KIAotICAgIGlmIChzdGF0ZS5oYXNDaGFu
Z2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpCZWhhdmlvckZvckZpeGVk
RWxlbWVudHMpKQotICAgICAgICBtX2JlaGF2aW9yRm9yRml4ZWQgPSBzdGF0ZS5zY3JvbGxCZWhh
dmlvckZvckZpeGVkRWxlbWVudHMoKTsKK3ZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6
OnNldFNjcm9sbFBvc2l0aW9uV2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMoY29uc3QgRmxv
YXRQb2ludCYgc2Nyb2xsUG9zaXRpb24pCit7CisgICAgc2V0U2Nyb2xsTGF5ZXJQb3NpdGlvbihz
Y3JvbGxQb3NpdGlvbik7CisgICAgc2Nyb2xsaW5nVHJlZSgpLnNjcm9sbGluZ1RyZWVOb2RlRGlk
U2Nyb2xsKHNjcm9sbGluZ05vZGVJRCgpLCBzY3JvbGxQb3NpdGlvbik7Cit9CiAKLSAgICBpZiAo
c3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6VG9w
Q29udGVudEluc2V0KSkKLSAgICAgICAgbV90b3BDb250ZW50SW5zZXQgPSBzdGF0ZS50b3BDb250
ZW50SW5zZXQoKTsKK0Zsb2F0UG9pbnQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6Om1pbmlt
dW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIEZsb2F0UG9pbnQoKTsKIH0K
IAotdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6dXBkYXRlQWZ0ZXJDaGlsZHJlbihj
b25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmIHN0YXRlTm9kZSkKK0Zsb2F0UG9pbnQgU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGU6Om1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0CiB7Ci0gICAg
Y29uc3QgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlJiBzY3JvbGxpbmdTdGF0ZU5vZGUgPSB0
b1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZShzdGF0ZU5vZGUpOwotICAgIGlmIChzY3JvbGxp
bmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZTo6UmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24pKQotICAgICAgICBzY3JvbGxpbmdUcmVlKCkuc2Ny
b2xsaW5nVHJlZU5vZGVSZXF1ZXN0c1Njcm9sbChzY3JvbGxpbmdOb2RlSUQoKSwgc2Nyb2xsaW5n
U3RhdGVOb2RlLnJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKCksIHNjcm9sbGluZ1N0YXRlTm9kZS5y
ZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvblJlcHJlc2VudHNQcm9ncmFtbWF0aWNTY3JvbGwoKSk7Cisg
ICAgRmxvYXRQb2ludCBjb250ZW50U2l6ZVBvaW50KHRvdGFsQ29udGVudHNTaXplKCkpOworICAg
IHJldHVybiBGbG9hdFBvaW50KGNvbnRlbnRTaXplUG9pbnQgLSBzY3JvbGxhYmxlQXJlYVNpemUo
KSkuZXhwYW5kZWRUbyhGbG9hdFBvaW50KCkpOwogfQogCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUu
aAppbmRleCA0OWJmOGY3NDBiZWQ4YTdmYTEyODljNDJkMTA0NWUxZTEyODBjOWI5Li42ZmVlY2Zj
YTdkZDVjM2FlZTQ2NDg2ZDYyN2Q1OTk0ZjIzZmQxOWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgK
QEAgLTM2LDcgKzM2LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBQbGF0Zm9y
bVdoZWVsRXZlbnQ7CiBjbGFzcyBTY3JvbGxpbmdUcmVlOwogY2xhc3MgU2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlOwogCkBAIC01MSwzMCArNTAsMzAgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBwYXJlbnRTY3JvbGxQb3NpdGlvbkRpZENoYW5nZShjb25zdCBGbG9hdFJlY3QmIC8qdmll
d3BvcnRSZWN0Ki8sIGNvbnN0IEZsb2F0U2l6ZSYgLypjdW11bGF0aXZlRGVsdGEqLykgb3ZlcnJp
ZGUgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNv
bnN0IEZsb2F0UG9pbnQmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbFBvc2l0aW9u
V2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMoY29uc3QgRmxvYXRQb2ludCYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYpOworICAg
IHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbldpdGhvdXRDb250ZW50RWRnZUNvbnN0cmFp
bnRzKGNvbnN0IEZsb2F0UG9pbnQmKTsKIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMYXllcnNB
ZnRlclZpZXdwb3J0Q2hhbmdlKGNvbnN0IEZsb2F0UmVjdCYgdmlld3BvcnRSZWN0LCBkb3VibGUg
c2NhbGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJEZWxlZ2F0ZWRT
Y3JvbGwoY29uc3QgRmxvYXRQb2ludCYpIHsgfQogCi0gICAgU3luY2hyb25vdXNTY3JvbGxpbmdS
ZWFzb25zIHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucygpIGNvbnN0IHsgcmV0dXJuIG1fc3lu
Y2hyb25vdXNTY3JvbGxpbmdSZWFzb25zOyB9Ci0gICAgYm9vbCBzaG91bGRVcGRhdGVTY3JvbGxM
YXllclBvc2l0aW9uU3luY2hyb25vdXNseSgpIGNvbnN0IHsgcmV0dXJuIG1fc3luY2hyb25vdXNT
Y3JvbGxpbmdSZWFzb25zOyB9Ci0KIHByb3RlY3RlZDoKICAgICBTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZShTY3JvbGxpbmdUcmVlJiwgU2Nyb2xsaW5nTm9kZVR5cGUsIFNjcm9sbGluZ05vZGVJ
RCk7CiAKKyAgICB2aXJ0dWFsIEZsb2F0UG9pbnQgbWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29u
c3Q7CisgICAgdmlydHVhbCBGbG9hdFBvaW50IG1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0
OworCisgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbExheWVyUG9zaXRpb24oY29uc3QgRmxvYXRQ
b2ludCYpID0gMDsKKwogICAgIGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9zY3JvbGxQb3NpdGlvbjsgfQotICAgIGNvbnN0IEZsb2F0U2l6ZSYgdmll
d3BvcnRTaXplKCkgY29uc3QgeyByZXR1cm4gbV92aWV3cG9ydFNpemU7IH0KLSAgICBjb25zdCBJ
bnRTaXplJiB0b3RhbENvbnRlbnRzU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxDb250ZW50
c1NpemU7IH0KKyAgICBjb25zdCBGbG9hdFNpemUmIHNjcm9sbGFibGVBcmVhU2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFTaXplOyB9CisgICAgY29uc3QgRmxvYXRTaXplJiB0
b3RhbENvbnRlbnRzU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxDb250ZW50c1NpemU7IH0K
ICAgICBjb25zdCBJbnRQb2ludCYgc2Nyb2xsT3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zY3Jv
bGxPcmlnaW47IH0KIAogICAgIC8vIElmIHRoZSB0b3RhbENvbnRlbnRzU2l6ZSBjaGFuZ2VzIGlu
IHRoZSBtaWRkbGUgb2YgYSBydWJiZXItYmFuZCwgd2Ugc3RpbGwgd2FudCB0byB1c2UgdGhlIG9s
ZCB0b3RhbENvbnRlbnRzU2l6ZSBmb3IgdGhlIHNha2Ugb2YKICAgICAvLyBjb21wdXRpbmcgdGhl
IHN0cmV0Y2hBbW91bnQoKS4gVXNpbmcgdGhlIG9sZCB2YWx1ZSB3aWxsIGtlZXAgdGhlIGFuaW1h
dGlvbiBzbW9vdGguIFdoZW4gdGhlcmUgaXMgbm8gcnViYmVyLWJhbmQgaW4gcHJvZ3Jlc3MgYXQK
ICAgICAvLyBhbGwsIG1fdG90YWxDb250ZW50c1NpemVGb3JSdWJiZXJCYW5kIHNob3VsZCBiZSBl
cXVpdmFsZW50IHRvIG1fdG90YWxDb250ZW50c1NpemUuCi0gICAgY29uc3QgSW50U2l6ZSYgdG90
YWxDb250ZW50c1NpemVGb3JSdWJiZXJCYW5kKCkgY29uc3QgeyByZXR1cm4gbV90b3RhbENvbnRl
bnRzU2l6ZUZvclJ1YmJlckJhbmQ7IH0KLSAgICB2b2lkIHNldFRvdGFsQ29udGVudHNTaXplRm9y
UnViYmVyQmFuZChjb25zdCBJbnRTaXplJiB0b3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQp
IHsgbV90b3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQgPSB0b3RhbENvbnRlbnRzU2l6ZUZv
clJ1YmJlckJhbmQ7IH0KLQotICAgIGZsb2F0IGZyYW1lU2NhbGVGYWN0b3IoKSBjb25zdCB7IHJl
dHVybiBtX2ZyYW1lU2NhbGVGYWN0b3I7IH0KKyAgICBjb25zdCBGbG9hdFNpemUmIHRvdGFsQ29u
dGVudHNTaXplRm9yUnViYmVyQmFuZCgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxDb250ZW50c1Np
emVGb3JSdWJiZXJCYW5kOyB9CisgICAgdm9pZCBzZXRUb3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJl
ckJhbmQoY29uc3QgRmxvYXRTaXplJiB0b3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQpIHsg
bV90b3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQgPSB0b3RhbENvbnRlbnRzU2l6ZUZvclJ1
YmJlckJhbmQ7IH0KIAogICAgIFNjcm9sbEVsYXN0aWNpdHkgaG9yaXpvbnRhbFNjcm9sbEVsYXN0
aWNpdHkoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhUGFyYW1ldGVycy5ob3Jpem9u
dGFsU2Nyb2xsRWxhc3RpY2l0eTsgfQogICAgIFNjcm9sbEVsYXN0aWNpdHkgdmVydGljYWxTY3Jv
bGxFbGFzdGljaXR5KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMu
dmVydGljYWxTY3JvbGxFbGFzdGljaXR5OyB9CkBAIC04NCwzMSArODMsMTQgQEAgcHJvdGVjdGVk
OgogCiAgICAgYm9vbCBjYW5IYXZlU2Nyb2xsYmFycygpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xs
YWJsZUFyZWFQYXJhbWV0ZXJzLmhvcml6b250YWxTY3JvbGxiYXJNb2RlICE9IFNjcm9sbGJhckFs
d2F5c09mZiB8fCBtX3Njcm9sbGFibGVBcmVhUGFyYW1ldGVycy52ZXJ0aWNhbFNjcm9sbGJhck1v
ZGUgIT0gU2Nyb2xsYmFyQWx3YXlzT2ZmOyB9CiAKLSAgICBpbnQgaGVhZGVySGVpZ2h0KCkgY29u
c3QgeyByZXR1cm4gbV9oZWFkZXJIZWlnaHQ7IH0KLSAgICBpbnQgZm9vdGVySGVpZ2h0KCkgY29u
c3QgeyByZXR1cm4gbV9mb290ZXJIZWlnaHQ7IH0KLQotICAgIFNjcm9sbEJlaGF2aW9yRm9yRml4
ZWRFbGVtZW50cyBzY3JvbGxCZWhhdmlvckZvckZpeGVkRWxlbWVudHMoKSBjb25zdCB7IHJldHVy
biBtX2JlaGF2aW9yRm9yRml4ZWQ7IH0KLQotICAgIGZsb2F0IHRvcENvbnRlbnRJbnNldCgpIGNv
bnN0IHsgcmV0dXJuIG1fdG9wQ29udGVudEluc2V0OyB9Ci0KIHByaXZhdGU6Ci0gICAgRmxvYXRT
aXplIG1fdmlld3BvcnRTaXplOwotICAgIEludFNpemUgbV90b3RhbENvbnRlbnRzU2l6ZTsKLSAg
ICBJbnRTaXplIG1fdG90YWxDb250ZW50c1NpemVGb3JSdWJiZXJCYW5kOworICAgIEZsb2F0U2l6
ZSBtX3Njcm9sbGFibGVBcmVhU2l6ZTsKKyAgICBGbG9hdFNpemUgbV90b3RhbENvbnRlbnRzU2l6
ZTsKKyAgICBGbG9hdFNpemUgbV90b3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQ7CiAgICAg
RmxvYXRQb2ludCBtX3Njcm9sbFBvc2l0aW9uOwogICAgIEludFBvaW50IG1fc2Nyb2xsT3JpZ2lu
OwogICAgIAogICAgIFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyBtX3Njcm9sbGFibGVBcmVhUGFy
YW1ldGVyczsKLSAgICAKLSAgICBmbG9hdCBtX2ZyYW1lU2NhbGVGYWN0b3I7Ci0KLSAgICBpbnQg
bV9oZWFkZXJIZWlnaHQ7Ci0gICAgaW50IG1fZm9vdGVySGVpZ2h0OwotCi0gICAgU3luY2hyb25v
dXNTY3JvbGxpbmdSZWFzb25zIG1fc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zOwotICAgIFNj
cm9sbEJlaGF2aW9yRm9yRml4ZWRFbGVtZW50cyBtX2JlaGF2aW9yRm9yRml4ZWQ7Ci0KLSAgICBm
bG9hdCBtX3RvcENvbnRlbnRJbnNldDsKIH07CiAKIFNDUk9MTElOR19OT0RFX1RZUEVfQ0FTVFMo
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUsIGlzU2Nyb2xsaW5nTm9kZSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdDb29yZGluYXRv
cklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdDb29y
ZGluYXRvcklPUy5tbQppbmRleCA0NjgwMTE2ZmMwMGRmNzQ0NDBkNzM5YmM2Y2U5NTdkYjQ1Mzk1
OGVjLi41ZmMyOTc3OTQzMGQ2YWYwZGEzYjdiOWQ1NzU5MDc0Yzc2Mjk5NzExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JJ
T1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ0Nv
b3JkaW5hdG9ySU9TLm1tCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiU2Nyb2xsaW5nU3Rh
dGVUcmVlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nVGhyZWFkLmgiCiAjaW5jbHVkZSAiU2Nyb2xs
aW5nVHJlZUZpeGVkTm9kZS5oIgotI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
SU9TLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUy5oIgog
I2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5n
VHJlZUlPUy5oIgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbmFsLmg+CkBAIC0xMTAsOCArMTEwLDEw
IEBAIFBhc3NPd25QdHI8U2Nyb2xsaW5nVHJlZU5vZGU+IFNjcm9sbGluZ0Nvb3JkaW5hdG9ySU9T
OjpjcmVhdGVTY3JvbGxpbmdUcmVlTm9kZShTCiAKICAgICBzd2l0Y2ggKG5vZGVUeXBlKSB7CiAg
ICAgY2FzZSBGcmFtZVNjcm9sbGluZ05vZGU6CisgICAgICAgIHJldHVybiBTY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlSU9TOjpjcmVhdGUoKnNjcm9sbGluZ1RyZWUoKSwgbm9kZUlEKTsK
ICAgICBjYXNlIE92ZXJmbG93U2Nyb2xsaW5nTm9kZToKLSAgICAgICAgcmV0dXJuIFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlSU9TOjpjcmVhdGUoKnNjcm9sbGluZ1RyZWUoKSwgbm9kZVR5cGUs
IG5vZGVJRCk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICBjYXNlIEZpeGVkTm9kZToKICAgICAgICAgcmV0dXJuIFNjcm9sbGluZ1Ry
ZWVGaXhlZE5vZGU6OmNyZWF0ZSgqc2Nyb2xsaW5nVHJlZSgpLCBub2RlSUQpOwogICAgIGNhc2Ug
U3RpY2t5Tm9kZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lv
cy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjVlYTc5ZjQzNmZhYzljZTQ0ZDA2YTNlNTYxNjczMzI5NGFiNjkzNzEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUy5oCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1NfaAorI2RlZmluZSBT
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TX2gKKworI2lmIEVOQUJMRShBU1lOQ19T
Q1JPTExJTkcpICYmIFBMQVRGT1JNKElPUykKKworI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGUuaCIKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfQ0xB
U1MgQ0FMYXllcjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlSU9TIDogcHVibGljIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGUgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPFNjcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGVJT1M+IGNyZWF0ZShTY3JvbGxpbmdUcmVlJiwgU2Nyb2xsaW5nTm9kZUlE
KTsKKyAgICB2aXJ0dWFsIH5TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TKCk7CisK
K3Byb3RlY3RlZDoKKyAgICBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TKFNjcm9s
bGluZ1RyZWUmLCBTY3JvbGxpbmdOb2RlSUQpOworCisgICAgLy8gU2Nyb2xsaW5nVHJlZU5vZGUg
bWVtYmVyIGZ1bmN0aW9ucy4KKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQmVmb3JlQ2hpbGRyZW4o
Y29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUFmdGVyQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50
Jikgb3ZlcnJpZGUgeyB9CisKKyAgICBGbG9hdFBvaW50IHNjcm9sbFBvc2l0aW9uKCkgY29uc3Q7
CisgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb25XaXRob3V0Q29udGVu
dEVkZ2VDb25zdHJhaW50cyhjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7CisKKyAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJWaWV3cG9ydENoYW5nZShjb25zdCBGbG9hdFJlY3Qm
IHZpZXdwb3J0UmVjdCwgZG91YmxlIHNjYWxlKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGF5
ZXJzQWZ0ZXJEZWxlZ2F0ZWRTY3JvbGwoY29uc3QgRmxvYXRQb2ludCYpIG92ZXJyaWRlOworCisg
ICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbExheWVyUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYp
IG92ZXJyaWRlOworCisgICAgRmxvYXRQb2ludCBtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25z
dDsKKyAgICBGbG9hdFBvaW50IG1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0OworCisgICAg
dm9pZCBzY3JvbGxCeShjb25zdCBJbnRTaXplJik7CisgICAgdm9pZCBzY3JvbGxCeVdpdGhvdXRD
b250ZW50RWRnZUNvbnN0cmFpbnRzKGNvbnN0IEludFNpemUmKTsKKworcHJpdmF0ZToKKyAgICB2
b2lkIHVwZGF0ZUNoaWxkTm9kZXNBZnRlclNjcm9sbChjb25zdCBGbG9hdFBvaW50Jik7CisgICAg
Q0FMYXllciAqc2Nyb2xsTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbExheWVyLmdldCgp
OyB9CisKKyAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9zY3JvbGxMYXllcjsKKyAgICBSZXRhaW5Q
dHI8Q0FMYXllcj4gbV9jb3VudGVyU2Nyb2xsaW5nTGF5ZXI7CisgICAgUmV0YWluUHRyPENBTGF5
ZXI+IG1faGVhZGVyTGF5ZXI7CisgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fZm9vdGVyTGF5ZXI7
CisgICAgRmxvYXRQb2ludCBtX3Byb2JhYmxlTWFpblRocmVhZFNjcm9sbFBvc2l0aW9uOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9M
TElORykgJiYgUExBVEZPUk0oSU9TKQorCisjZW5kaWYgLy8gU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZUlPU19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9T
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmJiOGNmNTI5ODdhOTIwZDNhMGQ0MDgwN2RlM2RmMTNkNmRiMzJlYjIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Ny
b2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUy5tbQpAQCAtMCwwICsxLDIyNiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiU2Nyb2xsaW5nVHJlZUZyYW1l
U2Nyb2xsaW5nTm9kZUlPUy5oIgorCisjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKKworI2lt
cG9ydCAiRnJhbWVWaWV3LmgiCisjaW1wb3J0ICJTY3JvbGxpbmdDb29yZGluYXRvci5oIgorI2lt
cG9ydCAiU2Nyb2xsaW5nVHJlZS5oIgorI2ltcG9ydCAiU2Nyb2xsaW5nU3RhdGVUcmVlLmgiCisj
aW1wb3J0ICJTZXR0aW5ncy5oIgorI2ltcG9ydCAiVGlsZUNvbnRyb2xsZXIuaCIKKyNpbXBvcnQg
IldlYkxheWVyLmgiCisKKyNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NPd25QdHI8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZUlPUz4gU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUzo6Y3JlYXRlKFNjcm9s
bGluZ1RyZWUmIHNjcm9sbGluZ1RyZWUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCit7CisgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TKHNj
cm9sbGluZ1RyZWUsIG5vZGVJRCkpOworfQorCitTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlSU9TOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TKFNjcm9sbGluZ1RyZWUm
IHNjcm9sbGluZ1RyZWUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCisgICAgOiBTY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlKHNjcm9sbGluZ1RyZWUsIG5vZGVJRCkKK3sKK30KKworU2Ny
b2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUzo6flNjcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGVJT1MoKQoreworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVJT1M6OnVwZGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYgc3Rh
dGVOb2RlKQoreworICAgIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU6OnVwZGF0ZUJl
Zm9yZUNoaWxkcmVuKHN0YXRlTm9kZSk7CisgICAgCisgICAgY29uc3QgYXV0byYgc2Nyb2xsaW5n
U3RhdGVOb2RlID0gdG9TY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZShzdGF0ZU5vZGUp
OworCisgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xs
aW5nU3RhdGVOb2RlOjpTY3JvbGxMYXllcikpCisgICAgICAgIG1fc2Nyb2xsTGF5ZXIgPSBzY3Jv
bGxpbmdTdGF0ZU5vZGUubGF5ZXIoKTsKKworICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFz
Q2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpDb3VudGVy
U2Nyb2xsaW5nTGF5ZXIpKQorICAgICAgICBtX2NvdW50ZXJTY3JvbGxpbmdMYXllciA9IHNjcm9s
bGluZ1N0YXRlTm9kZS5jb3VudGVyU2Nyb2xsaW5nTGF5ZXIoKTsKKworICAgIGlmIChzY3JvbGxp
bmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxp
bmdOb2RlOjpIZWFkZXJMYXllcikpCisgICAgICAgIG1faGVhZGVyTGF5ZXIgPSBzY3JvbGxpbmdT
dGF0ZU5vZGUuaGVhZGVyTGF5ZXIoKTsKKworICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFz
Q2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpGb290ZXJM
YXllcikpCisgICAgICAgIG1fZm9vdGVyTGF5ZXIgPSBzY3JvbGxpbmdTdGF0ZU5vZGUuZm9vdGVy
TGF5ZXIoKTsKKworICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5
KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpSZWFzb25zRm9yU3luY2hyb25vdXNT
Y3JvbGxpbmcpKSB7CisgICAgICAgIGlmIChzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9u
U3luY2hyb25vdXNseSgpKSB7CisgICAgICAgICAgICAvLyBXZSdyZSB0cmFuc2l0aW9uaW5nIHRv
IHRoZSBzbG93ICJ1cGRhdGUgc2Nyb2xsIGxheWVyIHBvc2l0aW9uIG9uIHRoZSBtYWluIHRocmVh
ZCIgbW9kZS4KKyAgICAgICAgICAgIC8vIEluaXRpYWxpemUgdGhlIHByb2JhYmxlIG1haW4gdGhy
ZWFkIHNjcm9sbCBwb3NpdGlvbiB3aXRoIHRoZSBjdXJyZW50IHNjcm9sbCBsYXllciBwb3NpdGlv
bi4KKyAgICAgICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5
KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6UmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24pKQor
ICAgICAgICAgICAgICAgIG1fcHJvYmFibGVNYWluVGhyZWFkU2Nyb2xsUG9zaXRpb24gPSBzY3Jv
bGxpbmdTdGF0ZU5vZGUucmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24oKTsKKyAgICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgICAgIENHUG9pbnQgc2Nyb2xsTGF5ZXJQb3NpdGlvbiA9IG1fc2Ny
b2xsTGF5ZXIuZ2V0KCkucG9zaXRpb247CisgICAgICAgICAgICAgICAgbV9wcm9iYWJsZU1haW5U
aHJlYWRTY3JvbGxQb3NpdGlvbiA9IEludFBvaW50KC1zY3JvbGxMYXllclBvc2l0aW9uLngsIC1z
Y3JvbGxMYXllclBvc2l0aW9uLnkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
fQorCit2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1M6OnVwZGF0ZUFmdGVy
Q2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJiBzdGF0ZU5vZGUpCit7CisgICAgU2Ny
b2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZTo6dXBkYXRlQWZ0ZXJDaGlsZHJlbihzdGF0ZU5v
ZGUpOworCisgICAgY29uc3QgYXV0byYgc2Nyb2xsaW5nU3RhdGVOb2RlID0gdG9TY3JvbGxpbmdT
dGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZShzdGF0ZU5vZGUpOworCisgICAgLy8gVXBkYXRlIHRoZSBz
Y3JvbGwgcG9zaXRpb24gYWZ0ZXIgY2hpbGQgbm9kZXMgaGF2ZSBiZWVuIHVwZGF0ZWQsIGJlY2F1
c2UgdGhleSBuZWVkIHRvIGhhdmUgdXBkYXRlZCB0aGVpciBjb25zdHJhaW50cyBiZWZvcmUgYW55
IHNjcm9sbGluZyBoYXBwZW5zLgorICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdl
ZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6UmVxdWVzdGVkU2Nyb2xsUG9z
aXRpb24pKQorICAgICAgICBzZXRTY3JvbGxQb3NpdGlvbihzY3JvbGxpbmdTdGF0ZU5vZGUucmVx
dWVzdGVkU2Nyb2xsUG9zaXRpb24oKSk7Cit9CisKK0Zsb2F0UG9pbnQgU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZUlPUzo6c2Nyb2xsUG9zaXRpb24oKSBjb25zdAoreworICAgIGlmIChz
aG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uU3luY2hyb25vdXNseSgpKQorICAgICAgICBy
ZXR1cm4gbV9wcm9iYWJsZU1haW5UaHJlYWRTY3JvbGxQb3NpdGlvbjsKKworICAgIENHUG9pbnQg
c2Nyb2xsTGF5ZXJQb3NpdGlvbiA9IG1fc2Nyb2xsTGF5ZXIuZ2V0KCkucG9zaXRpb247CisgICAg
cmV0dXJuIEludFBvaW50KC1zY3JvbGxMYXllclBvc2l0aW9uLnggKyBzY3JvbGxPcmlnaW4oKS54
KCksIC1zY3JvbGxMYXllclBvc2l0aW9uLnkgKyBzY3JvbGxPcmlnaW4oKS55KCkpOworfQorCit2
b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1M6OnNldFNjcm9sbFBvc2l0aW9u
KGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uKQoreworICAgIEZsb2F0UG9pbnQgbmV3
U2Nyb2xsUG9zaXRpb24gPSBzY3JvbGxQb3NpdGlvbjsKKyAgICBuZXdTY3JvbGxQb3NpdGlvbiA9
IG5ld1Njcm9sbFBvc2l0aW9uLnNocnVua1RvKG1heGltdW1TY3JvbGxQb3NpdGlvbigpKTsKKyAg
ICBuZXdTY3JvbGxQb3NpdGlvbiA9IG5ld1Njcm9sbFBvc2l0aW9uLmV4cGFuZGVkVG8obWluaW11
bVNjcm9sbFBvc2l0aW9uKCkpOworCisgICAgc2V0U2Nyb2xsUG9zaXRpb25XaXRob3V0Q29udGVu
dEVkZ2VDb25zdHJhaW50cyhuZXdTY3JvbGxQb3NpdGlvbik7Cit9CisKK3ZvaWQgU2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUzo6c2V0U2Nyb2xsUG9zaXRpb25XaXRob3V0Q29udGVu
dEVkZ2VDb25zdHJhaW50cyhjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbikKK3sKKyAg
ICBpZiAoc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvblN5bmNocm9ub3VzbHkoKSkgewor
ICAgICAgICBtX3Byb2JhYmxlTWFpblRocmVhZFNjcm9sbFBvc2l0aW9uID0gc2Nyb2xsUG9zaXRp
b247CisgICAgICAgIHNjcm9sbGluZ1RyZWUoKS5zY3JvbGxpbmdUcmVlTm9kZURpZFNjcm9sbChz
Y3JvbGxpbmdOb2RlSUQoKSwgc2Nyb2xsUG9zaXRpb24sIFNldFNjcm9sbGluZ0xheWVyUG9zaXRp
b24pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2V0U2Nyb2xsTGF5ZXJQb3NpdGlv
bihzY3JvbGxQb3NpdGlvbik7CisgICAgc2Nyb2xsaW5nVHJlZSgpLnNjcm9sbGluZ1RyZWVOb2Rl
RGlkU2Nyb2xsKHNjcm9sbGluZ05vZGVJRCgpLCBzY3JvbGxQb3NpdGlvbik7Cit9CisKK3ZvaWQg
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUzo6c2V0U2Nyb2xsTGF5ZXJQb3NpdGlv
bihjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbikKK3sKKyAgICBBU1NFUlQoIXNob3Vs
ZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25TeW5jaHJvbm91c2x5KCkpOworICAgIFttX3Njcm9s
bExheWVyIHNldFBvc2l0aW9uOkNHUG9pbnRNYWtlKC1zY3JvbGxQb3NpdGlvbi54KCkgKyBzY3Jv
bGxPcmlnaW4oKS54KCksIC1zY3JvbGxQb3NpdGlvbi55KCkgKyBzY3JvbGxPcmlnaW4oKS55KCkp
XTsKKworICAgIHVwZGF0ZUNoaWxkTm9kZXNBZnRlclNjcm9sbChzY3JvbGxQb3NpdGlvbik7Cit9
CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUzo6dXBkYXRlTGF5ZXJz
QWZ0ZXJWaWV3cG9ydENoYW5nZShjb25zdCBGbG9hdFJlY3QmIHZpZXdwb3J0UmVjdCwgZG91Ymxl
IC8qc2NhbGUqLykKK3sKKyAgICBbbV9jb3VudGVyU2Nyb2xsaW5nTGF5ZXIgc2V0UG9zaXRpb246
dmlld3BvcnRSZWN0LmxvY2F0aW9uKCldOworCisgICAgaWYgKCFtX2NoaWxkcmVuKQorICAgICAg
ICByZXR1cm47CisKKyAgICBzaXplX3Qgc2l6ZSA9IG1fY2hpbGRyZW4tPnNpemUoKTsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgbV9jaGlsZHJlbi0+YXQo
aSktPnBhcmVudFNjcm9sbFBvc2l0aW9uRGlkQ2hhbmdlKHZpZXdwb3J0UmVjdCwgRmxvYXRTaXpl
KCkpOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1M6OnVwZGF0
ZUxheWVyc0FmdGVyRGVsZWdhdGVkU2Nyb2xsKGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0
aW9uKQoreworICAgIHVwZGF0ZUNoaWxkTm9kZXNBZnRlclNjcm9sbChzY3JvbGxQb3NpdGlvbik7
Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUzo6dXBkYXRlQ2hp
bGROb2Rlc0FmdGVyU2Nyb2xsKGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uKQorewor
ICAgIFNjcm9sbEJlaGF2aW9yRm9yRml4ZWRFbGVtZW50cyBiZWhhdmlvckZvckZpeGVkID0gc2Ny
b2xsQmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzKCk7CisgICAgRmxvYXRQb2ludCBzY3JvbGxPZmZz
ZXQgPSBzY3JvbGxQb3NpdGlvbiAtIHRvSW50U2l6ZShzY3JvbGxPcmlnaW4oKSk7CisgICAgRmxv
YXRSZWN0IHZpZXdwb3J0UmVjdChGbG9hdFBvaW50KCksIHNjcm9sbGFibGVBcmVhU2l6ZSgpKTsK
KyAgICBGbG9hdFNpemUgc2Nyb2xsT2Zmc2V0Rm9yRml4ZWRDaGlsZHJlbiA9IEZyYW1lVmlldzo6
c2Nyb2xsT2Zmc2V0Rm9yRml4ZWRQb3NpdGlvbihlbmNsb3NpbmdMYXlvdXRSZWN0KHZpZXdwb3J0
UmVjdCksIHJvdW5kZWRMYXlvdXRTaXplKHRvdGFsQ29udGVudHNTaXplKCkpLCByb3VuZGVkTGF5
b3V0UG9pbnQoc2Nyb2xsT2Zmc2V0KSwgc2Nyb2xsT3JpZ2luKCksIGZyYW1lU2NhbGVGYWN0b3Io
KSwgZmFsc2UsIGJlaGF2aW9yRm9yRml4ZWQsIGhlYWRlckhlaWdodCgpLCBmb290ZXJIZWlnaHQo
KSk7CisKKyAgICBbbV9jb3VudGVyU2Nyb2xsaW5nTGF5ZXIgc2V0UG9zaXRpb246RmxvYXRQb2lu
dChzY3JvbGxPZmZzZXRGb3JGaXhlZENoaWxkcmVuKV07CisKKyAgICBpZiAobV9oZWFkZXJMYXll
ciB8fCBtX2Zvb3RlckxheWVyKSB7CisgICAgICAgIC8vIEdlbmVyYWxseSB0aGUgYmFubmVycyBz
aG91bGQgaGF2ZSB0aGUgc2FtZSBob3Jpem9udGFsLXBvc2l0aW9uIGNvbXB1dGF0aW9uIGFzIGEg
Zml4ZWQgZWxlbWVudC4gSG93ZXZlciwKKyAgICAgICAgLy8gdGhlIGJhbm5lcnMgYXJlIG5vdCBh
ZmZlY3RlZCBieSB0aGUgZnJhbWVTY2FsZUZhY3RvcigpLCBzbyBpZiB0aGVyZSBpcyBjdXJyZW50
bHkgYSBub24tMSBmcmFtZVNjYWxlRmFjdG9yKCkKKyAgICAgICAgLy8gdGhlbiB3ZSBzaG91bGQg
cmVjb21wdXRlIHNjcm9sbE9mZnNldEZvckZpeGVkQ2hpbGRyZW4gZm9yIHRoZSBiYW5uZXIgd2l0
aCBhIHNjYWxlIGZhY3RvciBvZiAxLgorICAgICAgICBmbG9hdCBob3Jpem9udGFsU2Nyb2xsT2Zm
c2V0Rm9yQmFubmVyID0gc2Nyb2xsT2Zmc2V0Rm9yRml4ZWRDaGlsZHJlbi53aWR0aCgpOworICAg
ICAgICBpZiAoZnJhbWVTY2FsZUZhY3RvcigpICE9IDEpCisgICAgICAgICAgICBob3Jpem9udGFs
U2Nyb2xsT2Zmc2V0Rm9yQmFubmVyID0gRnJhbWVWaWV3OjpzY3JvbGxPZmZzZXRGb3JGaXhlZFBv
c2l0aW9uKGVuY2xvc2luZ0xheW91dFJlY3Qodmlld3BvcnRSZWN0KSwgcm91bmRlZExheW91dFNp
emUodG90YWxDb250ZW50c1NpemUoKSksIHJvdW5kZWRMYXlvdXRQb2ludChzY3JvbGxPZmZzZXQp
LCBzY3JvbGxPcmlnaW4oKSwgMSwgZmFsc2UsIGJlaGF2aW9yRm9yRml4ZWQsIGhlYWRlckhlaWdo
dCgpLCBmb290ZXJIZWlnaHQoKSkud2lkdGgoKTsKKworICAgICAgICBpZiAobV9oZWFkZXJMYXll
cikKKyAgICAgICAgICAgIFttX2hlYWRlckxheWVyIHNldFBvc2l0aW9uOkZsb2F0UG9pbnQoaG9y
aXpvbnRhbFNjcm9sbE9mZnNldEZvckJhbm5lciwgMCldOworCisgICAgICAgIGlmIChtX2Zvb3Rl
ckxheWVyKQorICAgICAgICAgICAgW21fZm9vdGVyTGF5ZXIgc2V0UG9zaXRpb246RmxvYXRQb2lu
dChob3Jpem9udGFsU2Nyb2xsT2Zmc2V0Rm9yQmFubmVyLCB0b3RhbENvbnRlbnRzU2l6ZSgpLmhl
aWdodCgpIC0gZm9vdGVySGVpZ2h0KCkpXTsKKyAgICB9CisgICAgCisgICAgaWYgKCFtX2NoaWxk
cmVuKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgdmlld3BvcnRSZWN0LnNldExvY2F0aW9u
KHNjcm9sbE9mZnNldCk7CisgICAgCisgICAgRmxvYXRSZWN0IHZpZXdwb3J0Q29uc3RyYWluZWRP
YmplY3RzUmVjdCA9IEZyYW1lVmlldzo6cmVjdEZvclZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3Rz
KGVuY2xvc2luZ0xheW91dFJlY3Qodmlld3BvcnRSZWN0KSwgcm91bmRlZExheW91dFNpemUodG90
YWxDb250ZW50c1NpemUoKSksIGZyYW1lU2NhbGVGYWN0b3IoKSwgZmFsc2UsIGJlaGF2aW9yRm9y
Rml4ZWQpOworICAgIAorICAgIHNpemVfdCBzaXplID0gbV9jaGlsZHJlbi0+c2l6ZSgpOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBtX2NoaWxkcmVuLT5h
dChpKS0+cGFyZW50U2Nyb2xsUG9zaXRpb25EaWRDaGFuZ2Uodmlld3BvcnRDb25zdHJhaW5lZE9i
amVjdHNSZWN0LCBGbG9hdFNpemUoKSk7Cit9CisKK0Zsb2F0UG9pbnQgU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZUlPUzo6bWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QKK3sKKyAg
ICBGbG9hdFBvaW50IHBvc2l0aW9uOworICAgIAorICAgIGlmIChzY3JvbGxpbmdUcmVlKCkucm9v
dE5vZGUoKSA9PSB0aGlzICYmIHNjcm9sbGluZ1RyZWUoKS5zY3JvbGxQaW5uaW5nQmVoYXZpb3Io
KSA9PSBQaW5Ub0JvdHRvbSkKKyAgICAgICAgcG9zaXRpb24uc2V0WShtYXhpbXVtU2Nyb2xsUG9z
aXRpb24oKS55KCkpOworCisgICAgcmV0dXJuIHBvc2l0aW9uOworfQorCitGbG9hdFBvaW50IFNj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1M6Om1heGltdW1TY3JvbGxQb3NpdGlvbigp
IGNvbnN0Cit7CisgICAgRmxvYXRQb2ludCBwb3NpdGlvbih0b3RhbENvbnRlbnRzU2l6ZUZvclJ1
YmJlckJhbmQoKS53aWR0aCgpIC0gc2Nyb2xsYWJsZUFyZWFTaXplKCkud2lkdGgoKSwKKyAgICAg
ICAgdG90YWxDb250ZW50c1NpemVGb3JSdWJiZXJCYW5kKCkuaGVpZ2h0KCkgLSBzY3JvbGxhYmxl
QXJlYVNpemUoKS5oZWlnaHQoKSk7CisKKyAgICBwb3NpdGlvbiA9IHBvc2l0aW9uLmV4cGFuZGVk
VG8oRmxvYXRQb2ludCgpKTsKKworICAgIGlmIChzY3JvbGxpbmdUcmVlKCkucm9vdE5vZGUoKSA9
PSB0aGlzICYmIHNjcm9sbGluZ1RyZWUoKS5zY3JvbGxQaW5uaW5nQmVoYXZpb3IoKSA9PSBQaW5U
b1RvcCkKKyAgICAgICAgcG9zaXRpb24uc2V0WShtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKS55KCkp
OworCisgICAgcmV0dXJuIHBvc2l0aW9uOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVJT1M6OnNjcm9sbEJ5KGNvbnN0IEludFNpemUmIG9mZnNldCkKK3sKKyAgICBz
ZXRTY3JvbGxQb3NpdGlvbihzY3JvbGxQb3NpdGlvbigpICsgb2Zmc2V0KTsKK30KKwordm9pZCBT
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TOjpzY3JvbGxCeVdpdGhvdXRDb250ZW50
RWRnZUNvbnN0cmFpbnRzKGNvbnN0IEludFNpemUmIG9mZnNldCkKK3sKKyAgICBzZXRTY3JvbGxQ
b3NpdGlvbldpdGhvdXRDb250ZW50RWRnZUNvbnN0cmFpbnRzKHNjcm9sbFBvc2l0aW9uKCkgKyBv
ZmZzZXQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
QVNZTkNfU0NST0xMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1MuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzNlZTk1YTIyM2IyMmNmY2Y0M2UxMTQ0ZmFlM2ExOTdi
NTY0MDA1OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVJT1MuaAorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZu
ZGVmIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TX2gKLSNkZWZpbmUgU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVJT1NfaAotCi0jaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKLQotI2lu
Y2x1ZGUgIlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgiCi0jaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgotCi1PQkpDX0NMQVNTIENBTGF5ZXI7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Y2xhc3MgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1MgOiBwdWJsaWMgU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGUgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlPiBjcmVhdGUoU2Nyb2xsaW5nVHJlZSYsIFNjcm9sbGluZ05vZGVU
eXBlLCBTY3JvbGxpbmdOb2RlSUQpOwotICAgIHZpcnR1YWwgflNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlSU9TKCk7Ci0KLXByb3RlY3RlZDoKLSAgICBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZUlPUyhTY3JvbGxpbmdUcmVlJiwgU2Nyb2xsaW5nTm9kZVR5cGUsIFNjcm9sbGluZ05vZGVJRCk7
Ci0KLSAgICAvLyBTY3JvbGxpbmdUcmVlTm9kZSBtZW1iZXIgZnVuY3Rpb25zLgotICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQWZ0ZXJDaGlsZHJlbihjb25zdCBTY3Jv
bGxpbmdTdGF0ZU5vZGUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlV2hlZWxF
dmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSBvdmVycmlkZSB7IH0KLQotICAgIENBTGF5
ZXIgKnNjcm9sbExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxMYXllci5nZXQoKTsgfQot
Ci0gICAgRmxvYXRQb2ludCBzY3JvbGxQb3NpdGlvbigpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9p
ZCBzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIHNldFNjcm9sbFBvc2l0aW9uV2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMo
Y29uc3QgRmxvYXRQb2ludCYpIG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxh
eWVyc0FmdGVyVmlld3BvcnRDaGFuZ2UoY29uc3QgRmxvYXRSZWN0JiB2aWV3cG9ydFJlY3QsIGRv
dWJsZSBzY2FsZSk7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxheWVyc0FmdGVyRGVsZWdhdGVk
U2Nyb2xsKGNvbnN0IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKLQotICAgIHZvaWQgc2V0U2Nyb2xs
TGF5ZXJQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50Jik7Ci0KLSAgICBGbG9hdFBvaW50IG1pbmlt
dW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0OwotICAgIEZsb2F0UG9pbnQgbWF4aW11bVNjcm9sbFBv
c2l0aW9uKCkgY29uc3Q7Ci0KLSAgICB2b2lkIHNjcm9sbEJ5KGNvbnN0IEludFNpemUmKTsKLSAg
ICB2b2lkIHNjcm9sbEJ5V2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMoY29uc3QgSW50U2l6
ZSYpOwotCi1wcml2YXRlOgotICAgIHZvaWQgdXBkYXRlQ2hpbGROb2Rlc0FmdGVyU2Nyb2xsKGNv
bnN0IEZsb2F0UG9pbnQmKTsKLQotICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3Njcm9sbExheWVy
OwotICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3Njcm9sbGVkQ29udGVudHNMYXllcjsKLSAgICBS
ZXRhaW5QdHI8Q0FMYXllcj4gbV9jb3VudGVyU2Nyb2xsaW5nTGF5ZXI7Ci0gICAgUmV0YWluUHRy
PENBTGF5ZXI+IG1faGVhZGVyTGF5ZXI7Ci0gICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fZm9vdGVy
TGF5ZXI7Ci0gICAgRmxvYXRQb2ludCBtX3Byb2JhYmxlTWFpblRocmVhZFNjcm9sbFBvc2l0aW9u
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKEFTWU5D
X1NDUk9MTElORykKLQotI2VuZGlmIC8vIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lv
cy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggOTZlYWRjNjE0YzNiZmE3NTM1MTkxYTQ3ZGMwMTg5MmExYTJmZGM5Ni4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1MubW0KKysrIC9k
ZXYvbnVsbApAQCAtMSwyMjggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5o
IgotI2ltcG9ydCAiU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1MuaCIKLQotI2lmIEVOQUJM
RShBU1lOQ19TQ1JPTExJTkcpCi0KLSNpbXBvcnQgIkZyYW1lVmlldy5oIgotI2ltcG9ydCAiU2Ny
b2xsaW5nQ29vcmRpbmF0b3IuaCIKLSNpbXBvcnQgIlNjcm9sbGluZ1RyZWUuaCIKLSNpbXBvcnQg
IlNjcm9sbGluZ1N0YXRlVHJlZS5oIgotI2ltcG9ydCAiU2V0dGluZ3MuaCIKLSNpbXBvcnQgIlRp
bGVDb250cm9sbGVyLmgiCi0jaW1wb3J0ICJXZWJMYXllci5oIgotCi0jaW1wb3J0IDxRdWFydHpD
b3JlL1F1YXJ0ekNvcmUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1QYXNzT3duUHRyPFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlPiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUzo6
Y3JlYXRlKFNjcm9sbGluZ1RyZWUmIHNjcm9sbGluZ1RyZWUsIFNjcm9sbGluZ05vZGVUeXBlIG5v
ZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQotewotICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1Moc2Nyb2xsaW5nVHJlZSwgbm9kZVR5cGUs
IG5vZGVJRCkpOwotfQotCi1TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUzo6U2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVJT1MoU2Nyb2xsaW5nVHJlZSYgc2Nyb2xsaW5nVHJlZSwgU2Nyb2xs
aW5nTm9kZVR5cGUgbm9kZVR5cGUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCi0gICAgOiBTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZShzY3JvbGxpbmdUcmVlLCBub2RlVHlwZSwgbm9kZUlEKQot
ewotfQotCi1TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUzo6flNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlSU9TKCkKLXsKLX0KLQotdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlP
Uzo6dXBkYXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJiBzdGF0ZU5v
ZGUpCi17Ci0gICAgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OnVwZGF0ZUJlZm9yZUNoaWxk
cmVuKHN0YXRlTm9kZSk7Ci0gICAgY29uc3QgYXV0byYgc2Nyb2xsaW5nU3RhdGVOb2RlID0gdG9T
Y3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUoc3RhdGVOb2RlKTsKLQotICAgIGlmIChzY3JvbGxp
bmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6U2Nyb2xs
TGF5ZXIpKQotICAgICAgICBtX3Njcm9sbExheWVyID0gc2Nyb2xsaW5nU3RhdGVOb2RlLmxheWVy
KCk7Ci0KLSAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGVkQ29udGVudHNMYXllcikpCi0gICAgICAg
IG1fc2Nyb2xsZWRDb250ZW50c0xheWVyID0gc2Nyb2xsaW5nU3RhdGVOb2RlLnNjcm9sbGVkQ29u
dGVudHNMYXllcigpOwotCi0gICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJv
cGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpDb3VudGVyU2Nyb2xsaW5nTGF5ZXIp
KQotICAgICAgICBtX2NvdW50ZXJTY3JvbGxpbmdMYXllciA9IHNjcm9sbGluZ1N0YXRlTm9kZS5j
b3VudGVyU2Nyb2xsaW5nTGF5ZXIoKTsKLQotICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFz
Q2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6SGVhZGVyTGF5ZXIp
KQotICAgICAgICBtX2hlYWRlckxheWVyID0gc2Nyb2xsaW5nU3RhdGVOb2RlLmhlYWRlckxheWVy
KCk7Ci0KLSAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OkZvb3RlckxheWVyKSkKLSAgICAgICAgbV9mb290ZXJM
YXllciA9IHNjcm9sbGluZ1N0YXRlTm9kZS5mb290ZXJMYXllcigpOwotCi0gICAgaWYgKHNjcm9s
bGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdO
b2RlOjpSZWFzb25zRm9yU3luY2hyb25vdXNTY3JvbGxpbmcpKSB7Ci0gICAgICAgIGlmIChzaG91
bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uU3luY2hyb25vdXNseSgpKSB7Ci0gICAgICAgICAg
ICAvLyBXZSdyZSB0cmFuc2l0aW9uaW5nIHRvIHRoZSBzbG93ICJ1cGRhdGUgc2Nyb2xsIGxheWVy
IHBvc2l0aW9uIG9uIHRoZSBtYWluIHRocmVhZCIgbW9kZS4KLSAgICAgICAgICAgIC8vIEluaXRp
YWxpemUgdGhlIHByb2JhYmxlIG1haW4gdGhyZWFkIHNjcm9sbCBwb3NpdGlvbiB3aXRoIHRoZSBj
dXJyZW50IHNjcm9sbCBsYXllciBwb3NpdGlvbi4KLSAgICAgICAgICAgIGlmIChzY3JvbGxpbmdT
dGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6
UmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24pKQotICAgICAgICAgICAgICAgIG1fcHJvYmFibGVNYWlu
VGhyZWFkU2Nyb2xsUG9zaXRpb24gPSBzY3JvbGxpbmdTdGF0ZU5vZGUucmVxdWVzdGVkU2Nyb2xs
UG9zaXRpb24oKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIENHUG9pbnQg
c2Nyb2xsTGF5ZXJQb3NpdGlvbiA9IG1fc2Nyb2xsTGF5ZXIuZ2V0KCkucG9zaXRpb247Ci0gICAg
ICAgICAgICAgICAgbV9wcm9iYWJsZU1haW5UaHJlYWRTY3JvbGxQb3NpdGlvbiA9IEludFBvaW50
KC1zY3JvbGxMYXllclBvc2l0aW9uLngsIC1zY3JvbGxMYXllclBvc2l0aW9uLnkpOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlSU9TOjp1cGRhdGVBZnRlckNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYg
c3RhdGVOb2RlKQotewotICAgIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjp1cGRhdGVBZnRl
ckNoaWxkcmVuKHN0YXRlTm9kZSk7Ci0KLSAgICBjb25zdCBhdXRvJiBzY3JvbGxpbmdTdGF0ZU5v
ZGUgPSB0b1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZShzdGF0ZU5vZGUpOwotCi0gICAgLy8g
VXBkYXRlIHRoZSBzY3JvbGwgcG9zaXRpb24gYWZ0ZXIgY2hpbGQgbm9kZXMgaGF2ZSBiZWVuIHVw
ZGF0ZWQsIGJlY2F1c2UgdGhleSBuZWVkIHRvIGhhdmUgdXBkYXRlZCB0aGVpciBjb25zdHJhaW50
cyBiZWZvcmUgYW55IHNjcm9sbGluZyBoYXBwZW5zLgotICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5v
ZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6UmVxdWVz
dGVkU2Nyb2xsUG9zaXRpb24pKQotICAgICAgICBzZXRTY3JvbGxQb3NpdGlvbihzY3JvbGxpbmdT
dGF0ZU5vZGUucmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24oKSk7Ci19Ci0KLUZsb2F0UG9pbnQgU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1M6OnNjcm9sbFBvc2l0aW9uKCkgY29uc3QKLXsKLSAg
ICBpZiAoc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvblN5bmNocm9ub3VzbHkoKSkKLSAg
ICAgICAgcmV0dXJuIG1fcHJvYmFibGVNYWluVGhyZWFkU2Nyb2xsUG9zaXRpb247Ci0KLSAgICBD
R1BvaW50IHNjcm9sbExheWVyUG9zaXRpb24gPSBtX3Njcm9sbExheWVyLmdldCgpLnBvc2l0aW9u
OwotICAgIHJldHVybiBJbnRQb2ludCgtc2Nyb2xsTGF5ZXJQb3NpdGlvbi54ICsgc2Nyb2xsT3Jp
Z2luKCkueCgpLCAtc2Nyb2xsTGF5ZXJQb3NpdGlvbi55ICsgc2Nyb2xsT3JpZ2luKCkueSgpKTsK
LX0KLQotdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUzo6c2V0U2Nyb2xsUG9zaXRp
b24oY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24pCi17Ci0gICAgRmxvYXRQb2ludCBu
ZXdTY3JvbGxQb3NpdGlvbiA9IHNjcm9sbFBvc2l0aW9uOwotICAgIG5ld1Njcm9sbFBvc2l0aW9u
ID0gbmV3U2Nyb2xsUG9zaXRpb24uc2hydW5rVG8obWF4aW11bVNjcm9sbFBvc2l0aW9uKCkpOwot
ICAgIG5ld1Njcm9sbFBvc2l0aW9uID0gbmV3U2Nyb2xsUG9zaXRpb24uZXhwYW5kZWRUbyhtaW5p
bXVtU2Nyb2xsUG9zaXRpb24oKSk7Ci0KLSAgICBzZXRTY3JvbGxQb3NpdGlvbldpdGhvdXRDb250
ZW50RWRnZUNvbnN0cmFpbnRzKG5ld1Njcm9sbFBvc2l0aW9uKTsKLX0KLQotdm9pZCBTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZUlPUzo6c2V0U2Nyb2xsUG9zaXRpb25XaXRob3V0Q29udGVudEVk
Z2VDb25zdHJhaW50cyhjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbikKLXsKLSAgICBp
ZiAoc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvblN5bmNocm9ub3VzbHkoKSkgewotICAg
ICAgICBtX3Byb2JhYmxlTWFpblRocmVhZFNjcm9sbFBvc2l0aW9uID0gc2Nyb2xsUG9zaXRpb247
Ci0gICAgICAgIHNjcm9sbGluZ1RyZWUoKS5zY3JvbGxpbmdUcmVlTm9kZURpZFNjcm9sbChzY3Jv
bGxpbmdOb2RlSUQoKSwgc2Nyb2xsUG9zaXRpb24sIFNldFNjcm9sbGluZ0xheWVyUG9zaXRpb24p
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc2V0U2Nyb2xsTGF5ZXJQb3NpdGlvbihz
Y3JvbGxQb3NpdGlvbik7Ci0gICAgc2Nyb2xsaW5nVHJlZSgpLnNjcm9sbGluZ1RyZWVOb2RlRGlk
U2Nyb2xsKHNjcm9sbGluZ05vZGVJRCgpLCBzY3JvbGxQb3NpdGlvbik7Ci19Ci0KLXZvaWQgU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1M6OnNldFNjcm9sbExheWVyUG9zaXRpb24oY29uc3Qg
RmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24pCi17Ci0gICAgQVNTRVJUKCFzaG91bGRVcGRhdGVT
Y3JvbGxMYXllclBvc2l0aW9uU3luY2hyb25vdXNseSgpKTsKLSAgICBbbV9zY3JvbGxMYXllciBz
ZXRQb3NpdGlvbjpDR1BvaW50TWFrZSgtc2Nyb2xsUG9zaXRpb24ueCgpICsgc2Nyb2xsT3JpZ2lu
KCkueCgpLCAtc2Nyb2xsUG9zaXRpb24ueSgpICsgc2Nyb2xsT3JpZ2luKCkueSgpKV07Ci0KLSAg
ICB1cGRhdGVDaGlsZE5vZGVzQWZ0ZXJTY3JvbGwoc2Nyb2xsUG9zaXRpb24pOwotfQotCi12b2lk
IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TOjp1cGRhdGVMYXllcnNBZnRlclZpZXdwb3J0
Q2hhbmdlKGNvbnN0IEZsb2F0UmVjdCYgdmlld3BvcnRSZWN0LCBkb3VibGUgLypzY2FsZSovKQot
ewotICAgIFttX2NvdW50ZXJTY3JvbGxpbmdMYXllciBzZXRQb3NpdGlvbjp2aWV3cG9ydFJlY3Qu
bG9jYXRpb24oKV07Ci0KLSAgICBpZiAoIW1fY2hpbGRyZW4pCi0gICAgICAgIHJldHVybjsKLQot
ICAgIHNpemVfdCBzaXplID0gbV9jaGlsZHJlbi0+c2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBtX2NoaWxkcmVuLT5hdChpKS0+cGFyZW50U2Ny
b2xsUG9zaXRpb25EaWRDaGFuZ2Uodmlld3BvcnRSZWN0LCBGbG9hdFNpemUoKSk7Ci19Ci0KLXZv
aWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1M6OnVwZGF0ZUxheWVyc0FmdGVyRGVsZWdh
dGVkU2Nyb2xsKGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uKQotewotICAgIHVwZGF0
ZUNoaWxkTm9kZXNBZnRlclNjcm9sbChzY3JvbGxQb3NpdGlvbik7Ci19Ci0KLXZvaWQgU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVJT1M6OnVwZGF0ZUNoaWxkTm9kZXNBZnRlclNjcm9sbChjb25z
dCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbikKLXsKLSAgICBTY3JvbGxCZWhhdmlvckZvckZp
eGVkRWxlbWVudHMgYmVoYXZpb3JGb3JGaXhlZCA9IHNjcm9sbEJlaGF2aW9yRm9yRml4ZWRFbGVt
ZW50cygpOwotICAgIEZsb2F0UG9pbnQgc2Nyb2xsT2Zmc2V0ID0gc2Nyb2xsUG9zaXRpb24gLSB0
b0ludFNpemUoc2Nyb2xsT3JpZ2luKCkpOwotICAgIEZsb2F0UmVjdCB2aWV3cG9ydFJlY3QoRmxv
YXRQb2ludCgpLCB2aWV3cG9ydFNpemUoKSk7Ci0gICAgRmxvYXRTaXplIHNjcm9sbE9mZnNldEZv
ckZpeGVkQ2hpbGRyZW4gPSBGcmFtZVZpZXc6OnNjcm9sbE9mZnNldEZvckZpeGVkUG9zaXRpb24o
ZW5jbG9zaW5nTGF5b3V0UmVjdCh2aWV3cG9ydFJlY3QpLCB0b3RhbENvbnRlbnRzU2l6ZSgpLCBm
bG9vcmVkSW50UG9pbnQoc2Nyb2xsT2Zmc2V0KSwgc2Nyb2xsT3JpZ2luKCksIGZyYW1lU2NhbGVG
YWN0b3IoKSwgZmFsc2UsIGJlaGF2aW9yRm9yRml4ZWQsIGhlYWRlckhlaWdodCgpLCBmb290ZXJI
ZWlnaHQoKSk7Ci0KLSAgICBbbV9jb3VudGVyU2Nyb2xsaW5nTGF5ZXIgc2V0UG9zaXRpb246Rmxv
YXRQb2ludChzY3JvbGxPZmZzZXRGb3JGaXhlZENoaWxkcmVuKV07Ci0KLSAgICBpZiAobV9oZWFk
ZXJMYXllciB8fCBtX2Zvb3RlckxheWVyKSB7Ci0gICAgICAgIC8vIEdlbmVyYWxseSB0aGUgYmFu
bmVycyBzaG91bGQgaGF2ZSB0aGUgc2FtZSBob3Jpem9udGFsLXBvc2l0aW9uIGNvbXB1dGF0aW9u
IGFzIGEgZml4ZWQgZWxlbWVudC4gSG93ZXZlciwKLSAgICAgICAgLy8gdGhlIGJhbm5lcnMgYXJl
IG5vdCBhZmZlY3RlZCBieSB0aGUgZnJhbWVTY2FsZUZhY3RvcigpLCBzbyBpZiB0aGVyZSBpcyBj
dXJyZW50bHkgYSBub24tMSBmcmFtZVNjYWxlRmFjdG9yKCkKLSAgICAgICAgLy8gdGhlbiB3ZSBz
aG91bGQgcmVjb21wdXRlIHNjcm9sbE9mZnNldEZvckZpeGVkQ2hpbGRyZW4gZm9yIHRoZSBiYW5u
ZXIgd2l0aCBhIHNjYWxlIGZhY3RvciBvZiAxLgotICAgICAgICBmbG9hdCBob3Jpem9udGFsU2Ny
b2xsT2Zmc2V0Rm9yQmFubmVyID0gc2Nyb2xsT2Zmc2V0Rm9yRml4ZWRDaGlsZHJlbi53aWR0aCgp
OwotICAgICAgICBpZiAoZnJhbWVTY2FsZUZhY3RvcigpICE9IDEpCi0gICAgICAgICAgICBob3Jp
em9udGFsU2Nyb2xsT2Zmc2V0Rm9yQmFubmVyID0gRnJhbWVWaWV3OjpzY3JvbGxPZmZzZXRGb3JG
aXhlZFBvc2l0aW9uKGVuY2xvc2luZ0xheW91dFJlY3Qodmlld3BvcnRSZWN0KSwgdG90YWxDb250
ZW50c1NpemUoKSwgZmxvb3JlZEludFBvaW50KHNjcm9sbE9mZnNldCksIHNjcm9sbE9yaWdpbigp
LCAxLCBmYWxzZSwgYmVoYXZpb3JGb3JGaXhlZCwgaGVhZGVySGVpZ2h0KCksIGZvb3RlckhlaWdo
dCgpKS53aWR0aCgpOwotCi0gICAgICAgIGlmIChtX2hlYWRlckxheWVyKQotICAgICAgICAgICAg
W21faGVhZGVyTGF5ZXIgc2V0UG9zaXRpb246RmxvYXRQb2ludChob3Jpem9udGFsU2Nyb2xsT2Zm
c2V0Rm9yQmFubmVyLCAwKV07Ci0KLSAgICAgICAgaWYgKG1fZm9vdGVyTGF5ZXIpCi0gICAgICAg
ICAgICBbbV9mb290ZXJMYXllciBzZXRQb3NpdGlvbjpGbG9hdFBvaW50KGhvcml6b250YWxTY3Jv
bGxPZmZzZXRGb3JCYW5uZXIsIHRvdGFsQ29udGVudHNTaXplKCkuaGVpZ2h0KCkgLSBmb290ZXJI
ZWlnaHQoKSldOwotICAgIH0KLSAgICAKLSAgICBpZiAoIW1fY2hpbGRyZW4pCi0gICAgICAgIHJl
dHVybjsKLSAgICAKLSAgICB2aWV3cG9ydFJlY3Quc2V0TG9jYXRpb24oc2Nyb2xsT2Zmc2V0KTsK
LSAgICAKLSAgICBGbG9hdFJlY3Qgdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHNSZWN0ID0gRnJh
bWVWaWV3OjpyZWN0Rm9yVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMoZW5jbG9zaW5nTGF5b3V0
UmVjdCh2aWV3cG9ydFJlY3QpLCB0b3RhbENvbnRlbnRzU2l6ZSgpLCBmcmFtZVNjYWxlRmFjdG9y
KCksIGZhbHNlLCBiZWhhdmlvckZvckZpeGVkKTsKLSAgICAKLSAgICBzaXplX3Qgc2l6ZSA9IG1f
Y2hpbGRyZW4tPnNpemUoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkK
LSAgICAgICAgbV9jaGlsZHJlbi0+YXQoaSktPnBhcmVudFNjcm9sbFBvc2l0aW9uRGlkQ2hhbmdl
KHZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzUmVjdCwgRmxvYXRTaXplKCkpOwotfQotCi1GbG9h
dFBvaW50IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TOjptaW5pbXVtU2Nyb2xsUG9zaXRp
b24oKSBjb25zdAotewotICAgIEZsb2F0UG9pbnQgcG9zaXRpb247Ci0gICAgCi0gICAgaWYgKHNj
cm9sbGluZ1RyZWUoKS5yb290Tm9kZSgpID09IHRoaXMgJiYgc2Nyb2xsaW5nVHJlZSgpLnNjcm9s
bFBpbm5pbmdCZWhhdmlvcigpID09IFBpblRvQm90dG9tKQotICAgICAgICBwb3NpdGlvbi5zZXRZ
KG1heGltdW1TY3JvbGxQb3NpdGlvbigpLnkoKSk7Ci0KLSAgICByZXR1cm4gcG9zaXRpb247Ci19
Ci0KLUZsb2F0UG9pbnQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1M6Om1heGltdW1TY3Jv
bGxQb3NpdGlvbigpIGNvbnN0Ci17Ci0gICAgRmxvYXRQb2ludCBwb3NpdGlvbih0b3RhbENvbnRl
bnRzU2l6ZUZvclJ1YmJlckJhbmQoKS53aWR0aCgpIC0gdmlld3BvcnRTaXplKCkud2lkdGgoKSwK
LSAgICAgICAgdG90YWxDb250ZW50c1NpemVGb3JSdWJiZXJCYW5kKCkuaGVpZ2h0KCkgLSB2aWV3
cG9ydFNpemUoKS5oZWlnaHQoKSk7Ci0KLSAgICBwb3NpdGlvbiA9IHBvc2l0aW9uLmV4cGFuZGVk
VG8oRmxvYXRQb2ludCgpKTsKLQotICAgIGlmIChzY3JvbGxpbmdUcmVlKCkucm9vdE5vZGUoKSA9
PSB0aGlzICYmIHNjcm9sbGluZ1RyZWUoKS5zY3JvbGxQaW5uaW5nQmVoYXZpb3IoKSA9PSBQaW5U
b1RvcCkKLSAgICAgICAgcG9zaXRpb24uc2V0WShtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKS55KCkp
OwotCi0gICAgcmV0dXJuIHBvc2l0aW9uOwotfQotCi12b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlSU9TOjpzY3JvbGxCeShjb25zdCBJbnRTaXplJiBvZmZzZXQpCi17Ci0gICAgc2V0U2Ny
b2xsUG9zaXRpb24oc2Nyb2xsUG9zaXRpb24oKSArIG9mZnNldCk7Ci19Ci0KLXZvaWQgU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVJT1M6OnNjcm9sbEJ5V2l0aG91dENvbnRlbnRFZGdlQ29uc3Ry
YWludHMoY29uc3QgSW50U2l6ZSYgb2Zmc2V0KQotewotICAgIHNldFNjcm9sbFBvc2l0aW9uV2l0
aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMoc2Nyb2xsUG9zaXRpb24oKSArIG9mZnNldCk7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JP
TExJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Ny
b2xsaW5nQ29vcmRpbmF0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9t
YWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW0KaW5kZXggNzRmZTIxYWZmNjE1ODA3MjViYzEz
YTc4ZmNlYjc5NzQwMjkxZjhmZS4uZjA2ZTgzZDI0ZTlhOTA5MGJiNTIxMjY0NjhjNWQ4MmExNDU0
MzZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9s
bGluZ0Nvb3JkaW5hdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5tbQpAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1
ZGUgIlNjcm9sbGluZ1N0YXRlVHJlZS5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1RocmVhZC5oIgog
I2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVGaXhlZE5vZGUuaCIKLSNpbmNsdWRlICJTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZU1hYy5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGVNYWMuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oIgogI2lu
Y2x1ZGUgIlRocmVhZGVkU2Nyb2xsaW5nVHJlZS5oIgogI2luY2x1ZGUgIlRpbGVkQmFja2luZy5o
IgpAQCAtMTQ4LDcgKzE0OCw3IEBAIFBhc3NPd25QdHI8U2Nyb2xsaW5nVHJlZU5vZGU+IFNjcm9s
bGluZ0Nvb3JkaW5hdG9yTWFjOjpjcmVhdGVTY3JvbGxpbmdUcmVlTm9kZShTCiAKICAgICBzd2l0
Y2ggKG5vZGVUeXBlKSB7CiAgICAgY2FzZSBGcmFtZVNjcm9sbGluZ05vZGU6Ci0gICAgICAgIHJl
dHVybiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZU1hYzo6Y3JlYXRlKCpzY3JvbGxpbmdUcmVl
KCksIG5vZGVUeXBlLCBub2RlSUQpOworICAgICAgICByZXR1cm4gU2Nyb2xsaW5nVHJlZUZyYW1l
U2Nyb2xsaW5nTm9kZU1hYzo6Y3JlYXRlKCpzY3JvbGxpbmdUcmVlKCksIG5vZGVJRCk7CiAgICAg
Y2FzZSBPdmVyZmxvd1Njcm9sbGluZ05vZGU6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdTdGF0ZUZyYW1lU2Ny
b2xsaW5nTm9kZU1hYy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YTQ3ZWE4MmFhNjYyODhjMjVlY2QxZGE2MTQy
MTUwNTc3NmQ2MzNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tCkBAIC0wLDAg
KzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2Ny
b2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUuaCIKKworI2luY2x1ZGUgIkdyYXBoaWNzTGF5
ZXIuaCIKKyNpbmNsdWRlICJTY3JvbGxiYXIuaCIKKyNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZU1h
Yy5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlVHJlZS5oIgorCisjaWYgRU5BQkxFKEFTWU5D
X1NDUk9MTElORykgJiYgUExBVEZPUk0oTUFDKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAg
Cit2b2lkIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRTY3JvbGxiYXJQYWlu
dGVyc0Zyb21TY3JvbGxiYXJzKFNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIsIFNjcm9sbGJh
ciogaG9yaXpvbnRhbFNjcm9sbGJhcikKK3sKKyAgICBTY3JvbGxiYXJUaGVtZSogc2Nyb2xsYmFy
VGhlbWUgPSBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKTsKKyAgICBpZiAoc2Nyb2xsYmFyVGhlbWUt
PmlzTW9ja1RoZW1lKCkpCisgICAgICAgIHJldHVybjsKKyAgICBTY3JvbGxiYXJUaGVtZU1hYyog
bWFjVGhlbWUgPSBzdGF0aWNfY2FzdDxTY3JvbGxiYXJUaGVtZU1hYyo+KHNjcm9sbGJhclRoZW1l
KTsKKworICAgIFNjcm9sbGJhclBhaW50ZXIgdmVydGljYWxQYWludGVyID0gdmVydGljYWxTY3Jv
bGxiYXIgJiYgdmVydGljYWxTY3JvbGxiYXItPnN1cHBvcnRzVXBkYXRlT25TZWNvbmRhcnlUaHJl
YWQoKQorICAgICAgICA/IG1hY1RoZW1lLT5wYWludGVyRm9yU2Nyb2xsYmFyKHZlcnRpY2FsU2Ny
b2xsYmFyKSA6IDA7CisgICAgU2Nyb2xsYmFyUGFpbnRlciBob3Jpem9udGFsUGFpbnRlciA9IGhv
cml6b250YWxTY3JvbGxiYXIgJiYgaG9yaXpvbnRhbFNjcm9sbGJhci0+c3VwcG9ydHNVcGRhdGVP
blNlY29uZGFyeVRocmVhZCgpCisgICAgICAgID8gbWFjVGhlbWUtPnBhaW50ZXJGb3JTY3JvbGxi
YXIoaG9yaXpvbnRhbFNjcm9sbGJhcikgOiAwOworCisgICAgaWYgKG1fdmVydGljYWxTY3JvbGxi
YXJQYWludGVyID09IHZlcnRpY2FsUGFpbnRlciAmJiBtX2hvcml6b250YWxTY3JvbGxiYXJQYWlu
dGVyID09IGhvcml6b250YWxQYWludGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3ZlcnRp
Y2FsU2Nyb2xsYmFyUGFpbnRlciA9IHZlcnRpY2FsUGFpbnRlcjsKKyAgICBtX2hvcml6b250YWxT
Y3JvbGxiYXJQYWludGVyID0gaG9yaXpvbnRhbFBhaW50ZXI7CisKKyAgICBzZXRQcm9wZXJ0eUNo
YW5nZWQoUGFpbnRlckZvclNjcm9sbGJhcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFBMQVRGT1JNKE1BQykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMv
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlTWFjLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA3YjVkYjYzYzIyNDdhOGQ0YzAyOWMwMTI4NjZkOWU0ZjM1YzQ2NGZjLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGVNYWMubW0KKysrIC9k
ZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5oIgotCi0jaW5jbHVkZSAi
R3JhcGhpY3NMYXllci5oIgotI2luY2x1ZGUgIlNjcm9sbGJhci5oIgotI2luY2x1ZGUgIlNjcm9s
bGJhclRoZW1lTWFjLmgiCi0jaW5jbHVkZSAiU2Nyb2xsaW5nU3RhdGVUcmVlLmgiCi0KLSNpZiBF
TkFCTEUoQVNZTkNfU0NST0xMSU5HKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci12b2lkIFNjcm9s
bGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0U2Nyb2xsYmFyUGFpbnRlcnNGcm9tU2Nyb2xsYmFy
cyhTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyLCBTY3JvbGxiYXIqIGhvcml6b250YWxTY3Jv
bGxiYXIpCi17Ci0gICAgU2Nyb2xsYmFyVGhlbWUqIHNjcm9sbGJhclRoZW1lID0gU2Nyb2xsYmFy
VGhlbWU6OnRoZW1lKCk7Ci0gICAgaWYgKHNjcm9sbGJhclRoZW1lLT5pc01vY2tUaGVtZSgpKQot
ICAgICAgICByZXR1cm47Ci0gICAgU2Nyb2xsYmFyVGhlbWVNYWMqIG1hY1RoZW1lID0gc3RhdGlj
X2Nhc3Q8U2Nyb2xsYmFyVGhlbWVNYWMqPihzY3JvbGxiYXJUaGVtZSk7Ci0KLSAgICBTY3JvbGxi
YXJQYWludGVyIHZlcnRpY2FsUGFpbnRlciA9IHZlcnRpY2FsU2Nyb2xsYmFyICYmIHZlcnRpY2Fs
U2Nyb2xsYmFyLT5zdXBwb3J0c1VwZGF0ZU9uU2Vjb25kYXJ5VGhyZWFkKCkKLSAgICAgICAgPyBt
YWNUaGVtZS0+cGFpbnRlckZvclNjcm9sbGJhcih2ZXJ0aWNhbFNjcm9sbGJhcikgOiAwOwotICAg
IFNjcm9sbGJhclBhaW50ZXIgaG9yaXpvbnRhbFBhaW50ZXIgPSBob3Jpem9udGFsU2Nyb2xsYmFy
ICYmIGhvcml6b250YWxTY3JvbGxiYXItPnN1cHBvcnRzVXBkYXRlT25TZWNvbmRhcnlUaHJlYWQo
KQotICAgICAgICA/IG1hY1RoZW1lLT5wYWludGVyRm9yU2Nyb2xsYmFyKGhvcml6b250YWxTY3Jv
bGxiYXIpIDogMDsKLQotICAgIGlmIChtX3ZlcnRpY2FsU2Nyb2xsYmFyUGFpbnRlciA9PSB2ZXJ0
aWNhbFBhaW50ZXIgJiYgbV9ob3Jpem9udGFsU2Nyb2xsYmFyUGFpbnRlciA9PSBob3Jpem9udGFs
UGFpbnRlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV92ZXJ0aWNhbFNjcm9sbGJhclBhaW50
ZXIgPSB2ZXJ0aWNhbFBhaW50ZXI7Ci0gICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyUGFpbnRlciA9
IGhvcml6b250YWxQYWludGVyOwotCi0gICAgc2V0UHJvcGVydHlDaGFuZ2VkKFBhaW50ZXJGb3JT
Y3JvbGxiYXIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoQVNZTkNfU0NST0xMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
TWFjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uN2RmZWFmNjM2M2UwZjkxYmFmZDg3MGVhNzg3MWY4MzE4ODdiYTY0
NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9T
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLmgKQEAgLTAsMCArMSwxMDYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWNfaAor
I2RlZmluZSBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjX2gKKworI2lmIEVOQUJM
RShBU1lOQ19TQ1JPTExJTkcpICYmIFBMQVRGT1JNKE1BQykKKworI2luY2x1ZGUgIlNjcm9sbEVs
YXN0aWNpdHlDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVNYWMuaCIKKyNp
bmNsdWRlICJTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLmgiCisjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgorCitPQkpDX0NMQVNTIENBTGF5ZXI7CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYyA6IHB1YmxpYyBT
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLCBwcml2YXRlIFNjcm9sbEVsYXN0aWNpdHlD
b250cm9sbGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxTY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPiBjcmVhdGUoU2Nyb2xsaW5nVHJlZSYsIFNjcm9sbGlu
Z05vZGVJRCk7CisgICAgdmlydHVhbCB+U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1h
YygpOworCitwcml2YXRlOgorICAgIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMo
U2Nyb2xsaW5nVHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7CisKKyAgICAvLyBTY3JvbGxpbmdUcmVl
Tm9kZSBtZW1iZXIgZnVuY3Rpb25zLgorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCZWZvcmVDaGls
ZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlQWZ0ZXJDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmKSBvdmVycmlkZTsKKworICAgIC8vIFNjcm9sbEVsYXN0aWNpdHlDb250cm9sbGVyIG1l
bWJlciBmdW5jdGlvbnMuCisgICAgdmlydHVhbCBib29sIGFsbG93c0hvcml6b250YWxTdHJldGNo
aW5nKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGFsbG93c1ZlcnRpY2FsU3RyZXRjaGlu
ZygpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgSW50U2l6ZSBzdHJldGNoQW1vdW50KCkgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBib29sIHBpbm5lZEluRGlyZWN0aW9uKGNvbnN0IEZsb2F0U2l6ZSYp
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBjYW5TY3JvbGxIb3Jpem9udGFsbHkoKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuU2Nyb2xsVmVydGljYWxseSgpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSdWJiZXJCYW5kSW5EaXJlY3Rpb24oU2Nyb2xsRGlyZWN0
aW9uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIEludFBvaW50IGFic29sdXRlU2Nyb2xsUG9zaXRp
b24oKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgaW1tZWRpYXRlU2Nyb2xsQnkoY29uc3Qg
RmxvYXRTaXplJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGltbWVkaWF0ZVNjcm9sbEJ5
V2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMoY29uc3QgRmxvYXRTaXplJikgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0U25hcFJ1YmJlcmJhbmRUaW1lcigpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBzdG9wU25hcFJ1YmJlcmJhbmRUaW1lcigpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBhZGp1c3RTY3JvbGxQb3NpdGlvblRvQm91bmRzSWZOZWNlc3NhcnkoKSBv
dmVycmlkZTsKKworICAgIEZsb2F0UG9pbnQgc2Nyb2xsUG9zaXRpb24oKSBjb25zdDsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbldpdGhvdXRDb250ZW50RWRnZUNv
bnN0cmFpbnRzKGNvbnN0IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKKworICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVMYXllcnNBZnRlclZpZXdwb3J0Q2hhbmdlKGNvbnN0IEZsb2F0UmVjdCYgdmlld3Bv
cnRSZWN0LCBkb3VibGUgc2NhbGUpIG92ZXJyaWRlOworCisgICAgdmlydHVhbCB2b2lkIHNldFNj
cm9sbExheWVyUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYpIG92ZXJyaWRlOworCisgICAgdmly
dHVhbCBGbG9hdFBvaW50IG1pbmltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgRmxvYXRQb2ludCBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdCBvdmVy
cmlkZTsKKworICAgIHZvaWQgc2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYpOworICAgIHZvaWQgc2Ny
b2xsQnlXaXRob3V0Q29udGVudEVkZ2VDb25zdHJhaW50cyhjb25zdCBJbnRTaXplJik7CisKKyAg
ICB2b2lkIHVwZGF0ZU1haW5GcmFtZVBpblN0YXRlKGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBv
c2l0aW9uKTsKKworICAgIHZvaWQgbG9nRXhwb3NlZFVuZmlsbGVkQXJlYSgpOworCisgICAgU2Ny
b2xsRWxhc3RpY2l0eUNvbnRyb2xsZXIgbV9zY3JvbGxFbGFzdGljaXR5Q29udHJvbGxlcjsKKyAg
ICBSZXRhaW5QdHI8Q0ZSdW5Mb29wVGltZXJSZWY+IG1fc25hcFJ1YmJlcmJhbmRUaW1lcjsKKwor
ICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3Njcm9sbExheWVyOworICAgIFJldGFpblB0cjxDQUxh
eWVyPiBtX3Njcm9sbGVkQ29udGVudHNMYXllcjsKKyAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9j
b3VudGVyU2Nyb2xsaW5nTGF5ZXI7CisgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1faW5zZXRDbGlw
TGF5ZXI7CisgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fY29udGVudFNoYWRvd0xheWVyOworICAg
IFJldGFpblB0cjxDQUxheWVyPiBtX2hlYWRlckxheWVyOworICAgIFJldGFpblB0cjxDQUxheWVy
PiBtX2Zvb3RlckxheWVyOworICAgIFJldGFpblB0cjxTY3JvbGxiYXJQYWludGVyPiBtX3ZlcnRp
Y2FsU2Nyb2xsYmFyUGFpbnRlcjsKKyAgICBSZXRhaW5QdHI8U2Nyb2xsYmFyUGFpbnRlcj4gbV9o
b3Jpem9udGFsU2Nyb2xsYmFyUGFpbnRlcjsKKyAgICBGbG9hdFBvaW50IG1fcHJvYmFibGVNYWlu
VGhyZWFkU2Nyb2xsUG9zaXRpb247CisgICAgYm9vbCBtX2xhc3RTY3JvbGxIYWRVbmZpbGxlZFBp
eGVsczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShB
U1lOQ19TQ1JPTExJTkcpICYmIFBMQVRGT1JNKE1BQykKKworI2VuZGlmIC8vIFNjcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVNYWNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZU1hYy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMjkwMWNmM2MzZGZlYWFiMDg3YmY4MGQwOWMzYzRh
MjBlMzQxZmJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW0KQEAgLTAsMCArMSw1
MjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlNj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMuaCIKKworI2lmIEVOQUJMRShBU1lOQ19T
Q1JPTExJTkcpICYmIFBMQVRGT1JNKE1BQykKKworI2ltcG9ydCAiRnJhbWVWaWV3LmgiCisjaW1w
b3J0ICJOU1Njcm9sbGVySW1wRGV0YWlscy5oIgorI2ltcG9ydCAiUGxhdGZvcm1XaGVlbEV2ZW50
LmgiCisjaW1wb3J0ICJTY3JvbGxpbmdDb29yZGluYXRvci5oIgorI2ltcG9ydCAiU2Nyb2xsaW5n
VHJlZS5oIgorI2ltcG9ydCAiU2Nyb2xsaW5nU3RhdGVUcmVlLmgiCisjaW1wb3J0ICJTZXR0aW5n
cy5oIgorI2ltcG9ydCAiVGlsZUNvbnRyb2xsZXIuaCIKKyNpbXBvcnQgIldlYkxheWVyLmgiCisK
KyNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgorI2ltcG9ydCA8d3RmL0N1cnJlbnRU
aW1lLmg+CisjaW1wb3J0IDx3dGYvRGVxdWUuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitzdGF0aWMgdm9pZCBsb2dUaHJlYWRlZFNjcm9sbGluZ01vZGUodW5zaWduZWQgc3lu
Y2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKTsKK3N0YXRpYyB2b2lkIGxvZ1doZWVsRXZlbnRIYW5k
bGVyQ291bnRDaGFuZ2VkKHVuc2lnbmVkKTsKKworCitQYXNzT3duUHRyPFNjcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGU+IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6OmNy
ZWF0ZShTY3JvbGxpbmdUcmVlJiBzY3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlE
KQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZU1hYyhzY3JvbGxpbmdUcmVlLCBub2RlSUQpKTsKK30KKworU2Nyb2xsaW5nVHJlZUZyYW1l
U2Nyb2xsaW5nTm9kZU1hYzo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYyhTY3Jv
bGxpbmdUcmVlJiBzY3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQorICAgIDog
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZShzY3JvbGxpbmdUcmVlLCBub2RlSUQpCisg
ICAgLCBtX3Njcm9sbEVsYXN0aWNpdHlDb250cm9sbGVyKHRoaXMpCisgICAgLCBtX3ZlcnRpY2Fs
U2Nyb2xsYmFyUGFpbnRlcigwKQorICAgICwgbV9ob3Jpem9udGFsU2Nyb2xsYmFyUGFpbnRlcigw
KQorICAgICwgbV9sYXN0U2Nyb2xsSGFkVW5maWxsZWRQaXhlbHMoZmFsc2UpCit7Cit9CisKK1Nj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6On5TY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlTWFjKCkKK3sKKyAgICBpZiAobV9zbmFwUnViYmVyYmFuZFRpbWVyKQorICAgICAg
ICBDRlJ1bkxvb3BUaW1lckludmFsaWRhdGUobV9zbmFwUnViYmVyYmFuZFRpbWVyLmdldCgpKTsK
K30KKwordm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjp1cGRhdGVCZWZv
cmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmIHN0YXRlTm9kZSkKK3sKKyAgICBT
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlOjp1cGRhdGVCZWZvcmVDaGlsZHJlbihzdGF0
ZU5vZGUpOworICAgIGNvbnN0IGF1dG8mIHNjcm9sbGluZ1N0YXRlTm9kZSA9IHRvU2Nyb2xsaW5n
U3RhdGVGcmFtZVNjcm9sbGluZ05vZGUoc3RhdGVOb2RlKTsKKworICAgIGlmIChzY3JvbGxpbmdT
dGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6U2Nyb2xsTGF5
ZXIpKQorICAgICAgICBtX3Njcm9sbExheWVyID0gc2Nyb2xsaW5nU3RhdGVOb2RlLmxheWVyKCk7
CisgICAgCisgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Ny
b2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkNvdW50ZXJTY3JvbGxpbmdMYXllcikpCisg
ICAgICAgIG1fY291bnRlclNjcm9sbGluZ0xheWVyID0gc2Nyb2xsaW5nU3RhdGVOb2RlLmNvdW50
ZXJTY3JvbGxpbmdMYXllcigpOworCisgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFu
Z2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6Okluc2V0Q2xpcExh
eWVyKSkKKyAgICAgICAgbV9pbnNldENsaXBMYXllciA9IHNjcm9sbGluZ1N0YXRlTm9kZS5pbnNl
dENsaXBMYXllcigpOworCisgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJv
cGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkNvbnRlbnRTaGFkb3dMYXll
cikpCisgICAgICAgIG1fY29udGVudFNoYWRvd0xheWVyID0gc2Nyb2xsaW5nU3RhdGVOb2RlLmNv
bnRlbnRTaGFkb3dMYXllcigpOworCisgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFu
Z2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkhlYWRlckxheWVy
KSkKKyAgICAgICAgbV9oZWFkZXJMYXllciA9IHNjcm9sbGluZ1N0YXRlTm9kZS5oZWFkZXJMYXll
cigpOworCisgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Ny
b2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkZvb3RlckxheWVyKSkKKyAgICAgICAgbV9m
b290ZXJMYXllciA9IHNjcm9sbGluZ1N0YXRlTm9kZS5mb290ZXJMYXllcigpOworCisgICAgaWYg
KHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFt
ZVNjcm9sbGluZ05vZGU6OlBhaW50ZXJGb3JTY3JvbGxiYXIpKSB7CisgICAgICAgIG1fdmVydGlj
YWxTY3JvbGxiYXJQYWludGVyID0gc2Nyb2xsaW5nU3RhdGVOb2RlLnZlcnRpY2FsU2Nyb2xsYmFy
UGFpbnRlcigpOworICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXJQYWludGVyID0gc2Nyb2xs
aW5nU3RhdGVOb2RlLmhvcml6b250YWxTY3JvbGxiYXJQYWludGVyKCk7CisgICAgfQorCisgICAg
aWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVG
cmFtZVNjcm9sbGluZ05vZGU6OlJlYXNvbnNGb3JTeW5jaHJvbm91c1Njcm9sbGluZykpIHsKKyAg
ICAgICAgaWYgKHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25TeW5jaHJvbm91c2x5KCkp
IHsKKyAgICAgICAgICAgIC8vIFdlJ3JlIHRyYW5zaXRpb25pbmcgdG8gdGhlIHNsb3cgInVwZGF0
ZSBzY3JvbGwgbGF5ZXIgcG9zaXRpb24gb24gdGhlIG1haW4gdGhyZWFkIiBtb2RlLgorICAgICAg
ICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgcHJvYmFibGUgbWFpbiB0aHJlYWQgc2Nyb2xsIHBvc2l0
aW9uIHdpdGggdGhlIGN1cnJlbnQgc2Nyb2xsIGxheWVyIHBvc2l0aW9uLgorICAgICAgICAgICAg
aWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlOjpSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbikpCisgICAgICAgICAgICAgICAg
bV9wcm9iYWJsZU1haW5UaHJlYWRTY3JvbGxQb3NpdGlvbiA9IHNjcm9sbGluZ1N0YXRlTm9kZS5y
ZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbigpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgICAgQ0dQb2ludCBzY3JvbGxMYXllclBvc2l0aW9uID0gbV9zY3JvbGxMYXllci5nZXQoKS5w
b3NpdGlvbjsKKyAgICAgICAgICAgICAgICBtX3Byb2JhYmxlTWFpblRocmVhZFNjcm9sbFBvc2l0
aW9uID0gSW50UG9pbnQoLXNjcm9sbExheWVyUG9zaXRpb24ueCwgLXNjcm9sbExheWVyUG9zaXRp
b24ueSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoc2Nyb2xsaW5n
VHJlZSgpLnNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoKSkKKyAgICAgICAgICAg
IGxvZ1RocmVhZGVkU2Nyb2xsaW5nTW9kZShzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoKSk7
CisgICAgfQorCisgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHko
U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OldoZWVsRXZlbnRIYW5kbGVyQ291bnQp
KSB7CisgICAgICAgIGlmIChzY3JvbGxpbmdUcmVlKCkuc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dn
aW5nRW5hYmxlZCgpKQorICAgICAgICAgICAgbG9nV2hlZWxFdmVudEhhbmRsZXJDb3VudENoYW5n
ZWQoc2Nyb2xsaW5nU3RhdGVOb2RlLndoZWVsRXZlbnRIYW5kbGVyQ291bnQoKSk7CisgICAgfQor
fQorCit2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6OnVwZGF0ZUFmdGVy
Q2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJiBzdGF0ZU5vZGUpCit7CisgICAgU2Ny
b2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZTo6dXBkYXRlQWZ0ZXJDaGlsZHJlbihzdGF0ZU5v
ZGUpOworCisgICAgY29uc3QgYXV0byYgc2Nyb2xsaW5nU3RhdGVOb2RlID0gdG9TY3JvbGxpbmdT
dGF0ZVNjcm9sbGluZ05vZGUoc3RhdGVOb2RlKTsKKworICAgIC8vIFVwZGF0ZSB0aGUgc2Nyb2xs
IHBvc2l0aW9uIGFmdGVyIGNoaWxkIG5vZGVzIGhhdmUgYmVlbiB1cGRhdGVkLCBiZWNhdXNlIHRo
ZXkgbmVlZCB0byBoYXZlIHVwZGF0ZWQgdGhlaXIgY29uc3RyYWludHMgYmVmb3JlIGFueSBzY3Jv
bGxpbmcgaGFwcGVucy4KKyAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9w
ZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlJlcXVlc3RlZFNjcm9sbFBvc2l0aW9u
KSkKKyAgICAgICAgc2V0U2Nyb2xsUG9zaXRpb24oc2Nyb2xsaW5nU3RhdGVOb2RlLnJlcXVlc3Rl
ZFNjcm9sbFBvc2l0aW9uKCkpOworCisgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFu
Z2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpTY3JvbGxMYXllcikKKyAgICAgICAgfHwg
c2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGU6OlRvdGFsQ29udGVudHNTaXplKQorICAgICAgICB8fCBzY3JvbGxpbmdTdGF0ZU5v
ZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xs
YWJsZUFyZWFTaXplKSkKKyAgICAgICAgdXBkYXRlTWFpbkZyYW1lUGluU3RhdGUoc2Nyb2xsUG9z
aXRpb24oKSk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6
aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCit7
CisgICAgaWYgKCFjYW5IYXZlU2Nyb2xsYmFycygpKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAod2hlZWxFdmVudC5tb21lbnR1bVBoYXNlKCkgPT0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VC
ZWdhbikgeworICAgICAgICBbbV92ZXJ0aWNhbFNjcm9sbGJhclBhaW50ZXIgc2V0VXNlUHJlc2Vu
dGF0aW9uVmFsdWU6WUVTXTsKKyAgICAgICAgW21faG9yaXpvbnRhbFNjcm9sbGJhclBhaW50ZXIg
c2V0VXNlUHJlc2VudGF0aW9uVmFsdWU6WUVTXTsKKyAgICB9CisgICAgaWYgKHdoZWVsRXZlbnQu
bW9tZW50dW1QaGFzZSgpID09IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlRW5kZWQgfHwgd2hlZWxF
dmVudC5tb21lbnR1bVBoYXNlKCkgPT0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VDYW5jZWxsZWQp
IHsKKyAgICAgICAgW21fdmVydGljYWxTY3JvbGxiYXJQYWludGVyIHNldFVzZVByZXNlbnRhdGlv
blZhbHVlOk5PXTsKKyAgICAgICAgW21faG9yaXpvbnRhbFNjcm9sbGJhclBhaW50ZXIgc2V0VXNl
UHJlc2VudGF0aW9uVmFsdWU6Tk9dOworICAgIH0KKworICAgIG1fc2Nyb2xsRWxhc3RpY2l0eUNv
bnRyb2xsZXIuaGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50KTsKKyAgICBzY3JvbGxpbmdUcmVl
KCkuc2V0T3JDbGVhckxhdGNoZWROb2RlKHdoZWVsRXZlbnQsIHNjcm9sbGluZ05vZGVJRCgpKTsK
KyAgICBzY3JvbGxpbmdUcmVlKCkuaGFuZGxlV2hlZWxFdmVudFBoYXNlKHdoZWVsRXZlbnQucGhh
c2UoKSk7Cit9CisKK2Jvb2wgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6YWxs
b3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcoKQoreworICAgIHN3aXRjaCAoaG9yaXpvbnRhbFNjcm9s
bEVsYXN0aWNpdHkoKSkgeworICAgIGNhc2UgU2Nyb2xsRWxhc3RpY2l0eUF1dG9tYXRpYzoKKyAg
ICAgICAgcmV0dXJuIGhhc0VuYWJsZWRIb3Jpem9udGFsU2Nyb2xsYmFyKCkgfHwgIWhhc0VuYWJs
ZWRWZXJ0aWNhbFNjcm9sbGJhcigpOworICAgIGNhc2UgU2Nyb2xsRWxhc3RpY2l0eU5vbmU6Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjYXNlIFNjcm9sbEVsYXN0aWNpdHlBbGxvd2VkOgor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZU1hYzo6YWxsb3dzVmVydGljYWxTdHJldGNoaW5nKCkKK3sKKyAgICBzd2l0Y2ggKHZlcnRp
Y2FsU2Nyb2xsRWxhc3RpY2l0eSgpKSB7CisgICAgY2FzZSBTY3JvbGxFbGFzdGljaXR5QXV0b21h
dGljOgorICAgICAgICByZXR1cm4gaGFzRW5hYmxlZFZlcnRpY2FsU2Nyb2xsYmFyKCkgfHwgIWhh
c0VuYWJsZWRIb3Jpem9udGFsU2Nyb2xsYmFyKCk7CisgICAgY2FzZSBTY3JvbGxFbGFzdGljaXR5
Tm9uZToKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNhc2UgU2Nyb2xsRWxhc3RpY2l0eUFs
bG93ZWQ6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworSW50U2l6ZSBTY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlTWFjOjpzdHJldGNoQW1vdW50KCkKK3sKKyAgICBJbnRTaXplIHN0cmV0
Y2g7CisKKyAgICBpZiAoc2Nyb2xsUG9zaXRpb24oKS55KCkgPCBtaW5pbXVtU2Nyb2xsUG9zaXRp
b24oKS55KCkpCisgICAgICAgIHN0cmV0Y2guc2V0SGVpZ2h0KHNjcm9sbFBvc2l0aW9uKCkueSgp
IC0gbWluaW11bVNjcm9sbFBvc2l0aW9uKCkueSgpKTsKKyAgICBlbHNlIGlmIChzY3JvbGxQb3Np
dGlvbigpLnkoKSA+IG1heGltdW1TY3JvbGxQb3NpdGlvbigpLnkoKSkKKyAgICAgICAgc3RyZXRj
aC5zZXRIZWlnaHQoc2Nyb2xsUG9zaXRpb24oKS55KCkgLSBtYXhpbXVtU2Nyb2xsUG9zaXRpb24o
KS55KCkpOworCisgICAgaWYgKHNjcm9sbFBvc2l0aW9uKCkueCgpIDwgbWluaW11bVNjcm9sbFBv
c2l0aW9uKCkueCgpKQorICAgICAgICBzdHJldGNoLnNldFdpZHRoKHNjcm9sbFBvc2l0aW9uKCku
eCgpIC0gbWluaW11bVNjcm9sbFBvc2l0aW9uKCkueCgpKTsKKyAgICBlbHNlIGlmIChzY3JvbGxQ
b3NpdGlvbigpLngoKSA+IG1heGltdW1TY3JvbGxQb3NpdGlvbigpLngoKSkKKyAgICAgICAgc3Ry
ZXRjaC5zZXRXaWR0aChzY3JvbGxQb3NpdGlvbigpLngoKSAtIG1heGltdW1TY3JvbGxQb3NpdGlv
bigpLngoKSk7CisKKyAgICBpZiAoc2Nyb2xsaW5nVHJlZSgpLnJvb3ROb2RlKCkgPT0gdGhpcykg
eworICAgICAgICBpZiAoc3RyZXRjaC5pc1plcm8oKSkKKyAgICAgICAgICAgIHNjcm9sbGluZ1Ry
ZWUoKS5zZXRNYWluRnJhbWVJc1J1YmJlckJhbmRpbmcoZmFsc2UpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBzY3JvbGxpbmdUcmVlKCkuc2V0TWFpbkZyYW1lSXNSdWJiZXJCYW5kaW5nKHRy
dWUpOworICAgIH0KKworICAgIHJldHVybiBzdHJldGNoOworfQorCitib29sIFNjcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6OnBpbm5lZEluRGlyZWN0aW9uKGNvbnN0IEZsb2F0U2l6
ZSYgZGVsdGEpCit7CisgICAgRmxvYXRTaXplIGxpbWl0RGVsdGE7CisKKyAgICBpZiAoZmFic2Yo
ZGVsdGEuaGVpZ2h0KCkpID49IGZhYnNmKGRlbHRhLndpZHRoKCkpKSB7CisgICAgICAgIGlmIChk
ZWx0YS5oZWlnaHQoKSA8IDApIHsKKyAgICAgICAgICAgIC8vIFdlIGFyZSB0cnlpbmcgdG8gc2Ny
b2xsIHVwLiBNYWtlIHN1cmUgd2UgYXJlIG5vdCBwaW5uZWQgdG8gdGhlIHRvcC4KKyAgICAgICAg
ICAgIGxpbWl0RGVsdGEuc2V0SGVpZ2h0KHNjcm9sbFBvc2l0aW9uKCkueSgpIC0gbWluaW11bVNj
cm9sbFBvc2l0aW9uKCkueSgpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFdl
IGFyZSB0cnlpbmcgdG8gc2Nyb2xsIGRvd24uIE1ha2Ugc3VyZSB3ZSBhcmUgbm90IHBpbm5lZCB0
byB0aGUgYm90dG9tLgorICAgICAgICAgICAgbGltaXREZWx0YS5zZXRIZWlnaHQobWF4aW11bVNj
cm9sbFBvc2l0aW9uKCkueSgpIC0gc2Nyb2xsUG9zaXRpb24oKS55KCkpOworICAgICAgICB9Cisg
ICAgfSBlbHNlIGlmIChkZWx0YS53aWR0aCgpKSB7CisgICAgICAgIGlmIChkZWx0YS53aWR0aCgp
IDwgMCkgeworICAgICAgICAgICAgLy8gV2UgYXJlIHRyeWluZyB0byBzY3JvbGwgbGVmdC4gTWFr
ZSBzdXJlIHdlIGFyZSBub3QgcGlubmVkIHRvIHRoZSBsZWZ0LgorICAgICAgICAgICAgbGltaXRE
ZWx0YS5zZXRXaWR0aChzY3JvbGxQb3NpdGlvbigpLngoKSAtIG1pbmltdW1TY3JvbGxQb3NpdGlv
bigpLngoKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBXZSBhcmUgdHJ5aW5n
IHRvIHNjcm9sbCByaWdodC4gTWFrZSBzdXJlIHdlIGFyZSBub3QgcGlubmVkIHRvIHRoZSByaWdo
dC4KKyAgICAgICAgICAgIGxpbWl0RGVsdGEuc2V0V2lkdGgobWF4aW11bVNjcm9sbFBvc2l0aW9u
KCkueCgpIC0gc2Nyb2xsUG9zaXRpb24oKS54KCkpOworICAgICAgICB9CisgICAgfQorCisgICAg
aWYgKChkZWx0YS53aWR0aCgpIHx8IGRlbHRhLmhlaWdodCgpKSAmJiAobGltaXREZWx0YS53aWR0
aCgpIDwgMSAmJiBsaW1pdERlbHRhLmhlaWdodCgpIDwgMSkpCisgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGVNYWM6OmNhblNjcm9sbEhvcml6b250YWxseSgpCit7CisgICAgcmV0dXJuIGhhc0Vu
YWJsZWRIb3Jpem9udGFsU2Nyb2xsYmFyKCk7Cit9CisKK2Jvb2wgU2Nyb2xsaW5nVHJlZUZyYW1l
U2Nyb2xsaW5nTm9kZU1hYzo6Y2FuU2Nyb2xsVmVydGljYWxseSgpCit7CisgICAgcmV0dXJuIGhh
c0VuYWJsZWRWZXJ0aWNhbFNjcm9sbGJhcigpOworfQorCitib29sIFNjcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGVNYWM6OnNob3VsZFJ1YmJlckJhbmRJbkRpcmVjdGlvbihTY3JvbGxEaXJl
Y3Rpb24pCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK0ludFBvaW50IFNjcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVNYWM6OmFic29sdXRlU2Nyb2xsUG9zaXRpb24oKQoreworICAgIHJl
dHVybiByb3VuZGVkSW50UG9pbnQoc2Nyb2xsUG9zaXRpb24oKSk7Cit9CisKK3ZvaWQgU2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6aW1tZWRpYXRlU2Nyb2xsQnkoY29uc3QgRmxv
YXRTaXplJiBvZmZzZXQpCit7CisgICAgc2Nyb2xsQnkocm91bmRlZEludFNpemUob2Zmc2V0KSk7
Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6aW1tZWRpYXRl
U2Nyb2xsQnlXaXRob3V0Q29udGVudEVkZ2VDb25zdHJhaW50cyhjb25zdCBGbG9hdFNpemUmIG9m
ZnNldCkKK3sKKyAgICBzY3JvbGxCeVdpdGhvdXRDb250ZW50RWRnZUNvbnN0cmFpbnRzKHJvdW5k
ZWRJbnRTaXplKG9mZnNldCkpOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVNYWM6OnN0YXJ0U25hcFJ1YmJlcmJhbmRUaW1lcigpCit7CisgICAgQVNTRVJUKCFtX3Nu
YXBSdWJiZXJiYW5kVGltZXIpOworCisgICAgQ0ZUaW1lSW50ZXJ2YWwgdGltZXJJbnRlcnZhbCA9
IDEuMCAvIDYwLjA7CisKKyAgICBtX3NuYXBSdWJiZXJiYW5kVGltZXIgPSBhZG9wdENGKENGUnVu
TG9vcFRpbWVyQ3JlYXRlV2l0aEhhbmRsZXIoa0NGQWxsb2NhdG9yRGVmYXVsdCwgQ0ZBYnNvbHV0
ZVRpbWVHZXRDdXJyZW50KCkgKyB0aW1lckludGVydmFsLCB0aW1lckludGVydmFsLCAwLCAwLCBe
KENGUnVuTG9vcFRpbWVyUmVmKSB7CisgICAgICAgIG1fc2Nyb2xsRWxhc3RpY2l0eUNvbnRyb2xs
ZXIuc25hcFJ1YmJlckJhbmRUaW1lckZpcmVkKCk7CisgICAgfSkpOworICAgIENGUnVuTG9vcEFk
ZFRpbWVyKENGUnVuTG9vcEdldEN1cnJlbnQoKSwgbV9zbmFwUnViYmVyYmFuZFRpbWVyLmdldCgp
LCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVNYWM6OnN0b3BTbmFwUnViYmVyYmFuZFRpbWVyKCkKK3sKKyAgICBpZiAoIW1f
c25hcFJ1YmJlcmJhbmRUaW1lcikKKyAgICAgICAgcmV0dXJuOworCisgICAgc2Nyb2xsaW5nVHJl
ZSgpLnNldE1haW5GcmFtZUlzUnViYmVyQmFuZGluZyhmYWxzZSk7CisKKyAgICAvLyBTaW5jZSB0
aGUgcnViYmVyYmFuZCB0aW1lciBoYXMgc3RvcHBlZCwgdG90YWxDb250ZW50c1NpemVGb3JSdWJi
ZXJCYW5kIGNhbiBiZSBzeW5jaHJvbml6ZWQgd2l0aCB0b3RhbENvbnRlbnRzU2l6ZS4KKyAgICBz
ZXRUb3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQodG90YWxDb250ZW50c1NpemUoKSk7CisK
KyAgICBDRlJ1bkxvb3BUaW1lckludmFsaWRhdGUobV9zbmFwUnViYmVyYmFuZFRpbWVyLmdldCgp
KTsKKyAgICBtX3NuYXBSdWJiZXJiYW5kVGltZXIgPSBudWxscHRyOworfQorCit2b2lkIFNjcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6OmFkanVzdFNjcm9sbFBvc2l0aW9uVG9Cb3Vu
ZHNJZk5lY2Vzc2FyeSgpCit7CisgICAgRmxvYXRQb2ludCBjdXJyZW50U2Nyb2xsUG9zaXRpb24g
PSBhYnNvbHV0ZVNjcm9sbFBvc2l0aW9uKCk7CisgICAgRmxvYXRQb2ludCBtaW5Qb3NpdGlvbiA9
IG1pbmltdW1TY3JvbGxQb3NpdGlvbigpOworICAgIEZsb2F0UG9pbnQgbWF4UG9zaXRpb24gPSBt
YXhpbXVtU2Nyb2xsUG9zaXRpb24oKTsKKworICAgIGZsb2F0IG5lYXJlc3RYV2l0aGluQm91bmRz
ID0gc3RkOjptYXgoc3RkOjptaW4oY3VycmVudFNjcm9sbFBvc2l0aW9uLngoKSwgbWF4UG9zaXRp
b24ueCgpKSwgbWluUG9zaXRpb24ueCgpKTsKKyAgICBmbG9hdCBuZWFyZXN0WVdpdGhpbkJvdW5k
cyA9IHN0ZDo6bWF4KHN0ZDo6bWluKGN1cnJlbnRTY3JvbGxQb3NpdGlvbi55KCksIG1heFBvc2l0
aW9uLnkoKSksIG1pblBvc2l0aW9uLnkoKSk7CisKKyAgICBGbG9hdFBvaW50IG5lYXJlc3RQb2lu
dFdpdGhpbkJvdW5kcyhuZWFyZXN0WFdpdGhpbkJvdW5kcywgbmVhcmVzdFlXaXRoaW5Cb3VuZHMp
OworICAgIGltbWVkaWF0ZVNjcm9sbEJ5KG5lYXJlc3RQb2ludFdpdGhpbkJvdW5kcyAtIGN1cnJl
bnRTY3JvbGxQb3NpdGlvbik7Cit9CisKK0Zsb2F0UG9pbnQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZU1hYzo6c2Nyb2xsUG9zaXRpb24oKSBjb25zdAoreworICAgIGlmIChzaG91bGRV
cGRhdGVTY3JvbGxMYXllclBvc2l0aW9uU3luY2hyb25vdXNseSgpKQorICAgICAgICByZXR1cm4g
bV9wcm9iYWJsZU1haW5UaHJlYWRTY3JvbGxQb3NpdGlvbjsKKworICAgIENHUG9pbnQgc2Nyb2xs
TGF5ZXJQb3NpdGlvbiA9IG1fc2Nyb2xsTGF5ZXIuZ2V0KCkucG9zaXRpb247CisgICAgcmV0dXJu
IEludFBvaW50KC1zY3JvbGxMYXllclBvc2l0aW9uLnggKyBzY3JvbGxPcmlnaW4oKS54KCksIC1z
Y3JvbGxMYXllclBvc2l0aW9uLnkgKyBzY3JvbGxPcmlnaW4oKS55KCkpOworfQorCit2b2lkIFNj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6OnNldFNjcm9sbFBvc2l0aW9uKGNvbnN0
IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uKQoreworICAgIEZsb2F0UG9pbnQgbmV3U2Nyb2xs
UG9zaXRpb24gPSBzY3JvbGxQb3NpdGlvbjsKKyAgICBuZXdTY3JvbGxQb3NpdGlvbiA9IG5ld1Nj
cm9sbFBvc2l0aW9uLnNocnVua1RvKG1heGltdW1TY3JvbGxQb3NpdGlvbigpKTsKKyAgICBuZXdT
Y3JvbGxQb3NpdGlvbiA9IG5ld1Njcm9sbFBvc2l0aW9uLmV4cGFuZGVkVG8obWluaW11bVNjcm9s
bFBvc2l0aW9uKCkpOworCisgICAgc2V0U2Nyb2xsUG9zaXRpb25XaXRob3V0Q29udGVudEVkZ2VD
b25zdHJhaW50cyhuZXdTY3JvbGxQb3NpdGlvbik7CisKKyAgICBpZiAoc2Nyb2xsaW5nVHJlZSgp
LnNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoKSkKKyAgICAgICAgbG9nRXhwb3Nl
ZFVuZmlsbGVkQXJlYSgpOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVNYWM6OnNldFNjcm9sbFBvc2l0aW9uV2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMoY29u
c3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24pCit7CisgICAgdXBkYXRlTWFpbkZyYW1lUGlu
U3RhdGUoc2Nyb2xsUG9zaXRpb24pOworCisgICAgaWYgKHNob3VsZFVwZGF0ZVNjcm9sbExheWVy
UG9zaXRpb25TeW5jaHJvbm91c2x5KCkpIHsKKyAgICAgICAgbV9wcm9iYWJsZU1haW5UaHJlYWRT
Y3JvbGxQb3NpdGlvbiA9IHNjcm9sbFBvc2l0aW9uOworICAgICAgICBzY3JvbGxpbmdUcmVlKCku
c2Nyb2xsaW5nVHJlZU5vZGVEaWRTY3JvbGwoc2Nyb2xsaW5nTm9kZUlEKCksIHNjcm9sbFBvc2l0
aW9uLCBTZXRTY3JvbGxpbmdMYXllclBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHNldFNjcm9sbExheWVyUG9zaXRpb24oc2Nyb2xsUG9zaXRpb24pOworICAgIHNjcm9s
bGluZ1RyZWUoKS5zY3JvbGxpbmdUcmVlTm9kZURpZFNjcm9sbChzY3JvbGxpbmdOb2RlSUQoKSwg
c2Nyb2xsUG9zaXRpb24pOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVNYWM6OnNldFNjcm9sbExheWVyUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24p
Cit7CisgICAgQVNTRVJUKCFzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uU3luY2hyb25v
dXNseSgpKTsKKyAgICBtX3Njcm9sbExheWVyLmdldCgpLnBvc2l0aW9uID0gQ0dQb2ludE1ha2Uo
LXBvc2l0aW9uLngoKSArIHNjcm9sbE9yaWdpbigpLngoKSwgLXBvc2l0aW9uLnkoKSArIHNjcm9s
bE9yaWdpbigpLnkoKSk7CisKKyAgICBTY3JvbGxCZWhhdmlvckZvckZpeGVkRWxlbWVudHMgYmVo
YXZpb3JGb3JGaXhlZCA9IHNjcm9sbEJlaGF2aW9yRm9yRml4ZWRFbGVtZW50cygpOworICAgIEZs
b2F0UG9pbnQgc2Nyb2xsT2Zmc2V0ID0gcG9zaXRpb24gLSB0b0Zsb2F0U2l6ZShzY3JvbGxPcmln
aW4oKSk7CisgICAgRmxvYXRSZWN0IHZpZXdwb3J0UmVjdChGbG9hdFBvaW50KCksIHNjcm9sbGFi
bGVBcmVhU2l6ZSgpKTsKKyAgICAKKyAgICAvLyBGSVhNRTogc2Nyb2xsT2Zmc2V0Rm9yRml4ZWRQ
b3NpdGlvbigpIG5lZWRzIHRvIGRvIGZsb2F0IG1hdGguCisgICAgRmxvYXRTaXplIHNjcm9sbE9m
ZnNldEZvckZpeGVkQ2hpbGRyZW4gPSBGcmFtZVZpZXc6OnNjcm9sbE9mZnNldEZvckZpeGVkUG9z
aXRpb24oZW5jbG9zaW5nTGF5b3V0UmVjdCh2aWV3cG9ydFJlY3QpLAorICAgICAgICByb3VuZGVk
TGF5b3V0U2l6ZSh0b3RhbENvbnRlbnRzU2l6ZSgpKSwgcm91bmRlZExheW91dFBvaW50KHNjcm9s
bE9mZnNldCksIHNjcm9sbE9yaWdpbigpLCBmcmFtZVNjYWxlRmFjdG9yKCksIGZhbHNlLCBiZWhh
dmlvckZvckZpeGVkLCBoZWFkZXJIZWlnaHQoKSwgZm9vdGVySGVpZ2h0KCkpOworICAgIAorICAg
IGlmIChtX2NvdW50ZXJTY3JvbGxpbmdMYXllcikKKyAgICAgICAgbV9jb3VudGVyU2Nyb2xsaW5n
TGF5ZXIuZ2V0KCkucG9zaXRpb24gPSBGbG9hdFBvaW50KHNjcm9sbE9mZnNldEZvckZpeGVkQ2hp
bGRyZW4pOworCisgICAgZmxvYXQgdG9wQ29udGVudEluc2V0ID0gdGhpcy0+dG9wQ29udGVudElu
c2V0KCk7CisgICAgaWYgKG1faW5zZXRDbGlwTGF5ZXIgJiYgbV9zY3JvbGxlZENvbnRlbnRzTGF5
ZXIgJiYgdG9wQ29udGVudEluc2V0KSB7CisgICAgICAgIG1faW5zZXRDbGlwTGF5ZXIuZ2V0KCku
cG9zaXRpb24gPSBGbG9hdFBvaW50KDAsIEZyYW1lVmlldzo6eVBvc2l0aW9uRm9ySW5zZXRDbGlw
TGF5ZXIocG9zaXRpb24sIHRvcENvbnRlbnRJbnNldCkpOworICAgICAgICBtX3Njcm9sbGVkQ29u
dGVudHNMYXllci5nZXQoKS5wb3NpdGlvbiA9IEZsb2F0UG9pbnQobV9zY3JvbGxlZENvbnRlbnRz
TGF5ZXIuZ2V0KCkucG9zaXRpb24ueCwKKyAgICAgICAgICAgIEZyYW1lVmlldzo6eVBvc2l0aW9u
Rm9yUm9vdENvbnRlbnRMYXllcihwb3NpdGlvbiwgdG9wQ29udGVudEluc2V0LCBoZWFkZXJIZWln
aHQoKSkpOworICAgICAgICBpZiAobV9jb250ZW50U2hhZG93TGF5ZXIpCisgICAgICAgICAgICBt
X2NvbnRlbnRTaGFkb3dMYXllci5nZXQoKS5wb3NpdGlvbiA9IG1fc2Nyb2xsZWRDb250ZW50c0xh
eWVyLmdldCgpLnBvc2l0aW9uOworICAgIH0KKworICAgIGlmIChtX2hlYWRlckxheWVyIHx8IG1f
Zm9vdGVyTGF5ZXIpIHsKKyAgICAgICAgLy8gR2VuZXJhbGx5IHRoZSBiYW5uZXJzIHNob3VsZCBo
YXZlIHRoZSBzYW1lIGhvcml6b250YWwtcG9zaXRpb24gY29tcHV0YXRpb24gYXMgYSBmaXhlZCBl
bGVtZW50LiBIb3dldmVyLAorICAgICAgICAvLyB0aGUgYmFubmVycyBhcmUgbm90IGFmZmVjdGVk
IGJ5IHRoZSBmcmFtZVNjYWxlRmFjdG9yKCksIHNvIGlmIHRoZXJlIGlzIGN1cnJlbnRseSBhIG5v
bi0xIGZyYW1lU2NhbGVGYWN0b3IoKQorICAgICAgICAvLyB0aGVuIHdlIHNob3VsZCByZWNvbXB1
dGUgc2Nyb2xsT2Zmc2V0Rm9yRml4ZWRDaGlsZHJlbiBmb3IgdGhlIGJhbm5lciB3aXRoIGEgc2Nh
bGUgZmFjdG9yIG9mIDEuCisgICAgICAgIGZsb2F0IGhvcml6b250YWxTY3JvbGxPZmZzZXRGb3JC
YW5uZXIgPSBzY3JvbGxPZmZzZXRGb3JGaXhlZENoaWxkcmVuLndpZHRoKCk7CisgICAgICAgIGlm
IChmcmFtZVNjYWxlRmFjdG9yKCkgIT0gMSkKKyAgICAgICAgICAgIGhvcml6b250YWxTY3JvbGxP
ZmZzZXRGb3JCYW5uZXIgPSBGcmFtZVZpZXc6OnNjcm9sbE9mZnNldEZvckZpeGVkUG9zaXRpb24o
ZW5jbG9zaW5nTGF5b3V0UmVjdCh2aWV3cG9ydFJlY3QpLCByb3VuZGVkTGF5b3V0U2l6ZSh0b3Rh
bENvbnRlbnRzU2l6ZSgpKSwgcm91bmRlZExheW91dFBvaW50KHNjcm9sbE9mZnNldCksIHNjcm9s
bE9yaWdpbigpLCAxLCBmYWxzZSwgYmVoYXZpb3JGb3JGaXhlZCwgaGVhZGVySGVpZ2h0KCksIGZv
b3RlckhlaWdodCgpKS53aWR0aCgpOworCisgICAgICAgIGlmIChtX2hlYWRlckxheWVyKQorICAg
ICAgICAgICAgbV9oZWFkZXJMYXllci5nZXQoKS5wb3NpdGlvbiA9IEZsb2F0UG9pbnQoaG9yaXpv
bnRhbFNjcm9sbE9mZnNldEZvckJhbm5lciwgRnJhbWVWaWV3Ojp5UG9zaXRpb25Gb3JIZWFkZXJM
YXllcihwb3NpdGlvbiwgdG9wQ29udGVudEluc2V0KSk7CisKKyAgICAgICAgaWYgKG1fZm9vdGVy
TGF5ZXIpIHsKKyAgICAgICAgICAgIG1fZm9vdGVyTGF5ZXIuZ2V0KCkucG9zaXRpb24gPSBGbG9h
dFBvaW50KGhvcml6b250YWxTY3JvbGxPZmZzZXRGb3JCYW5uZXIsCisgICAgICAgICAgICAgICAg
RnJhbWVWaWV3Ojp5UG9zaXRpb25Gb3JGb290ZXJMYXllcihwb3NpdGlvbiwgdG9wQ29udGVudElu
c2V0LCB0b3RhbENvbnRlbnRzU2l6ZSgpLmhlaWdodCgpLCBmb290ZXJIZWlnaHQoKSkpOworICAg
ICAgICB9CisgICAgfQorCisgICAgaWYgKG1fdmVydGljYWxTY3JvbGxiYXJQYWludGVyIHx8IG1f
aG9yaXpvbnRhbFNjcm9sbGJhclBhaW50ZXIpIHsKKyAgICAgICAgW0NBVHJhbnNhY3Rpb24gYmVn
aW5dOworICAgICAgICBbQ0FUcmFuc2FjdGlvbiBsb2NrXTsKKworICAgICAgICBpZiAoW21fdmVy
dGljYWxTY3JvbGxiYXJQYWludGVyIHNob3VsZFVzZVByZXNlbnRhdGlvblZhbHVlXSkgeworICAg
ICAgICAgICAgZmxvYXQgcHJlc2VudGF0aW9uVmFsdWU7CisgICAgICAgICAgICBmbG9hdCBvdmVy
aGFuZ0Ftb3VudDsKKyAgICAgICAgICAgIFNjcm9sbGFibGVBcmVhOjpjb21wdXRlU2Nyb2xsYmFy
VmFsdWVBbmRPdmVyaGFuZyhwb3NpdGlvbi55KCksIHRvdGFsQ29udGVudHNTaXplKCkuaGVpZ2h0
KCksIHZpZXdwb3J0UmVjdC5oZWlnaHQoKSwgcHJlc2VudGF0aW9uVmFsdWUsIG92ZXJoYW5nQW1v
dW50KTsKKyAgICAgICAgICAgIFttX3ZlcnRpY2FsU2Nyb2xsYmFyUGFpbnRlciBzZXRQcmVzZW50
YXRpb25WYWx1ZTpwcmVzZW50YXRpb25WYWx1ZV07CisgICAgICAgIH0KKworICAgICAgICBpZiAo
W21faG9yaXpvbnRhbFNjcm9sbGJhclBhaW50ZXIgc2hvdWxkVXNlUHJlc2VudGF0aW9uVmFsdWVd
KSB7CisgICAgICAgICAgICBmbG9hdCBwcmVzZW50YXRpb25WYWx1ZTsKKyAgICAgICAgICAgIGZs
b2F0IG92ZXJoYW5nQW1vdW50OworICAgICAgICAgICAgU2Nyb2xsYWJsZUFyZWE6OmNvbXB1dGVT
Y3JvbGxiYXJWYWx1ZUFuZE92ZXJoYW5nKHBvc2l0aW9uLngoKSwgdG90YWxDb250ZW50c1NpemUo
KS53aWR0aCgpLCB2aWV3cG9ydFJlY3Qud2lkdGgoKSwgcHJlc2VudGF0aW9uVmFsdWUsIG92ZXJo
YW5nQW1vdW50KTsKKyAgICAgICAgICAgIFttX2hvcml6b250YWxTY3JvbGxiYXJQYWludGVyIHNl
dFByZXNlbnRhdGlvblZhbHVlOnByZXNlbnRhdGlvblZhbHVlXTsKKyAgICAgICAgfQorICAgICAg
ICBbQ0FUcmFuc2FjdGlvbiB1bmxvY2tdOworICAgICAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRd
OworICAgIH0KKworICAgIGlmICghbV9jaGlsZHJlbikKKyAgICAgICAgcmV0dXJuOworCisgICAg
dmlld3BvcnRSZWN0LnNldExvY2F0aW9uKEZsb2F0UG9pbnQoKSArIHNjcm9sbE9mZnNldEZvckZp
eGVkQ2hpbGRyZW4pOworCisgICAgc2l6ZV90IHNpemUgPSBtX2NoaWxkcmVuLT5zaXplKCk7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgIG1fY2hpbGRyZW4t
PmF0KGkpLT5wYXJlbnRTY3JvbGxQb3NpdGlvbkRpZENoYW5nZSh2aWV3cG9ydFJlY3QsIEZsb2F0
U2l6ZSgpKTsKK30KKwordm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjp1
cGRhdGVMYXllcnNBZnRlclZpZXdwb3J0Q2hhbmdlKGNvbnN0IEZsb2F0UmVjdCYsIGRvdWJsZSkK
K3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworRmxvYXRQb2ludCBTY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjptaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdAor
eworICAgIEZsb2F0UG9pbnQgcG9zaXRpb247CisgICAgCisgICAgaWYgKHNjcm9sbGluZ1RyZWUo
KS5yb290Tm9kZSgpID09IHRoaXMgJiYgc2Nyb2xsaW5nVHJlZSgpLnNjcm9sbFBpbm5pbmdCZWhh
dmlvcigpID09IFBpblRvQm90dG9tKQorICAgICAgICBwb3NpdGlvbi5zZXRZKG1heGltdW1TY3Jv
bGxQb3NpdGlvbigpLnkoKSk7CisKKyAgICByZXR1cm4gcG9zaXRpb247Cit9CisKK0Zsb2F0UG9p
bnQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6bWF4aW11bVNjcm9sbFBvc2l0
aW9uKCkgY29uc3QKK3sKKyAgICBGbG9hdFBvaW50IHBvc2l0aW9uKHRvdGFsQ29udGVudHNTaXpl
Rm9yUnViYmVyQmFuZCgpIC0gc2Nyb2xsYWJsZUFyZWFTaXplKCkpOworICAgIHBvc2l0aW9uID0g
cG9zaXRpb24uZXhwYW5kZWRUbyhGbG9hdFBvaW50KCkpOworCisgICAgaWYgKHNjcm9sbGluZ1Ry
ZWUoKS5yb290Tm9kZSgpID09IHRoaXMgJiYgc2Nyb2xsaW5nVHJlZSgpLnNjcm9sbFBpbm5pbmdC
ZWhhdmlvcigpID09IFBpblRvVG9wKQorICAgICAgICBwb3NpdGlvbi5zZXRZKG1pbmltdW1TY3Jv
bGxQb3NpdGlvbigpLnkoKSk7CisKKyAgICByZXR1cm4gcG9zaXRpb247Cit9CisKK3ZvaWQgU2Ny
b2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6c2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYg
b2Zmc2V0KQoreworICAgIHNldFNjcm9sbFBvc2l0aW9uKHNjcm9sbFBvc2l0aW9uKCkgKyBvZmZz
ZXQpOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6OnNjcm9s
bEJ5V2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMoY29uc3QgSW50U2l6ZSYgb2Zmc2V0KQor
eworICAgIHNldFNjcm9sbFBvc2l0aW9uV2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMoc2Ny
b2xsUG9zaXRpb24oKSArIG9mZnNldCk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZU1hYzo6dXBkYXRlTWFpbkZyYW1lUGluU3RhdGUoY29uc3QgRmxvYXRQb2ludCYg
c2Nyb2xsUG9zaXRpb24pCit7CisgICAgYm9vbCBwaW5uZWRUb1RoZUxlZnQgPSBzY3JvbGxQb3Np
dGlvbi54KCkgPD0gbWluaW11bVNjcm9sbFBvc2l0aW9uKCkueCgpOworICAgIGJvb2wgcGlubmVk
VG9UaGVSaWdodCA9IHNjcm9sbFBvc2l0aW9uLngoKSA+PSBtYXhpbXVtU2Nyb2xsUG9zaXRpb24o
KS54KCk7CisgICAgYm9vbCBwaW5uZWRUb1RoZVRvcCA9IHNjcm9sbFBvc2l0aW9uLnkoKSA8PSBt
aW5pbXVtU2Nyb2xsUG9zaXRpb24oKS55KCk7CisgICAgYm9vbCBwaW5uZWRUb1RoZUJvdHRvbSA9
IHNjcm9sbFBvc2l0aW9uLnkoKSA+PSBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKS55KCk7CisKKyAg
ICBzY3JvbGxpbmdUcmVlKCkuc2V0TWFpbkZyYW1lUGluU3RhdGUocGlubmVkVG9UaGVMZWZ0LCBw
aW5uZWRUb1RoZVJpZ2h0LCBwaW5uZWRUb1RoZVRvcCwgcGlubmVkVG9UaGVCb3R0b20pOworfQor
Cit2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6OmxvZ0V4cG9zZWRVbmZp
bGxlZEFyZWEoKQoreworICAgIFJlZ2lvbiBwYWludGVkVmlzaWJsZVRpbGVzOworCisgICAgRGVx
dWU8Q0FMYXllcio+IGxheWVyUXVldWU7CisgICAgbGF5ZXJRdWV1ZS5hcHBlbmQobV9zY3JvbGxM
YXllci5nZXQoKSk7CisgICAgUGxhdGZvcm1MYXllckxpc3QgdGlsZXM7CisKKyAgICB3aGlsZSAo
IWxheWVyUXVldWUuaXNFbXB0eSgpICYmIHRpbGVzLmlzRW1wdHkoKSkgeworICAgICAgICBDQUxh
eWVyKiBsYXllciA9IGxheWVyUXVldWUudGFrZUZpcnN0KCk7CisgICAgICAgIE5TQXJyYXkqIHN1
YmxheWVycyA9IFtbbGF5ZXIgc3VibGF5ZXJzXSBjb3B5XTsKKworICAgICAgICAvLyBJZiB0aGlz
IGxheWVyIGlzIHRoZSBwYXJlbnQgb2YgYSB0aWxlLCBpdCBpcyB0aGUgcGFyZW50IG9mIGFsbCBv
ZiB0aGUgdGlsZXMgYW5kIG5vdGhpbmcgZWxzZS4KKyAgICAgICAgaWYgKFtbW3N1YmxheWVycyBv
YmplY3RBdEluZGV4OjBdIHZhbHVlRm9yS2V5OkAiaXNUaWxlIl0gYm9vbFZhbHVlXSkgeworICAg
ICAgICAgICAgZm9yIChDQUxheWVyKiBzdWJsYXllciBpbiBzdWJsYXllcnMpCisgICAgICAgICAg
ICAgICAgdGlsZXMuYXBwZW5kKHN1YmxheWVyKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIGZvciAoQ0FMYXllciogc3VibGF5ZXIgaW4gc3VibGF5ZXJzKQorICAgICAgICAgICAgICAg
IGxheWVyUXVldWUuYXBwZW5kKHN1YmxheWVyKTsKKyAgICAgICAgfQorCisgICAgICAgIFtzdWJs
YXllcnMgcmVsZWFzZV07CisgICAgfQorCisgICAgRmxvYXRQb2ludCBzY3JvbGxQb3NpdGlvbiA9
IHRoaXMtPnNjcm9sbFBvc2l0aW9uKCk7CisgICAgRmxvYXRSZWN0IHZpZXdQb3J0UmVjdChGbG9h
dFBvaW50KCksIHNjcm9sbGFibGVBcmVhU2l6ZSgpKTsKKyAgICB1bnNpZ25lZCB1bmZpbGxlZEFy
ZWEgPSBUaWxlQ29udHJvbGxlcjo6YmxhbmtQaXhlbENvdW50Rm9yVGlsZXModGlsZXMsIHZpZXdQ
b3J0UmVjdCwgSW50UG9pbnQoLXNjcm9sbFBvc2l0aW9uLngoKSwgLXNjcm9sbFBvc2l0aW9uLnko
KSkpOworCisgICAgaWYgKHVuZmlsbGVkQXJlYSB8fCBtX2xhc3RTY3JvbGxIYWRVbmZpbGxlZFBp
eGVscykKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJTQ1JPTExJTkc6IEV4cG9zZWQgdGlsZWxlc3Mg
YXJlYS4gVGltZTogJWYgVW5maWxsZWQgUGl4ZWxzOiAldVxuIiwgV1RGOjptb25vdG9uaWNhbGx5
SW5jcmVhc2luZ1RpbWUoKSwgdW5maWxsZWRBcmVhKTsKKworICAgIG1fbGFzdFNjcm9sbEhhZFVu
ZmlsbGVkUGl4ZWxzID0gdW5maWxsZWRBcmVhOworfQorCitzdGF0aWMgdm9pZCBsb2dUaHJlYWRl
ZFNjcm9sbGluZ01vZGUodW5zaWduZWQgc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKQorewor
ICAgIGlmIChzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMpIHsKKyAgICAgICAgU3RyaW5nQnVp
bGRlciByZWFzb25zRGVzY3JpcHRpb247CisKKyAgICAgICAgaWYgKHN5bmNocm9ub3VzU2Nyb2xs
aW5nUmVhc29ucyAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpGb3JjZWRPbk1haW5UaHJlYWQpCisg
ICAgICAgICAgICByZWFzb25zRGVzY3JpcHRpb24uYXBwZW5kKCJmb3JjZWQsIik7CisgICAgICAg
IGlmIChzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6
SGFzU2xvd1JlcGFpbnRPYmplY3RzKQorICAgICAgICAgICAgcmVhc29uc0Rlc2NyaXB0aW9uLmFw
cGVuZCgic2xvdy1yZXBhaW50IG9iamVjdHMsIik7CisgICAgICAgIGlmIChzeW5jaHJvbm91c1Nj
cm9sbGluZ1JlYXNvbnMgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6SGFzVmlld3BvcnRDb25zdHJh
aW5lZE9iamVjdHNXaXRob3V0U3VwcG9ydGluZ0ZpeGVkTGF5ZXJzKQorICAgICAgICAgICAgcmVh
c29uc0Rlc2NyaXB0aW9uLmFwcGVuZCgidmlld3BvcnQtY29uc3RyYWluZWQgb2JqZWN0cywiKTsK
KyAgICAgICAgaWYgKHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyAmIFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yOjpIYXNOb25MYXllclZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzKQorICAgICAgICAg
ICAgcmVhc29uc0Rlc2NyaXB0aW9uLmFwcGVuZCgibm9uLWxheWVyIHZpZXdwb3J0LWNvbnN0cmFp
bmVkIG9iamVjdHMsIik7CisgICAgICAgIGlmIChzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMg
JiBTY3JvbGxpbmdDb29yZGluYXRvcjo6SXNJbWFnZURvY3VtZW50KQorICAgICAgICAgICAgcmVh
c29uc0Rlc2NyaXB0aW9uLmFwcGVuZCgiaW1hZ2UgZG9jdW1lbnQsIik7CisKKyAgICAgICAgLy8g
U3RyaXAgdGhlIHRyYWlsaW5nIGNvbW1hLgorICAgICAgICBTdHJpbmcgcmVhc29uc0Rlc2NyaXB0
aW9uVHJpbW1lZCA9IHJlYXNvbnNEZXNjcmlwdGlvbi50b1N0cmluZygpLmxlZnQocmVhc29uc0Rl
c2NyaXB0aW9uLmxlbmd0aCgpIC0gMSk7CisKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJTQ1JPTExJ
Tkc6IFN3aXRjaGluZyB0byBtYWluLXRocmVhZCBzY3JvbGxpbmcgbW9kZS4gVGltZTogJWYgUmVh
c29uKHMpOiAlc1xuIiwgV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSwgcmVhc29u
c0Rlc2NyaXB0aW9uVHJpbW1lZC5hc2NpaSgpLmRhdGEoKSk7CisgICAgfSBlbHNlCisgICAgICAg
IFdURkxvZ0Fsd2F5cygiU0NST0xMSU5HOiBTd2l0Y2hpbmcgdG8gdGhyZWFkZWQgc2Nyb2xsaW5n
IG1vZGUuIFRpbWU6ICVmXG4iLCBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpKTsK
K30KKwordm9pZCBsb2dXaGVlbEV2ZW50SGFuZGxlckNvdW50Q2hhbmdlZCh1bnNpZ25lZCBjb3Vu
dCkKK3sKKyAgICBXVEZMb2dBbHdheXMoIlNDUk9MTElORzogV2hlZWwgZXZlbnQgaGFuZGxlciBj
b3VudCBjaGFuZ2VkLiBUaW1lOiAlZiBDb3VudDogJXVcbiIsIFdURjo6bW9ub3RvbmljYWxseUlu
Y3JlYXNpbmdUaW1lKCksIGNvdW50KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgUExBVEZPUk0oTUFDKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVNYWMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MzE1YjEzZjFkOTE0ODNkM2ZhODk0NTgyODQ3Nzk4OGM0MzQwMThjNS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWMuaAorKysgL2Rldi9udWxsCkBA
IC0xLDEwNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZU1hY19oCi0jZGVmaW5lIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlTWFjX2gKLQot
I2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCi0KLSNpbmNsdWRlICJTY3JvbGxFbGFzdGljaXR5
Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lTWFjLmgiCi0jaW5jbHVkZSAi
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaCIKLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
Ci0KLU9CSkNfQ0xBU1MgQ0FMYXllcjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZU1hYyA6IHB1YmxpYyBTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZSwgcHJpdmF0ZSBTY3JvbGxFbGFzdGljaXR5Q29udHJvbGxlckNsaWVudCB7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU+IGNy
ZWF0ZShTY3JvbGxpbmdUcmVlJiwgU2Nyb2xsaW5nTm9kZVR5cGUsIFNjcm9sbGluZ05vZGVJRCk7
Ci0gICAgdmlydHVhbCB+U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWMoKTsKLQotcHJpdmF0
ZToKLSAgICBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZU1hYyhTY3JvbGxpbmdUcmVlJiwgU2Ny
b2xsaW5nTm9kZVR5cGUsIFNjcm9sbGluZ05vZGVJRCk7Ci0KLSAgICAvLyBTY3JvbGxpbmdUcmVl
Tm9kZSBtZW1iZXIgZnVuY3Rpb25zLgotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCZWZvcmVDaGls
ZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlQWZ0ZXJDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmKSBvdmVycmlkZTsKLQotICAgIC8vIFNjcm9sbEVsYXN0aWNpdHlDb250cm9sbGVyIG1l
bWJlciBmdW5jdGlvbnMuCi0gICAgdmlydHVhbCBib29sIGFsbG93c0hvcml6b250YWxTdHJldGNo
aW5nKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGFsbG93c1ZlcnRpY2FsU3RyZXRjaGlu
ZygpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgSW50U2l6ZSBzdHJldGNoQW1vdW50KCkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBib29sIHBpbm5lZEluRGlyZWN0aW9uKGNvbnN0IEZsb2F0U2l6ZSYp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBjYW5TY3JvbGxIb3Jpem9udGFsbHkoKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgY2FuU2Nyb2xsVmVydGljYWxseSgpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSdWJiZXJCYW5kSW5EaXJlY3Rpb24oU2Nyb2xsRGlyZWN0
aW9uKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEludFBvaW50IGFic29sdXRlU2Nyb2xsUG9zaXRp
b24oKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgaW1tZWRpYXRlU2Nyb2xsQnkoY29uc3Qg
RmxvYXRTaXplJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGltbWVkaWF0ZVNjcm9sbEJ5
V2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMoY29uc3QgRmxvYXRTaXplJikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIHN0YXJ0U25hcFJ1YmJlcmJhbmRUaW1lcigpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBzdG9wU25hcFJ1YmJlcmJhbmRUaW1lcigpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBhZGp1c3RTY3JvbGxQb3NpdGlvblRvQm91bmRzSWZOZWNlc3NhcnkoKSBv
dmVycmlkZTsKLQotICAgIEZsb2F0UG9pbnQgc2Nyb2xsUG9zaXRpb24oKSBjb25zdDsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbldpdGhvdXRDb250ZW50RWRnZUNv
bnN0cmFpbnRzKGNvbnN0IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVMYXllcnNBZnRlclZpZXdwb3J0Q2hhbmdlKGNvbnN0IEZsb2F0UmVjdCYgdmlld3Bv
cnRSZWN0LCBkb3VibGUgc2NhbGUpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBzZXRTY3JvbGxMYXll
clBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKTsKLQotICAgIEZsb2F0UG9pbnQgbWluaW11bVNj
cm9sbFBvc2l0aW9uKCkgY29uc3Q7Ci0gICAgRmxvYXRQb2ludCBtYXhpbXVtU2Nyb2xsUG9zaXRp
b24oKSBjb25zdDsKLQotICAgIHZvaWQgc2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYpOwotICAgIHZv
aWQgc2Nyb2xsQnlXaXRob3V0Q29udGVudEVkZ2VDb25zdHJhaW50cyhjb25zdCBJbnRTaXplJik7
Ci0KLSAgICB2b2lkIHVwZGF0ZU1haW5GcmFtZVBpblN0YXRlKGNvbnN0IEZsb2F0UG9pbnQmIHNj
cm9sbFBvc2l0aW9uKTsKLQotICAgIHZvaWQgbG9nRXhwb3NlZFVuZmlsbGVkQXJlYSgpOwotCi0g
ICAgU2Nyb2xsRWxhc3RpY2l0eUNvbnRyb2xsZXIgbV9zY3JvbGxFbGFzdGljaXR5Q29udHJvbGxl
cjsKLSAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wVGltZXJSZWY+IG1fc25hcFJ1YmJlcmJhbmRUaW1l
cjsKLQotICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3Njcm9sbExheWVyOwotICAgIFJldGFpblB0
cjxDQUxheWVyPiBtX3Njcm9sbGVkQ29udGVudHNMYXllcjsKLSAgICBSZXRhaW5QdHI8Q0FMYXll
cj4gbV9jb3VudGVyU2Nyb2xsaW5nTGF5ZXI7Ci0gICAgUmV0YWluUHRyPENBTGF5ZXI+IG1faW5z
ZXRDbGlwTGF5ZXI7Ci0gICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fY29udGVudFNoYWRvd0xheWVy
OwotICAgIFJldGFpblB0cjxDQUxheWVyPiBtX2hlYWRlckxheWVyOwotICAgIFJldGFpblB0cjxD
QUxheWVyPiBtX2Zvb3RlckxheWVyOwotICAgIFJldGFpblB0cjxTY3JvbGxiYXJQYWludGVyPiBt
X3ZlcnRpY2FsU2Nyb2xsYmFyUGFpbnRlcjsKLSAgICBSZXRhaW5QdHI8U2Nyb2xsYmFyUGFpbnRl
cj4gbV9ob3Jpem9udGFsU2Nyb2xsYmFyUGFpbnRlcjsKLSAgICBGbG9hdFBvaW50IG1fcHJvYmFi
bGVNYWluVGhyZWFkU2Nyb2xsUG9zaXRpb247Ci0gICAgYm9vbCBtX2xhc3RTY3JvbGxIYWRVbmZp
bGxlZFBpeGVsczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShBU1lOQ19TQ1JPTExJTkcpCi0KLSNlbmRpZiAvLyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZU1hY19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMv
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWMubW0KZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDMwZDRhZWJlMTc0NmE4OGY1MGNiYmRlYzkxMTI5ZjkyYTk0ZGQ3
ZDcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlTWFj
Lm1tCisrKyAvZGV2L251bGwKQEAgLTEsNTMwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTIsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlTWFj
LmgiCi0KLSNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQotCi0jaW1wb3J0ICJGcmFtZVZpZXcu
aCIKLSNpbXBvcnQgIk5TU2Nyb2xsZXJJbXBEZXRhaWxzLmgiCi0jaW1wb3J0ICJQbGF0Zm9ybVdo
ZWVsRXZlbnQuaCIKLSNpbXBvcnQgIlNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgiCi0jaW1wb3J0ICJT
Y3JvbGxpbmdUcmVlLmgiCi0jaW1wb3J0ICJTY3JvbGxpbmdTdGF0ZVRyZWUuaCIKLSNpbXBvcnQg
IlNldHRpbmdzLmgiCi0jaW1wb3J0ICJUaWxlQ29udHJvbGxlci5oIgotI2ltcG9ydCAiV2ViTGF5
ZXIuaCIKLQotI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+Ci0jaW1wb3J0IDx3dGYv
Q3VycmVudFRpbWUuaD4KLSNpbXBvcnQgPHd0Zi9EZXF1ZS5oPgotI2ltcG9ydCA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgotI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyB2b2lkIGxvZ1RocmVhZGVkU2Nyb2xsaW5nTW9kZSh1bnNp
Z25lZCBzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMpOwotc3RhdGljIHZvaWQgbG9nV2hlZWxF
dmVudEhhbmRsZXJDb3VudENoYW5nZWQodW5zaWduZWQpOwotCi0KLVBhc3NPd25QdHI8U2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGU+IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlTWFjOjpjcmVh
dGUoU2Nyb2xsaW5nVHJlZSYgc2Nyb2xsaW5nVHJlZSwgU2Nyb2xsaW5nTm9kZVR5cGUgbm9kZVR5
cGUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZU1hYyhzY3JvbGxpbmdUcmVlLCBub2RlVHlwZSwgbm9k
ZUlEKSk7Ci19Ci0KLVNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlTWFjOjpTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZU1hYyhTY3JvbGxpbmdUcmVlJiBzY3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdO
b2RlVHlwZSBub2RlVHlwZSwgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKLSAgICA6IFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlKHNjcm9sbGluZ1RyZWUsIG5vZGVUeXBlLCBub2RlSUQpCi0gICAg
LCBtX3Njcm9sbEVsYXN0aWNpdHlDb250cm9sbGVyKHRoaXMpCi0gICAgLCBtX3ZlcnRpY2FsU2Ny
b2xsYmFyUGFpbnRlcigwKQotICAgICwgbV9ob3Jpem9udGFsU2Nyb2xsYmFyUGFpbnRlcigwKQot
ICAgICwgbV9sYXN0U2Nyb2xsSGFkVW5maWxsZWRQaXhlbHMoZmFsc2UpCi17Ci19Ci0KLVNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlTWFjOjp+U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWMo
KQotewotICAgIGlmIChtX3NuYXBSdWJiZXJiYW5kVGltZXIpCi0gICAgICAgIENGUnVuTG9vcFRp
bWVySW52YWxpZGF0ZShtX3NuYXBSdWJiZXJiYW5kVGltZXIuZ2V0KCkpOwotfQotCi12b2lkIFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlTWFjOjp1cGRhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBT
Y3JvbGxpbmdTdGF0ZU5vZGUmIHN0YXRlTm9kZSkKLXsKLSAgICBTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZTo6dXBkYXRlQmVmb3JlQ2hpbGRyZW4oc3RhdGVOb2RlKTsKLSAgICBjb25zdCBhdXRv
JiBzY3JvbGxpbmdTdGF0ZU5vZGUgPSB0b1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZShzdGF0
ZU5vZGUpOwotCi0gICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHko
U2Nyb2xsaW5nU3RhdGVOb2RlOjpTY3JvbGxMYXllcikpCi0gICAgICAgIG1fc2Nyb2xsTGF5ZXIg
PSBzY3JvbGxpbmdTdGF0ZU5vZGUubGF5ZXIoKTsKLQotICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5v
ZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xs
ZWRDb250ZW50c0xheWVyKSkKLSAgICAgICAgbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXIgPSBzY3Jv
bGxpbmdTdGF0ZU5vZGUuc2Nyb2xsZWRDb250ZW50c0xheWVyKCk7Ci0KLSAgICBpZiAoc2Nyb2xs
aW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05v
ZGU6OkNvdW50ZXJTY3JvbGxpbmdMYXllcikpCi0gICAgICAgIG1fY291bnRlclNjcm9sbGluZ0xh
eWVyID0gc2Nyb2xsaW5nU3RhdGVOb2RlLmNvdW50ZXJTY3JvbGxpbmdMYXllcigpOwotCi0gICAg
aWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlOjpJbnNldENsaXBMYXllcikpCi0gICAgICAgIG1faW5zZXRDbGlwTGF5ZXIg
PSBzY3JvbGxpbmdTdGF0ZU5vZGUuaW5zZXRDbGlwTGF5ZXIoKTsKLQotICAgIGlmIChzY3JvbGxp
bmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZTo6Q29udGVudFNoYWRvd0xheWVyKSkKLSAgICAgICAgbV9jb250ZW50U2hhZG93TGF5ZXIgPSBz
Y3JvbGxpbmdTdGF0ZU5vZGUuY29udGVudFNoYWRvd0xheWVyKCk7Ci0KLSAgICBpZiAoc2Nyb2xs
aW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05v
ZGU6OkhlYWRlckxheWVyKSkKLSAgICAgICAgbV9oZWFkZXJMYXllciA9IHNjcm9sbGluZ1N0YXRl
Tm9kZS5oZWFkZXJMYXllcigpOwotCi0gICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFu
Z2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpGb290ZXJMYXllcikpCi0g
ICAgICAgIG1fZm9vdGVyTGF5ZXIgPSBzY3JvbGxpbmdTdGF0ZU5vZGUuZm9vdGVyTGF5ZXIoKTsK
LQotICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZTo6UGFpbnRlckZvclNjcm9sbGJhcikpIHsKLSAgICAgICAgbV92
ZXJ0aWNhbFNjcm9sbGJhclBhaW50ZXIgPSBzY3JvbGxpbmdTdGF0ZU5vZGUudmVydGljYWxTY3Jv
bGxiYXJQYWludGVyKCk7Ci0gICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhclBhaW50ZXIgPSBz
Y3JvbGxpbmdTdGF0ZU5vZGUuaG9yaXpvbnRhbFNjcm9sbGJhclBhaW50ZXIoKTsKLSAgICB9Ci0K
LSAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdT
dGF0ZVNjcm9sbGluZ05vZGU6OlJlYXNvbnNGb3JTeW5jaHJvbm91c1Njcm9sbGluZykpIHsKLSAg
ICAgICAgaWYgKHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25TeW5jaHJvbm91c2x5KCkp
IHsKLSAgICAgICAgICAgIC8vIFdlJ3JlIHRyYW5zaXRpb25pbmcgdG8gdGhlIHNsb3cgInVwZGF0
ZSBzY3JvbGwgbGF5ZXIgcG9zaXRpb24gb24gdGhlIG1haW4gdGhyZWFkIiBtb2RlLgotICAgICAg
ICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgcHJvYmFibGUgbWFpbiB0aHJlYWQgc2Nyb2xsIHBvc2l0
aW9uIHdpdGggdGhlIGN1cnJlbnQgc2Nyb2xsIGxheWVyIHBvc2l0aW9uLgotICAgICAgICAgICAg
aWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlOjpSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbikpCi0gICAgICAgICAgICAgICAg
bV9wcm9iYWJsZU1haW5UaHJlYWRTY3JvbGxQb3NpdGlvbiA9IHNjcm9sbGluZ1N0YXRlTm9kZS5y
ZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbigpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgQ0dQb2ludCBzY3JvbGxMYXllclBvc2l0aW9uID0gbV9zY3JvbGxMYXllci5nZXQoKS5w
b3NpdGlvbjsKLSAgICAgICAgICAgICAgICBtX3Byb2JhYmxlTWFpblRocmVhZFNjcm9sbFBvc2l0
aW9uID0gSW50UG9pbnQoLXNjcm9sbExheWVyUG9zaXRpb24ueCwgLXNjcm9sbExheWVyUG9zaXRp
b24ueSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoc2Nyb2xsaW5n
VHJlZSgpLnNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoKSkKLSAgICAgICAgICAg
IGxvZ1RocmVhZGVkU2Nyb2xsaW5nTW9kZShzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoKSk7
Ci0gICAgfQotCi0gICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHko
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpXaGVlbEV2ZW50SGFuZGxlckNvdW50KSkgewot
ICAgICAgICBpZiAoc2Nyb2xsaW5nVHJlZSgpLnNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0Vu
YWJsZWQoKSkKLSAgICAgICAgICAgIGxvZ1doZWVsRXZlbnRIYW5kbGVyQ291bnRDaGFuZ2VkKHNj
cm9sbGluZ1N0YXRlTm9kZS53aGVlbEV2ZW50SGFuZGxlckNvdW50KCkpOwotICAgIH0KLX0KLQot
dm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZU1hYzo6dXBkYXRlQWZ0ZXJDaGlsZHJlbihj
b25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmIHN0YXRlTm9kZSkKLXsKLSAgICBTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZTo6dXBkYXRlQWZ0ZXJDaGlsZHJlbihzdGF0ZU5vZGUpOwotCi0gICAgY29u
c3QgYXV0byYgc2Nyb2xsaW5nU3RhdGVOb2RlID0gdG9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05v
ZGUoc3RhdGVOb2RlKTsKLQotICAgIC8vIFVwZGF0ZSB0aGUgc2Nyb2xsIHBvc2l0aW9uIGFmdGVy
IGNoaWxkIG5vZGVzIGhhdmUgYmVlbiB1cGRhdGVkLCBiZWNhdXNlIHRoZXkgbmVlZCB0byBoYXZl
IHVwZGF0ZWQgdGhlaXIgY29uc3RyYWludHMgYmVmb3JlIGFueSBzY3JvbGxpbmcgaGFwcGVucy4K
LSAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdT
dGF0ZVNjcm9sbGluZ05vZGU6OlJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKSkKLSAgICAgICAgc2V0
U2Nyb2xsUG9zaXRpb24oc2Nyb2xsaW5nU3RhdGVOb2RlLnJlcXVlc3RlZFNjcm9sbFBvc2l0aW9u
KCkpOwotCi0gICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Ny
b2xsaW5nU3RhdGVOb2RlOjpTY3JvbGxMYXllcikgfHwgc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlRvdGFsQ29udGVudHNT
aXplKSB8fCBzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZTo6Vmlld3BvcnRTaXplKSkKLSAgICAgICAgdXBkYXRlTWFpbkZyYW1l
UGluU3RhdGUoc2Nyb2xsUG9zaXRpb24oKSk7Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVNYWM6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3
aGVlbEV2ZW50KQotewotICAgIGlmICghY2FuSGF2ZVNjcm9sbGJhcnMoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgaWYgKHdoZWVsRXZlbnQubW9tZW50dW1QaGFzZSgpID09IFBsYXRmb3JtV2hl
ZWxFdmVudFBoYXNlQmVnYW4pIHsKLSAgICAgICAgW21fdmVydGljYWxTY3JvbGxiYXJQYWludGVy
IHNldFVzZVByZXNlbnRhdGlvblZhbHVlOllFU107Ci0gICAgICAgIFttX2hvcml6b250YWxTY3Jv
bGxiYXJQYWludGVyIHNldFVzZVByZXNlbnRhdGlvblZhbHVlOllFU107Ci0gICAgfQotICAgIGlm
ICh3aGVlbEV2ZW50Lm1vbWVudHVtUGhhc2UoKSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUVu
ZGVkIHx8IHdoZWVsRXZlbnQubW9tZW50dW1QaGFzZSgpID09IFBsYXRmb3JtV2hlZWxFdmVudFBo
YXNlQ2FuY2VsbGVkKSB7Ci0gICAgICAgIFttX3ZlcnRpY2FsU2Nyb2xsYmFyUGFpbnRlciBzZXRV
c2VQcmVzZW50YXRpb25WYWx1ZTpOT107Ci0gICAgICAgIFttX2hvcml6b250YWxTY3JvbGxiYXJQ
YWludGVyIHNldFVzZVByZXNlbnRhdGlvblZhbHVlOk5PXTsKLSAgICB9Ci0KLSAgICBtX3Njcm9s
bEVsYXN0aWNpdHlDb250cm9sbGVyLmhhbmRsZVdoZWVsRXZlbnQod2hlZWxFdmVudCk7Ci0gICAg
c2Nyb2xsaW5nVHJlZSgpLnNldE9yQ2xlYXJMYXRjaGVkTm9kZSh3aGVlbEV2ZW50LCBzY3JvbGxp
bmdOb2RlSUQoKSk7Ci0gICAgc2Nyb2xsaW5nVHJlZSgpLmhhbmRsZVdoZWVsRXZlbnRQaGFzZSh3
aGVlbEV2ZW50LnBoYXNlKCkpOwotfQotCi1ib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
TWFjOjphbGxvd3NIb3Jpem9udGFsU3RyZXRjaGluZygpCi17Ci0gICAgc3dpdGNoIChob3Jpem9u
dGFsU2Nyb2xsRWxhc3RpY2l0eSgpKSB7Ci0gICAgY2FzZSBTY3JvbGxFbGFzdGljaXR5QXV0b21h
dGljOgotICAgICAgICByZXR1cm4gaGFzRW5hYmxlZEhvcml6b250YWxTY3JvbGxiYXIoKSB8fCAh
aGFzRW5hYmxlZFZlcnRpY2FsU2Nyb2xsYmFyKCk7Ci0gICAgY2FzZSBTY3JvbGxFbGFzdGljaXR5
Tm9uZToKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGNhc2UgU2Nyb2xsRWxhc3RpY2l0eUFs
bG93ZWQ6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZU1hYzo6YWxsb3dzVmVydGljYWxTdHJldGNoaW5nKCkKLXsKLSAgICBzd2l0Y2ggKHZl
cnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSgpKSB7Ci0gICAgY2FzZSBTY3JvbGxFbGFzdGljaXR5QXV0
b21hdGljOgotICAgICAgICByZXR1cm4gaGFzRW5hYmxlZFZlcnRpY2FsU2Nyb2xsYmFyKCkgfHwg
IWhhc0VuYWJsZWRIb3Jpem9udGFsU2Nyb2xsYmFyKCk7Ci0gICAgY2FzZSBTY3JvbGxFbGFzdGlj
aXR5Tm9uZToKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGNhc2UgU2Nyb2xsRWxhc3RpY2l0
eUFsbG93ZWQ6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotSW50U2l6ZSBTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZU1hYzo6c3RyZXRjaEFtb3VudCgpCi17Ci0gICAgSW50U2l6ZSBzdHJldGNo
OwotCi0gICAgaWYgKHNjcm9sbFBvc2l0aW9uKCkueSgpIDwgbWluaW11bVNjcm9sbFBvc2l0aW9u
KCkueSgpKQotICAgICAgICBzdHJldGNoLnNldEhlaWdodChzY3JvbGxQb3NpdGlvbigpLnkoKSAt
IG1pbmltdW1TY3JvbGxQb3NpdGlvbigpLnkoKSk7Ci0gICAgZWxzZSBpZiAoc2Nyb2xsUG9zaXRp
b24oKS55KCkgPiBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKS55KCkpCi0gICAgICAgIHN0cmV0Y2gu
c2V0SGVpZ2h0KHNjcm9sbFBvc2l0aW9uKCkueSgpIC0gbWF4aW11bVNjcm9sbFBvc2l0aW9uKCku
eSgpKTsKLQotICAgIGlmIChzY3JvbGxQb3NpdGlvbigpLngoKSA8IG1pbmltdW1TY3JvbGxQb3Np
dGlvbigpLngoKSkKLSAgICAgICAgc3RyZXRjaC5zZXRXaWR0aChzY3JvbGxQb3NpdGlvbigpLngo
KSAtIG1pbmltdW1TY3JvbGxQb3NpdGlvbigpLngoKSk7Ci0gICAgZWxzZSBpZiAoc2Nyb2xsUG9z
aXRpb24oKS54KCkgPiBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKS54KCkpCi0gICAgICAgIHN0cmV0
Y2guc2V0V2lkdGgoc2Nyb2xsUG9zaXRpb24oKS54KCkgLSBtYXhpbXVtU2Nyb2xsUG9zaXRpb24o
KS54KCkpOwotCi0gICAgaWYgKHNjcm9sbGluZ1RyZWUoKS5yb290Tm9kZSgpID09IHRoaXMpIHsK
LSAgICAgICAgaWYgKHN0cmV0Y2guaXNaZXJvKCkpCi0gICAgICAgICAgICBzY3JvbGxpbmdUcmVl
KCkuc2V0TWFpbkZyYW1lSXNSdWJiZXJCYW5kaW5nKGZhbHNlKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgc2Nyb2xsaW5nVHJlZSgpLnNldE1haW5GcmFtZUlzUnViYmVyQmFuZGluZyh0cnVl
KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gc3RyZXRjaDsKLX0KLQotYm9vbCBTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZU1hYzo6cGlubmVkSW5EaXJlY3Rpb24oY29uc3QgRmxvYXRTaXplJiBkZWx0
YSkKLXsKLSAgICBGbG9hdFNpemUgbGltaXREZWx0YTsKLQotICAgIGlmIChmYWJzZihkZWx0YS5o
ZWlnaHQoKSkgPj0gZmFic2YoZGVsdGEud2lkdGgoKSkpIHsKLSAgICAgICAgaWYgKGRlbHRhLmhl
aWdodCgpIDwgMCkgewotICAgICAgICAgICAgLy8gV2UgYXJlIHRyeWluZyB0byBzY3JvbGwgdXAu
ICBNYWtlIHN1cmUgd2UgYXJlIG5vdCBwaW5uZWQgdG8gdGhlIHRvcAotICAgICAgICAgICAgbGlt
aXREZWx0YS5zZXRIZWlnaHQoc2Nyb2xsUG9zaXRpb24oKS55KCkgLSBtaW5pbXVtU2Nyb2xsUG9z
aXRpb24oKS55KCkpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gV2UgYXJlIHRy
eWluZyB0byBzY3JvbGwgZG93bi4gIE1ha2Ugc3VyZSB3ZSBhcmUgbm90IHBpbm5lZCB0byB0aGUg
Ym90dG9tCi0gICAgICAgICAgICBsaW1pdERlbHRhLnNldEhlaWdodChtYXhpbXVtU2Nyb2xsUG9z
aXRpb24oKS55KCkgLSBzY3JvbGxQb3NpdGlvbigpLnkoKSk7Ci0gICAgICAgIH0KLSAgICB9IGVs
c2UgaWYgKGRlbHRhLndpZHRoKCkpIHsKLSAgICAgICAgaWYgKGRlbHRhLndpZHRoKCkgPCAwKSB7
Ci0gICAgICAgICAgICAvLyBXZSBhcmUgdHJ5aW5nIHRvIHNjcm9sbCBsZWZ0LiAgTWFrZSBzdXJl
IHdlIGFyZSBub3QgcGlubmVkIHRvIHRoZSBsZWZ0Ci0gICAgICAgICAgICBsaW1pdERlbHRhLnNl
dFdpZHRoKHNjcm9sbFBvc2l0aW9uKCkueCgpIC0gbWluaW11bVNjcm9sbFBvc2l0aW9uKCkueCgp
KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIFdlIGFyZSB0cnlpbmcgdG8gc2Ny
b2xsIHJpZ2h0LiAgTWFrZSBzdXJlIHdlIGFyZSBub3QgcGlubmVkIHRvIHRoZSByaWdodAotICAg
ICAgICAgICAgbGltaXREZWx0YS5zZXRXaWR0aChtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKS54KCkg
LSBzY3JvbGxQb3NpdGlvbigpLngoKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoKGRl
bHRhLndpZHRoKCkgfHwgZGVsdGEuaGVpZ2h0KCkpICYmIChsaW1pdERlbHRhLndpZHRoKCkgPCAx
ICYmIGxpbWl0RGVsdGEuaGVpZ2h0KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAg
ICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWM6
OmNhblNjcm9sbEhvcml6b250YWxseSgpCi17Ci0gICAgcmV0dXJuIGhhc0VuYWJsZWRIb3Jpem9u
dGFsU2Nyb2xsYmFyKCk7Ci19Ci0KLWJvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWM6
OmNhblNjcm9sbFZlcnRpY2FsbHkoKQotewotICAgIHJldHVybiBoYXNFbmFibGVkVmVydGljYWxT
Y3JvbGxiYXIoKTsKLX0KLQotYm9vbCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZU1hYzo6c2hv
dWxkUnViYmVyQmFuZEluRGlyZWN0aW9uKFNjcm9sbERpcmVjdGlvbikKLXsKLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotSW50UG9pbnQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWM6OmFic29s
dXRlU2Nyb2xsUG9zaXRpb24oKQotewotICAgIHJldHVybiByb3VuZGVkSW50UG9pbnQoc2Nyb2xs
UG9zaXRpb24oKSk7Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWM6Omlt
bWVkaWF0ZVNjcm9sbEJ5KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0KQotewotICAgIHNjcm9sbEJ5
KHJvdW5kZWRJbnRTaXplKG9mZnNldCkpOwotfQotCi12b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlTWFjOjppbW1lZGlhdGVTY3JvbGxCeVdpdGhvdXRDb250ZW50RWRnZUNvbnN0cmFpbnRz
KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0KQotewotICAgIHNjcm9sbEJ5V2l0aG91dENvbnRlbnRF
ZGdlQ29uc3RyYWludHMocm91bmRlZEludFNpemUob2Zmc2V0KSk7Ci19Ci0KLXZvaWQgU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVNYWM6OnN0YXJ0U25hcFJ1YmJlcmJhbmRUaW1lcigpCi17Ci0g
ICAgQVNTRVJUKCFtX3NuYXBSdWJiZXJiYW5kVGltZXIpOwotCi0gICAgQ0ZUaW1lSW50ZXJ2YWwg
dGltZXJJbnRlcnZhbCA9IDEuMCAvIDYwLjA7Ci0KLSAgICBtX3NuYXBSdWJiZXJiYW5kVGltZXIg
PSBhZG9wdENGKENGUnVuTG9vcFRpbWVyQ3JlYXRlV2l0aEhhbmRsZXIoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgKyB0aW1lckludGVydmFsLCB0aW1lcklu
dGVydmFsLCAwLCAwLCBeKENGUnVuTG9vcFRpbWVyUmVmKSB7Ci0gICAgICAgIG1fc2Nyb2xsRWxh
c3RpY2l0eUNvbnRyb2xsZXIuc25hcFJ1YmJlckJhbmRUaW1lckZpcmVkKCk7Ci0gICAgfSkpOwot
ICAgIENGUnVuTG9vcEFkZFRpbWVyKENGUnVuTG9vcEdldEN1cnJlbnQoKSwgbV9zbmFwUnViYmVy
YmFuZFRpbWVyLmdldCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotfQotCi12b2lkIFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlTWFjOjpzdG9wU25hcFJ1YmJlcmJhbmRUaW1lcigpCi17Ci0g
ICAgaWYgKCFtX3NuYXBSdWJiZXJiYW5kVGltZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIHNj
cm9sbGluZ1RyZWUoKS5zZXRNYWluRnJhbWVJc1J1YmJlckJhbmRpbmcoZmFsc2UpOwotCi0gICAg
Ly8gU2luY2UgdGhlIHJ1YmJlcmJhbmQgdGltZXIgaGFzIHN0b3BwZWQsIHRvdGFsQ29udGVudHNT
aXplRm9yUnViYmVyQmFuZCBjYW4gYmUgc3luY2hyb25pemVkIHdpdGggdG90YWxDb250ZW50c1Np
emUuCi0gICAgc2V0VG90YWxDb250ZW50c1NpemVGb3JSdWJiZXJCYW5kKHRvdGFsQ29udGVudHNT
aXplKCkpOwotCi0gICAgQ0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRlKG1fc25hcFJ1YmJlcmJhbmRU
aW1lci5nZXQoKSk7Ci0gICAgbV9zbmFwUnViYmVyYmFuZFRpbWVyID0gbnVsbHB0cjsKLX0KLQot
dm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZU1hYzo6YWRqdXN0U2Nyb2xsUG9zaXRpb25U
b0JvdW5kc0lmTmVjZXNzYXJ5KCkKLXsKLSAgICBGbG9hdFBvaW50IGN1cnJlbnRTY3JvbGxQb3Np
dGlvbiA9IGFic29sdXRlU2Nyb2xsUG9zaXRpb24oKTsKLSAgICBGbG9hdFBvaW50IG1pblBvc2l0
aW9uID0gbWluaW11bVNjcm9sbFBvc2l0aW9uKCk7Ci0gICAgRmxvYXRQb2ludCBtYXhQb3NpdGlv
biA9IG1heGltdW1TY3JvbGxQb3NpdGlvbigpOwotCi0gICAgZmxvYXQgbmVhcmVzdFhXaXRoaW5C
b3VuZHMgPSBzdGQ6Om1heChzdGQ6Om1pbihjdXJyZW50U2Nyb2xsUG9zaXRpb24ueCgpLCBtYXhQ
b3NpdGlvbi54KCkpLCBtaW5Qb3NpdGlvbi54KCkpOwotICAgIGZsb2F0IG5lYXJlc3RZV2l0aGlu
Qm91bmRzID0gc3RkOjptYXgoc3RkOjptaW4oY3VycmVudFNjcm9sbFBvc2l0aW9uLnkoKSwgbWF4
UG9zaXRpb24ueSgpKSwgbWluUG9zaXRpb24ueSgpKTsKLQotICAgIEZsb2F0UG9pbnQgbmVhcmVz
dFBvaW50V2l0aGluQm91bmRzKG5lYXJlc3RYV2l0aGluQm91bmRzLCBuZWFyZXN0WVdpdGhpbkJv
dW5kcyk7Ci0gICAgaW1tZWRpYXRlU2Nyb2xsQnkobmVhcmVzdFBvaW50V2l0aGluQm91bmRzIC0g
Y3VycmVudFNjcm9sbFBvc2l0aW9uKTsKLX0KLQotRmxvYXRQb2ludCBTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZU1hYzo6c2Nyb2xsUG9zaXRpb24oKSBjb25zdAotewotICAgIGlmIChzaG91bGRV
cGRhdGVTY3JvbGxMYXllclBvc2l0aW9uU3luY2hyb25vdXNseSgpKQotICAgICAgICByZXR1cm4g
bV9wcm9iYWJsZU1haW5UaHJlYWRTY3JvbGxQb3NpdGlvbjsKLQotICAgIENHUG9pbnQgc2Nyb2xs
TGF5ZXJQb3NpdGlvbiA9IG1fc2Nyb2xsTGF5ZXIuZ2V0KCkucG9zaXRpb247Ci0gICAgcmV0dXJu
IEludFBvaW50KC1zY3JvbGxMYXllclBvc2l0aW9uLnggKyBzY3JvbGxPcmlnaW4oKS54KCksIC1z
Y3JvbGxMYXllclBvc2l0aW9uLnkgKyBzY3JvbGxPcmlnaW4oKS55KCkpOwotfQotCi12b2lkIFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlTWFjOjpzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBGbG9h
dFBvaW50JiBzY3JvbGxQb3NpdGlvbikKLXsKLSAgICBGbG9hdFBvaW50IG5ld1Njcm9sbFBvc2l0
aW9uID0gc2Nyb2xsUG9zaXRpb247Ci0gICAgbmV3U2Nyb2xsUG9zaXRpb24gPSBuZXdTY3JvbGxQ
b3NpdGlvbi5zaHJ1bmtUbyhtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSk7Ci0gICAgbmV3U2Nyb2xs
UG9zaXRpb24gPSBuZXdTY3JvbGxQb3NpdGlvbi5leHBhbmRlZFRvKG1pbmltdW1TY3JvbGxQb3Np
dGlvbigpKTsKLQotICAgIHNldFNjcm9sbFBvc2l0aW9uV2l0aG91dENvbnRlbnRFZGdlQ29uc3Ry
YWludHMobmV3U2Nyb2xsUG9zaXRpb24pOwotCi0gICAgaWYgKHNjcm9sbGluZ1RyZWUoKS5zY3Jv
bGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKCkpCi0gICAgICAgIGxvZ0V4cG9zZWRVbmZp
bGxlZEFyZWEoKTsKLX0KLQotdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZU1hYzo6c2V0
U2Nyb2xsUG9zaXRpb25XaXRob3V0Q29udGVudEVkZ2VDb25zdHJhaW50cyhjb25zdCBGbG9hdFBv
aW50JiBzY3JvbGxQb3NpdGlvbikKLXsKLSAgICB1cGRhdGVNYWluRnJhbWVQaW5TdGF0ZShzY3Jv
bGxQb3NpdGlvbik7Ci0KLSAgICBpZiAoc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvblN5
bmNocm9ub3VzbHkoKSkgewotICAgICAgICBtX3Byb2JhYmxlTWFpblRocmVhZFNjcm9sbFBvc2l0
aW9uID0gc2Nyb2xsUG9zaXRpb247Ci0gICAgICAgIHNjcm9sbGluZ1RyZWUoKS5zY3JvbGxpbmdU
cmVlTm9kZURpZFNjcm9sbChzY3JvbGxpbmdOb2RlSUQoKSwgc2Nyb2xsUG9zaXRpb24sIFNldFNj
cm9sbGluZ0xheWVyUG9zaXRpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc2V0
U2Nyb2xsTGF5ZXJQb3NpdGlvbihzY3JvbGxQb3NpdGlvbik7Ci0gICAgc2Nyb2xsaW5nVHJlZSgp
LnNjcm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xsKHNjcm9sbGluZ05vZGVJRCgpLCBzY3JvbGxQb3Np
dGlvbik7Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWM6OnNldFNjcm9s
bExheWVyUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24pCi17Ci0gICAgQVNTRVJU
KCFzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uU3luY2hyb25vdXNseSgpKTsKLSAgICBt
X3Njcm9sbExheWVyLmdldCgpLnBvc2l0aW9uID0gQ0dQb2ludE1ha2UoLXBvc2l0aW9uLngoKSAr
IHNjcm9sbE9yaWdpbigpLngoKSwgLXBvc2l0aW9uLnkoKSArIHNjcm9sbE9yaWdpbigpLnkoKSk7
Ci0KLSAgICBTY3JvbGxCZWhhdmlvckZvckZpeGVkRWxlbWVudHMgYmVoYXZpb3JGb3JGaXhlZCA9
IHNjcm9sbEJlaGF2aW9yRm9yRml4ZWRFbGVtZW50cygpOwotICAgIEZsb2F0UG9pbnQgc2Nyb2xs
T2Zmc2V0ID0gcG9zaXRpb24gLSB0b0Zsb2F0U2l6ZShzY3JvbGxPcmlnaW4oKSk7Ci0gICAgRmxv
YXRSZWN0IHZpZXdwb3J0UmVjdChGbG9hdFBvaW50KCksIHZpZXdwb3J0U2l6ZSgpKTsKLSAgICAK
LSAgICAvLyBGSVhNRTogc2Nyb2xsT2Zmc2V0Rm9yRml4ZWRQb3NpdGlvbigpIG5lZWRzIHRvIGRv
IGZsb2F0IG1hdGguCi0gICAgRmxvYXRTaXplIHNjcm9sbE9mZnNldEZvckZpeGVkQ2hpbGRyZW4g
PSBGcmFtZVZpZXc6OnNjcm9sbE9mZnNldEZvckZpeGVkUG9zaXRpb24oZW5jbG9zaW5nTGF5b3V0
UmVjdCh2aWV3cG9ydFJlY3QpLAotICAgICAgICB0b3RhbENvbnRlbnRzU2l6ZSgpLCBmbG9vcmVk
SW50UG9pbnQoc2Nyb2xsT2Zmc2V0KSwgc2Nyb2xsT3JpZ2luKCksIGZyYW1lU2NhbGVGYWN0b3Io
KSwgZmFsc2UsIGJlaGF2aW9yRm9yRml4ZWQsIGhlYWRlckhlaWdodCgpLCBmb290ZXJIZWlnaHQo
KSk7Ci0gICAgCi0gICAgaWYgKG1fY291bnRlclNjcm9sbGluZ0xheWVyKQotICAgICAgICBtX2Nv
dW50ZXJTY3JvbGxpbmdMYXllci5nZXQoKS5wb3NpdGlvbiA9IEZsb2F0UG9pbnQoc2Nyb2xsT2Zm
c2V0Rm9yRml4ZWRDaGlsZHJlbik7Ci0KLSAgICBmbG9hdCB0b3BDb250ZW50SW5zZXQgPSB0aGlz
LT50b3BDb250ZW50SW5zZXQoKTsKLSAgICBpZiAobV9pbnNldENsaXBMYXllciAmJiBtX3Njcm9s
bGVkQ29udGVudHNMYXllciAmJiB0b3BDb250ZW50SW5zZXQpIHsKLSAgICAgICAgbV9pbnNldENs
aXBMYXllci5nZXQoKS5wb3NpdGlvbiA9IEZsb2F0UG9pbnQoMCwgRnJhbWVWaWV3Ojp5UG9zaXRp
b25Gb3JJbnNldENsaXBMYXllcihwb3NpdGlvbiwgdG9wQ29udGVudEluc2V0KSk7Ci0gICAgICAg
IG1fc2Nyb2xsZWRDb250ZW50c0xheWVyLmdldCgpLnBvc2l0aW9uID0gRmxvYXRQb2ludChtX3Nj
cm9sbGVkQ29udGVudHNMYXllci5nZXQoKS5wb3NpdGlvbi54LAotICAgICAgICAgICAgRnJhbWVW
aWV3Ojp5UG9zaXRpb25Gb3JSb290Q29udGVudExheWVyKHBvc2l0aW9uLCB0b3BDb250ZW50SW5z
ZXQsIGhlYWRlckhlaWdodCgpKSk7Ci0gICAgICAgIGlmIChtX2NvbnRlbnRTaGFkb3dMYXllcikK
LSAgICAgICAgICAgIG1fY29udGVudFNoYWRvd0xheWVyLmdldCgpLnBvc2l0aW9uID0gbV9zY3Jv
bGxlZENvbnRlbnRzTGF5ZXIuZ2V0KCkucG9zaXRpb247Ci0gICAgfQotCi0gICAgaWYgKG1faGVh
ZGVyTGF5ZXIgfHwgbV9mb290ZXJMYXllcikgewotICAgICAgICAvLyBHZW5lcmFsbHkgdGhlIGJh
bm5lcnMgc2hvdWxkIGhhdmUgdGhlIHNhbWUgaG9yaXpvbnRhbC1wb3NpdGlvbiBjb21wdXRhdGlv
biBhcyBhIGZpeGVkIGVsZW1lbnQuIEhvd2V2ZXIsCi0gICAgICAgIC8vIHRoZSBiYW5uZXJzIGFy
ZSBub3QgYWZmZWN0ZWQgYnkgdGhlIGZyYW1lU2NhbGVGYWN0b3IoKSwgc28gaWYgdGhlcmUgaXMg
Y3VycmVudGx5IGEgbm9uLTEgZnJhbWVTY2FsZUZhY3RvcigpCi0gICAgICAgIC8vIHRoZW4gd2Ug
c2hvdWxkIHJlY29tcHV0ZSBzY3JvbGxPZmZzZXRGb3JGaXhlZENoaWxkcmVuIGZvciB0aGUgYmFu
bmVyIHdpdGggYSBzY2FsZSBmYWN0b3Igb2YgMS4KLSAgICAgICAgZmxvYXQgaG9yaXpvbnRhbFNj
cm9sbE9mZnNldEZvckJhbm5lciA9IHNjcm9sbE9mZnNldEZvckZpeGVkQ2hpbGRyZW4ud2lkdGgo
KTsKLSAgICAgICAgaWYgKGZyYW1lU2NhbGVGYWN0b3IoKSAhPSAxKQotICAgICAgICAgICAgaG9y
aXpvbnRhbFNjcm9sbE9mZnNldEZvckJhbm5lciA9IEZyYW1lVmlldzo6c2Nyb2xsT2Zmc2V0Rm9y
Rml4ZWRQb3NpdGlvbihlbmNsb3NpbmdMYXlvdXRSZWN0KHZpZXdwb3J0UmVjdCksIHRvdGFsQ29u
dGVudHNTaXplKCksIGZsb29yZWRJbnRQb2ludChzY3JvbGxPZmZzZXQpLCBzY3JvbGxPcmlnaW4o
KSwgMSwgZmFsc2UsIGJlaGF2aW9yRm9yRml4ZWQsIGhlYWRlckhlaWdodCgpLCBmb290ZXJIZWln
aHQoKSkud2lkdGgoKTsKLQotICAgICAgICBpZiAobV9oZWFkZXJMYXllcikKLSAgICAgICAgICAg
IG1faGVhZGVyTGF5ZXIuZ2V0KCkucG9zaXRpb24gPSBGbG9hdFBvaW50KGhvcml6b250YWxTY3Jv
bGxPZmZzZXRGb3JCYW5uZXIsIEZyYW1lVmlldzo6eVBvc2l0aW9uRm9ySGVhZGVyTGF5ZXIocG9z
aXRpb24sIHRvcENvbnRlbnRJbnNldCkpOwotCi0gICAgICAgIGlmIChtX2Zvb3RlckxheWVyKQot
ICAgICAgICAgICAgbV9mb290ZXJMYXllci5nZXQoKS5wb3NpdGlvbiA9IEZsb2F0UG9pbnQoaG9y
aXpvbnRhbFNjcm9sbE9mZnNldEZvckJhbm5lciwKLSAgICAgICAgICAgICAgICBGcmFtZVZpZXc6
OnlQb3NpdGlvbkZvckZvb3RlckxheWVyKHBvc2l0aW9uLCB0b3BDb250ZW50SW5zZXQsIHRvdGFs
Q29udGVudHNTaXplKCkuaGVpZ2h0KCksIGZvb3RlckhlaWdodCgpKSk7Ci0gICAgfQotCi0gICAg
aWYgKG1fdmVydGljYWxTY3JvbGxiYXJQYWludGVyIHx8IG1faG9yaXpvbnRhbFNjcm9sbGJhclBh
aW50ZXIpIHsKLSAgICAgICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOwotICAgICAgICBbQ0FUcmFu
c2FjdGlvbiBsb2NrXTsKLQotICAgICAgICBpZiAoW21fdmVydGljYWxTY3JvbGxiYXJQYWludGVy
IHNob3VsZFVzZVByZXNlbnRhdGlvblZhbHVlXSkgewotICAgICAgICAgICAgZmxvYXQgcHJlc2Vu
dGF0aW9uVmFsdWU7Ci0gICAgICAgICAgICBmbG9hdCBvdmVyaGFuZ0Ftb3VudDsKLSAgICAgICAg
ICAgIFNjcm9sbGFibGVBcmVhOjpjb21wdXRlU2Nyb2xsYmFyVmFsdWVBbmRPdmVyaGFuZyhwb3Np
dGlvbi55KCksIHRvdGFsQ29udGVudHNTaXplKCkuaGVpZ2h0KCksIHZpZXdwb3J0UmVjdC5oZWln
aHQoKSwgcHJlc2VudGF0aW9uVmFsdWUsIG92ZXJoYW5nQW1vdW50KTsKLSAgICAgICAgICAgIFtt
X3ZlcnRpY2FsU2Nyb2xsYmFyUGFpbnRlciBzZXRQcmVzZW50YXRpb25WYWx1ZTpwcmVzZW50YXRp
b25WYWx1ZV07Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoW21faG9yaXpvbnRhbFNjcm9sbGJh
clBhaW50ZXIgc2hvdWxkVXNlUHJlc2VudGF0aW9uVmFsdWVdKSB7Ci0gICAgICAgICAgICBmbG9h
dCBwcmVzZW50YXRpb25WYWx1ZTsKLSAgICAgICAgICAgIGZsb2F0IG92ZXJoYW5nQW1vdW50Owot
ICAgICAgICAgICAgU2Nyb2xsYWJsZUFyZWE6OmNvbXB1dGVTY3JvbGxiYXJWYWx1ZUFuZE92ZXJo
YW5nKHBvc2l0aW9uLngoKSwgdG90YWxDb250ZW50c1NpemUoKS53aWR0aCgpLCB2aWV3cG9ydFJl
Y3Qud2lkdGgoKSwgcHJlc2VudGF0aW9uVmFsdWUsIG92ZXJoYW5nQW1vdW50KTsKLSAgICAgICAg
ICAgIFttX2hvcml6b250YWxTY3JvbGxiYXJQYWludGVyIHNldFByZXNlbnRhdGlvblZhbHVlOnBy
ZXNlbnRhdGlvblZhbHVlXTsKLSAgICAgICAgfQotICAgICAgICBbQ0FUcmFuc2FjdGlvbiB1bmxv
Y2tdOwotICAgICAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwotICAgIH0KLQotICAgIGlmICgh
bV9jaGlsZHJlbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgdmlld3BvcnRSZWN0LnNldExvY2F0
aW9uKEZsb2F0UG9pbnQoKSArIHNjcm9sbE9mZnNldEZvckZpeGVkQ2hpbGRyZW4pOwotCi0gICAg
c2l6ZV90IHNpemUgPSBtX2NoaWxkcmVuLT5zaXplKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzaXplOyArK2kpCi0gICAgICAgIG1fY2hpbGRyZW4tPmF0KGkpLT5wYXJlbnRTY3JvbGxQ
b3NpdGlvbkRpZENoYW5nZSh2aWV3cG9ydFJlY3QsIEZsb2F0U2l6ZSgpKTsKLX0KLQotdm9pZCBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZU1hYzo6dXBkYXRlTGF5ZXJzQWZ0ZXJWaWV3cG9ydENo
YW5nZShjb25zdCBGbG9hdFJlY3QmLCBkb3VibGUpCi17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci19Ci0KLUZsb2F0UG9pbnQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWM6Om1pbmlt
dW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0Ci17Ci0gICAgSW50UG9pbnQgcG9zaXRpb247Ci0gICAg
Ci0gICAgaWYgKHNjcm9sbGluZ1RyZWUoKS5yb290Tm9kZSgpID09IHRoaXMgJiYgc2Nyb2xsaW5n
VHJlZSgpLnNjcm9sbFBpbm5pbmdCZWhhdmlvcigpID09IFBpblRvQm90dG9tKQotICAgICAgICBw
b3NpdGlvbi5zZXRZKG1heGltdW1TY3JvbGxQb3NpdGlvbigpLnkoKSk7Ci0KLSAgICByZXR1cm4g
cG9zaXRpb247Ci19Ci0KLUZsb2F0UG9pbnQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWM6
Om1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0Ci17Ci0gICAgRmxvYXRQb2ludCBwb3NpdGlv
bih0b3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQoKS53aWR0aCgpIC0gdmlld3BvcnRTaXpl
KCkud2lkdGgoKSwKLSAgICAgICAgdG90YWxDb250ZW50c1NpemVGb3JSdWJiZXJCYW5kKCkuaGVp
Z2h0KCkgLSB2aWV3cG9ydFNpemUoKS5oZWlnaHQoKSk7Ci0KLSAgICBwb3NpdGlvbiA9IHBvc2l0
aW9uLmV4cGFuZGVkVG8oRmxvYXRQb2ludCgpKTsKLQotICAgIGlmIChzY3JvbGxpbmdUcmVlKCku
cm9vdE5vZGUoKSA9PSB0aGlzICYmIHNjcm9sbGluZ1RyZWUoKS5zY3JvbGxQaW5uaW5nQmVoYXZp
b3IoKSA9PSBQaW5Ub1RvcCkKLSAgICAgICAgcG9zaXRpb24uc2V0WShtaW5pbXVtU2Nyb2xsUG9z
aXRpb24oKS55KCkpOwotCi0gICAgcmV0dXJuIHBvc2l0aW9uOwotfQotCi12b2lkIFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlTWFjOjpzY3JvbGxCeShjb25zdCBJbnRTaXplJiBvZmZzZXQpCi17
Ci0gICAgc2V0U2Nyb2xsUG9zaXRpb24oc2Nyb2xsUG9zaXRpb24oKSArIG9mZnNldCk7Ci19Ci0K
LXZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWM6OnNjcm9sbEJ5V2l0aG91dENvbnRl
bnRFZGdlQ29uc3RyYWludHMoY29uc3QgSW50U2l6ZSYgb2Zmc2V0KQotewotICAgIHNldFNjcm9s
bFBvc2l0aW9uV2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMoc2Nyb2xsUG9zaXRpb24oKSAr
IG9mZnNldCk7Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWM6OnVwZGF0
ZU1haW5GcmFtZVBpblN0YXRlKGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uKQotewot
ICAgIGJvb2wgcGlubmVkVG9UaGVMZWZ0ID0gc2Nyb2xsUG9zaXRpb24ueCgpIDw9IG1pbmltdW1T
Y3JvbGxQb3NpdGlvbigpLngoKTsKLSAgICBib29sIHBpbm5lZFRvVGhlUmlnaHQgPSBzY3JvbGxQ
b3NpdGlvbi54KCkgPj0gbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkueCgpOwotICAgIGJvb2wgcGlu
bmVkVG9UaGVUb3AgPSBzY3JvbGxQb3NpdGlvbi55KCkgPD0gbWluaW11bVNjcm9sbFBvc2l0aW9u
KCkueSgpOwotICAgIGJvb2wgcGlubmVkVG9UaGVCb3R0b20gPSBzY3JvbGxQb3NpdGlvbi55KCkg
Pj0gbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkueSgpOwotCi0gICAgc2Nyb2xsaW5nVHJlZSgpLnNl
dE1haW5GcmFtZVBpblN0YXRlKHBpbm5lZFRvVGhlTGVmdCwgcGlubmVkVG9UaGVSaWdodCwgcGlu
bmVkVG9UaGVUb3AsIHBpbm5lZFRvVGhlQm90dG9tKTsKLX0KLQotdm9pZCBTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZU1hYzo6bG9nRXhwb3NlZFVuZmlsbGVkQXJlYSgpCi17Ci0gICAgUmVnaW9u
IHBhaW50ZWRWaXNpYmxlVGlsZXM7Ci0KLSAgICBEZXF1ZTxDQUxheWVyKj4gbGF5ZXJRdWV1ZTsK
LSAgICBsYXllclF1ZXVlLmFwcGVuZChtX3Njcm9sbExheWVyLmdldCgpKTsKLSAgICBQbGF0Zm9y
bUxheWVyTGlzdCB0aWxlczsKLQotICAgIHdoaWxlICghbGF5ZXJRdWV1ZS5pc0VtcHR5KCkgJiYg
dGlsZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIENBTGF5ZXIqIGxheWVyID0gbGF5ZXJRdWV1ZS50
YWtlRmlyc3QoKTsKLSAgICAgICAgTlNBcnJheSogc3VibGF5ZXJzID0gW1tsYXllciBzdWJsYXll
cnNdIGNvcHldOwotCi0gICAgICAgIC8vIElmIHRoaXMgbGF5ZXIgaXMgdGhlIHBhcmVudCBvZiBh
IHRpbGUsIGl0IGlzIHRoZSBwYXJlbnQgb2YgYWxsIG9mIHRoZSB0aWxlcyBhbmQgbm90aGluZyBl
bHNlLgotICAgICAgICBpZiAoW1tbc3VibGF5ZXJzIG9iamVjdEF0SW5kZXg6MF0gdmFsdWVGb3JL
ZXk6QCJpc1RpbGUiXSBib29sVmFsdWVdKSB7Ci0gICAgICAgICAgICBmb3IgKENBTGF5ZXIqIHN1
YmxheWVyIGluIHN1YmxheWVycykKLSAgICAgICAgICAgICAgICB0aWxlcy5hcHBlbmQoc3VibGF5
ZXIpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZm9yIChDQUxheWVyKiBzdWJsYXll
ciBpbiBzdWJsYXllcnMpCi0gICAgICAgICAgICAgICAgbGF5ZXJRdWV1ZS5hcHBlbmQoc3VibGF5
ZXIpOwotICAgICAgICB9Ci0KLSAgICAgICAgW3N1YmxheWVycyByZWxlYXNlXTsKLSAgICB9Ci0K
LSAgICBGbG9hdFBvaW50IHNjcm9sbFBvc2l0aW9uID0gdGhpcy0+c2Nyb2xsUG9zaXRpb24oKTsK
LSAgICBGbG9hdFJlY3Qgdmlld1BvcnRSZWN0KEZsb2F0UG9pbnQoKSwgdmlld3BvcnRTaXplKCkp
OwotICAgIHVuc2lnbmVkIHVuZmlsbGVkQXJlYSA9IFRpbGVDb250cm9sbGVyOjpibGFua1BpeGVs
Q291bnRGb3JUaWxlcyh0aWxlcywgdmlld1BvcnRSZWN0LCBJbnRQb2ludCgtc2Nyb2xsUG9zaXRp
b24ueCgpLCAtc2Nyb2xsUG9zaXRpb24ueSgpKSk7Ci0KLSAgICBpZiAodW5maWxsZWRBcmVhIHx8
IG1fbGFzdFNjcm9sbEhhZFVuZmlsbGVkUGl4ZWxzKQotICAgICAgICBXVEZMb2dBbHdheXMoIlND
Uk9MTElORzogRXhwb3NlZCB0aWxlbGVzcyBhcmVhLiBUaW1lOiAlZiBVbmZpbGxlZCBQaXhlbHM6
ICV1XG4iLCBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpLCB1bmZpbGxlZEFyZWEp
OwotCi0gICAgbV9sYXN0U2Nyb2xsSGFkVW5maWxsZWRQaXhlbHMgPSB1bmZpbGxlZEFyZWE7Ci19
Ci0KLXN0YXRpYyB2b2lkIGxvZ1RocmVhZGVkU2Nyb2xsaW5nTW9kZSh1bnNpZ25lZCBzeW5jaHJv
bm91c1Njcm9sbGluZ1JlYXNvbnMpCi17Ci0gICAgaWYgKHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVh
c29ucykgewotICAgICAgICBTdHJpbmdCdWlsZGVyIHJlYXNvbnNEZXNjcmlwdGlvbjsKLQotICAg
ICAgICBpZiAoc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zICYgU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OkZvcmNlZE9uTWFpblRocmVhZCkKLSAgICAgICAgICAgIHJlYXNvbnNEZXNjcmlwdGlvbi5h
cHBlbmQoImZvcmNlZCwiKTsKLSAgICAgICAgaWYgKHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29u
cyAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpIYXNTbG93UmVwYWludE9iamVjdHMpCi0gICAgICAg
ICAgICByZWFzb25zRGVzY3JpcHRpb24uYXBwZW5kKCJzbG93LXJlcGFpbnQgb2JqZWN0cywiKTsK
LSAgICAgICAgaWYgKHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyAmIFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yOjpIYXNWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0c1dpdGhvdXRTdXBwb3J0aW5nRml4
ZWRMYXllcnMpCi0gICAgICAgICAgICByZWFzb25zRGVzY3JpcHRpb24uYXBwZW5kKCJ2aWV3cG9y
dC1jb25zdHJhaW5lZCBvYmplY3RzLCIpOwotICAgICAgICBpZiAoc3luY2hyb25vdXNTY3JvbGxp
bmdSZWFzb25zICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Okhhc05vbkxheWVyVmlld3BvcnRDb25z
dHJhaW5lZE9iamVjdHMpCi0gICAgICAgICAgICByZWFzb25zRGVzY3JpcHRpb24uYXBwZW5kKCJu
b24tbGF5ZXIgdmlld3BvcnQtY29uc3RyYWluZWQgb2JqZWN0cywiKTsKLSAgICAgICAgaWYgKHN5
bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpJc0ltYWdl
RG9jdW1lbnQpCi0gICAgICAgICAgICByZWFzb25zRGVzY3JpcHRpb24uYXBwZW5kKCJpbWFnZSBk
b2N1bWVudCwiKTsKLQotICAgICAgICAvLyBTdHJpcCB0aGUgdHJhaWxpbmcgY29tbWEuCi0gICAg
ICAgIFN0cmluZyByZWFzb25zRGVzY3JpcHRpb25UcmltbWVkID0gcmVhc29uc0Rlc2NyaXB0aW9u
LnRvU3RyaW5nKCkubGVmdChyZWFzb25zRGVzY3JpcHRpb24ubGVuZ3RoKCkgLSAxKTsKLQotICAg
ICAgICBXVEZMb2dBbHdheXMoIlNDUk9MTElORzogU3dpdGNoaW5nIHRvIG1haW4tdGhyZWFkIHNj
cm9sbGluZyBtb2RlLiBUaW1lOiAlZiBSZWFzb24ocyk6ICVzXG4iLCBXVEY6Om1vbm90b25pY2Fs
bHlJbmNyZWFzaW5nVGltZSgpLCByZWFzb25zRGVzY3JpcHRpb25UcmltbWVkLmFzY2lpKCkuZGF0
YSgpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgV1RGTG9nQWx3YXlzKCJTQ1JPTExJTkc6IFN3aXRj
aGluZyB0byB0aHJlYWRlZCBzY3JvbGxpbmcgbW9kZS4gVGltZTogJWZcbiIsIFdURjo6bW9ub3Rv
bmljYWxseUluY3JlYXNpbmdUaW1lKCkpOwotfQotCi12b2lkIGxvZ1doZWVsRXZlbnRIYW5kbGVy
Q291bnRDaGFuZ2VkKHVuc2lnbmVkIGNvdW50KQotewotICAgIFdURkxvZ0Fsd2F5cygiU0NST0xM
SU5HOiBXaGVlbCBldmVudCBoYW5kbGVyIGNvdW50IGNoYW5nZWQuIFRpbWU6ICVmIENvdW50OiAl
dVxuIiwgV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSwgY291bnQpOwotfQotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5H
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9y
LmNwcAppbmRleCA3ZGU2NjYyZjA4ZTA4NTc1ODQ4YThjNTM0YmY3Nzg3NmU2MGZhY2YzLi42YzRh
YzA2NDZlMDk2ZmQyYzlhY2FhYmUwYWYwYWNkZTQ3ZTYyNWNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtMzY1MiwxMyAr
MzY1MiwxNCBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlU2Nyb2xsQ29vcmRp
bmF0ZWRMYXllcihSZW5kZXJMYXllciYgbGF5ZXIsIFNjcgogICAgICAgICAgICAgc2Nyb2xsZWRD
b250ZW50c0xheWVyID0gbV9yb290Q29udGVudExheWVyLmdldCgpOwogICAgICAgICAgICAgY291
bnRlclNjcm9sbGluZ0xheWVyID0gZml4ZWRSb290QmFja2dyb3VuZExheWVyKCk7CiAgICAgICAg
ICAgICBpbnNldENsaXBMYXllciA9IGNsaXBMYXllcigpOwotICAgICAgICAgICAgc2Nyb2xsaW5n
Q29vcmRpbmF0b3ItPnVwZGF0ZVNjcm9sbGluZ05vZGUobm9kZUlELCBzY3JvbGxpbmdMYXllciwg
c2Nyb2xsZWRDb250ZW50c0xheWVyLCBjb3VudGVyU2Nyb2xsaW5nTGF5ZXIsIGluc2V0Q2xpcExh
eWVyKTsKKyAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT51cGRhdGVGcmFtZVNjcm9s
bGluZ05vZGUobm9kZUlELCBzY3JvbGxpbmdMYXllciwgY291bnRlclNjcm9sbGluZ0xheWVyLCBp
bnNldENsaXBMYXllcik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBTY3JvbGxpbmdD
b29yZGluYXRvcjo6U2Nyb2xsaW5nR2VvbWV0cnkgc2Nyb2xsaW5nR2VvbWV0cnk7CiAgICAgICAg
ICAgICBzY3JvbGxpbmdHZW9tZXRyeS5zY3JvbGxPcmlnaW4gPSBsYXllci5zY3JvbGxPcmlnaW4o
KTsKICAgICAgICAgICAgIHNjcm9sbGluZ0dlb21ldHJ5LnNjcm9sbFBvc2l0aW9uID0gbGF5ZXIu
c2Nyb2xsUG9zaXRpb24oKTsKKyAgICAgICAgICAgIHNjcm9sbGluZ0dlb21ldHJ5LnNjcm9sbGFi
bGVBcmVhU2l6ZSA9IGxheWVyLnZpc2libGVTaXplKCk7CiAgICAgICAgICAgICBzY3JvbGxpbmdH
ZW9tZXRyeS5jb250ZW50U2l6ZSA9IGxheWVyLmNvbnRlbnRzU2l6ZSgpOwotICAgICAgICAgICAg
c2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnVwZGF0ZVNjcm9sbGluZ05vZGUobm9kZUlELCBzY3JvbGxp
bmdMYXllciwgc2Nyb2xsZWRDb250ZW50c0xheWVyLCBjb3VudGVyU2Nyb2xsaW5nTGF5ZXIsIGlu
c2V0Q2xpcExheWVyLCAmc2Nyb2xsaW5nR2VvbWV0cnkpOworICAgICAgICAgICAgc2Nyb2xsaW5n
Q29vcmRpbmF0b3ItPnVwZGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZShub2RlSUQsIHNjcm9sbGlu
Z0xheWVyLCBzY3JvbGxlZENvbnRlbnRzTGF5ZXIsICZzY3JvbGxpbmdHZW9tZXRyeSk7CiAgICAg
ICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Nyb2xs
aW5nL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0
aW9uLmNwcAppbmRleCAxYmY0ODNlMGMzMTg1MDY5OWNmYThhZmU1ZGQ0MmZjMWZlYzQ2YjkwLi40
OGEyYmI0ZDBjNmRmY2M5OWQ0Y2ZkOGZiZDc0NmEwOWEyY2Y5YmJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJh
bnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TY3JvbGxpbmcvUmVtb3Rl
U2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKQEAgLTMyLDcgKzMyLDggQEAKICNp
bmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBo
aWNzTGF5ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGluZ1N0YXRlRml4ZWROb2RlLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1Njcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9TY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TY3JvbGxpbmdTdGF0ZVRyZWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRTdHJlYW0uaD4K
QEAgLTU2LDcgKzU3LDE3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8U2Nyb2xs
aW5nU3RhdGVTY3JvbGxpbmdOb2RlPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50
RW5jb2RlciYsIGNvbnN0IFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSYpOwogICAgIHN0YXRp
YyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXImLCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05v
ZGUmKTsKIH07Ci0KKyAgICAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8U2Nyb2xs
aW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJn
dW1lbnRFbmNvZGVyJiwgY29uc3QgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUmKTsK
KyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyJiwgU2Nyb2xsaW5nU3RhdGVG
cmFtZVNjcm9sbGluZ05vZGUmKTsKK307CisgICAgCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVu
dENvZGVyPFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlPiB7CisgICAgc3RhdGlj
IHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYsIGNvbnN0IFNjcm9sbGluZ1N0YXRlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlJik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2Rl
ciYsIFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlJik7Cit9OworICAgIAogdGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZT4gewog
ICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImLCBjb25zdCBTY3JvbGxpbmdT
dGF0ZUZpeGVkTm9kZSYpOwogICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIm
LCBTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZSYpOwpAQCAtMTAxLDQ4ICsxMTIsNTkgQEAgYm9vbCBB
cmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlTm9kZT46OmRlY29kZShBcmd1bWVudERlY29kZXIm
IGRlY29kZXIsIFNjcm9sbGkKIH0KIAogI2RlZmluZSBTQ1JPTExJTkdfTk9ERV9FTkNPREUocHJv
cGVydHksIGdldHRlcikgXAotICAgIGlmIChub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGU6OnByb3BlcnR5KSkgXAorICAgIGlmIChub2RlLmhhc0NoYW5n
ZWRQcm9wZXJ0eShwcm9wZXJ0eSkpIFwKICAgICAgICAgZW5jb2RlciA8PCBub2RlLmdldHRlcigp
OwogCiAjZGVmaW5lIFNDUk9MTElOR19OT0RFX0VOQ09ERV9FTlVNKHByb3BlcnR5LCBnZXR0ZXIp
IFwKLSAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlOjpwcm9wZXJ0eSkpIFwKKyAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkocHJv
cGVydHkpKSBcCiAgICAgICAgIGVuY29kZXIuZW5jb2RlRW51bShub2RlLmdldHRlcigpKTsKIAog
dm9pZCBBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT46OmVuY29kZShB
cmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZSYgbm9kZSkKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGNvbnN0IFNjcm9sbGluZ1N0
YXRlTm9kZSY+KG5vZGUpOwogICAgIAotICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShWaWV3cG9y
dFNpemUsIHZpZXdwb3J0U2l6ZSkKLSAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoVG90YWxDb250
ZW50c1NpemUsIHRvdGFsQ29udGVudHNTaXplKQotICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShT
Y3JvbGxQb3NpdGlvbiwgc2Nyb2xsUG9zaXRpb24pCi0gICAgU0NST0xMSU5HX05PREVfRU5DT0RF
KFNjcm9sbE9yaWdpbiwgc2Nyb2xsT3JpZ2luKQotICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShG
cmFtZVNjYWxlRmFjdG9yLCBmcmFtZVNjYWxlRmFjdG9yKQotICAgIFNDUk9MTElOR19OT0RFX0VO
Q09ERShOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbiwgbm9uRmFzdFNjcm9sbGFibGVSZWdpb24pCi0g
ICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFdoZWVsRXZlbnRIYW5kbGVyQ291bnQsIHdoZWVsRXZl
bnRIYW5kbGVyQ291bnQpCi0gICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFJlYXNvbnNGb3JTeW5j
aHJvbm91c1Njcm9sbGluZywgc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKQotICAgIFNDUk9M
TElOR19OT0RFX0VOQ09ERShTY3JvbGxhYmxlQXJlYVBhcmFtcywgc2Nyb2xsYWJsZUFyZWFQYXJh
bWV0ZXJzKQotICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERV9FTlVNKEJlaGF2aW9yRm9yRml4ZWRF
bGVtZW50cywgc2Nyb2xsQmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzKQotICAgIFNDUk9MTElOR19O
T0RFX0VOQ09ERShSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbiwgcmVxdWVzdGVkU2Nyb2xsUG9zaXRp
b24pCi0gICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uLCBy
ZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvblJlcHJlc2VudHNQcm9ncmFtbWF0aWNTY3JvbGwpCi0gICAg
U0NST0xMSU5HX05PREVfRU5DT0RFKEhlYWRlckhlaWdodCwgaGVhZGVySGVpZ2h0KQotICAgIFND
Uk9MTElOR19OT0RFX0VOQ09ERShGb290ZXJIZWlnaHQsIGZvb3RlckhlaWdodCkKLSAgICBTQ1JP
TExJTkdfTk9ERV9FTkNPREUoVG9wQ29udGVudEluc2V0LCB0b3BDb250ZW50SW5zZXQpCi0KLSAg
ICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2Rl
OjpTY3JvbGxlZENvbnRlbnRzTGF5ZXIpKQotICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0
PEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4obm9kZS5zY3JvbGxlZENvbnRlbnRzTGF5
ZXIoKSk7CisgICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5n
Tm9kZTo6U2Nyb2xsYWJsZUFyZWFTaXplLCBzY3JvbGxhYmxlQXJlYVNpemUpCisgICAgU0NST0xM
SU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6VG90YWxDb250ZW50
c1NpemUsIHRvdGFsQ29udGVudHNTaXplKQorICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbFBvc2l0aW9uLCBzY3JvbGxQb3NpdGlvbikK
KyAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpT
Y3JvbGxPcmlnaW4sIHNjcm9sbE9yaWdpbikKKyAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxhYmxlQXJlYVBhcmFtcywgc2Nyb2xsYWJs
ZUFyZWFQYXJhbWV0ZXJzKQorICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGU6OlJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uLCByZXF1ZXN0ZWRTY3JvbGxQ
b3NpdGlvbikKKyAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlOjpSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbiwgcmVxdWVzdGVkU2Nyb2xsUG9zaXRpb25S
ZXByZXNlbnRzUHJvZ3JhbW1hdGljU2Nyb2xsKQorfQogCi0gICAgaWYgKG5vZGUuaGFzQ2hhbmdl
ZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6Q291bnRlclNjcm9sbGluZ0xh
eWVyKSkKK3ZvaWQgQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9k
ZT46OmVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNjcm9sbGluZ1N0YXRl
RnJhbWVTY3JvbGxpbmdOb2RlJiBub2RlKQoreworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8
Y29uc3QgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlJj4obm9kZSk7CisgICAgCisgICAgU0NS
T0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpGcmFt
ZVNjYWxlRmFjdG9yLCBmcmFtZVNjYWxlRmFjdG9yKQorICAgIFNDUk9MTElOR19OT0RFX0VOQ09E
RShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6Tm9uRmFzdFNjcm9sbGFibGVSZWdp
b24sIG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKQorICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShT
Y3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6V2hlZWxFdmVudEhhbmRsZXJDb3VudCwg
d2hlZWxFdmVudEhhbmRsZXJDb3VudCkKKyAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xs
aW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OlJlYXNvbnNGb3JTeW5jaHJvbm91c1Njcm9sbGlu
Zywgc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKQorICAgIFNDUk9MTElOR19OT0RFX0VOQ09E
RV9FTlVNKFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpCZWhhdmlvckZvckZpeGVk
RWxlbWVudHMsIHNjcm9sbEJlaGF2aW9yRm9yRml4ZWRFbGVtZW50cykKKyAgICBTQ1JPTExJTkdf
Tk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkhlYWRlckhlaWdo
dCwgaGVhZGVySGVpZ2h0KQorICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0
ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6Rm9vdGVySGVpZ2h0LCBmb290ZXJIZWlnaHQpCisgICAgU0NS
T0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpUb3BD
b250ZW50SW5zZXQsIHRvcENvbnRlbnRJbnNldCkKKworICAgIGlmIChub2RlLmhhc0NoYW5nZWRQ
cm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6Q291bnRlclNjcm9sbGlu
Z0xheWVyKSkKICAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyOjpQ
bGF0Zm9ybUxheWVySUQ+KG5vZGUuY291bnRlclNjcm9sbGluZ0xheWVyKCkpOwogCi0gICAgaWYg
KG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6SW5z
ZXRDbGlwTGF5ZXIpKQorICAgIGlmIChub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdT
dGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6SW5zZXRDbGlwTGF5ZXIpKQogICAgICAgICBlbmNvZGVy
IDw8IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4obm9kZS5pbnNl
dENsaXBMYXllcigpKTsKIAotICAgIGlmIChub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGU6OkNvbnRlbnRTaGFkb3dMYXllcikpCisgICAgaWYgKG5vZGUu
aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpDb250
ZW50U2hhZG93TGF5ZXIpKQogICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PEdyYXBoaWNz
TGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4obm9kZS5jb250ZW50U2hhZG93TGF5ZXIoKSk7CiB9CiAK
K3ZvaWQgQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZT46
OmVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNjcm9sbGluZ1N0YXRlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlJiBub2RlKQoreworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8
Y29uc3QgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlJj4obm9kZSk7CisgICAgCisgICAgaWYg
KG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlOjpTY3JvbGxlZENvbnRlbnRzTGF5ZXIpKQorICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19j
YXN0PEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4obm9kZS5zY3JvbGxlZENvbnRlbnRz
TGF5ZXIoKSk7Cit9CisKICNkZWZpbmUgU0NST0xMSU5HX05PREVfREVDT0RFKHByb3BlcnR5LCB0
eXBlLCBzZXR0ZXIpIFwKLSAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlOjpwcm9wZXJ0eSkpIHsgXAorICAgIGlmIChub2RlLmhhc0NoYW5n
ZWRQcm9wZXJ0eShwcm9wZXJ0eSkpIHsgXAogICAgICAgICB0eXBlIGRlY29kZWRWYWx1ZTsgXAog
ICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRlY29kZWRWYWx1ZSkpIFwKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsgXApAQCAtMTUwLDcgKzE3Miw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxT
Y3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNv
ZGVyCiAgICAgfQogCiAjZGVmaW5lIFNDUk9MTElOR19OT0RFX0RFQ09ERV9FTlVNKHByb3BlcnR5
LCB0eXBlLCBzZXR0ZXIpIFwKLSAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xs
aW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpwcm9wZXJ0eSkpIHsgXAorICAgIGlmIChub2RlLmhhc0No
YW5nZWRQcm9wZXJ0eShwcm9wZXJ0eSkpIHsgXAogICAgICAgICB0eXBlIGRlY29kZWRWYWx1ZTsg
XAogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShkZWNvZGVkVmFsdWUpKSBcCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7IFwKQEAgLTE2MiwxNyArMTg0LDEyIEBAIGJvb2wgQXJndW1l
bnRDb2RlcjxTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU+OjpkZWNvZGUoQXJndW1lbnREZWNv
ZGVyJiBkZWNvZGVyCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aWNfY2FzdDxTY3JvbGxp
bmdTdGF0ZU5vZGUmPihub2RlKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFNDUk9M
TElOR19OT0RFX0RFQ09ERShWaWV3cG9ydFNpemUsIEZsb2F0U2l6ZSwgc2V0Vmlld3BvcnRTaXpl
KTsKLSAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoVG90YWxDb250ZW50c1NpemUsIEludFNpemUs
IHNldFRvdGFsQ29udGVudHNTaXplKTsKLSAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xs
UG9zaXRpb24sIEZsb2F0UG9pbnQsIHNldFNjcm9sbFBvc2l0aW9uKTsKLSAgICBTQ1JPTExJTkdf
Tk9ERV9ERUNPREUoU2Nyb2xsT3JpZ2luLCBJbnRQb2ludCwgc2V0U2Nyb2xsT3JpZ2luKTsKLSAg
ICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoRnJhbWVTY2FsZUZhY3RvciwgZmxvYXQsIHNldEZyYW1l
U2NhbGVGYWN0b3IpOwotICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShOb25GYXN0U2Nyb2xsYWJs
ZVJlZ2lvbiwgUmVnaW9uLCBzZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbik7Ci0gICAgU0NST0xM
SU5HX05PREVfREVDT0RFKFdoZWVsRXZlbnRIYW5kbGVyQ291bnQsIGludCwgc2V0V2hlZWxFdmVu
dEhhbmRsZXJDb3VudCk7Ci0gICAgU0NST0xMSU5HX05PREVfREVDT0RFKFJlYXNvbnNGb3JTeW5j
aHJvbm91c1Njcm9sbGluZywgU3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zLCBzZXRTeW5jaHJv
bm91c1Njcm9sbGluZ1JlYXNvbnMpOwotICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxh
YmxlQXJlYVBhcmFtcywgU2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLCBzZXRTY3JvbGxhYmxlQXJl
YVBhcmFtZXRlcnMpOwotICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERV9FTlVNKEJlaGF2aW9yRm9y
Rml4ZWRFbGVtZW50cywgU2Nyb2xsQmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzLCBzZXRTY3JvbGxC
ZWhhdmlvckZvckZpeGVkRWxlbWVudHMpOwotCisgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsYWJsZUFyZWFTaXplLCBGbG9hdFNpemUs
IHNldFNjcm9sbGFibGVBcmVhU2l6ZSk7CisgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9s
bGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6VG90YWxDb250ZW50c1NpemUsIEZsb2F0U2l6ZSwgc2V0
VG90YWxDb250ZW50c1NpemUpOworICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdT
dGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbFBvc2l0aW9uLCBGbG9hdFBvaW50LCBzZXRTY3JvbGxQ
b3NpdGlvbik7CisgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZTo6U2Nyb2xsT3JpZ2luLCBJbnRQb2ludCwgc2V0U2Nyb2xsT3JpZ2luKTsKKyAgICBT
Q1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxh
YmxlQXJlYVBhcmFtcywgU2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLCBzZXRTY3JvbGxhYmxlQXJl
YVBhcmFtZXRlcnMpOworICAgIAogICAgIGlmIChub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKSkgewogICAg
ICAgICBGbG9hdFBvaW50IHNjcm9sbFBvc2l0aW9uOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHNjcm9sbFBvc2l0aW9uKSkKQEAgLTE4NSwzNiArMjAyLDU4IEBAIGJvb2wgQXJndW1lbnRD
b2RlcjxTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVy
JiBkZWNvZGVyCiAgICAgICAgIG5vZGUuc2V0UmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24oc2Nyb2xs
UG9zaXRpb24sIHJlcHJlc2VudHNQcm9ncmFtbWF0aWNTY3JvbGwpOwogICAgIH0KIAotICAgIFND
Uk9MTElOR19OT0RFX0RFQ09ERShIZWFkZXJIZWlnaHQsIGludCwgc2V0SGVhZGVySGVpZ2h0KTsK
LSAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoRm9vdGVySGVpZ2h0LCBpbnQsIHNldEZvb3Rlckhl
aWdodCk7Ci0gICAgU0NST0xMSU5HX05PREVfREVDT0RFKFRvcENvbnRlbnRJbnNldCwgZmxvYXQs
IHNldFRvcENvbnRlbnRJbnNldCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQXJndW1l
bnRDb2RlcjxTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZT46OmRlY29kZShBcmd1bWVu
dERlY29kZXImIGRlY29kZXIsIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlJiBub2Rl
KQoreworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGljX2Nhc3Q8U2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlJj4obm9kZSkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBTQ1JP
TExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkZyYW1l
U2NhbGVGYWN0b3IsIGZsb2F0LCBzZXRGcmFtZVNjYWxlRmFjdG9yKTsKKyAgICBTQ1JPTExJTkdf
Tk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6Ok5vbkZhc3RTY3Jv
bGxhYmxlUmVnaW9uLCBSZWdpb24sIHNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKTsKKyAgICBT
Q1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6Oldo
ZWVsRXZlbnRIYW5kbGVyQ291bnQsIGludCwgc2V0V2hlZWxFdmVudEhhbmRsZXJDb3VudCk7Cisg
ICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2Rl
OjpSZWFzb25zRm9yU3luY2hyb25vdXNTY3JvbGxpbmcsIFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVh
c29ucywgc2V0U3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKTsKKyAgICBTQ1JPTExJTkdfTk9E
RV9ERUNPREVfRU5VTShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6QmVoYXZpb3JG
b3JGaXhlZEVsZW1lbnRzLCBTY3JvbGxCZWhhdmlvckZvckZpeGVkRWxlbWVudHMsIHNldFNjcm9s
bEJlaGF2aW9yRm9yRml4ZWRFbGVtZW50cyk7CiAKLSAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJv
cGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxlZENvbnRlbnRzTGF5ZXIp
KSB7CisgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxp
bmdOb2RlOjpIZWFkZXJIZWlnaHQsIGludCwgc2V0SGVhZGVySGVpZ2h0KTsKKyAgICBTQ1JPTExJ
TkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkZvb3Rlckhl
aWdodCwgaW50LCBzZXRGb290ZXJIZWlnaHQpOworICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShT
Y3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6VG9wQ29udGVudEluc2V0LCBmbG9hdCwg
c2V0VG9wQ29udGVudEluc2V0KTsKKworICAgIGlmIChub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShT
Y3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6Q291bnRlclNjcm9sbGluZ0xheWVyKSkg
ewogICAgICAgICBHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQgbGF5ZXJJRDsKICAgICAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShsYXllcklEKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgbm9kZS5zZXRTY3JvbGxlZENvbnRlbnRzTGF5ZXIobGF5ZXJJRCk7CisgICAg
ICAgIG5vZGUuc2V0Q291bnRlclNjcm9sbGluZ0xheWVyKGxheWVySUQpOwogICAgIH0KIAotICAg
IGlmIChub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6
OkNvdW50ZXJTY3JvbGxpbmdMYXllcikpIHsKKyAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVy
dHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6Okluc2V0Q2xpcExheWVyKSkgewog
ICAgICAgICBHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQgbGF5ZXJJRDsKICAgICAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShsYXllcklEKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgbm9kZS5zZXRDb3VudGVyU2Nyb2xsaW5nTGF5ZXIobGF5ZXJJRCk7CisgICAgICAg
IG5vZGUuc2V0SW5zZXRDbGlwTGF5ZXIobGF5ZXJJRCk7CiAgICAgfQogCi0gICAgaWYgKG5vZGUu
aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6SW5zZXRDbGlw
TGF5ZXIpKSB7CisgICAgaWYgKG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRl
RnJhbWVTY3JvbGxpbmdOb2RlOjpDb250ZW50U2hhZG93TGF5ZXIpKSB7CiAgICAgICAgIEdyYXBo
aWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBsYXllcklEOwogICAgICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGxheWVySUQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBub2Rl
LnNldEluc2V0Q2xpcExheWVyKGxheWVySUQpOworICAgICAgICBub2RlLnNldENvbnRlbnRTaGFk
b3dMYXllcihsYXllcklEKTsKICAgICB9CiAKLSAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVy
dHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpDb250ZW50U2hhZG93TGF5ZXIpKSB7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0ZU92
ZXJmbG93U2Nyb2xsaW5nTm9kZT46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFNj
cm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlJiBub2RlKQoreworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoc3RhdGljX2Nhc3Q8U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlJj4obm9k
ZSkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJv
cGVydHkoU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGU6OlNjcm9sbGVkQ29udGVu
dHNMYXllcikpIHsKICAgICAgICAgR3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEIGxheWVy
SUQ7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUobGF5ZXJJRCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIG5vZGUuc2V0Q29udGVudFNoYWRvd0xheWVyKGxheWVySUQp
OworICAgICAgICBub2RlLnNldFNjcm9sbGVkQ29udGVudHNMYXllcihsYXllcklEKTsKICAgICB9
CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI3Miw4ICszMTEsMTAgQEAgc3RhdGljIHZvaWQgZW5j
b2RlTm9kZUFuZERlc2NlbmRhbnRzKElQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBTY3JvbGwKIHsKICAgICBzd2l0Y2ggKHN0YXRlTm9kZS5ub2RlVHlwZSgpKSB7CiAgICAgY2Fz
ZSBGcmFtZVNjcm9sbGluZ05vZGU6CisgICAgICAgIGVuY29kZXIgPDwgdG9TY3JvbGxpbmdTdGF0
ZUZyYW1lU2Nyb2xsaW5nTm9kZShzdGF0ZU5vZGUpOworICAgICAgICBicmVhazsKICAgICBjYXNl
IE92ZXJmbG93U2Nyb2xsaW5nTm9kZToKLSAgICAgICAgZW5jb2RlciA8PCB0b1Njcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZShzdGF0ZU5vZGUpOworICAgICAgICBlbmNvZGVyIDw8IHRvU2Nyb2xs
aW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGUoc3RhdGVOb2RlKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBGaXhlZE5vZGU6CiAgICAgICAgIGVuY29kZXIgPDwgdG9TY3JvbGxpbmdTdGF0
ZUZpeGVkTm9kZShzdGF0ZU5vZGUpOwpAQCAtMzU0LDggKzM5NSwxMSBAQCBib29sIFJlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb246OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2Rl
ciYgZGVjb2RlcgogICAgICAgICAKICAgICAgICAgc3dpdGNoIChub2RlVHlwZSkgewogICAgICAg
ICBjYXNlIEZyYW1lU2Nyb2xsaW5nTm9kZToKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoKnRvU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUobmV3Tm9kZSkpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IE92ZXJmbG93U2Nyb2xsaW5nTm9kZToKLSAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
KnRvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlKG5ld05vZGUpKSkKKyAgICAgICAgICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoKnRvU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGUo
bmV3Tm9kZSkpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIEZpeGVkTm9kZToKQEAgLTQwMyw2ICs0NDcsOCBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGR1bXAoY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJiwgYm9vbCBjaGFuZ2Vk
UHJvcGVydGllc09ubHkgPSB0cnVlKTsKICAgICB2b2lkIGR1bXAoY29uc3QgU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlJiwgYm9vbCBjaGFuZ2VkUHJvcGVydGllc09ubHkgPSB0cnVlKTsKKyAg
ICB2b2lkIGR1bXAoY29uc3QgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUmLCBib29s
IGNoYW5nZWRQcm9wZXJ0aWVzT25seSA9IHRydWUpOworICAgIHZvaWQgZHVtcChjb25zdCBTY3Jv
bGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZSYsIGJvb2wgY2hhbmdlZFByb3BlcnRpZXNP
bmx5ID0gdHJ1ZSk7CiAgICAgdm9pZCBkdW1wKGNvbnN0IFNjcm9sbGluZ1N0YXRlRml4ZWROb2Rl
JiwgYm9vbCBjaGFuZ2VkUHJvcGVydGllc09ubHkgPSB0cnVlKTsKICAgICB2b2lkIGR1bXAoY29u
c3QgU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlJiwgYm9vbCBjaGFuZ2VkUHJvcGVydGllc09ubHkg
PSB0cnVlKTsKIApAQCAtNDg4LDggKzUzNCwxMCBAQCB2b2lkIFJlbW90ZVNjcm9sbGluZ1RyZWVU
ZXh0U3RyZWFtOjpkdW1wKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYgbm9kZSwgYm9vbCBjaAog
ICAgIAogICAgIHN3aXRjaCAobm9kZS5ub2RlVHlwZSgpKSB7CiAgICAgY2FzZSBGcmFtZVNjcm9s
bGluZ05vZGU6CisgICAgICAgIGR1bXAodG9TY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9k
ZShub2RlKSwgY2hhbmdlZFByb3BlcnRpZXNPbmx5KTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBPdmVyZmxvd1Njcm9sbGluZ05vZGU6Ci0gICAgICAgIGR1bXAodG9TY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGUobm9kZSksIGNoYW5nZWRQcm9wZXJ0aWVzT25seSk7CisgICAgICAgIGR1bXAo
dG9TY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZShub2RlKSwgY2hhbmdlZFByb3Bl
cnRpZXNPbmx5KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGaXhlZE5vZGU6CiAgICAgICAg
IGR1bXAodG9TY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZShub2RlKSwgY2hhbmdlZFByb3BlcnRpZXNP
bmx5KTsKQEAgLTQ5OSwxMyArNTQ3LDEzIEBAIHZvaWQgUmVtb3RlU2Nyb2xsaW5nVHJlZVRleHRT
dHJlYW06OmR1bXAoY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJiBub2RlLCBib29sIGNoCiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIH0KLQorICAgIAogdm9pZCBSZW1vdGVTY3JvbGxpbmdUcmVlVGV4
dFN0cmVhbTo6ZHVtcChjb25zdCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUmIG5vZGUsIGJv
b2wgY2hhbmdlZFByb3BlcnRpZXNPbmx5KQogewogICAgIFJlbW90ZVNjcm9sbGluZ1RyZWVUZXh0
U3RyZWFtJiB0cyA9ICp0aGlzOwotCi0gICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwg
bm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpWaWV3
cG9ydFNpemUpKQotICAgICAgICBkdW1wUHJvcGVydHkodHMsICJ2aWV3cG9ydC1zaXplIiwgbm9k
ZS52aWV3cG9ydFNpemUoKSk7CisgICAgCisgICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkg
fHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpT
Y3JvbGxhYmxlQXJlYVNpemUpKQorICAgICAgICBkdW1wUHJvcGVydHkodHMsICJzY3JvbGxhYmxl
LWFyZWEtc2l6ZSIsIG5vZGUudG90YWxDb250ZW50c1NpemUoKSk7CiAKICAgICBpZiAoIWNoYW5n
ZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGU6OlRvdGFsQ29udGVudHNTaXplKSkKICAgICAgICAgZHVtcFByb3BlcnR5
KHRzLCAidG90YWwtY29udGVudHMtc2l6ZSIsIG5vZGUudG90YWxDb250ZW50c1NpemUoKSk7CkBA
IC01MTYsNyArNTY0LDIwIEBAIHZvaWQgUmVtb3RlU2Nyb2xsaW5nVHJlZVRleHRTdHJlYW06OmR1
bXAoY29uc3QgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlJiBub2RlCiAgICAgaWYgKCFjaGFu
Z2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxPcmlnaW4pKQogICAgICAgICBkdW1wUHJvcGVydHkodHMs
ICJzY3JvbGwtb3JpZ2luIiwgbm9kZS5zY3JvbGxPcmlnaW4oKSk7CiAKLSAgICBpZiAoIWNoYW5n
ZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGU6OkZyYW1lU2NhbGVGYWN0b3IpKQorICAgIGlmICghY2hhbmdlZFByb3Bl
cnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVT
Y3JvbGxpbmdOb2RlOjpGcmFtZVNjYWxlRmFjdG9yKSkKKyAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0
aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGU6OlJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKSkgeworICAgICAgICBkdW1wUHJvcGVydHko
dHMsICJyZXF1ZXN0ZWQtc2Nyb2xsLXBvc2l0aW9uIiwgbm9kZS5yZXF1ZXN0ZWRTY3JvbGxQb3Np
dGlvbigpKTsKKyAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAicmVxdWVzdGVkLXNjcm9sbC1wb3Np
dGlvbi1pcy1wcm9ncmFtYXRpYyIsIG5vZGUucmVxdWVzdGVkU2Nyb2xsUG9zaXRpb25SZXByZXNl
bnRzUHJvZ3JhbW1hdGljU2Nyb2xsKCkpOworICAgIH0KK30KKyAgICAKK3ZvaWQgUmVtb3RlU2Ny
b2xsaW5nVHJlZVRleHRTdHJlYW06OmR1bXAoY29uc3QgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9s
bGluZ05vZGUmIG5vZGUsIGJvb2wgY2hhbmdlZFByb3BlcnRpZXNPbmx5KQoreworICAgIFJlbW90
ZVNjcm9sbGluZ1RyZWVUZXh0U3RyZWFtJiB0cyA9ICp0aGlzOworICAgIAorICAgIGR1bXAoc3Rh
dGljX2Nhc3Q8Y29uc3QgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlJj4obm9kZSksIGNoYW5n
ZWRQcm9wZXJ0aWVzT25seSk7CisgICAgCisgICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkg
fHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05v
ZGU6OkZyYW1lU2NhbGVGYWN0b3IpKQogICAgICAgICBkdW1wUHJvcGVydHkodHMsICJmcmFtZS1z
Y2FsZS1mYWN0b3IiLCBub2RlLmZyYW1lU2NhbGVGYWN0b3IoKSk7CiAKICAgICAvLyBGSVhNRTog
ZHVtcCBub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbgpAQCAtNTI1LDM4ICs1ODYsMzggQEAgdm9pZCBS
ZW1vdGVTY3JvbGxpbmdUcmVlVGV4dFN0cmVhbTo6ZHVtcChjb25zdCBTY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGUmIG5vZGUKICAgICAvLyBGSVhNRTogZHVtcCBzY3JvbGxhYmxlQXJlYVBhcmFt
ZXRlcnMKICAgICAvLyBGSVhNRTogZHVtcCBzY3JvbGxCZWhhdmlvckZvckZpeGVkRWxlbWVudHMK
IAotICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3Bl
cnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6UmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24p
KSB7Ci0gICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgInJlcXVlc3RlZC1zY3JvbGwtcG9zaXRpb24i
LCBub2RlLnJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKCkpOwotICAgICAgICBkdW1wUHJvcGVydHko
dHMsICJyZXF1ZXN0ZWQtc2Nyb2xsLXBvc2l0aW9uLWlzLXByb2dyYW1hdGljIiwgbm9kZS5yZXF1
ZXN0ZWRTY3JvbGxQb3NpdGlvblJlcHJlc2VudHNQcm9ncmFtbWF0aWNTY3JvbGwoKSk7Ci0gICAg
fQotCi0gICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJv
cGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpIZWFkZXJIZWlnaHQpKQorICAgIGlm
ICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9s
bGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpIZWFkZXJIZWlnaHQpKQogICAgICAgICBkdW1w
UHJvcGVydHkodHMsICJoZWFkZXItaGVpZ2h0Iiwgbm9kZS5oZWFkZXJIZWlnaHQoKSk7CiAKLSAg
ICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShT
Y3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OkZvb3RlckhlaWdodCkpCisgICAgaWYgKCFjaGFu
Z2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3Rh
dGVGcmFtZVNjcm9sbGluZ05vZGU6OkZvb3RlckhlaWdodCkpCiAgICAgICAgIGR1bXBQcm9wZXJ0
eSh0cywgImZvb3Rlci1oZWlnaHQiLCBub2RlLmZvb3RlckhlaWdodCgpKTsKIAotICAgIGlmICgh
Y2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZTo6VG9wQ29udGVudEluc2V0KSkKKyAgICBpZiAoIWNoYW5nZWRQ
cm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZy
YW1lU2Nyb2xsaW5nTm9kZTo6VG9wQ29udGVudEluc2V0KSkKICAgICAgICAgZHVtcFByb3BlcnR5
KHRzLCAidG9wLWNvbnRlbnQtaW5zZXQiLCBub2RlLnRvcENvbnRlbnRJbnNldCgpKTsKIAotICAg
IGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsZWRDb250ZW50c0xheWVyKSkKLSAgICAg
ICAgZHVtcFByb3BlcnR5KHRzLCAic2Nyb2xsZWQtY29udGVudHMtbGF5ZXIiLCBzdGF0aWNfY2Fz
dDxHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+KG5vZGUuc2Nyb2xsZWRDb250ZW50c0xh
eWVyKCkpKTsKLQotICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hh
bmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6Q291bnRlclNjcm9sbGlu
Z0xheWVyKSkKLSAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAiY291bnRlci1zY3JvbGxpbmctbGF5
ZXIiLCBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+KG5vZGUuY291
bnRlclNjcm9sbGluZ0xheWVyKCkpKTsKLQotICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5
IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6
SW5zZXRDbGlwTGF5ZXIpKQorICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUu
aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpJbnNl
dENsaXBMYXllcikpCiAgICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgImNsaXAtaW5zZXQtbGF5ZXIi
LCBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+KG5vZGUuaW5zZXRD
bGlwTGF5ZXIoKSkpOwogCi0gICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5o
YXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpDb250ZW50U2hh
ZG93TGF5ZXIpKQorCisgICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXND
aGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkNvbnRlbnRT
aGFkb3dMYXllcikpCiAgICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgImNvbnRlbnQtc2hhZG93LWxh
eWVyIiwgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEPihub2RlLmNv
bnRlbnRTaGFkb3dMYXllcigpKSk7CiAKLSAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8
fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6Okhl
YWRlckxheWVyKSkKKyAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6SGVhZGVyTGF5
ZXIpKQogICAgICAgICBkdW1wUHJvcGVydHkodHMsICJoZWFkZXItbGF5ZXIiLCBzdGF0aWNfY2Fz
dDxHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+KG5vZGUuaGVhZGVyTGF5ZXIoKSkpOwog
Ci0gICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVy
dHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpGb290ZXJMYXllcikpCisgICAgaWYgKCFj
aGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5n
U3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkZvb3RlckxheWVyKSkKICAgICAgICAgZHVtcFByb3Bl
cnR5KHRzLCAiZm9vdGVyLWxheWVyIiwgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllcjo6UGxhdGZv
cm1MYXllcklEPihub2RlLmZvb3RlckxheWVyKCkpKTsKIH0KKyAgICAKK3ZvaWQgUmVtb3RlU2Ny
b2xsaW5nVHJlZVRleHRTdHJlYW06OmR1bXAoY29uc3QgU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Nj
cm9sbGluZ05vZGUmIG5vZGUsIGJvb2wgY2hhbmdlZFByb3BlcnRpZXNPbmx5KQoreworICAgIFJl
bW90ZVNjcm9sbGluZ1RyZWVUZXh0U3RyZWFtJiB0cyA9ICp0aGlzOworICAgIAorICAgIGR1bXAo
c3RhdGljX2Nhc3Q8Y29uc3QgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlJj4obm9kZSksIGNo
YW5nZWRQcm9wZXJ0aWVzT25seSk7CisgICAgCisgICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09u
bHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9s
bGluZ05vZGU6OlNjcm9sbGVkQ29udGVudHNMYXllcikpCisgICAgICAgIGR1bXBQcm9wZXJ0eSh0
cywgInNjcm9sbGVkLWNvbnRlbnRzLWxheWVyIiwgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllcjo6
UGxhdGZvcm1MYXllcklEPihub2RlLnNjcm9sbGVkQ29udGVudHNMYXllcigpKSk7Cit9CiAKIHZv
aWQgUmVtb3RlU2Nyb2xsaW5nVHJlZVRleHRTdHJlYW06OmR1bXAoY29uc3QgU2Nyb2xsaW5nU3Rh
dGVGaXhlZE5vZGUmIG5vZGUsIGJvb2wgY2hhbmdlZFByb3BlcnRpZXNPbmx5KQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdD
b29yZGluYXRvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TY3JvbGxpbmcv
UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5jcHAKaW5kZXggNzJhODdmNWNmMGYyZmFi
YTY1M2NlYmFhOGNiNTU5ZWY2NDQ5YjRjMS4uOWU2OTYzZGY2ZTQ5OTBjNjI3YjNjYjg1YjJiZTBk
MmMwNzZhNGZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGlu
Zy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuY3Bw
CkBAIC0zOCw2ICszOCw4IEBACiAjaW5jbHVkZSAiUmVtb3RlU2Nyb2xsaW5nVHJlZS5oIgogI2lu
Y2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1Njcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TY3JvbGxpbmdTdGF0ZVRyZWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmg+CiAKQEAgLTk0LDQ1ICs5Niw0NCBAQCB2b2lkIFJl
bW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OnVwZGF0ZVNjcm9sbGluZ1RyZWUoY29uc3Qg
UmVtb3RlU2Nyb2xsaW5nQwogdm9pZCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5Ojpj
b25uZWN0U3RhdGVOb2RlTGF5ZXJzKFNjcm9sbGluZ1N0YXRlVHJlZSYgc3RhdGVUcmVlLCBjb25z
dCBSZW1vdGVMYXllclRyZWVIb3N0JiBsYXllclRyZWVIb3N0LCBib29sJiBmaXhlZE9yU3RpY2t5
TGF5ZXJDaGFuZ2VkKQogewogICAgIGZvciAoYXV0byYgY3Vyck5vZGUgOiBzdGF0ZVRyZWUubm9k
ZU1hcCgpLnZhbHVlcygpKSB7CisgICAgICAgIGlmIChjdXJyTm9kZS0+aGFzQ2hhbmdlZFByb3Bl
cnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6U2Nyb2xsTGF5ZXIpKQorICAgICAgICAgICAgY3Vyck5v
ZGUtPnNldExheWVyKGxheWVyVHJlZUhvc3QuZ2V0TGF5ZXIoY3Vyck5vZGUtPmxheWVyKCkpKTsK
KwogICAgICAgICBzd2l0Y2ggKGN1cnJOb2RlLT5ub2RlVHlwZSgpKSB7Ci0gICAgICAgIGNhc2Ug
RnJhbWVTY3JvbGxpbmdOb2RlOgotICAgICAgICBjYXNlIE92ZXJmbG93U2Nyb2xsaW5nTm9kZTog
ewotICAgICAgICAgICAgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlKiBzY3JvbGxpbmdTdGF0
ZU5vZGUgPSB0b1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZShjdXJyTm9kZSk7CisgICAgICAg
IGNhc2UgRnJhbWVTY3JvbGxpbmdOb2RlOiB7CisgICAgICAgICAgICBTY3JvbGxpbmdTdGF0ZUZy
YW1lU2Nyb2xsaW5nTm9kZSogc2Nyb2xsaW5nU3RhdGVOb2RlID0gdG9TY3JvbGxpbmdTdGF0ZUZy
YW1lU2Nyb2xsaW5nTm9kZShjdXJyTm9kZSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlm
IChzY3JvbGxpbmdTdGF0ZU5vZGUtPmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5v
ZGU6OlNjcm9sbExheWVyKSkKLSAgICAgICAgICAgICAgICBzY3JvbGxpbmdTdGF0ZU5vZGUtPnNl
dExheWVyKGxheWVyVHJlZUhvc3QuZ2V0TGF5ZXIoc2Nyb2xsaW5nU3RhdGVOb2RlLT5sYXllcigp
KSk7Ci0KLSAgICAgICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUtPmhhc0NoYW5nZWRQcm9w
ZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGVkQ29udGVudHNMYXllcikp
Ci0gICAgICAgICAgICAgICAgc2Nyb2xsaW5nU3RhdGVOb2RlLT5zZXRTY3JvbGxlZENvbnRlbnRz
TGF5ZXIobGF5ZXJUcmVlSG9zdC5nZXRMYXllcihzY3JvbGxpbmdTdGF0ZU5vZGUtPnNjcm9sbGVk
Q29udGVudHNMYXllcigpKSk7Ci0KLSAgICAgICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUt
Pmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OkNvdW50ZXJT
Y3JvbGxpbmdMYXllcikpCisgICAgICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLT5oYXND
aGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkNvdW50ZXJT
Y3JvbGxpbmdMYXllcikpCiAgICAgICAgICAgICAgICAgc2Nyb2xsaW5nU3RhdGVOb2RlLT5zZXRD
b3VudGVyU2Nyb2xsaW5nTGF5ZXIobGF5ZXJUcmVlSG9zdC5nZXRMYXllcihzY3JvbGxpbmdTdGF0
ZU5vZGUtPmNvdW50ZXJTY3JvbGxpbmdMYXllcigpKSk7CiAKLSAgICAgICAgICAgIGlmIChzY3Jv
bGxpbmdTdGF0ZU5vZGUtPmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGU6Okluc2V0Q2xpcExheWVyKSkKKyAgICAgICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5v
ZGUtPmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6
SW5zZXRDbGlwTGF5ZXIpKQogICAgICAgICAgICAgICAgIHNjcm9sbGluZ1N0YXRlTm9kZS0+c2V0
SW5zZXRDbGlwTGF5ZXIobGF5ZXJUcmVlSG9zdC5nZXRMYXllcihzY3JvbGxpbmdTdGF0ZU5vZGUt
Pmluc2V0Q2xpcExheWVyKCkpKTsKIAotICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9k
ZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6Q29udGVu
dFNoYWRvd0xheWVyKSkKKyAgICAgICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUtPmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6Q29udGVudFNo
YWRvd0xheWVyKSkKICAgICAgICAgICAgICAgICBzY3JvbGxpbmdTdGF0ZU5vZGUtPnNldENvbnRl
bnRTaGFkb3dMYXllcihsYXllclRyZWVIb3N0LmdldExheWVyKHNjcm9sbGluZ1N0YXRlTm9kZS0+
Y29udGVudFNoYWRvd0xheWVyKCkpKTsKIAogICAgICAgICAgICAgLy8gRklYTUU6IHdlIHNob3Vs
ZCBuZXZlciBoYXZlIGhlYWRlciBhbmQgZm9vdGVyIGxheWVycyBjb21pbmcgZnJvbSB0aGUgV2Vi
UHJvY2Vzcy4KLSAgICAgICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUtPmhhc0NoYW5nZWRQ
cm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OkhlYWRlckxheWVyKSkKKyAgICAg
ICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUtPmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxp
bmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6SGVhZGVyTGF5ZXIpKQogICAgICAgICAgICAgICAg
IHNjcm9sbGluZ1N0YXRlTm9kZS0+c2V0SGVhZGVyTGF5ZXIobGF5ZXJUcmVlSG9zdC5nZXRMYXll
cihzY3JvbGxpbmdTdGF0ZU5vZGUtPmhlYWRlckxheWVyKCkpKTsKIAotICAgICAgICAgICAgaWYg
KHNjcm9sbGluZ1N0YXRlTm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZTo6Rm9vdGVyTGF5ZXIpKQorICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRl
Tm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2Rl
OjpGb290ZXJMYXllcikpCiAgICAgICAgICAgICAgICAgc2Nyb2xsaW5nU3RhdGVOb2RlLT5zZXRG
b290ZXJMYXllcihsYXllclRyZWVIb3N0LmdldExheWVyKHNjcm9sbGluZ1N0YXRlTm9kZS0+Zm9v
dGVyTGF5ZXIoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBPdmVyZmxvd1Njcm9sbGluZ05vZGU6IHsKKyAgICAgICAgICAgIFNjcm9sbGluZ1N0YXRlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlKiBzY3JvbGxpbmdTdGF0ZU5vZGUgPSB0b1Njcm9sbGluZ1N0YXRl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlKGN1cnJOb2RlKTsKKworICAgICAgICAgICAgaWYgKHNjcm9s
bGluZ1N0YXRlTm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlOjpTY3JvbGxlZENvbnRlbnRzTGF5ZXIpKQorICAgICAgICAgICAgICAgIHNj
cm9sbGluZ1N0YXRlTm9kZS0+c2V0U2Nyb2xsZWRDb250ZW50c0xheWVyKGxheWVyVHJlZUhvc3Qu
Z2V0TGF5ZXIoc2Nyb2xsaW5nU3RhdGVOb2RlLT5zY3JvbGxlZENvbnRlbnRzTGF5ZXIoKSkpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBGaXhlZE5vZGU6Ci0g
ICAgICAgICAgICBpZiAoY3Vyck5vZGUtPmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0
ZU5vZGU6OlNjcm9sbExheWVyKSkgewotICAgICAgICAgICAgICAgIGN1cnJOb2RlLT5zZXRMYXll
cihsYXllclRyZWVIb3N0LmdldExheWVyKGN1cnJOb2RlLT5sYXllcigpKSk7CisgICAgICAgICAg
ICBpZiAoY3Vyck5vZGUtPmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlNj
cm9sbExheWVyKSkKICAgICAgICAgICAgICAgICBmaXhlZE9yU3RpY2t5TGF5ZXJDaGFuZ2VkID0g
dHJ1ZTsKLSAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFN0
aWNreU5vZGU6Ci0gICAgICAgICAgICBpZiAoY3Vyck5vZGUtPmhhc0NoYW5nZWRQcm9wZXJ0eShT
Y3JvbGxpbmdTdGF0ZU5vZGU6OlNjcm9sbExheWVyKSkgewotICAgICAgICAgICAgICAgIGN1cnJO
b2RlLT5zZXRMYXllcihsYXllclRyZWVIb3N0LmdldExheWVyKGN1cnJOb2RlLT5sYXllcigpKSk7
CisgICAgICAgICAgICBpZiAoY3Vyck5vZGUtPmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdT
dGF0ZU5vZGU6OlNjcm9sbExheWVyKSkKICAgICAgICAgICAgICAgICBmaXhlZE9yU3RpY2t5TGF5
ZXJDaGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9s
bGluZy9SZW1vdGVTY3JvbGxpbmdUcmVlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9T
Y3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nVHJlZS5jcHAKaW5kZXggNzg1ODU4OWM5YzY3YTMyYWZl
OGU2ZjI0ZWJlNjE0YzM1NWY1NTc4Yy4uNTllNzY0ZDkwMDFiYWE2YWUzMzRlNjdlZGNmZGMzNDMw
ZDg4ZmRmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGluZy9S
ZW1vdGVTY3JvbGxpbmdUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2Ny
b2xsaW5nL1JlbW90ZVNjcm9sbGluZ1RyZWUuY3BwCkBAIC0zNSw5ICszNSw5IEBACiAKICNpZiBQ
TEFURk9STShJT1MpCiAjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZUlPUy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1Mu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1Mu
aD4KICNlbHNlCi0jaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZU1h
Yy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1h
Yy5oPgogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtOTIsMTUgKzkyLDE2
IEBAIFBhc3NPd25QdHI8U2Nyb2xsaW5nVHJlZU5vZGU+IFJlbW90ZVNjcm9sbGluZ1RyZWU6OmNy
ZWF0ZU5vZGUoU2Nyb2xsaW5nTm9kZVR5cGUKICAgICBzd2l0Y2ggKG5vZGVUeXBlKSB7CiAgICAg
Y2FzZSBGcmFtZVNjcm9sbGluZ05vZGU6CiAjaWYgUExBVEZPUk0oSU9TKQotICAgICAgICByZXR1
cm4gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1M6OmNyZWF0ZSgqdGhpcywgbm9kZVR5cGUs
IG5vZGVJRCk7CisgICAgICAgIHJldHVybiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
SU9TOjpjcmVhdGUoKnRoaXMsIG5vZGVJRCk7CiAjZWxzZQotICAgICAgICByZXR1cm4gU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVNYWM6OmNyZWF0ZSgqdGhpcywgbm9kZVR5cGUsIG5vZGVJRCk7
CisgICAgICAgIHJldHVybiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjpjcmVh
dGUoKnRoaXMsIG5vZGVJRCk7CiAjZW5kaWYKICAgICBjYXNlIE92ZXJmbG93U2Nyb2xsaW5nTm9k
ZToKICNpZiBQTEFURk9STShJT1MpCiAgICAgICAgIHJldHVybiBTY3JvbGxpbmdUcmVlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlSU9TOjpjcmVhdGUoKnRoaXMsIG5vZGVJRCk7CiAjZWxzZQotICAgICAg
ICByZXR1cm4gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWM6OmNyZWF0ZSgqdGhpcywgbm9k
ZVR5cGUsIG5vZGVJRCk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICNlbmRpZgogICAgIGNhc2UgRml4ZWROb2RlOgogICAgICAgICByZXR1
cm4gU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6Y3JlYXRlKCp0aGlzLCBub2RlSUQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJl
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Nj
cm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5oCmluZGV4
IDZlMGM4NmYzODk4YTE5MzlhNWIyMTViZDE2NzA5MTlmMjlmMjc0OTIuLjQwYzg1NTk0MzJmMmJh
Nzk0MTRhN2FmNzYzN2JjY2M2Mjk0MzUwOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9TY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJ
T1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2Nyb2xsaW5nL2lvcy9TY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmgKQEAgLTI2LDM1ICsyNiw0NSBAQAogI2lm
bmRlZiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TX2gKICNkZWZpbmUgU2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPU19oCiAKLSNpZiBQTEFURk9STShJT1Mp
Ci0jaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKKyNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5H
KSAmJiBQTEFURk9STShJT1MpCiAKICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGluZ0Nvb3JkaW5h
dG9yLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUy5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5o
PgogCiBPQkpDX0NMQVNTIFdLT3ZlcmZsb3dTY3JvbGxWaWV3RGVsZWdhdGU7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi1jbGFzcyBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9T
IDogcHVibGljIFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TIHsKK2NsYXNz
IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MgOiBwdWJsaWMgV2ViQ29yZTo6
U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZSB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFBhc3NPd25QdHI8U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUz4gY3JlYXRl
KFdlYkNvcmU6OlNjcm9sbGluZ1RyZWUmLCBXZWJDb3JlOjpTY3JvbGxpbmdOb2RlSUQpOwogICAg
IHZpcnR1YWwgflNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MoKTsKIAogICAg
IHZvaWQgc2Nyb2xsVmlld0RpZFNjcm9sbChjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgYm9v
bCBpblVzZXJJbnRlcmF0aW9uKTsKKyAgICAKKyAgICBDQUxheWVyICpzY3JvbGxMYXllcigpIGNv
bnN0IHsgcmV0dXJuIG1fc2Nyb2xsTGF5ZXIuZ2V0KCk7IH0KIAogcHJpdmF0ZToKICAgICBTY3Jv
bGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWUm
LCBXZWJDb3JlOjpTY3JvbGxpbmdOb2RlSUQpOwogCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJl
Zm9yZUNoaWxkcmVuKGNvbnN0IFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZSYpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBZnRlckNoaWxkcmVuKGNvbnN0IFdlYkNvcmU6OlNj
cm9sbGluZ1N0YXRlTm9kZSYpIG92ZXJyaWRlOworICAgIAorICAgIHZpcnR1YWwgdm9pZCBzZXRT
Y3JvbGxMYXllclBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSBvdmVycmlkZTsK
KworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMYXllcnNBZnRlclZpZXdwb3J0Q2hhbmdlKGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYgdmlld3BvcnRSZWN0LCBkb3VibGUgc2NhbGUpIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtV2hl
ZWxFdmVudCYpIG92ZXJyaWRlIHsgfQorCisgICAgdm9pZCB1cGRhdGVDaGlsZE5vZGVzQWZ0ZXJT
Y3JvbGwoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOworICAgIAorICAgIFJldGFpblB0cjxD
QUxheWVyPiBtX3Njcm9sbExheWVyOworICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3Njcm9sbGVk
Q29udGVudHNMYXllcjsKIAogICAgIFJldGFpblB0cjxXS092ZXJmbG93U2Nyb2xsVmlld0RlbGVn
YXRlPiBtX3Njcm9sbFZpZXdEZWxlZ2F0ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
Ci0jZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykKLSNlbmRpZiAvLyBQTEFURk9STShJ
T1MpCisjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgUExBVEZPUk0oSU9TKQog
CiAjZW5kaWYgLy8gU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPU19oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbQpp
bmRleCBkODM2YTk1Njk2NzVjYTQ4NTViODViNDhmYzA3MGVkZjM4ZmUyZmViLi4wNDllYTBkY2Ew
YmJjNWJkMmVhMWZlNTE0YjJhMmY1YWYzM2E2YWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvU2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TY3JvbGxpbmcvaW9zL1Nj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0KQEAgLTI5LDggKzI5LDkgQEAK
ICNpZiBQTEFURk9STShJT1MpCiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKIAorI2ltcG9y
dCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Jsb2NrRXhjZXB0
aW9ucy5oPgotI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGUuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsaW5nVHJlZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlTY3Jv
bGxWaWV3Lmg+CiAKQEAgLTkyLDcgKzkzLDcgQEAgUGFzc093blB0cjxTY3JvbGxpbmdUcmVlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlSU9TPiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmcKIH0K
IAogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6U2Nyb2xsaW5nVHJlZU92
ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUyhXZWJDb3JlOjpTY3JvbGxpbmdUcmVlJiBzY3JvbGxpbmdU
cmVlLCBXZWJDb3JlOjpTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQotICAgIDogU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVJT1Moc2Nyb2xsaW5nVHJlZSwgT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLCBu
b2RlSUQpCisgICAgOiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlKHNjcm9sbGlu
Z1RyZWUsIG5vZGVJRCkKIHsKIH0KIApAQCAtMTE3LDE0ICsxMTgsMjEgQEAgdm9pZCBTY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjp1cGRhdGVCZWZvcmVDaGlsZHJlbihjb25z
dCBXZWJDb3JlOjoKICAgICAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogICAgIH0KIAot
ICAgIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TOjp1cGRhdGVCZWZvcmVDaGlsZHJlbihz
dGF0ZU5vZGUpOworICAgIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGU6OnVwZGF0
ZUJlZm9yZUNoaWxkcmVuKHN0YXRlTm9kZSk7CisKKyAgICBjb25zdCBhdXRvJiBzY3JvbGxpbmdT
dGF0ZU5vZGUgPSB0b1Njcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlKHN0YXRlTm9k
ZSk7CisgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xs
aW5nU3RhdGVOb2RlOjpTY3JvbGxMYXllcikpCisgICAgICAgIG1fc2Nyb2xsTGF5ZXIgPSBzY3Jv
bGxpbmdTdGF0ZU5vZGUubGF5ZXIoKTsKKworICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFz
Q2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlOjpTY3Jv
bGxlZENvbnRlbnRzTGF5ZXIpKQorICAgICAgICBtX3Njcm9sbGVkQ29udGVudHNMYXllciA9IHNj
cm9sbGluZ1N0YXRlTm9kZS5zY3JvbGxlZENvbnRlbnRzTGF5ZXIoKTsKIH0KIAogdm9pZCBTY3Jv
bGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjp1cGRhdGVBZnRlckNoaWxkcmVuKGNv
bnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYgc3RhdGVOb2RlKQogewotICAgIFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlSU9TOjp1cGRhdGVBZnRlckNoaWxkcmVuKHN0YXRlTm9kZSk7CisgICAgU2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZTo6dXBkYXRlQWZ0ZXJDaGlsZHJlbihzdGF0
ZU5vZGUpOwogCi0gICAgY29uc3QgYXV0byYgc2Nyb2xsaW5nU3RhdGVOb2RlID0gdG9TY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGUoc3RhdGVOb2RlKTsKKyAgICBjb25zdCBhdXRvJiBzY3JvbGxp
bmdTdGF0ZU5vZGUgPSB0b1Njcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlKHN0YXRl
Tm9kZSk7CiAKICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShT
Y3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbExheWVyKQogICAgICAgICB8fCBzY3Jv
bGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5n
Tm9kZTo6VG90YWxDb250ZW50c1NpemUpCkBAIC0xNTAsNiArMTU4LDIxIEBAIHZvaWQgU2Nyb2xs
aW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6dXBkYXRlQWZ0ZXJDaGlsZHJlbihjb25z
dCBTY3JvbGxpbmdTCiAgICAgfQogfQogCit2b2lkIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVJT1M6OnNldFNjcm9sbExheWVyUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgc2Ny
b2xsUG9zaXRpb24pCit7CisgICAgW21fc2Nyb2xsTGF5ZXIgc2V0UG9zaXRpb246Q0dQb2ludE1h
a2UoLXNjcm9sbFBvc2l0aW9uLngoKSArIHNjcm9sbE9yaWdpbigpLngoKSwgLXNjcm9sbFBvc2l0
aW9uLnkoKSArIHNjcm9sbE9yaWdpbigpLnkoKSldOworCisgICAgdXBkYXRlQ2hpbGROb2Rlc0Fm
dGVyU2Nyb2xsKHNjcm9sbFBvc2l0aW9uKTsKK30KKwordm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlSU9TOjp1cGRhdGVDaGlsZE5vZGVzQWZ0ZXJTY3JvbGwoY29uc3QgRmxv
YXRQb2ludCYpCit7CisgICAgaWYgKCFtX2NoaWxkcmVuKQorICAgICAgICByZXR1cm47CisKKyAg
ICAvLyBGSVhNRTogdGhpcyBuZWVkcyB0byBhZGp1c3QgY2hpbGQgZml4ZWQvc3RpY2t5IG5vZGVz
LgorfQorCiB2b2lkIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6OnNjcm9s
bFZpZXdEaWRTY3JvbGwoY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIGJvb2wgaW5V
c2VySW50ZXJhdGlvbikKIHsKICAgICBzY3JvbGxpbmdUcmVlKCkuc2Nyb2xsUG9zaXRpb25DaGFu
Z2VkVmlhRGVsZWdhdGVkU2Nyb2xsaW5nKHNjcm9sbGluZ05vZGVJRCgpLCBzY3JvbGxQb3NpdGlv
biwgaW5Vc2VySW50ZXJhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0K
aW5kZXggZTEwYWIzOWYwMGNhOWYyNDNiNDU4ZGNjYjcwODk1NjM1ZGFjODQyYi4uZDljZjJhYjZl
ZjJmZGZlZGU4YTg4NWYxNTM1NmRkZTlhNDFjYWNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0
b3JQcm94eUlPUy5tbQpAQCAtMzEsNiArMzEsOCBAQAogCiAjaW5jbHVkZSAiTGF5ZXJSZXByZXNl
bnRhdGlvbi5oIgogI2luY2x1ZGUgIlJlbW90ZUxheWVyVHJlZUhvc3QuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL1Njcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9TY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2Nyb2xsaW5nU3RhdGVUcmVlLmg+CiAjaW5jbHVkZSA8VUlLaXQvVUlWaWV3Lmg+CiAK
QEAgLTQ3LDI0ICs0OSwzMCBAQCB2b2lkIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6
OmNvbm5lY3RTdGF0ZU5vZGVMYXllcnMoU2Nyb2xsaW5nU3RhdGVUcmVlJgogewogICAgIGZvciAo
YXV0byYgY3Vyck5vZGUgOiBzdGF0ZVRyZWUubm9kZU1hcCgpLnZhbHVlcygpKSB7CiAgICAgICAg
IHN3aXRjaCAoY3Vyck5vZGUtPm5vZGVUeXBlKCkpIHsKLSAgICAgICAgY2FzZSBGcmFtZVNjcm9s
bGluZ05vZGU6CiAgICAgICAgIGNhc2UgT3ZlcmZsb3dTY3JvbGxpbmdOb2RlOiB7Ci0gICAgICAg
ICAgICBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUqIHNjcm9sbGluZ1N0YXRlTm9kZSA9IHRv
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlKGN1cnJOb2RlKTsKKyAgICAgICAgICAgIFNjcm9s
bGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlKiBzY3JvbGxpbmdTdGF0ZU5vZGUgPSB0b1Nj
cm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlKGN1cnJOb2RlKTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5
KFNjcm9sbGluZ1N0YXRlTm9kZTo6U2Nyb2xsTGF5ZXIpKQogICAgICAgICAgICAgICAgIHNjcm9s
bGluZ1N0YXRlTm9kZS0+c2V0TGF5ZXIobGF5ZXJSZXByZXNlbnRhdGlvbkZyb21MYXllck9yVmll
dyhsYXllclRyZWVIb3N0LmdldExheWVyKHNjcm9sbGluZ1N0YXRlTm9kZS0+bGF5ZXIoKSkpKTsK
LQotICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5
KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsZWRDb250ZW50c0xheWVyKSkKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS0+aGFzQ2hhbmdl
ZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlOjpTY3JvbGxlZENv
bnRlbnRzTGF5ZXIpKQogICAgICAgICAgICAgICAgIHNjcm9sbGluZ1N0YXRlTm9kZS0+c2V0U2Ny
b2xsZWRDb250ZW50c0xheWVyKGxheWVyUmVwcmVzZW50YXRpb25Gcm9tTGF5ZXJPclZpZXcobGF5
ZXJUcmVlSG9zdC5nZXRMYXllcihzY3JvbGxpbmdTdGF0ZU5vZGUtPnNjcm9sbGVkQ29udGVudHNM
YXllcigpKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH07CisgICAgICAgIGNhc2Ug
RnJhbWVTY3JvbGxpbmdOb2RlOiB7CisgICAgICAgICAgICBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Ny
b2xsaW5nTm9kZSogc2Nyb2xsaW5nU3RhdGVOb2RlID0gdG9TY3JvbGxpbmdTdGF0ZUZyYW1lU2Ny
b2xsaW5nTm9kZShjdXJyTm9kZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChzY3Jv
bGxpbmdTdGF0ZU5vZGUtPmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlNj
cm9sbExheWVyKSkKKyAgICAgICAgICAgICAgICBzY3JvbGxpbmdTdGF0ZU5vZGUtPnNldExheWVy
KGxheWVyUmVwcmVzZW50YXRpb25Gcm9tTGF5ZXJPclZpZXcobGF5ZXJUcmVlSG9zdC5nZXRMYXll
cihzY3JvbGxpbmdTdGF0ZU5vZGUtPmxheWVyKCkpKSk7CiAKLSAgICAgICAgICAgIGlmIChzY3Jv
bGxpbmdTdGF0ZU5vZGUtPmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGU6OkNvdW50ZXJTY3JvbGxpbmdMYXllcikpCisgICAgICAgICAgICBpZiAoc2Nyb2xsaW5n
U3RhdGVOb2RlLT5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGlu
Z05vZGU6OkNvdW50ZXJTY3JvbGxpbmdMYXllcikpCiAgICAgICAgICAgICAgICAgc2Nyb2xsaW5n
U3RhdGVOb2RlLT5zZXRDb3VudGVyU2Nyb2xsaW5nTGF5ZXIobGF5ZXJSZXByZXNlbnRhdGlvbkZy
b21MYXllck9yVmlldyhsYXllclRyZWVIb3N0LmdldExheWVyKHNjcm9sbGluZ1N0YXRlTm9kZS0+
Y291bnRlclNjcm9sbGluZ0xheWVyKCkpKSk7CiAKICAgICAgICAgICAgIC8vIEZJWE1FOiB3ZSBz
aG91bGQgbmV2ZXIgaGF2ZSBoZWFkZXIgYW5kIGZvb3RlciBsYXllcnMgY29taW5nIGZyb20gdGhl
IFdlYlByb2Nlc3MuCi0gICAgICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLT5oYXNDaGFu
Z2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpIZWFkZXJMYXllcikpCisg
ICAgICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLT5oYXNDaGFuZ2VkUHJvcGVydHkoU2Ny
b2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkhlYWRlckxheWVyKSkKICAgICAgICAgICAg
ICAgICBzY3JvbGxpbmdTdGF0ZU5vZGUtPnNldEhlYWRlckxheWVyKGxheWVyUmVwcmVzZW50YXRp
b25Gcm9tTGF5ZXJPclZpZXcobGF5ZXJUcmVlSG9zdC5nZXRMYXllcihzY3JvbGxpbmdTdGF0ZU5v
ZGUtPmhlYWRlckxheWVyKCkpKSk7CiAKLSAgICAgICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5v
ZGUtPmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OkZvb3Rl
ckxheWVyKSkKKyAgICAgICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUtPmhhc0NoYW5nZWRQ
cm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6Rm9vdGVyTGF5ZXIpKQog
ICAgICAgICAgICAgICAgIHNjcm9sbGluZ1N0YXRlTm9kZS0+c2V0Rm9vdGVyTGF5ZXIobGF5ZXJS
ZXByZXNlbnRhdGlvbkZyb21MYXllck9yVmlldyhsYXllclRyZWVIb3N0LmdldExheWVyKHNjcm9s
bGluZ1N0YXRlTm9kZS0+Zm9vdGVyTGF5ZXIoKSkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggYzRlMzRjZTE3NDI0N2FhZWFhMDM3ZjRiMjFkNDg4ZDVmOWMzZjNlMi4u
N2MwYjliNmE5MTI3ZjVlMWRmMTNlZDVkZGUwODAwYjUzNjExYTQ2NCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI5IEBACisyMDE0LTA1LTE2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29t
PgorCisgICAgICAgIFNwbGl0IHNjcm9sbGluZyB0cmVlIFNjcm9sbGluZ05vZGVzIGludG8gRnJh
bWVTY3JvbGxpbmdOb2RlcyBhbmQgT3ZlcmZsb3dTY3JvbGxpbmdOb2RlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzMDIyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBVcGRhdGVkIGZvciBu
ZXcgbm9kZSBuYW1lLiBObyBnZW9tZXRyeSBjaGFuZ2VzLgorCisgICAgICAgICogcGxhdGZvcm0v
bWFjLXdrMi90aWxlZC1kcmF3aW5nL2NsYW1wLW91dC1vZi1ib3VuZHMtc2Nyb2xscy1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL2ZpeGVkL2Fi
c29sdXRlLWluc2lkZS1maXhlZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFj
LXdrMi90aWxlZC1kcmF3aW5nL2ZpeGVkL2Fic29sdXRlLWluc2lkZS1vdXQtb2Ytdmlldy1maXhl
ZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5n
L2ZpeGVkL2ZpeGVkLWluLW92ZXJmbG93LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvZml4ZWQvZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXct
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9m
aXhlZC9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1uZWdhdGl2ZS16aW5kZXgtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9maXhlZC9mb3Vy
LWJhcnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvdGlsZWQtZHJh
d2luZy9maXhlZC9mb3VyLWJhcnMtd2l0aC1oZWFkZXItYW5kLWZvb3Rlci1leHBlY3RlZC50eHQ6
CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL2ZpeGVkL25lZ2F0aXZl
LXNjcm9sbC1vZmZzZXQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIv
dGlsZWQtZHJhd2luZy9maXhlZC9uZWdhdGl2ZS1zY3JvbGwtb2Zmc2V0LWluLXZpZXctZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9maXhlZC9u
ZXN0ZWQtZml4ZWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvdGls
ZWQtZHJhd2luZy9maXhlZC9wZXJjZW50YWdlLWluc2lkZS1maXhlZC1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy10cmVlLWFm
dGVyLXNjcm9sbC1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy10cmVlLXNsb3ctc2Nyb2xsaW5nLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvc3RpY2t5L25lZ2F0aXZlLXNj
cm9sbC1vZmZzZXQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvdGls
ZWQtZHJhd2luZy9zdGlja3kvc3RpY2t5LWhvcml6b250YWwtZXhwZWN0ZWQudHh0OgorCiAyMDE0
LTA1LTE5ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAg
VW5yZXZpZXdlZCBnYXJkZW5pbmcsIHRyeSB0byB1bmJyZWFrIE1hYyBidWlsZGJvdHMgYW5kIEVX
UyBib3RzIGFmdGVyIHIxNjkwMjMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2syL3RpbGVkLWRyYXdpbmcvY2xhbXAtb3V0LW9mLWJvdW5kcy1zY3JvbGxzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9jbGFtcC1v
dXQtb2YtYm91bmRzLXNjcm9sbHMtZXhwZWN0ZWQudHh0CmluZGV4IDQyMTMwMjdiMjAzMjE4YTU1
NTI4YjU5M2YzYTdiMzU0NDdiZWRhMjUuLjRjM2JkOWNiYWUzY2Q3M2VkYTc4YWY2MjYwODI1OTQ3
NTNjZTA0MWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQt
ZHJhd2luZy9jbGFtcC1vdXQtb2YtYm91bmRzLXNjcm9sbHMtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9jbGFtcC1vdXQtb2YtYm91
bmRzLXNjcm9sbHMtZXhwZWN0ZWQudHh0CkBAIC0xLDM4ICsxLDM4IEBACiBBdHRlbXB0ZWQgc2Ny
b2xsIHRvIC01MDAwLCAwCi0oU2Nyb2xsaW5nIG5vZGUKLSAgKHZpZXdwb3J0IHJlY3QgNzg1IDU4
NSkKKyhGcmFtZSBzY3JvbGxpbmcgbm9kZQorICAoc2Nyb2xsYWJsZSBhcmVhIHNpemUgNzg1IDU4
NSkKICAgKGNvbnRlbnRzIHNpemUgNTAwOCA1MDIxKQogKQogCiBBdHRlbXB0ZWQgc2Nyb2xsIHRv
IDAsIC01MDAwCi0oU2Nyb2xsaW5nIG5vZGUKLSAgKHZpZXdwb3J0IHJlY3QgNzg1IDU4NSkKKyhG
cmFtZSBzY3JvbGxpbmcgbm9kZQorICAoc2Nyb2xsYWJsZSBhcmVhIHNpemUgNzg1IDU4NSkKICAg
KGNvbnRlbnRzIHNpemUgNTAwOCA1MDIxKQogKQogCiBBdHRlbXB0ZWQgc2Nyb2xsIHRvIC01MDAw
LCAtNTAwMAotKFNjcm9sbGluZyBub2RlCi0gICh2aWV3cG9ydCByZWN0IDc4NSA1ODUpCisoRnJh
bWUgc2Nyb2xsaW5nIG5vZGUKKyAgKHNjcm9sbGFibGUgYXJlYSBzaXplIDc4NSA1ODUpCiAgIChj
b250ZW50cyBzaXplIDUwMDggNTAyMSkKICkKIAogQXR0ZW1wdGVkIHNjcm9sbCB0byAxMDAwMCwg
MAotKFNjcm9sbGluZyBub2RlCi0gICh2aWV3cG9ydCByZWN0IDc4NSA1ODUpCisoRnJhbWUgc2Ny
b2xsaW5nIG5vZGUKKyAgKHNjcm9sbGFibGUgYXJlYSBzaXplIDc4NSA1ODUpCiAgIChjb250ZW50
cyBzaXplIDUwMDggNTAyMSkKICAgKHJlcXVlc3RlZCBzY3JvbGwgcG9zaXRpb24gNDIyMyAwKQog
KQogCiBBdHRlbXB0ZWQgc2Nyb2xsIHRvIDAsIDEwMDAwCi0oU2Nyb2xsaW5nIG5vZGUKLSAgKHZp
ZXdwb3J0IHJlY3QgNzg1IDU4NSkKKyhGcmFtZSBzY3JvbGxpbmcgbm9kZQorICAoc2Nyb2xsYWJs
ZSBhcmVhIHNpemUgNzg1IDU4NSkKICAgKGNvbnRlbnRzIHNpemUgNTAwOCA1MDIxKQogICAocmVx
dWVzdGVkIHNjcm9sbCBwb3NpdGlvbiAwIDQ0MzYpCiApCiAKIEF0dGVtcHRlZCBzY3JvbGwgdG8g
MTAwMDAsIDEwMDAwCi0oU2Nyb2xsaW5nIG5vZGUKLSAgKHZpZXdwb3J0IHJlY3QgNzg1IDU4NSkK
KyhGcmFtZSBzY3JvbGxpbmcgbm9kZQorICAoc2Nyb2xsYWJsZSBhcmVhIHNpemUgNzg1IDU4NSkK
ICAgKGNvbnRlbnRzIHNpemUgNTAwOCA1MDIxKQogICAocmVxdWVzdGVkIHNjcm9sbCBwb3NpdGlv
biA0MjIzIDQ0MzYpCiApCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sy
L3RpbGVkLWRyYXdpbmcvZml4ZWQvYWJzb2x1dGUtaW5zaWRlLWZpeGVkLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9maXhlZC9hYnNvbHV0
ZS1pbnNpZGUtZml4ZWQtZXhwZWN0ZWQudHh0CmluZGV4IDUyYmU3Yjg3MTY3YmZlM2Y2Nzg1Mjc5
NTRlMDY1YTI3ZWE3ZWQ3NjUuLjRhNTg5M2FjZDg1ZjFhOTg4ZTc1OGRhNjczM2Q0YjRlODU5YzBi
MzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2lu
Zy9maXhlZC9hYnNvbHV0ZS1pbnNpZGUtZml4ZWQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9maXhlZC9hYnNvbHV0ZS1pbnNpZGUt
Zml4ZWQtZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsNSBAQAotKFNjcm9sbGluZyBub2RlCi0gICh2
aWV3cG9ydCByZWN0IDc4NSA2MDApCisoRnJhbWUgc2Nyb2xsaW5nIG5vZGUKKyAgKHNjcm9sbGFi
bGUgYXJlYSBzaXplIDc4NSA2MDApCiAgIChjb250ZW50cyBzaXplIDc4NSAyNzEwKQogICAocmVx
dWVzdGVkIHNjcm9sbCBwb3NpdGlvbiAwIDIwMCkKICAgKGNoaWxkcmVuIDEKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9maXhlZC9hYnNvbHV0
ZS1pbnNpZGUtb3V0LW9mLXZpZXctZml4ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL2ZpeGVkL2Fic29sdXRlLWluc2lkZS1vdXQtb2Yt
dmlldy1maXhlZC1leHBlY3RlZC50eHQKaW5kZXggZjg4ZDYyOGUxMTY4NGQ2ZDFjZGU4MDYwNjQw
NDFhNmMyN2NlMDI3Yy4uMmExMTJkMzMzZDIwZjQ0MTY2ZGM2ZTIxZjBhNzE1MzIyMzQ1NmYyYiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL2Zp
eGVkL2Fic29sdXRlLWluc2lkZS1vdXQtb2Ytdmlldy1maXhlZC1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL2ZpeGVkL2Fic29sdXRl
LWluc2lkZS1vdXQtb2Ytdmlldy1maXhlZC1leHBlY3RlZC50eHQKQEAgLTEsNSArMSw1IEBACi0o
U2Nyb2xsaW5nIG5vZGUKLSAgKHZpZXdwb3J0IHJlY3QgNzg1IDYwMCkKKyhGcmFtZSBzY3JvbGxp
bmcgbm9kZQorICAoc2Nyb2xsYWJsZSBhcmVhIHNpemUgNzg1IDYwMCkKICAgKGNvbnRlbnRzIHNp
emUgNzg1IDI1MTMpCiAgIChyZXF1ZXN0ZWQgc2Nyb2xsIHBvc2l0aW9uIDAgMjAwKQogICAoY2hp
bGRyZW4gMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1k
cmF3aW5nL2ZpeGVkL2ZpeGVkLWluLW92ZXJmbG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9maXhlZC9maXhlZC1pbi1vdmVyZmxvdy1l
eHBlY3RlZC50eHQKaW5kZXggOTU4M2VlYTdjMzY0MzI4YmIyM2EyZGI3MjMwNWU2Zjk5NjlhNjg5
Ni4uYTQ4ZDBmYjljN2I0NmE1OGM2OWFjZGE0ODgwOTZiNzNjYjFiNDIwNSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL2ZpeGVkL2ZpeGVkLWlu
LW92ZXJmbG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sy
L3RpbGVkLWRyYXdpbmcvZml4ZWQvZml4ZWQtaW4tb3ZlcmZsb3ctZXhwZWN0ZWQudHh0CkBAIC0x
LDUgKzEsNSBAQAotKFNjcm9sbGluZyBub2RlCi0gICh2aWV3cG9ydCByZWN0IDc4NSA2MDApCiso
RnJhbWUgc2Nyb2xsaW5nIG5vZGUKKyAgKHNjcm9sbGFibGUgYXJlYSBzaXplIDc4NSA2MDApCiAg
IChjb250ZW50cyBzaXplIDc4NSAyMjEzKQogICAocmVxdWVzdGVkIHNjcm9sbCBwb3NpdGlvbiAw
IDIwMCkKICAgKGNoaWxkcmVuIDEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azIvdGlsZWQtZHJhd2luZy9maXhlZC9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvZml4
ZWQvZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctZXhwZWN0ZWQudHh0CmluZGV4IDZhY2JlODQy
MDM5MmYyYWFhZGFiOTMyZTcxNjIxNmQ3ZjAzZjNlYTIuLjI1YzQyOGE3YjA3Y2E0N2FmZjQ3OGQ4
YzAwMjA0NTIzMjg4NDg3ZTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azIvdGlsZWQtZHJhd2luZy9maXhlZC9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL2Zp
eGVkL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUg
QEAKLShTY3JvbGxpbmcgbm9kZQotICAodmlld3BvcnQgcmVjdCA3ODUgNjAwKQorKEZyYW1lIHNj
cm9sbGluZyBub2RlCisgIChzY3JvbGxhYmxlIGFyZWEgc2l6ZSA3ODUgNjAwKQogICAoY29udGVu
dHMgc2l6ZSA3ODUgMTAyMSkKICAgKGNoaWxkcmVuIDEKICAgICAoRml4ZWQgbm9kZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL2ZpeGVkL2Zp
eGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LW5lZ2F0aXZlLXppbmRleC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvZml4ZWQvZml4ZWQtcG9z
aXRpb24tb3V0LW9mLXZpZXctbmVnYXRpdmUtemluZGV4LWV4cGVjdGVkLnR4dAppbmRleCA2YWNi
ZTg0MjAzOTJmMmFhYWRhYjkzMmU3MTYyMTZkN2YwM2YzZWEyLi4yNWM0MjhhN2IwN2NhNDdhZmY0
NzhkOGMwMDIwNDUyMzI4ODQ4N2U2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2syL3RpbGVkLWRyYXdpbmcvZml4ZWQvZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctbmVn
YXRpdmUtemluZGV4LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2syL3RpbGVkLWRyYXdpbmcvZml4ZWQvZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctbmVnYXRp
dmUtemluZGV4LWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUgQEAKLShTY3JvbGxpbmcgbm9kZQot
ICAodmlld3BvcnQgcmVjdCA3ODUgNjAwKQorKEZyYW1lIHNjcm9sbGluZyBub2RlCisgIChzY3Jv
bGxhYmxlIGFyZWEgc2l6ZSA3ODUgNjAwKQogICAoY29udGVudHMgc2l6ZSA3ODUgMTAyMSkKICAg
KGNoaWxkcmVuIDEKICAgICAoRml4ZWQgbm9kZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL2ZpeGVkL2ZvdXItYmFycy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvZml4ZWQvZm91ci1i
YXJzLWV4cGVjdGVkLnR4dAppbmRleCAyNTlkMjkzMTgwZjU0ZTk2OTNjYzY2ZjQwZmI5ZjRiZjVi
YjBmNGE4Li43NzI4YjZmZjllOGI2M2YwN2QxODAzZDBkYzhiZTFmNTBkNWVmNzRmIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvZml4ZWQvZm91
ci1iYXJzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3Rp
bGVkLWRyYXdpbmcvZml4ZWQvZm91ci1iYXJzLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUgQEAK
LShTY3JvbGxpbmcgbm9kZQotICAodmlld3BvcnQgcmVjdCA3ODUgNjAwKQorKEZyYW1lIHNjcm9s
bGluZyBub2RlCisgIChzY3JvbGxhYmxlIGFyZWEgc2l6ZSA3ODUgNjAwKQogICAoY29udGVudHMg
c2l6ZSA3ODUgMjIyMSkKICAgKHJlcXVlc3RlZCBzY3JvbGwgcG9zaXRpb24gMCAyMDApCiAgIChj
aGlsZHJlbiA0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVk
LWRyYXdpbmcvZml4ZWQvZm91ci1iYXJzLXdpdGgtaGVhZGVyLWFuZC1mb290ZXItZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL2ZpeGVkL2Zv
dXItYmFycy13aXRoLWhlYWRlci1hbmQtZm9vdGVyLWV4cGVjdGVkLnR4dAppbmRleCA5MTJkNjI1
NmNlODJkNThjM2VkNDE4N2VlMjJmZDMzNDg3ZjhiMzNkLi44YjBjYWVkMjgyOGU3YjZlNWU0MzA4
ZDc5NmNkNzYxYjBmMjlkOGVkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2syL3RpbGVkLWRyYXdpbmcvZml4ZWQvZm91ci1iYXJzLXdpdGgtaGVhZGVyLWFuZC1mb290ZXIt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJh
d2luZy9maXhlZC9mb3VyLWJhcnMtd2l0aC1oZWFkZXItYW5kLWZvb3Rlci1leHBlY3RlZC50eHQK
QEAgLTEsNSArMSw1IEBACi0oU2Nyb2xsaW5nIG5vZGUKLSAgKHZpZXdwb3J0IHJlY3QgNzg1IDYw
MCkKKyhGcmFtZSBzY3JvbGxpbmcgbm9kZQorICAoc2Nyb2xsYWJsZSBhcmVhIHNpemUgNzg1IDYw
MCkKICAgKGNvbnRlbnRzIHNpemUgNzg1IDI0MjEpCiAgIChyZXF1ZXN0ZWQgc2Nyb2xsIHBvc2l0
aW9uIDAgMjAwKQogICAoY2hpbGRyZW4gNApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL2ZpeGVkL25lZ2F0aXZlLXNjcm9sbC1vZmZzZXQtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL2Zp
eGVkL25lZ2F0aXZlLXNjcm9sbC1vZmZzZXQtZXhwZWN0ZWQudHh0CmluZGV4IGViOTAxOTFjOTQw
MTNjNjM3ZmFiYzljY2E0MTFhOTU4ZWY2ZjA2OTcuLjE5OTJjYTM1YmJlNjQ1MzMxMzhkNzY4MDJl
OGJkZDA1MDY0ZWZiNjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIv
dGlsZWQtZHJhd2luZy9maXhlZC9uZWdhdGl2ZS1zY3JvbGwtb2Zmc2V0LWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvZml4ZWQvbmVn
YXRpdmUtc2Nyb2xsLW9mZnNldC1leHBlY3RlZC50eHQKQEAgLTEsNSArMSw1IEBACi0oU2Nyb2xs
aW5nIG5vZGUKLSAgKHZpZXdwb3J0IHJlY3QgNzg1IDYwMCkKKyhGcmFtZSBzY3JvbGxpbmcgbm9k
ZQorICAoc2Nyb2xsYWJsZSBhcmVhIHNpemUgNzg1IDYwMCkKICAgKGNvbnRlbnRzIHNpemUgNzg1
IDIyMjEpCiAgIChjaGlsZHJlbiAxCiAgICAgKEZpeGVkIG5vZGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9maXhlZC9uZWdhdGl2ZS1zY3Jv
bGwtb2Zmc2V0LWluLXZpZXctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMi90aWxlZC1kcmF3aW5nL2ZpeGVkL25lZ2F0aXZlLXNjcm9sbC1vZmZzZXQtaW4tdmlldy1l
eHBlY3RlZC50eHQKaW5kZXggNDBjOWFkNTA4NzY3NTQzOGI2MWQyNzlhMmI5YzQ0YmY1ZTU5MzFk
ZS4uZmNlMjI5NTdkOGJlYTJmOTQ5ZTM0ZGE4MjhlYjI1ZGY5MTBmY2U4NSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL2ZpeGVkL25lZ2F0aXZl
LXNjcm9sbC1vZmZzZXQtaW4tdmlldy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL2ZpeGVkL25lZ2F0aXZlLXNjcm9sbC1vZmZzZXQt
aW4tdmlldy1leHBlY3RlZC50eHQKQEAgLTEsNSArMSw1IEBACi0oU2Nyb2xsaW5nIG5vZGUKLSAg
KHZpZXdwb3J0IHJlY3QgNzg1IDYwMCkKKyhGcmFtZSBzY3JvbGxpbmcgbm9kZQorICAoc2Nyb2xs
YWJsZSBhcmVhIHNpemUgNzg1IDYwMCkKICAgKGNvbnRlbnRzIHNpemUgNzg1IDIyMjEpCiAgIChj
aGlsZHJlbiAxCiAgICAgKEZpeGVkIG5vZGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9maXhlZC9uZXN0ZWQtZml4ZWQtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL2ZpeGVkL25lc3Rl
ZC1maXhlZC1leHBlY3RlZC50eHQKaW5kZXggY2JlMmNhNmQyNWEwNDg1OGM1YzNiZTY2OTdhZTBi
ZWNhN2Y3MjFjYS4uMWYzOGE3MmQ5MjU3YTI5NzNlYmMzZTg2ZjdmODc0NGQ4MjE1NzExNSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL2ZpeGVk
L25lc3RlZC1maXhlZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMi90aWxlZC1kcmF3aW5nL2ZpeGVkL25lc3RlZC1maXhlZC1leHBlY3RlZC50eHQKQEAgLTEs
NSArMSw1IEBACi0oU2Nyb2xsaW5nIG5vZGUKLSAgKHZpZXdwb3J0IHJlY3QgNzg1IDYwMCkKKyhG
cmFtZSBzY3JvbGxpbmcgbm9kZQorICAoc2Nyb2xsYWJsZSBhcmVhIHNpemUgNzg1IDYwMCkKICAg
KGNvbnRlbnRzIHNpemUgNzg1IDIyMTMpCiAgIChyZXF1ZXN0ZWQgc2Nyb2xsIHBvc2l0aW9uIDAg
MjAwKQogICAoY2hpbGRyZW4gMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMi90aWxlZC1kcmF3aW5nL2ZpeGVkL3BlcmNlbnRhZ2UtaW5zaWRlLWZpeGVkLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9maXhlZC9w
ZXJjZW50YWdlLWluc2lkZS1maXhlZC1leHBlY3RlZC50eHQKaW5kZXggM2I3ZjA2YmRlYWUwYjlh
NGRiYjgyZDcyNmFkNGM4NDcyMzYxZjFiZS4uM2I5MmJjMDFiYjIyZTViOTQyNTk2MzJlZTYzMjlm
MWNhY2QzYTU3NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxl
ZC1kcmF3aW5nL2ZpeGVkL3BlcmNlbnRhZ2UtaW5zaWRlLWZpeGVkLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvZml4ZWQvcGVyY2Vu
dGFnZS1pbnNpZGUtZml4ZWQtZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsNSBAQAotKFNjcm9sbGlu
ZyBub2RlCi0gICh2aWV3cG9ydCByZWN0IDc4NSA2MDApCisoRnJhbWUgc2Nyb2xsaW5nIG5vZGUK
KyAgKHNjcm9sbGFibGUgYXJlYSBzaXplIDc4NSA2MDApCiAgIChjb250ZW50cyBzaXplIDc4NSAy
NTEzKQogICAocmVxdWVzdGVkIHNjcm9sbCBwb3NpdGlvbiAwIDIwMCkKICAgKGNoaWxkcmVuIDEK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmctdHJlZS1hZnRlci1zY3JvbGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy10cmVlLWFmdGVyLXNjcm9sbC1l
eHBlY3RlZC50eHQKaW5kZXggODkwNWFmNzVhZDNkODVkNmMzYmE0ZjEwNzU2ZTY0NGMxNzZmYjQ2
Yi4uZTg5NzRiNzQ5ZGYxYTM4Y2ZkMDM2NzlmZjhjNGI2NTg5M2E4MWMxYSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy10cmVl
LWFmdGVyLXNjcm9sbC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMi90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy10cmVlLWFmdGVyLXNjcm9sbC1leHBlY3RlZC50
eHQKQEAgLTEsNSArMSw1IEBACi0oU2Nyb2xsaW5nIG5vZGUKLSAgKHZpZXdwb3J0IHJlY3QgNzg1
IDYwMCkKKyhGcmFtZSBzY3JvbGxpbmcgbm9kZQorICAoc2Nyb2xsYWJsZSBhcmVhIHNpemUgNzg1
IDYwMCkKICAgKGNvbnRlbnRzIHNpemUgNzg1IDUwMjEpCiAgIChyZXF1ZXN0ZWQgc2Nyb2xsIHBv
c2l0aW9uIDAgMzAwMCkKICkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azIvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmctdHJlZS1zbG93LXNjcm9sbGluZy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
LXRyZWUtc2xvdy1zY3JvbGxpbmctZXhwZWN0ZWQudHh0CmluZGV4IGZlMmJhM2RjYjg2NjE5Y2Nj
OGYxOGJhNDg0NzI3ZjFiYWFmNDg5ODMuLjQyNWJhYzBmM2Y4YjU1OTI0YWMxYzJmOGI4N2UyYzM4
YTA5NDVjMWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmctdHJlZS1zbG93LXNjcm9sbGluZy1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy10cmVl
LXNsb3ctc2Nyb2xsaW5nLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUgQEAKLShTY3JvbGxpbmcg
bm9kZQotICAodmlld3BvcnQgcmVjdCA4MDAgNjAwKQorKEZyYW1lIHNjcm9sbGluZyBub2RlCisg
IChzY3JvbGxhYmxlIGFyZWEgc2l6ZSA4MDAgNjAwKQogICAoY29udGVudHMgc2l6ZSA4MDAgNjAw
KQogICAoU2Nyb2xsaW5nIG9uIG1haW4gdGhyZWFkIGJlY2F1c2U6IEhhcyBzbG93IHJlcGFpbnQg
b2JqZWN0cykKICkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGls
ZWQtZHJhd2luZy9zdGlja3kvbmVnYXRpdmUtc2Nyb2xsLW9mZnNldC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvc3RpY2t5L25lZ2F0aXZl
LXNjcm9sbC1vZmZzZXQtZXhwZWN0ZWQudHh0CmluZGV4IDVkNzY5N2U0ZDk0MDk4NmZmNWZiNDll
MGQ4MjI1ZGFlMjViYzk4NDIuLmNiMjBjMDg1OGU5ZjE4Njg1NWQ1OTg0Mzg2NjZiN2E3MzM2Mjhi
ODAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2lu
Zy9zdGlja3kvbmVnYXRpdmUtc2Nyb2xsLW9mZnNldC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3N0aWNreS9uZWdhdGl2ZS1zY3Jv
bGwtb2Zmc2V0LWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUgQEAKLShTY3JvbGxpbmcgbm9kZQot
ICAodmlld3BvcnQgcmVjdCA3ODUgNjAwKQorKEZyYW1lIHNjcm9sbGluZyBub2RlCisgIChzY3Jv
bGxhYmxlIGFyZWEgc2l6ZSA3ODUgNjAwKQogICAoY29udGVudHMgc2l6ZSA3ODUgMjIxNikKICAg
KGNoaWxkcmVuIDEKICAgICAoU3RpY2t5IG5vZGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9zdGlja3kvc3RpY2t5LWhvcml6b250YWwtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3N0
aWNreS9zdGlja3ktaG9yaXpvbnRhbC1leHBlY3RlZC50eHQKaW5kZXggZDc4MjdjMDE3ZWQ1MDU0
NjJkNTk0ZGM1OTMzMDg1MzgzYjMzNmZiYi4uMTgxMjNkZjA1ZDQwYmQ3Y2VjOGY4MDk4YTRmYjVj
MDBlNjY0NzNkNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxl
ZC1kcmF3aW5nL3N0aWNreS9zdGlja3ktaG9yaXpvbnRhbC1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3N0aWNreS9zdGlja3ktaG9y
aXpvbnRhbC1leHBlY3RlZC50eHQKQEAgLTEsNiArMSw2IEBACiBMZWZ0IHN0aWNreSBSaWdodCBz
dGlja3kgTGVmdCAlIHN0aWNreSBSaWdodCAlIHN0aWNreSBMZWZ0IGFuZCBSaWdodCBMZWZ0IGFu
ZCBSaWdodCAlCi0oU2Nyb2xsaW5nIG5vZGUKLSAgKHZpZXdwb3J0IHJlY3QgODAwIDU4NSkKKyhG
cmFtZSBzY3JvbGxpbmcgbm9kZQorICAoc2Nyb2xsYWJsZSBhcmVhIHNpemUgODAwIDU4NSkKICAg
KGNvbnRlbnRzIHNpemUgMjAwOCA1ODUpCiAgIChyZXF1ZXN0ZWQgc2Nyb2xsIHBvc2l0aW9uIDgw
MCAwKQogICAoY2hpbGRyZW4gNgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>