<?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>231571</bug_id>
          
          <creation_ts>2021-10-12 05:48:10 -0700</creation_ts>
          <short_desc>Eliminate duplicated platform-specific code in ScrollingTreeStickyNode</short_desc>
          <delta_ts>2021-10-27 04:47:40 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Scrolling</component>
          <version>Safari Technology Preview</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          <cc>annulen</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jamesr</cc>
    
    <cc>luiz</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1803079</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-10-12 05:48:10 -0700</bug_when>
    <thetext>Both the Nicosia and Cocoa ports duplicate code specific to making sticky nodes work in the scrolling tree. Instead, this code could be moved to a shared class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803180</commentid>
    <comment_count>1</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-10-12 09:38:19 -0700</bug_when>
    <thetext>Overflow and frame scrolling nodes also share a bit of code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803705</commentid>
    <comment_count>2</comment_count>
      <attachid>441056</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-10-13 04:45:46 -0700</bug_when>
    <thetext>Created attachment 441056
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803718</commentid>
    <comment_count>3</comment_count>
      <attachid>441064</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-10-13 06:03:23 -0700</bug_when>
    <thetext>Created attachment 441064
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803901</commentid>
    <comment_count>4</comment_count>
      <attachid>441117</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-10-13 12:03:23 -0700</bug_when>
    <thetext>Created attachment 441117
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805957</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-19 05:49:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/84411658&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809210</commentid>
    <comment_count>6</comment_count>
      <attachid>442576</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-10-27 03:33:36 -0700</bug_when>
    <thetext>Created attachment 442576
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809223</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-27 04:47:36 -0700</bug_when>
    <thetext>Committed r284920 (243591@main): &lt;https://commits.webkit.org/243591@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 442576.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441056</attachid>
            <date>2021-10-13 04:45:46 -0700</date>
            <delta_ts>2021-10-13 06:03:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231571-20211013134544.patch</filename>
            <type>text/plain</type>
            <size>66170</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MDg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjYyZGE4NWFmOTJhYWFm
ZjM3NTc0Y2FjMTM2ZmM0NzQ4MGY0ZmYzYS4uN2ZjNWVlYWViZDg2MzVjZDZjZmE2YWQ3NjA3MDVk
YzhlN2Q1YmUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIxLTEwLTEzICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBFbGltaW5hdGUg
ZHVwbGljYXRlZCBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlIGluIFNjcm9sbGluZ1RyZWVTdGlja3lO
b2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE1
NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBYnN0
cmFjdCBjb2RlIGZyb20gdGhlIE5pY29zaWEgYW5kIENvb2NhIHZlcnNpb24gb2YgU2Nyb2xsaW5n
VHJlZVN0aWNreU5vZGUsCisgICAgICAgIHNvIHRoYXQgaXQgY2FuIGJlIHNoYXJlZCBieSBib3Ro
IHBvcnRzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBzaG91bGQgbm90IGNoYW5nZSBh
bnkgYmVoYXZpb3IuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFBsYXRm
b3JtTWFjLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtUGxheVN0YXRpb24uY21ha2U6CisgICAg
ICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAg
KiBTb3VyY2VzR1RLLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUu
Y3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9T
Y3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdU
cmVlU3RpY2t5Tm9kZTo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6ZHVtcFByb3BlcnRpZXMgY29uc3QpOgorICAg
ICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0
aWNreU5vZGUuaC4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVl
Rml4ZWROb2RlLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6
YXBwbHlMYXllclBvc2l0aW9ucyk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Ny
b2xsaW5nVHJlZVN0aWNreU5vZGUubW06IFJlbW92ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdUcmVlU3RpY2t5Tm9kZTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6flNjcm9sbGlu
Z1RyZWVTdGlja3lOb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1Ry
ZWVTdGlja3lOb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpjb21wdXRlTGF5ZXJQb3NpdGlv
biBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU3RpY2t5
Tm9kZTo6YXBwbHlMYXllclBvc2l0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6c2Nyb2xsRGVsdGFTaW5jZUxhc3RDb21taXQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OmR1
bXBQcm9wZXJ0aWVzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9j
b2NvYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUNvY29hLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oLgor
ICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlQ29j
b2EubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVD
b2NvYTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTdGlja3lOb2Rl
Q29jb2E6OlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlQ29jb2EpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVDb2NvYTo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUNvY29hOjphcHBseUxh
eWVyUG9zaXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTdGlja3lOb2Rl
Q29jb2E6OmxheWVyVG9wTGVmdCBjb25zdCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFj
L1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdUcmVlTWFjLm1tOgorICAgICAgICAoU2Nyb2xsaW5nVHJlZU1hYzo6Y3JlYXRl
U2Nyb2xsaW5nVHJlZU5vZGUpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Ny
b2xsaW5nVHJlZU5pY29zaWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU5p
Y29zaWE6OmNyZWF0ZVNjcm9sbGluZ1RyZWVOb2RlKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlTmljb3NpYS5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVOaWNvc2lhOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVOaWNvc2lhOjpTY3JvbGxp
bmdUcmVlU3RpY2t5Tm9kZU5pY29zaWEpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJl
ZVN0aWNreU5vZGVOaWNvc2lhOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlTmljb3NpYTo6YXBwbHlMYXllclBvc2l0
aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZU5pY29zaWE6
OmxheWVyVG9wTGVmdCBjb25zdCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9T
Y3JvbGxpbmdUcmVlU3RpY2t5Tm9kZU5pY29zaWEuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9UZXh0dXJlTWFwcGVyLmNtYWtlOgorCiAyMDIxLTEwLTEzICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KIAogICAgICAgICBTdGlja3kgZWxl
bWVudCBpbnNpZGUgYW5vdGhlciBzdGlja3kgZWxlbWVudCBkb2VzIG5vdCByZWRyYXcgcHJvcGVy
bHkgb24gc2Nyb2xsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZhMDczYjkzYWJjMzY3NTc1OTY1NDU3NDZiNzc0NjU4
YmIwYmIwY2EuLmQ0ZDhiNTM0NTRlYTczODk1ZTNmMWU4OGQ5NDRlN2UzYjE4NzVmYWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMTAtMTMgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2Jp
bnNvbkB3ZWJraXQub3JnPgorCisgICAgICAgIEVsaW1pbmF0ZSBkdXBsaWNhdGVkIHBsYXRmb3Jt
LXNwZWNpZmljIGNvZGUgaW4gU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTU3MQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFic3RyYWN0IGNvZGUgZnJvbSB0aGUg
Tmljb3NpYSBhbmQgQ29vY2EgdmVyc2lvbiBvZiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSwKKyAg
ICAgICAgc28gdGhhdCBpdCBjYW4gYmUgc2hhcmVkIGJ5IGJvdGggcG9ydHMuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ1RyZWUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdUcmVlOjpjcmVhdGVTY3JvbGxpbmdUcmVlTm9k
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvci5tbToKKwogMjAyMS0xMC0xMiAgSmVyIE5vYmxlICA8amVyLm5v
YmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbQnVpbGQtdGltZSBwZXJmXSBGb3J3YXJkLWRlY2xh
cmUgbW9yZSB0aGluZ3MgaW4gRG9jdW1lbnQuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggZGQwOTMz
OWFiY2IwZTZhZmFlNzJhYzRmM2MxODY4MDg5ZjU2NDBiMi4uMjNkNGYwNWNlNDhlYjQwNDVhYTY5
MGQ0ZDRjN2VmMTcyYTgxMWVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMDUyLDYgKzEwNTIs
NyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oCiAgICAgcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaAogICAgIHBhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuaAorICAgIHBhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVTdGlja3lOb2RlLmgKICAgICBwYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9s
bGluZ1RyZWUuaAogCiAgICAgcGxhdGZvcm0vQWJvcnRhYmxlVGFza1F1ZXVlLmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1NYWMuY21ha2UKaW5kZXggYmNmY2ViNzkzMTNlYzA1YzM1NGM1ZmVmZTM0YWI1MTBhYjMz
ZTcxNy4uNTcwZjllMWU0ODg3ZDJlNGI0MDA4OTZjYzk0NGIwM2U0ODRjNDg5MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1NYWMuY21ha2UKQEAgLTU1MSw3ICs1NTEsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3Jl
X1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwYWdlL3Njcm9sbGluZy9jb2NvYS9TY3Jv
bGxpbmdUcmVlRml4ZWROb2RlLmgKICAgICBwYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxQcm94eU5vZGUuaAogICAgIHBhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Nj
cm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZS5oCi0gICAgcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Ny
b2xsaW5nVHJlZVN0aWNreU5vZGUuaAorICAgIHBhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGlu
Z1RyZWVTdGlja3lOb2RlQ29jb2EuaAogCiAgICAgcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGlu
Z1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMuaAogICAgIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3Jv
bGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bVBsYXlTdGF0aW9uLmNtYWtlCmluZGV4IDlmMTU1OWVjMmU1ZDkyZjZlMmUyOTRhZWZkNDBhMjgy
OTRlZjNhYzEuLmIwMzhiZmNiMzVjZjFhMTE5NzRkOThjY2E5ODBlY2IzOTg0YjQ1NDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UKKysrIGIvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZQpAQCAtMjksNyArMjksNyBAQCBs
aXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Nj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmNwcAogICAgIHBhZ2Uvc2Ny
b2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlLmNwcAogICAgIHBhZ2Uv
c2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29z
aWEuY3BwCi0gICAgcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZS5jcHAKKyAgICBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2Rl
Tmljb3NpYS5jcHAKIAogICAgIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwCiAg
ICAgcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA1
MjhlY2ViMWQzOTIzYTAxNGQ3ZjE1MTU5YzZiN2YzNTNmYjM0OWZiLi40ZmEwZmVlOTkwNGE5OTY5
MWI1ZDdlMmI2YWJlNzJhNTdiYTRlODRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTc5Myw2ICsxNzkz
LDcgQEAgcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3BwCiBwYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmNwcAogcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmNwcAorcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJl
ZVN0aWNreU5vZGUuY3BwCiBwYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuY3Bw
CiBwbGF0Zm9ybS9Db250ZW50VHlwZS5jcHAKIHBsYXRmb3JtL0NvbnRleHRNZW51LmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggYTRjMGE3NjI3YzM3ODFkZmNkMDQ5MDZmYzUyMzMwOWM5
MDczMGMyYy4uMTU3YTlkZDM5ZDM3NWRhNDhjNjFmMTE1ZWM3ODU2NzJhMmI4NmMxMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0yMDcsNyArMjA3LDcgQEAgcGFnZS9zY3JvbGxpbmcvY29j
b2EvU2Nyb2xsaW5nU3RhdGVOb2RlLm1tCiBwYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdU
cmVlRml4ZWROb2RlLm1tCiBwYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlT3ZlcmZs
b3dTY3JvbGxQcm94eU5vZGUubW0KIHBhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVQ
b3NpdGlvbmVkTm9kZS5tbQotcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZVN0aWNr
eU5vZGUubW0KK3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlQ29j
b2EubW0KIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5tbQogcGFn
ZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZU1hYy5tbQogcGFnZS9z
Y3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNHVEsudHh0IGIvU291cmNlL1dlYkNvcmUvU291
cmNlc0dUSy50eHQKaW5kZXggM2NkZjNlODFlZTM1MzUyYzU5ZjgzYmUxYjhiY2RjZGYxZDc5YmYz
OS4uNmE5Y2Q2MzA4N2VmMGZiZDA4NDM4M2NmNmRjNGZmYTdjZDZjNmMyNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNl
c0dUSy50eHQKQEAgLTY5LDcgKzY5LDcgQEAgcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxQcm94eU5vZGUuY3BwCiBwYWdlL3Njcm9sbGluZy9uaWNvc2lh
L1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmNwcAogcGFnZS9zY3Jv
bGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuY3BwCiBwYWdlL3Njcm9s
bGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNw
cAotcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAKK3Bh
Z2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVOaWNvc2lhLmNwcAog
CiBwbGF0Zm9ybS9Vc2VyQWdlbnRRdWlya3MuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiNWE0YjRkNmI3MDI0NzMwNzVm
Mjk4ZjM5YWMzOTY0NThiMjdjY2VhLi5jMmE1NzJmZGNhYjcyNGE4NDRmZmQ0NTE2YTQxMzViZjE2
ZTMxNDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0zMzcsNyArMzM3LDcgQEAKIAkJMEY4QjQ1NzIxREMzRkJBMzAwNDQzQzNG
IC8qIEludGVyc2VjdGlvbk9ic2VydmVyQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOEI0NTcxMURDM0ZCQTMwMDQ0M0MzRiAvKiBJbnRl
cnNlY3Rpb25PYnNlcnZlckNhbGxiYWNrLmggKi87IH07CiAJCTBGOEI0NTc2MURDNDFEQkEwMDQ0
M0MzRiAvKiBKU0ludGVyc2VjdGlvbk9ic2VydmVyQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOEI0NTc0MURDNDFEQkEwMDQ0M0MzRiAv
KiBKU0ludGVyc2VjdGlvbk9ic2VydmVyQ2FsbGJhY2suaCAqLzsgfTsKIAkJMEY5NEI2NDcyMjA4
RkUzNjAwMTU3MDE0IC8qIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTRCNjQyMjIwOEY3MDEwMDE1NzAxNCAv
KiBTY3JvbGxpbmdUcmVlRml4ZWROb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKLQkJMEY5NEI2NDkyMjA4RkUzQjAwMTU3MDE0IC8qIFNjcm9sbGlu
Z1RyZWVTdGlja3lOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjk0QjY0MzIyMDhGNzAyMDAxNTcwMTQgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5v
ZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkw
Rjk0QjY0OTIyMDhGRTNCMDAxNTcwMTQgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVDb2NvYS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5NEI2NDMy
MjA4RjcwMjAwMTU3MDE0IC8qIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlQ29jb2EuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjk0QjY1MjIyMDkx
NTA2MDAxNTcwMTQgLyogU2Nyb2xsaW5nU3RhdGVQb3NpdGlvbmVkTm9kZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5NEI2NTEyMjA5MTRGRjAwMTU3
MDE0IC8qIFNjcm9sbGluZ1N0YXRlUG9zaXRpb25lZE5vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjk0QjY1NTIyMDkzMUU0MDAxNTcwMTQg
LyogU2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjk0QjY1MzIyMDkxNTZDMDAxNTcwMTQgLyogU2Nyb2xs
aW5nVHJlZVBvc2l0aW9uZWROb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEY5NEYzN0UyMzY2MTYyNjAwM0FBNUM3IC8qIFN0eWxlUnVsZVR5
cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTRG
MzdDMjM2NjExMzEwMDNBQTVDNyAvKiBTdHlsZVJ1bGVUeXBlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTIwMTcsNiArMjAxNyw3IEBACiAJCTVC
MzA2OTVFMThCM0QzNDUwMDk5RDVFOCAvKiBXZWJHTERyYXdCdWZmZXJzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QjMwNjk1QjE4QjNEMzQ1MDA5OUQ1
RTggLyogV2ViR0xEcmF3QnVmZmVycy5oICovOyB9OwogCQk1QjQ2NjU2MzI1RDE0QzBBMDAwQ0ZF
MTQgLyogU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVCNDY2NTVGMjVEMTRDMDkwMDBDRkUxNCAvKiBTY3Jv
bGxpbmdFZmZlY3RzQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTVCNDY2NTY0MjVEMTRDMEEwMDBDRkUxNCAvKiBTY3JvbGxTbmFw
QW5pbWF0b3JTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUI0NjY1NjAyNUQxNEMwQTAwMENGRTE0IC8qIFNjcm9sbFNuYXBBbmltYXRvclN0YXRl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNUI5
MkM0MkQyNzE2RTI4QTAwQTM3Q0MwIC8qIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QjkyQzQyQjI3MTZFMjMz
MDBBMzdDQzAgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1QzFCMUQzRjI2RjM5NzgwMDA4ODJEQTIg
LyogUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1QzFCMUQzRDI2RjM5NzdGMDA4ODJEQTIgLyogUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNUMyQjFBRUMyMjM5N0VCQzAwQjkxQ0Y3IC8qIFJlc291cmNlUmVzcG9uc2VD
b2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
Rjc4RDBCMUMyNTQyMkMwMDI0NTQ0NiAvKiBSZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0gKi87IH07
CiAJCTVDNDMwNEIxMTkxQUM5MDgwMDBFMkJDMCAvKiBFWFRTaGFkZXJUZXh0dXJlTE9ELmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzQzMDRBRTE5MUFD
OTA4MDAwRTJCQzAgLyogRVhUU2hhZGVyVGV4dHVyZUxPRC5oICovOyB9OwpAQCAtNjMyOCw5ICs2
MzI5LDkgQEAKIAkJMEY5NDcyMkQyNTM0QkE3MzAwRjE1M0M4IC8qIERpc3BsYXlGaWxsTGF5ZXJJ
bWFnZUdlb21ldHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlGaWxsTGF5ZXJJbWFnZUdlb21l
dHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTRBMzk1MUVGMUIxMDUwMEZC
QUZGQiAvKiBKU0RPTVF1YWRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNET01RdWFkQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY5NEI2NDIyMjA4RjcwMTAwMTU3MDE0IC8qIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5oOyBwYXRoID0gcGFnZS9zY3Jv
bGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5oOyBzb3VyY2VUcmVlID0gU09VUkNF
X1JPT1Q7IH07Ci0JCTBGOTRCNjQzMjIwOEY3MDIwMDE1NzAxNCAvKiBTY3JvbGxpbmdUcmVlU3Rp
Y2t5Tm9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oOyBwYXRo
ID0gcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaDsgc291cmNl
VHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQkwRjk0QjY0MzIyMDhGNzAyMDAxNTcwMTQgLyogU2Ny
b2xsaW5nVHJlZVN0aWNreU5vZGVDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZUNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTRCNjQ0
MjIwOEY3MDIwMDE1NzAxNCAvKiBTY3JvbGxpbmdUcmVlRml4ZWROb2RlLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBuYW1lID0gU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5tbTsgcGF0aCA9IHBhZ2Uvc2Nyb2xs
aW5nL2NvY29hL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUubW07IHNvdXJjZVRyZWUgPSBTT1VSQ0Vf
Uk9PVDsgfTsKLQkJMEY5NEI2NDUyMjA4RjcwMzAwMTU3MDE0IC8qIFNjcm9sbGluZ1RyZWVTdGlj
a3lOb2RlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUu
bW07IHBhdGggPSBwYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5t
bTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQkwRjk0QjY0NTIyMDhGNzAzMDAxNTcw
MTQgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGOTRCNjRGMjIwOTE0RkUwMDE1NzAxNCAvKiBTY3JvbGxpbmdTdGF0ZVBvc2l0
aW9uZWROb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9sbGluZ1N0YXRlUG9zaXRpb25l
ZE5vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjk0QjY1MTIyMDkxNEZG
MDAxNTcwMTQgLyogU2Nyb2xsaW5nU3RhdGVQb3NpdGlvbmVkTm9kZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTY3JvbGxpbmdTdGF0ZVBvc2l0aW9uZWROb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGOTRCNjUzMjIwOTE1NkMwMDE1NzAxNCAvKiBTY3JvbGxpbmdUcmVlUG9zaXRpb25l
ZE5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05ODI1LDYgKzk4MjYsOCBAQAogCQk1QjQ2NjU1
RjI1RDE0QzA5MDAwQ0ZFMTQgLyogU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUI0NjY1NjAyNUQxNEMwQTAwMENGRTE0IC8q
IFNjcm9sbFNuYXBBbmltYXRvclN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNjcm9sbFNuYXBBbmltYXRvclN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTVCN0FCOUY2MjU2N0RCN0UwMDY1OTJEMCAvKiBTY3JvbGxTbmFwT2Zmc2V0c0luZm8uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xsU25hcE9mZnNldHNJ
bmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUI5MkM0MjkyNzE2RTIzMzAw
QTM3Q0MwIC8qIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUI5MkM0MkIyNzE2RTIzMzAwQTM3Q0MwIC8qIFNjcm9sbGlu
Z1RyZWVTdGlja3lOb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9s
bGluZ1RyZWVTdGlja3lOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMDAx
NTIxMjUwMDExMDAwMDk0QUE5MyAvKiBUZXh0Q29kZWNTaW5nbGVCeXRlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRDb2RlY1NpbmdsZUJ5dGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzAwMTUyMzI1MDAxMTAxMDA5NEFBOTMgLyogVGV4
dENvZGVjU2luZ2xlQnl0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0
Q29kZWNTaW5nbGVCeXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMUIxRDFF
MjZGMTVCMTkwMDg4MkRBMiAvKiBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTA0NSw2ICsxOTA0OCw4IEBACiAJCQkJ
OTM5MUE5OUIxNjI5RDcwMDAwMjk3MzMwIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgg
Ki8sCiAJCQkJQTZENUE5OUExNjI5RDZGRjAwMjk3MzMwIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGUuY3BwICovLAogCQkJCUE2RDVBOTlCMTYyOUQ3MDAwMDI5NzMzMCAvKiBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmggKi8sCisJCQkJNUI5MkM0MjkyNzE2
RTIzMzAwQTM3Q0MwIC8qIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcCAqLywKKwkJCQk1Qjky
QzQyQjI3MTZFMjMzMDBBMzdDQzAgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaCAqLywKIAkJ
CQkwRjk1MTBGMjI0RjQ3NjlDMDAxRjUyREMgLyogU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyLmNw
cCAqLywKIAkJCQkwRjk1MTBGMDI0RjQ3NjlDMDAxRjUyREMgLyogU2Nyb2xsTGF0Y2hpbmdDb250
cm9sbGVyLmggKi8sCiAJCQkJNUI3QUI5RjYyNTY3REI3RTAwNjU5MkQwIC8qIFNjcm9sbFNuYXBP
ZmZzZXRzSW5mby5jcHAgKi8sCkBAIC0yNDMyMiw4ICsyNDMyNyw4IEBACiAJCQkJMEZDNEIwMDUy
MkI5QTAyRDAwQ0YzQjFFIC8qIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZS5t
bSAqLywKIAkJCQkwRjk0QjY1MzIyMDkxNTZDMDAxNTcwMTQgLyogU2Nyb2xsaW5nVHJlZVBvc2l0
aW9uZWROb2RlLmggKi8sCiAJCQkJMEY5NEI2NTQyMjA5MTU2QzAwMTU3MDE0IC8qIFNjcm9sbGlu
Z1RyZWVQb3NpdGlvbmVkTm9kZS5tbSAqLywKLQkJCQkwRjk0QjY0MzIyMDhGNzAyMDAxNTcwMTQg
LyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaCAqLywKLQkJCQkwRjk0QjY0NTIyMDhGNzAzMDAx
NTcwMTQgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUubW0gKi8sCisJCQkJMEY5NEI2NDMyMjA4
RjcwMjAwMTU3MDE0IC8qIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlQ29jb2EuaCAqLywKKwkJCQkw
Rjk0QjY0NTIyMDhGNzAzMDAxNTcwMTQgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVDb2NvYS5t
bSAqLywKIAkJCSk7CiAJCQlwYXRoID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwpAQCAtMzUyODAsNyArMzUyODUsOCBAQAogCQkJCTkzOTFBOTlEMTYyOUQ3MDAwMDI5NzMzMCAv
KiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTZENUE5
OUQxNjI5RDcwMDAwMjk3MzMwIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzdGMDg1MjIwMkJGOTgwMEE4OUMwQiAvKiBTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjk0
QjY0OTIyMDhGRTNCMDAxNTcwMTQgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTVCOTJDNDJEMjcxNkUyOEEwMEEzN0NDMCAvKiBTY3JvbGxpbmdUcmVlU3Rp
Y2t5Tm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY5NEI2NDkyMjA4RkUzQjAwMTU3MDE0IC8q
IFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlQ29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzQzU3
OTVEMURBNUMzMDEwMDZGOUM5NyAvKiBTY3JvbGxJbnRvVmlld09wdGlvbnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTgzQzU3OTVEMURBNUMzMDEwMDZGOUM4NiAvKiBTY3JvbGxMb2dpY2FsUG9zaXRp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTgzQzU3OTVEMURBNUMzMDEwMDZGQUM5NyAvKiBTY3Jv
bGxPcHRpb25zLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
MzlmMjM1YzI2ZWRmNDViOTZhMDA2ODM2MWExZWZmMGU4YTIwYzJiCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUu
Y3BwCkBAIC0wLDAgKzEsMTIzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEgUy5M
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLmgiCisKKyNpZiBFTkFCTEUoQVNZTkNf
U0NST0xMSU5HKQorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1N0
YXRlU3RpY2t5Tm9kZS5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWUuaCIKKyNpbmNsdWRlICJT
Y3JvbGxpbmdUcmVlRml4ZWROb2RlLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZS5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbFByb3h5
Tm9kZS5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUuaCIK
KyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlKFNjcm9s
bGluZ1RyZWUmIHNjcm9sbGluZ1RyZWUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCisgICAgOiBT
Y3JvbGxpbmdUcmVlTm9kZShzY3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdOb2RlVHlwZTo6U3RpY2t5
LCBub2RlSUQpCit7CisgICAgc2Nyb2xsaW5nVHJlZS5maXhlZE9yU3RpY2t5Tm9kZUFkZGVkKCk7
Cit9CisKK1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlOjp+U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUo
KQoreworICAgIHNjcm9sbGluZ1RyZWUoKS5maXhlZE9yU3RpY2t5Tm9kZVJlbW92ZWQoKTsKK30K
Kwordm9pZCBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJl
bihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmIHN0YXRlTm9kZSkKK3sKKyAgICBhdXRvJiBzdGlj
a3lTdGF0ZU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGU+KHN0YXRlTm9k
ZSk7CisKKyAgICBpZiAoc3RpY2t5U3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxp
bmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpWaWV3cG9ydENvbnN0cmFpbnRzKSkKKyAgICAgICAgbV9j
b25zdHJhaW50cyA9IHN0aWNreVN0YXRlTm9kZS52aWV3cG9ydENvbnN0cmFpbnRzKCk7Cit9CisK
K0Zsb2F0UG9pbnQgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OmNvbXB1dGVMYXllclBvc2l0aW9u
KCkgY29uc3QKK3sKKyAgICBGbG9hdFNpemUgb2Zmc2V0RnJvbVN0aWNreUFuY2VzdG9yczsKKyAg
ICBhdXRvIGNvbXB1dGVMYXllclBvc2l0aW9uRm9yU2Nyb2xsaW5nTm9kZSA9IFsmXShTY3JvbGxp
bmdUcmVlTm9kZSYgc2Nyb2xsaW5nTm9kZSkgeworICAgICAgICBGbG9hdFJlY3QgY29uc3RyYWlu
aW5nUmVjdDsKKyAgICAgICAgaWYgKGlzPFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU+
KHNjcm9sbGluZ05vZGUpKSB7CisgICAgICAgICAgICBhdXRvJiBmcmFtZVNjcm9sbGluZ05vZGUg
PSBkb3duY2FzdDxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPihzY3JvbGxpbmdOb2Rl
KTsKKyAgICAgICAgICAgIGNvbnN0cmFpbmluZ1JlY3QgPSBmcmFtZVNjcm9sbGluZ05vZGUubGF5
b3V0Vmlld3BvcnQoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8mIG92ZXJm
bG93U2Nyb2xsaW5nTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGlu
Z05vZGU+KHNjcm9sbGluZ05vZGUpOworICAgICAgICAgICAgY29uc3RyYWluaW5nUmVjdCA9IG1f
Y29uc3RyYWludHMuY29uc3RyYWluaW5nUmVjdEF0TGFzdExheW91dCgpOworICAgICAgICAgICAg
Y29uc3RyYWluaW5nUmVjdC5tb3ZlKG92ZXJmbG93U2Nyb2xsaW5nTm9kZS5zY3JvbGxEZWx0YVNp
bmNlTGFzdENvbW1pdCgpKTsKKyAgICAgICAgfQorICAgICAgICBjb25zdHJhaW5pbmdSZWN0Lm1v
dmUoLW9mZnNldEZyb21TdGlja3lBbmNlc3RvcnMpOworICAgICAgICByZXR1cm4gbV9jb25zdHJh
aW50cy5sYXllclBvc2l0aW9uRm9yQ29uc3RyYWluaW5nUmVjdChjb25zdHJhaW5pbmdSZWN0KTsK
KyAgICB9OworCisgICAgZm9yIChhdXRvKiBhbmNlc3RvciA9IHBhcmVudCgpOyBhbmNlc3Rvcjsg
YW5jZXN0b3IgPSBhbmNlc3Rvci0+cGFyZW50KCkpIHsKKyAgICAgICAgaWYgKGlzPFNjcm9sbGlu
Z1RyZWVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZT4oKmFuY2VzdG9yKSkgeworICAgICAgICAgICAg
YXV0byYgb3ZlcmZsb3dQcm94eU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxQcm94eU5vZGU+KCphbmNlc3Rvcik7CisgICAgICAgICAgICBhdXRvIG92ZXJmbG93Tm9k
ZSA9IHNjcm9sbGluZ1RyZWUoKS5ub2RlRm9ySUQob3ZlcmZsb3dQcm94eU5vZGUub3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlSUQoKSk7CisgICAgICAgICAgICBpZiAoIW92ZXJmbG93Tm9kZSkKKyAgICAg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgcmV0dXJuIGNvbXB1dGVMYXllclBvc2l0
aW9uRm9yU2Nyb2xsaW5nTm9kZSgqb3ZlcmZsb3dOb2RlKTsKKyAgICAgICAgfQorCisgICAgICAg
IGlmIChpczxTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZT4oKmFuY2VzdG9yKSkKKyAgICAgICAg
ICAgIHJldHVybiBjb21wdXRlTGF5ZXJQb3NpdGlvbkZvclNjcm9sbGluZ05vZGUoKmFuY2VzdG9y
KTsKKworICAgICAgICBpZiAoaXM8U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU+KCphbmNlc3Rvcikp
CisgICAgICAgICAgICBvZmZzZXRGcm9tU3RpY2t5QW5jZXN0b3JzICs9IGRvd25jYXN0PFNjcm9s
bGluZ1RyZWVTdGlja3lOb2RlPigqYW5jZXN0b3IpLnNjcm9sbERlbHRhU2luY2VMYXN0Q29tbWl0
KCk7CisKKyAgICAgICAgaWYgKGlzPFNjcm9sbGluZ1RyZWVGaXhlZE5vZGU+KCphbmNlc3Rvcikp
IHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHNjcm9sbGluZyB0cmVlIG5vZGVz
IGF0IGFsbCBmb3IgbmVzdGVkIGNhc2VzPworICAgICAgICAgICAgcmV0dXJuIG1fY29uc3RyYWlu
dHMubGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCgpOworICAgICAgICB9CisgICAgfQorICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBtX2NvbnN0cmFpbnRzLmxheWVyUG9zaXRp
b25BdExhc3RMYXlvdXQoKTsKK30KKworRmxvYXRTaXplIFNjcm9sbGluZ1RyZWVTdGlja3lOb2Rl
OjpzY3JvbGxEZWx0YVNpbmNlTGFzdENvbW1pdCgpIGNvbnN0Cit7CisgICAgYXV0byBsYXllclBv
c2l0aW9uID0gY29tcHV0ZUxheWVyUG9zaXRpb24oKTsKKyAgICByZXR1cm4gbGF5ZXJQb3NpdGlv
biAtIG1fY29uc3RyYWludHMubGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCgpOworfQorCit2b2lk
IFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpkdW1wUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywg
U2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0QmVoYXZpb3IgYmVoYXZpb3IpIGNvbnN0Cit7CisgICAg
dHMgPDwgInN0aWNreSBub2RlIjsKKyAgICBTY3JvbGxpbmdUcmVlTm9kZTo6ZHVtcFByb3BlcnRp
ZXModHMsIGJlaGF2aW9yKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoInN0aWNreSBjb25zdHJhaW50
cyIsIG1fY29uc3RyYWludHMpOworICAgIGlmIChiZWhhdmlvciAmIFNjcm9sbGluZ1N0YXRlVHJl
ZUFzVGV4dEJlaGF2aW9ySW5jbHVkZUxheWVyUG9zaXRpb25zKQorICAgICAgICB0cy5kdW1wUHJv
cGVydHkoImxheWVyIHRvcCBsZWZ0IiwgbGF5ZXJUb3BMZWZ0KCkpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBVU0Uo
TklDT1NJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RyZWVTdGlja3lOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlU3RpY2t5Tm9kZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllZmY5M2I0NjNiYTA1MGRjNGRkYTYy
ZjlmYTZiMjFkZTJmOWZhNGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oCkBAIC0wLDAgKzEsNjEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE5IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKyAqICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCisK
KyNpbmNsdWRlICJTY3JvbGxpbmdDb25zdHJhaW50cy5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1Ry
ZWVOb2RlLmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlIDogcHVibGljIFNjcm9sbGluZ1RyZWVO
b2RlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSgpOwor
CisgICAgRmxvYXRTaXplIHNjcm9sbERlbHRhU2luY2VMYXN0Q29tbWl0KCkgY29uc3Q7CisKK3By
b3RlY3RlZDoKKyAgICBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZShTY3JvbGxpbmdUcmVlJiwgU2Ny
b2xsaW5nTm9kZUlEKTsKKworICAgIHZvaWQgY29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihjb25z
dCBTY3JvbGxpbmdTdGF0ZU5vZGUmKSBvdmVycmlkZTsKKyAgICBGbG9hdFBvaW50IGNvbXB1dGVM
YXllclBvc2l0aW9uKCkgY29uc3Q7CisgICAgdm9pZCBkdW1wUHJvcGVydGllcyhXVEY6OlRleHRT
dHJlYW0mLCBTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvcikgY29uc3Qgb3ZlcnJpZGU7
CisKKyAgICB2aXJ0dWFsIEZsb2F0UG9pbnQgbGF5ZXJUb3BMZWZ0KCkgY29uc3QgPSAwOworCisg
ICAgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzIG1fY29uc3RyYWludHM7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfU0NST0xM
SU5HX05PREUoU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUsIGlzU3RpY2t5Tm9kZSgpKQorCisjZW5k
aWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLm1tCmlu
ZGV4IDZhNmU3N2Q3NTVlNDNiNmEzZWEzOGEzZTBkMzk5ZTFmOGQ5ZjhkY2QuLjJhZjM1OGZlN2Zm
NWE1OTZiNjhjNmE4ZmE0NmUxZDczODlkYWIyOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5t
bQpAQCAtMzUsNyArMzUsNyBAQAogI2ltcG9ydCAiU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xs
UHJveHlOb2RlLmgiCiAjaW1wb3J0ICJTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
LmgiCiAjaW1wb3J0ICJTY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuaCIKLSNpbXBvcnQgIlNj
cm9sbGluZ1RyZWVTdGlja3lOb2RlLmgiCisjaW1wb3J0ICJTY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZUNvY29hLmgiCiAjaW1wb3J0ICJXZWJDb3JlQ0FMYXllckV4dHJhcy5oIgogI2ltcG9ydCA8d3Rm
L3RleHQvVGV4dFN0cmVhbS5oPgogCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJl
ZUZpeGVkTm9kZTo6YXBwbHlMYXllclBvc2l0aW9ucygpCiB7CiAgICAgYXV0byBjb21wdXRlTGF5
ZXJQb3NpdGlvbiA9IFsmXSB7CiAgICAgICAgIEZsb2F0U2l6ZSBvdmVyZmxvd1Njcm9sbERlbHRh
OwotICAgICAgICBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSogbGFzdFN0aWNreU5vZGUgPSBudWxs
cHRyOworICAgICAgICBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUNvY29hKiBsYXN0U3RpY2t5Tm9k
ZSA9IG51bGxwdHI7CiAgICAgICAgIGZvciAoYXV0byogYW5jZXN0b3IgPSBwYXJlbnQoKTsgYW5j
ZXN0b3I7IGFuY2VzdG9yID0gYW5jZXN0b3ItPnBhcmVudCgpKSB7CiAgICAgICAgICAgICBpZiAo
aXM8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZT4oKmFuY2VzdG9yKSkgewogICAgICAg
ICAgICAgICAgIC8vIEZpeGVkIG5vZGVzIGFyZSBwb3NpdGlvbmVkIHJlbGF0aXZlIHRvIHRoZSBj
b250YWluaW5nIGZyYW1lIHNjcm9sbGluZyBub2RlLgpAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQg
U2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6YXBwbHlMYXllclBvc2l0aW9ucygpCiAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgIGlmIChpczxTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZT4oKmFuY2Vz
dG9yKSkgewotICAgICAgICAgICAgICAgIGF1dG8mIHN0aWNreU5vZGUgPSBkb3duY2FzdDxTY3Jv
bGxpbmdUcmVlU3RpY2t5Tm9kZT4oKmFuY2VzdG9yKTsKKyAgICAgICAgICAgICAgICBhdXRvJiBz
dGlja3lOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVDb2NvYT4oKmFuY2Vz
dG9yKTsKICAgICAgICAgICAgICAgICBvdmVyZmxvd1Njcm9sbERlbHRhICs9IHN0aWNreU5vZGUu
c2Nyb2xsRGVsdGFTaW5jZUxhc3RDb21taXQoKTsKICAgICAgICAgICAgICAgICBsYXN0U3RpY2t5
Tm9kZSA9ICZzdGlja3lOb2RlOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZVN0aWNr
eU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1Ry
ZWVTdGlja3lOb2RlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3NzRjMzAxNTI4
NTFlYzUwZGNiMTU1NGE0MmIyMTkxNGQyMjM1MGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29jb2Ev
U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcp
Ci0KLSNpbmNsdWRlICJTY3JvbGxpbmdDb25zdHJhaW50cy5oIgotI2luY2x1ZGUgIlNjcm9sbGlu
Z1RyZWVOb2RlLmgiCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1PQkpDX0NMQVNTIENB
TGF5ZXI7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU2Nyb2xsaW5nVHJlZVN0aWNr
eU5vZGUgOiBwdWJsaWMgU2Nyb2xsaW5nVHJlZU5vZGUgewotcHVibGljOgotICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWY8U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU+IGNyZWF0ZShTY3JvbGxp
bmdUcmVlJiwgU2Nyb2xsaW5nTm9kZUlEKTsKLQotICAgIHZpcnR1YWwgflNjcm9sbGluZ1RyZWVT
dGlja3lOb2RlKCk7Ci0KLSAgICBGbG9hdFNpemUgc2Nyb2xsRGVsdGFTaW5jZUxhc3RDb21taXQo
KSBjb25zdDsKLQotICAgIENBTGF5ZXIgKmxheWVyKCkgeyByZXR1cm4gbV9sYXllci5nZXQoKTsg
fQotCi1wcml2YXRlOgotICAgIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlKFNjcm9sbGluZ1RyZWUm
LCBTY3JvbGxpbmdOb2RlSUQpOwotCi0gICAgdm9pZCBjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVu
KGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgYXBwbHlMYXll
clBvc2l0aW9ucygpIG92ZXJyaWRlOwotCi0gICAgRmxvYXRQb2ludCBjb21wdXRlTGF5ZXJQb3Np
dGlvbigpIGNvbnN0OwotCi0gICAgdm9pZCBkdW1wUHJvcGVydGllcyhXVEY6OlRleHRTdHJlYW0m
LCBTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvcikgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAg
ICBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHMgbV9jb25zdHJhaW50czsKLSAgICBS
ZXRhaW5QdHI8Q0FMYXllcj4gbV9sYXllcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19TQ1JPTExJTkdfTk9ERShTY3JvbGxpbmdUcmVlU3Rp
Y2t5Tm9kZSwgaXNTdGlja3lOb2RlKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xM
SU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Ny
b2xsaW5nVHJlZVN0aWNreU5vZGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9j
b2NvYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggOTU5M2ZlZGIzMzNjNjlmODMxNTkzZGM3ZmM4NWRlOTNhM2FlNGIyMy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbQorKysgL2Rldi9udWxs
CkBAIC0xLDE0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1w
b3J0ICJTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oIgotCi0jaWYgRU5BQkxFKEFTWU5DX1NDUk9M
TElORykKLQotI2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCAiU2Nyb2xsaW5nU3RhdGVTdGlj
a3lOb2RlLmgiCi0jaW1wb3J0ICJTY3JvbGxpbmdUcmVlLmgiCi0jaW1wb3J0ICJTY3JvbGxpbmdU
cmVlRml4ZWROb2RlLmgiCi0jaW1wb3J0ICJTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
LmgiCi0jaW1wb3J0ICJTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxQcm94eU5vZGUuaCIKLSNp
bXBvcnQgIlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUuaCIKLSNpbXBvcnQgIldl
YkNvcmVDQUxheWVyRXh0cmFzLmgiCi0jaW1wb3J0IDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmPFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlPiBTY3Jv
bGxpbmdUcmVlU3RpY2t5Tm9kZTo6Y3JlYXRlKFNjcm9sbGluZ1RyZWUmIHNjcm9sbGluZ1RyZWUs
IFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2Ny
b2xsaW5nVHJlZVN0aWNreU5vZGUoc2Nyb2xsaW5nVHJlZSwgbm9kZUlEKSk7Ci19Ci0KLVNjcm9s
bGluZ1RyZWVTdGlja3lOb2RlOjpTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZShTY3JvbGxpbmdUcmVl
JiBzY3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQotICAgIDogU2Nyb2xsaW5n
VHJlZU5vZGUoc2Nyb2xsaW5nVHJlZSwgU2Nyb2xsaW5nTm9kZVR5cGU6OlN0aWNreSwgbm9kZUlE
KQotewotICAgIHNjcm9sbGluZ1RyZWUuZml4ZWRPclN0aWNreU5vZGVBZGRlZCgpOwotfQotCi1T
Y3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6flNjcm9sbGluZ1RyZWVTdGlja3lOb2RlKCkKLXsKLSAg
ICBzY3JvbGxpbmdUcmVlKCkuZml4ZWRPclN0aWNreU5vZGVSZW1vdmVkKCk7Ci19Ci0KLXZvaWQg
U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3Qg
U2Nyb2xsaW5nU3RhdGVOb2RlJiBzdGF0ZU5vZGUpCi17Ci0gICAgY29uc3QgU2Nyb2xsaW5nU3Rh
dGVTdGlja3lOb2RlJiBzdGlja3lTdGF0ZU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZVN0
aWNreU5vZGU+KHN0YXRlTm9kZSk7Ci0KLSAgICBpZiAoc3RpY2t5U3RhdGVOb2RlLmhhc0NoYW5n
ZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpMYXllcikpCi0gICAgICAg
IG1fbGF5ZXIgPSBzdGF0aWNfY2FzdDxDQUxheWVyKj4oc3RpY2t5U3RhdGVOb2RlLmxheWVyKCkp
OwotCi0gICAgaWYgKHN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVO
b2RlOjpQcm9wZXJ0eTo6Vmlld3BvcnRDb25zdHJhaW50cykpCi0gICAgICAgIG1fY29uc3RyYWlu
dHMgPSBzdGlja3lTdGF0ZU5vZGUudmlld3BvcnRDb25zdHJhaW50cygpOwotfQotCi1GbG9hdFBv
aW50IFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpjb21wdXRlTGF5ZXJQb3NpdGlvbigpIGNvbnN0
Ci17Ci0gICAgRmxvYXRTaXplIG9mZnNldEZyb21TdGlja3lBbmNlc3RvcnM7Ci0gICAgYXV0byBj
b21wdXRlTGF5ZXJQb3NpdGlvbkZvclNjcm9sbGluZ05vZGUgPSBbJl0oU2Nyb2xsaW5nVHJlZU5v
ZGUmIHNjcm9sbGluZ05vZGUpIHsKLSAgICAgICAgRmxvYXRSZWN0IGNvbnN0cmFpbmluZ1JlY3Q7
Ci0gICAgICAgIGlmIChpczxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPihzY3JvbGxp
bmdOb2RlKSkgewotICAgICAgICAgICAgYXV0byYgZnJhbWVTY3JvbGxpbmdOb2RlID0gZG93bmNh
c3Q8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZT4oc2Nyb2xsaW5nTm9kZSk7Ci0gICAg
ICAgICAgICBjb25zdHJhaW5pbmdSZWN0ID0gZnJhbWVTY3JvbGxpbmdOb2RlLmxheW91dFZpZXdw
b3J0KCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBhdXRvJiBvdmVyZmxvd1Njcm9s
bGluZ05vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlPihz
Y3JvbGxpbmdOb2RlKTsKLSAgICAgICAgICAgIGNvbnN0cmFpbmluZ1JlY3QgPSBtX2NvbnN0cmFp
bnRzLmNvbnN0cmFpbmluZ1JlY3RBdExhc3RMYXlvdXQoKTsKLSAgICAgICAgICAgIGNvbnN0cmFp
bmluZ1JlY3QubW92ZShvdmVyZmxvd1Njcm9sbGluZ05vZGUuc2Nyb2xsRGVsdGFTaW5jZUxhc3RD
b21taXQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgY29uc3RyYWluaW5nUmVjdC5tb3ZlKC1vZmZz
ZXRGcm9tU3RpY2t5QW5jZXN0b3JzKTsKLSAgICAgICAgcmV0dXJuIG1fY29uc3RyYWludHMubGF5
ZXJQb3NpdGlvbkZvckNvbnN0cmFpbmluZ1JlY3QoY29uc3RyYWluaW5nUmVjdCk7Ci0gICAgfTsK
LQotICAgIGZvciAoYXV0byogYW5jZXN0b3IgPSBwYXJlbnQoKTsgYW5jZXN0b3I7IGFuY2VzdG9y
ID0gYW5jZXN0b3ItPnBhcmVudCgpKSB7Ci0gICAgICAgIGlmIChpczxTY3JvbGxpbmdUcmVlT3Zl
cmZsb3dTY3JvbGxQcm94eU5vZGU+KCphbmNlc3RvcikpIHsKLSAgICAgICAgICAgIGF1dG8mIG92
ZXJmbG93UHJveHlOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsUHJv
eHlOb2RlPigqYW5jZXN0b3IpOwotICAgICAgICAgICAgYXV0byBvdmVyZmxvd05vZGUgPSBzY3Jv
bGxpbmdUcmVlKCkubm9kZUZvcklEKG92ZXJmbG93UHJveHlOb2RlLm92ZXJmbG93U2Nyb2xsaW5n
Tm9kZUlEKCkpOwotICAgICAgICAgICAgaWYgKCFvdmVyZmxvd05vZGUpCi0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIHJldHVybiBjb21wdXRlTGF5ZXJQb3NpdGlvbkZvclNj
cm9sbGluZ05vZGUoKm92ZXJmbG93Tm9kZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoaXM8
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU+KCphbmNlc3RvcikpCi0gICAgICAgICAgICByZXR1
cm4gY29tcHV0ZUxheWVyUG9zaXRpb25Gb3JTY3JvbGxpbmdOb2RlKCphbmNlc3Rvcik7Ci0KLSAg
ICAgICAgaWYgKGlzPFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlPigqYW5jZXN0b3IpKQotICAgICAg
ICAgICAgb2Zmc2V0RnJvbVN0aWNreUFuY2VzdG9ycyArPSBkb3duY2FzdDxTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZT4oKmFuY2VzdG9yKS5zY3JvbGxEZWx0YVNpbmNlTGFzdENvbW1pdCgpOwotCi0g
ICAgICAgIGlmIChpczxTY3JvbGxpbmdUcmVlRml4ZWROb2RlPigqYW5jZXN0b3IpKSB7Ci0gICAg
ICAgICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCBzY3JvbGxpbmcgdHJlZSBub2RlcyBhdCBhbGwg
Zm9yIG5lc3RlZCBjYXNlcz8KLSAgICAgICAgICAgIHJldHVybiBtX2NvbnN0cmFpbnRzLmxheWVy
UG9zaXRpb25BdExhc3RMYXlvdXQoKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbV9jb25zdHJhaW50cy5sYXllclBvc2l0aW9uQXRMYXN0
TGF5b3V0KCk7Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OmFwcGx5TGF5ZXJQ
b3NpdGlvbnMoKQotewotICAgIGF1dG8gbGF5ZXJQb3NpdGlvbiA9IGNvbXB1dGVMYXllclBvc2l0
aW9uKCk7Ci0KLSAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwgIlNjcm9s
bGluZ1RyZWVTdGlja3lOb2RlICIgPDwgc2Nyb2xsaW5nTm9kZUlEKCkgPDwgIiBjb25zdHJhaW5p
bmdSZWN0QXRMYXN0TGF5b3V0ICIgPDwgbV9jb25zdHJhaW50cy5jb25zdHJhaW5pbmdSZWN0QXRM
YXN0TGF5b3V0KCkgPDwgIiBsYXN0IGxheWVyIHBvcyAiIDw8IG1fY29uc3RyYWludHMubGF5ZXJQ
b3NpdGlvbkF0TGFzdExheW91dCgpIDw8ICIgbGF5ZXJQb3NpdGlvbiAiIDw8IGxheWVyUG9zaXRp
b24pOwotCi0gICAgW21fbGF5ZXIgX3dlYl9zZXRMYXllclRvcExlZnRQb3NpdGlvbjpsYXllclBv
c2l0aW9uIC0gbV9jb25zdHJhaW50cy5hbGlnbm1lbnRPZmZzZXQoKV07Ci19Ci0KLUZsb2F0U2l6
ZSBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6c2Nyb2xsRGVsdGFTaW5jZUxhc3RDb21taXQoKSBj
b25zdAotewotICAgIGF1dG8gbGF5ZXJQb3NpdGlvbiA9IGNvbXB1dGVMYXllclBvc2l0aW9uKCk7
Ci0gICAgcmV0dXJuIGxheWVyUG9zaXRpb24gLSBtX2NvbnN0cmFpbnRzLmxheWVyUG9zaXRpb25B
dExhc3RMYXlvdXQoKTsKLX0KLQotdm9pZCBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6ZHVtcFBy
b3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMsIFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9y
IGJlaGF2aW9yKSBjb25zdAotewotICAgIHRzIDw8ICJzdGlja3kgbm9kZSI7Ci0KLSAgICBTY3Jv
bGxpbmdUcmVlTm9kZTo6ZHVtcFByb3BlcnRpZXModHMsIGJlaGF2aW9yKTsKLSAgICB0cy5kdW1w
UHJvcGVydHkoInN0aWNreSBjb25zdHJhaW50cyIsIG1fY29uc3RyYWludHMpOwotCi0gICAgaWYg
KGJlaGF2aW9yICYgU2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0QmVoYXZpb3JJbmNsdWRlTGF5ZXJQ
b3NpdGlvbnMpIHsKLSAgICAgICAgRmxvYXRSZWN0IGxheWVyQm91bmRzID0gW21fbGF5ZXIgYm91
bmRzXTsKLSAgICAgICAgRmxvYXRQb2ludCBhbmNob3JQb2ludCA9IFttX2xheWVyIGFuY2hvclBv
aW50XTsKLSAgICAgICAgRmxvYXRQb2ludCBwb3NpdGlvbiA9IFttX2xheWVyIHBvc2l0aW9uXTsK
LSAgICAgICAgRmxvYXRQb2ludCBsYXllclRvcExlZnQgPSBwb3NpdGlvbiAtIHRvRmxvYXRTaXpl
KGFuY2hvclBvaW50KSAqIGxheWVyQm91bmRzLnNpemUoKSArIG1fY29uc3RyYWludHMuYWxpZ25t
ZW50T2Zmc2V0KCk7Ci0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgibGF5ZXIgdG9wIGxlZnQiLCBs
YXllclRvcExlZnQpOwotICAgIH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlQ29jb2EuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2Rl
Q29jb2EuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lOGNhMzY2MjM3ZGRlZjg2OGRkOGU5ZDc4YzMxZDI5NDliMWNi
ZmUyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29j
b2EvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVDb2NvYS5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCisKKyNp
bmNsdWRlICJTY3JvbGxpbmdDb25zdHJhaW50cy5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVT
dGlja3lOb2RlLmgiCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX0NMQVNTIENB
TGF5ZXI7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2Nyb2xsaW5nVHJlZVN0aWNr
eU5vZGVDb2NvYSA6IHB1YmxpYyBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSB7CitwdWJsaWM6Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUNvY29h
PiBjcmVhdGUoU2Nyb2xsaW5nVHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7CisKKyAgICB2aXJ0dWFs
IH5TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUNvY29hKCkgPSBkZWZhdWx0OworCisgICAgQ0FMYXll
ciAqbGF5ZXIoKSB7IHJldHVybiBtX2xheWVyLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgU2Ny
b2xsaW5nVHJlZVN0aWNreU5vZGVDb2NvYShTY3JvbGxpbmdUcmVlJiwgU2Nyb2xsaW5nTm9kZUlE
KTsKKworICAgIHZvaWQgY29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdT
dGF0ZU5vZGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIGFwcGx5TGF5ZXJQb3NpdGlvbnMoKSBvdmVy
cmlkZTsKKyAgICBGbG9hdFBvaW50IGxheWVyVG9wTGVmdCgpIGNvbnN0IG92ZXJyaWRlOworCisg
ICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fbGF5ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVD
b2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1Ry
ZWVTdGlja3lOb2RlQ29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjk4ZmU5ZjAwMjBlYmU1MTZhOWQ2OTQw
ZGVlZTVlYzk4Y2E1ZmU3MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlQ29jb2EubW0KQEAgLTAsMCAr
MSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiU2Nyb2xs
aW5nVHJlZVN0aWNreU5vZGVDb2NvYS5oIgorCisjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykK
KworI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCAiU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2Rl
LmgiCisjaW1wb3J0ICJTY3JvbGxpbmdUcmVlLmgiCisjaW1wb3J0ICJXZWJDb3JlQ0FMYXllckV4
dHJhcy5oIgorI2ltcG9ydCA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK1JlZjxTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUNvY29hPiBTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZUNvY29hOjpjcmVhdGUoU2Nyb2xsaW5nVHJlZSYgc2Nyb2xsaW5nVHJlZSwgU2Ny
b2xsaW5nTm9kZUlEIG5vZGVJRCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTY3JvbGxp
bmdUcmVlU3RpY2t5Tm9kZUNvY29hKHNjcm9sbGluZ1RyZWUsIG5vZGVJRCkpOworfQorCitTY3Jv
bGxpbmdUcmVlU3RpY2t5Tm9kZUNvY29hOjpTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUNvY29hKFNj
cm9sbGluZ1RyZWUmIHNjcm9sbGluZ1RyZWUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCisgICAg
OiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZShzY3JvbGxpbmdUcmVlLCBub2RlSUQpCit7Cit9CisK
K3ZvaWQgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVDb2NvYTo6Y29tbWl0U3RhdGVCZWZvcmVDaGls
ZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmIHN0YXRlTm9kZSkKK3sKKyAgICBjb25zdCBT
Y3JvbGxpbmdTdGF0ZVN0aWNreU5vZGUmIHN0aWNreVN0YXRlTm9kZSA9IGRvd25jYXN0PFNjcm9s
bGluZ1N0YXRlU3RpY2t5Tm9kZT4oc3RhdGVOb2RlKTsKKworICAgIGlmIChzdGlja3lTdGF0ZU5v
ZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkxheWVy
KSkKKyAgICAgICAgbV9sYXllciA9IHN0YXRpY19jYXN0PENBTGF5ZXIqPihzdGlja3lTdGF0ZU5v
ZGUubGF5ZXIoKSk7CisKKyAgICBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6Y29tbWl0U3RhdGVC
ZWZvcmVDaGlsZHJlbihzdGF0ZU5vZGUpOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVTdGlja3lO
b2RlQ29jb2E6OmFwcGx5TGF5ZXJQb3NpdGlvbnMoKQoreworICAgIGF1dG8gbGF5ZXJQb3NpdGlv
biA9IGNvbXB1dGVMYXllclBvc2l0aW9uKCk7CisKKyAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xs
aW5nLCBzdHJlYW0gPDwgIlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlQ29jb2EgIiA8PCBzY3JvbGxp
bmdOb2RlSUQoKSA8PCAiIGNvbnN0cmFpbmluZ1JlY3RBdExhc3RMYXlvdXQgIiA8PCBtX2NvbnN0
cmFpbnRzLmNvbnN0cmFpbmluZ1JlY3RBdExhc3RMYXlvdXQoKSA8PCAiIGxhc3QgbGF5ZXIgcG9z
ICIgPDwgbV9jb25zdHJhaW50cy5sYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0KCkgPDwgIiBsYXll
clBvc2l0aW9uICIgPDwgbGF5ZXJQb3NpdGlvbik7CisKKyAgICBbbV9sYXllciBfd2ViX3NldExh
eWVyVG9wTGVmdFBvc2l0aW9uOmxheWVyUG9zaXRpb24gLSBtX2NvbnN0cmFpbnRzLmFsaWdubWVu
dE9mZnNldCgpXTsKK30KKworRmxvYXRQb2ludCBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUNvY29h
OjpsYXllclRvcExlZnQoKSBjb25zdAoreworICAgIEZsb2F0UmVjdCBsYXllckJvdW5kcyA9IFtt
X2xheWVyIGJvdW5kc107CisgICAgRmxvYXRQb2ludCBhbmNob3JQb2ludCA9IFttX2xheWVyIGFu
Y2hvclBvaW50XTsKKyAgICBGbG9hdFBvaW50IHBvc2l0aW9uID0gW21fbGF5ZXIgcG9zaXRpb25d
OworICAgIHJldHVybiBwb3NpdGlvbiAtIHRvRmxvYXRTaXplKGFuY2hvclBvaW50KSAqIGxheWVy
Qm91bmRzLnNpemUoKSArIG1fY29uc3RyYWludHMuYWxpZ25tZW50T2Zmc2V0KCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5n
Q29vcmRpbmF0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Ny
b2xsaW5nQ29vcmRpbmF0b3JNYWMubW0KaW5kZXggMGJjYmY2OTM2YzAyOTI2YjQ3YTEzNDJiNTdj
MDY5MTUyYTkzYjYwZi4uYzYzOTc3MmI4MDU4ZThmNTQwNzEyMDQ3YTkxNmQ4YTAxMjBlZGYxNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nv
b3JkaW5hdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9T
Y3JvbGxpbmdDb29yZGluYXRvck1hYy5tbQpAQCAtNDAsNyArNDAsNyBAQAogI2ltcG9ydCAiU2Ny
b2xsaW5nVHJlZUZpeGVkTm9kZS5oIgogI2ltcG9ydCAiU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZU1hYy5oIgogI2ltcG9ydCAiU2Nyb2xsaW5nVHJlZU1hYy5oIgotI2ltcG9ydCAiU2Ny
b2xsaW5nVHJlZVN0aWNreU5vZGUuaCIKKyNpbXBvcnQgIlNjcm9sbGluZ1RyZWVTdGlja3lOb2Rl
Q29jb2EuaCIKICNpbXBvcnQgIlRpbGVkQmFja2luZy5oIgogI2ltcG9ydCA8d3RmL01haW5UaHJl
YWQuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Nj
cm9sbGluZ1RyZWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Ny
b2xsaW5nVHJlZU1hYy5tbQppbmRleCAwMTY0ZDUzMjQ2MjQxY2JhZjE4NzVhZWU3OTk2YjFlNTMy
OTU4MmYyLi4zNWZjZTFhMmQwMDQwYTcwNTljMzhmMmI4OTE4MDJiMTY1ZDM3ZTdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1h
Yy5tbQpAQCAtMzQsNyArMzQsNyBAQAogI2ltcG9ydCAiU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Ny
b2xsUHJveHlOb2RlLmgiCiAjaW1wb3J0ICJTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlTWFjLmgiCiAjaW1wb3J0ICJTY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuaCIKLSNpbXBv
cnQgIlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLmgiCisjaW1wb3J0ICJTY3JvbGxpbmdUcmVlU3Rp
Y2t5Tm9kZUNvY29hLmgiCiAjaW1wb3J0ICJXZWJDb3JlQ0FMYXllckV4dHJhcy5oIgogI2ltcG9y
dCAiV2ViTGF5ZXIuaCIKICNpbXBvcnQgIldoZWVsRXZlbnRUZXN0TW9uaXRvci5oIgpAQCAtNjks
NyArNjksNyBAQCBSZWY8U2Nyb2xsaW5nVHJlZU5vZGU+IFNjcm9sbGluZ1RyZWVNYWM6OmNyZWF0
ZVNjcm9sbGluZ1RyZWVOb2RlKFNjcm9sbGluZ05vZGVUeQogICAgIGNhc2UgU2Nyb2xsaW5nTm9k
ZVR5cGU6OkZpeGVkOgogICAgICAgICByZXR1cm4gU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6Y3Jl
YXRlKCp0aGlzLCBub2RlSUQpOwogICAgIGNhc2UgU2Nyb2xsaW5nTm9kZVR5cGU6OlN0aWNreToK
LSAgICAgICAgcmV0dXJuIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpjcmVhdGUoKnRoaXMsIG5v
ZGVJRCk7CisgICAgICAgIHJldHVybiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUNvY29hOjpjcmVh
dGUoKnRoaXMsIG5vZGVJRCk7CiAgICAgY2FzZSBTY3JvbGxpbmdOb2RlVHlwZTo6UG9zaXRpb25l
ZDoKICAgICAgICAgcmV0dXJuIFNjcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZTo6Y3JlYXRlKCp0
aGlzLCBub2RlSUQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU5pY29zaWEuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlTmljb3NpYS5jcHAKaW5kZXggMmQx
NGU3OTk2NzE0OTNiOTk5YjA3ZjNjMTBkZmMzMmMwZGJiY2ZiMi4uMDc1OWMzMjRmNmMyMzc1MWUy
NmFjYmVlZWU2NWU4MmQ2MjUzZmVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlTmljb3NpYS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlTmljb3NpYS5jcHAKQEAg
LTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlICJTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxQcm94
eU5vZGUuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmlj
b3NpYS5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZS5oIgotI2luY2x1
ZGUgIlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZVN0
aWNreU5vZGVOaWNvc2lhLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjcsNyArNjcs
NyBAQCBSZWY8U2Nyb2xsaW5nVHJlZU5vZGU+IFNjcm9sbGluZ1RyZWVOaWNvc2lhOjpjcmVhdGVT
Y3JvbGxpbmdUcmVlTm9kZShTY3JvbGxpbmdObwogICAgIGNhc2UgU2Nyb2xsaW5nTm9kZVR5cGU6
OkZpeGVkOgogICAgICAgICByZXR1cm4gU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6Y3JlYXRlKCp0
aGlzLCBub2RlSUQpOwogICAgIGNhc2UgU2Nyb2xsaW5nTm9kZVR5cGU6OlN0aWNreToKLSAgICAg
ICAgcmV0dXJuIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpjcmVhdGUoKnRoaXMsIG5vZGVJRCk7
CisgICAgICAgIHJldHVybiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZU5pY29zaWE6OmNyZWF0ZSgq
dGhpcywgbm9kZUlEKTsKICAgICBjYXNlIFNjcm9sbGluZ05vZGVUeXBlOjpQb3NpdGlvbmVkOgog
ICAgICAgICByZXR1cm4gU2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlOjpjcmVhdGUoKnRoaXMs
IG5vZGVJRCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTI3ZWVjOWE2OGU2YzI1NTEwNTQ2OGNkMjAwNDQ5Yjg5
YWJlYThlYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlja3lO
b2RlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAo
QykgMjAxOSBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiAgICBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwotICog
ICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkCi0gKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIEhPTERF
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0g
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLmgiCi0K
LSNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBVU0UoTklDT1NJQSkKLQotI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJOaWNvc2lhUGxhdGZvcm1MYXllci5oIgotI2luY2x1ZGUg
IlNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5oIgotI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWUuaCIK
LSNpbmNsdWRlICJTY3JvbGxpbmdUcmVlRml4ZWROb2RlLmgiCi0jaW5jbHVkZSAiU2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5oIgotI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbFByb3h5Tm9kZS5oIgotI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGUuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotUmVmPFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlPiBTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZTo6Y3JlYXRlKFNjcm9sbGluZ1RyZWUmIHNjcm9sbGluZ1RyZWUsIFNjcm9sbGlu
Z05vZGVJRCBub2RlSUQpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2Nyb2xsaW5nVHJl
ZVN0aWNreU5vZGUoc2Nyb2xsaW5nVHJlZSwgbm9kZUlEKSk7Ci19Ci0KLVNjcm9sbGluZ1RyZWVT
dGlja3lOb2RlOjpTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZShTY3JvbGxpbmdUcmVlJiBzY3JvbGxp
bmdUcmVlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQotICAgIDogU2Nyb2xsaW5nVHJlZU5vZGUo
c2Nyb2xsaW5nVHJlZSwgU2Nyb2xsaW5nTm9kZVR5cGU6OlN0aWNreSwgbm9kZUlEKQotewotICAg
IHNjcm9sbGluZ1RyZWUuZml4ZWRPclN0aWNreU5vZGVBZGRlZCgpOwotfQotCi1TY3JvbGxpbmdU
cmVlU3RpY2t5Tm9kZTo6flNjcm9sbGluZ1RyZWVTdGlja3lOb2RlKCkKLXsKLSAgICBzY3JvbGxp
bmdUcmVlKCkuZml4ZWRPclN0aWNreU5vZGVSZW1vdmVkKCk7Ci19Ci0KLXZvaWQgU2Nyb2xsaW5n
VHJlZVN0aWNreU5vZGU6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5n
U3RhdGVOb2RlJiBzdGF0ZU5vZGUpCi17Ci0gICAgYXV0byYgc3RpY2t5U3RhdGVOb2RlID0gZG93
bmNhc3Q8U2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlPihzdGF0ZU5vZGUpOwotCi0gICAgaWYgKHN0
aWNreVN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9w
ZXJ0eTo6TGF5ZXIpKSB7Ci0gICAgICAgIGF1dG8qIGxheWVyID0gc3RhdGljX2Nhc3Q8Tmljb3Np
YTo6UGxhdGZvcm1MYXllcio+KHN0aWNreVN0YXRlTm9kZS5sYXllcigpKTsKLSAgICAgICAgbV9s
YXllciA9IGRvd25jYXN0PE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+KGxheWVyKTsKLSAgICB9
Ci0KLSAgICBpZiAoc3RpY2t5U3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdT
dGF0ZU5vZGU6OlByb3BlcnR5OjpWaWV3cG9ydENvbnN0cmFpbnRzKSkKLSAgICAgICAgbV9jb25z
dHJhaW50cyA9IHN0aWNreVN0YXRlTm9kZS52aWV3cG9ydENvbnN0cmFpbnRzKCk7Ci19Ci0KLXZv
aWQgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OmFwcGx5TGF5ZXJQb3NpdGlvbnMoKQotewotICAg
IGF1dG8gbGF5ZXJQb3NpdGlvbiA9IGNvbXB1dGVMYXllclBvc2l0aW9uKCk7Ci0KLSAgICBMT0df
V0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwgIlNjcm9sbGluZ1RyZWVTdGlja3lOb2Rl
ICIgPDwgc2Nyb2xsaW5nTm9kZUlEKCkgPDwgIiBjb25zdHJhaW5pbmdSZWN0QXRMYXN0TGF5b3V0
ICIgPDwgbV9jb25zdHJhaW50cy5jb25zdHJhaW5pbmdSZWN0QXRMYXN0TGF5b3V0KCkgPDwgIiBs
YXN0IGxheWVyIHBvcyAiIDw8IG1fY29uc3RyYWludHMubGF5ZXJQb3NpdGlvbkF0TGFzdExheW91
dCgpIDw8ICIgbGF5ZXJQb3NpdGlvbiAiIDw8IGxheWVyUG9zaXRpb24pOwotCi0gICAgbGF5ZXJQ
b3NpdGlvbiAtPSBtX2NvbnN0cmFpbnRzLmFsaWdubWVudE9mZnNldCgpOwotCi0gICAgQVNTRVJU
KG1fbGF5ZXIpOwotICAgIG1fbGF5ZXItPnVwZGF0ZVN0YXRlKAotICAgICAgICBbJmxheWVyUG9z
aXRpb25dKE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI6OkxheWVyU3RhdGUmIHN0YXRlKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBzdGF0ZS5wb3NpdGlvbiA9IGxheWVyUG9zaXRpb247Ci0gICAg
ICAgICAgICBzdGF0ZS5kZWx0YS5wb3NpdGlvbkNoYW5nZWQgPSB0cnVlOwotICAgICAgICB9KTsK
LX0KLQotdm9pZCBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6ZHVtcFByb3BlcnRpZXMoVGV4dFN0
cmVhbSYgdHMsIFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9yIGJlaGF2aW9yKSBjb25z
dAotewotICAgIHRzIDw8ICJzdGlja3kgbm9kZSI7Ci0KLSAgICBTY3JvbGxpbmdUcmVlTm9kZTo6
ZHVtcFByb3BlcnRpZXModHMsIGJlaGF2aW9yKTsKLSAgICB0cy5kdW1wUHJvcGVydHkoInN0aWNr
eSBjb25zdHJhaW50cyIsIG1fY29uc3RyYWludHMpOwotCi0gICAgaWYgKGJlaGF2aW9yICYgU2Ny
b2xsaW5nU3RhdGVUcmVlQXNUZXh0QmVoYXZpb3JJbmNsdWRlTGF5ZXJQb3NpdGlvbnMpIHsKLSAg
ICAgICAgRmxvYXRQb2ludCBsYXllclRvcExlZnQ7Ci0gICAgICAgIEFTU0VSVChtX2xheWVyKTsK
LSAgICAgICAgbV9sYXllci0+YWNjZXNzQ29tbWl0dGVkKAotICAgICAgICAgICAgW3RoaXMsICZs
YXllclRvcExlZnRdKE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI6OkxheWVyU3RhdGUmIHN0YXRl
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGxheWVyVG9wTGVmdCA9IHN0YXRlLnBv
c2l0aW9uIC0gdG9GbG9hdFNpemUoc3RhdGUuYW5jaG9yUG9pbnQueHkoKSkgKiBzdGF0ZS5zaXpl
ICsgbV9jb25zdHJhaW50cy5hbGlnbm1lbnRPZmZzZXQoKTsKLSAgICAgICAgICAgIH0pOwotCi0g
ICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgibGF5ZXIgdG9wIGxlZnQiLCBsYXllclRvcExlZnQpOwot
ICAgIH0KLX0KLQotRmxvYXRQb2ludCBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6Y29tcHV0ZUxh
eWVyUG9zaXRpb24oKSBjb25zdAotewotICAgIEZsb2F0U2l6ZSBvZmZzZXRGcm9tU3RpY2t5QW5j
ZXN0b3JzOwotICAgIGF1dG8gY29tcHV0ZUxheWVyUG9zaXRpb25Gb3JTY3JvbGxpbmdOb2RlID0g
WyZdKFNjcm9sbGluZ1RyZWVOb2RlJiBzY3JvbGxpbmdOb2RlKSB7Ci0gICAgICAgIEZsb2F0UmVj
dCBjb25zdHJhaW5pbmdSZWN0OwotICAgICAgICBpZiAoaXM8U2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZT4oc2Nyb2xsaW5nTm9kZSkpIHsKLSAgICAgICAgICAgIGF1dG8mIGZyYW1lU2Ny
b2xsaW5nTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU+KHNj
cm9sbGluZ05vZGUpOwotICAgICAgICAgICAgY29uc3RyYWluaW5nUmVjdCA9IGZyYW1lU2Nyb2xs
aW5nTm9kZS5sYXlvdXRWaWV3cG9ydCgpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
YXV0byYgb3ZlcmZsb3dTY3JvbGxpbmdOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZT4oc2Nyb2xsaW5nTm9kZSk7Ci0gICAgICAgICAgICBjb25zdHJhaW5p
bmdSZWN0ID0gbV9jb25zdHJhaW50cy5jb25zdHJhaW5pbmdSZWN0QXRMYXN0TGF5b3V0KCk7Ci0g
ICAgICAgICAgICBjb25zdHJhaW5pbmdSZWN0Lm1vdmUob3ZlcmZsb3dTY3JvbGxpbmdOb2RlLnNj
cm9sbERlbHRhU2luY2VMYXN0Q29tbWl0KCkpOwotICAgICAgICB9Ci0gICAgICAgIGNvbnN0cmFp
bmluZ1JlY3QubW92ZSgtb2Zmc2V0RnJvbVN0aWNreUFuY2VzdG9ycyk7Ci0gICAgICAgIHJldHVy
biBtX2NvbnN0cmFpbnRzLmxheWVyUG9zaXRpb25Gb3JDb25zdHJhaW5pbmdSZWN0KGNvbnN0cmFp
bmluZ1JlY3QpOwotICAgIH07Ci0KLSAgICBmb3IgKGF1dG8qIGFuY2VzdG9yID0gcGFyZW50KCk7
IGFuY2VzdG9yOyBhbmNlc3RvciA9IGFuY2VzdG9yLT5wYXJlbnQoKSkgewotICAgICAgICBpZiAo
aXM8U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlPigqYW5jZXN0b3IpKSB7Ci0g
ICAgICAgICAgICBhdXRvJiBvdmVyZmxvd1Byb3h5Tm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZT4oKmFuY2VzdG9yKTsKLSAgICAgICAgICAgIGF1dG8g
b3ZlcmZsb3dOb2RlID0gc2Nyb2xsaW5nVHJlZSgpLm5vZGVGb3JJRChvdmVyZmxvd1Byb3h5Tm9k
ZS5vdmVyZmxvd1Njcm9sbGluZ05vZGVJRCgpKTsKLSAgICAgICAgICAgIGlmICghb3ZlcmZsb3dO
b2RlKQotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICByZXR1cm4gY29tcHV0
ZUxheWVyUG9zaXRpb25Gb3JTY3JvbGxpbmdOb2RlKCpvdmVyZmxvd05vZGUpOwotICAgICAgICB9
Ci0KLSAgICAgICAgaWYgKGlzPFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlPigqYW5jZXN0b3Ip
KQotICAgICAgICAgICAgcmV0dXJuIGNvbXB1dGVMYXllclBvc2l0aW9uRm9yU2Nyb2xsaW5nTm9k
ZSgqYW5jZXN0b3IpOwotCi0gICAgICAgIGlmIChpczxTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZT4o
KmFuY2VzdG9yKSkKLSAgICAgICAgICAgIG9mZnNldEZyb21TdGlja3lBbmNlc3RvcnMgKz0gZG93
bmNhc3Q8U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU+KCphbmNlc3Rvcikuc2Nyb2xsRGVsdGFTaW5j
ZUxhc3RDb21taXQoKTsKLQotICAgICAgICBpZiAoaXM8U2Nyb2xsaW5nVHJlZUZpeGVkTm9kZT4o
KmFuY2VzdG9yKSkgewotICAgICAgICAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgc2Nyb2xsaW5n
IHRyZWUgbm9kZXMgYXQgYWxsIGZvciBuZXN0ZWQgY2FzZXM/Ci0gICAgICAgICAgICByZXR1cm4g
bV9jb25zdHJhaW50cy5sYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0KCk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIG1fY29uc3RyYWludHMu
bGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCgpOwotfQotCi1GbG9hdFNpemUgU2Nyb2xsaW5nVHJl
ZVN0aWNreU5vZGU6OnNjcm9sbERlbHRhU2luY2VMYXN0Q29tbWl0KCkgY29uc3QKLXsKLSAgICBh
dXRvIGxheWVyUG9zaXRpb24gPSBjb21wdXRlTGF5ZXJQb3NpdGlvbigpOwotICAgIHJldHVybiBs
YXllclBvc2l0aW9uIC0gbV9jb25zdHJhaW50cy5sYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0KCk7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19T
Q1JPTExJTkcpICYmIFVTRShOSUNPU0lBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMDhmOWRmNjIwY2NmYzExNjE2ODEwZDZkZDJi
NDczZWQ0ODFhZmQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0
aWNreU5vZGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0
IChDKSAyMDE5IElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqICAgIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0g
KiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQKLSAqICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogSE9M
REVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFVTRShOSUNPU0lB
KQotCi0jaW5jbHVkZSAiU2Nyb2xsaW5nQ29uc3RyYWludHMuaCIKLSNpbmNsdWRlICJTY3JvbGxp
bmdUcmVlTm9kZS5oIgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIE5pY29z
aWEgewotY2xhc3MgQ29tcG9zaXRpb25MYXllcjsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSBmaW5hbCA6IHB1YmxpYyBTY3JvbGxpbmdU
cmVlTm9kZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZT4gY3JlYXRlKFNjcm9sbGluZ1RyZWUmLCBTY3JvbGxpbmdOb2RlSUQpOwotICAgIHZpcnR1YWwg
flNjcm9sbGluZ1RyZWVTdGlja3lOb2RlKCk7Ci0KLXByaXZhdGU6Ci0gICAgU2Nyb2xsaW5nVHJl
ZVN0aWNreU5vZGUoU2Nyb2xsaW5nVHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7Ci0KLSAgICB2b2lk
IGNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBhcHBseUxheWVyUG9zaXRpb25zKCkgb3ZlcnJpZGU7Ci0KLSAgICB2
b2lkIGR1bXBQcm9wZXJ0aWVzKFdURjo6VGV4dFN0cmVhbSYsIFNjcm9sbGluZ1N0YXRlVHJlZUFz
VGV4dEJlaGF2aW9yKSBjb25zdCBvdmVycmlkZTsKLQotICAgIEZsb2F0UG9pbnQgY29tcHV0ZUxh
eWVyUG9zaXRpb24oKSBjb25zdDsKLSAgICBGbG9hdFNpemUgc2Nyb2xsRGVsdGFTaW5jZUxhc3RD
b21taXQoKSBjb25zdDsKLQotICAgIFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cyBt
X2NvbnN0cmFpbnRzOwotICAgIFJlZlB0cjxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPiBtX2xh
eWVyOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi1TUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX1NDUk9MTElOR19OT0RFKFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLCBpc1N0aWNreU5vZGUo
KSkKLQotI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFVTRShOSUNPU0lBKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxp
bmdUcmVlU3RpY2t5Tm9kZU5pY29zaWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZU5pY29zaWEuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjBjMzIwOTM5ZmUyMWJhMzAxOGYxMThiYTZiZmUwZTUzZWQxZDY2MmUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVT
dGlja3lOb2RlTmljb3NpYS5jcHAKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTkgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAg
IGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZAorICogICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZU5pY29zaWEu
aCIKKworI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFVTRShOSUNPU0lBKQorCisjaW5j
bHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5pY29zaWFQbGF0Zm9ybUxheWVyLmgiCisjaW5j
bHVkZSAiU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJl
ZS5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVGaXhlZE5vZGUuaCIKKyNpbmNsdWRlICJTY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZU92
ZXJmbG93U2Nyb2xsUHJveHlOb2RlLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZU92ZXJmbG93
U2Nyb2xsaW5nTm9kZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitSZWY8U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVOaWNvc2lhPiBT
Y3JvbGxpbmdUcmVlU3RpY2t5Tm9kZU5pY29zaWE6OmNyZWF0ZShTY3JvbGxpbmdUcmVlJiBzY3Jv
bGxpbmdUcmVlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQoreworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlTmljb3NpYShzY3JvbGxpbmdUcmVlLCBub2Rl
SUQpKTsKK30KKworU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVOaWNvc2lhOjpTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZU5pY29zaWEoU2Nyb2xsaW5nVHJlZSYgc2Nyb2xsaW5nVHJlZSwgU2Nyb2xsaW5n
Tm9kZUlEIG5vZGVJRCkKKyAgICA6IFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlKHNjcm9sbGluZ1Ry
ZWUsIG5vZGVJRCkKK3sKK30KKwordm9pZCBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZU5pY29zaWE6
OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJiBzdGF0
ZU5vZGUpCit7CisgICAgYXV0byYgc3RpY2t5U3RhdGVOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5n
U3RhdGVTdGlja3lOb2RlPihzdGF0ZU5vZGUpOworICAgIGlmIChzdGlja3lTdGF0ZU5vZGUuaGFz
Q2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkxheWVyKSkgewor
ICAgICAgICBhdXRvKiBsYXllciA9IHN0YXRpY19jYXN0PE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIq
PihzdGlja3lTdGF0ZU5vZGUubGF5ZXIoKSk7CisgICAgICAgIG1fbGF5ZXIgPSBkb3duY2FzdDxO
aWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPihsYXllcik7CisgICAgfQorCisgICAgU2Nyb2xsaW5n
VHJlZVN0aWNreU5vZGU6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oc3RhdGVOb2RlKTsKK30K
Kwordm9pZCBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZU5pY29zaWE6OmFwcGx5TGF5ZXJQb3NpdGlv
bnMoKQoreworICAgIGF1dG8gbGF5ZXJQb3NpdGlvbiA9IGNvbXB1dGVMYXllclBvc2l0aW9uKCk7
CisKKyAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwgIlNjcm9sbGluZ1Ry
ZWVTdGlja3lOb2RlTmljb3NpYSAiIDw8IHNjcm9sbGluZ05vZGVJRCgpIDw8ICIgY29uc3RyYWlu
aW5nUmVjdEF0TGFzdExheW91dCAiIDw8IG1fY29uc3RyYWludHMuY29uc3RyYWluaW5nUmVjdEF0
TGFzdExheW91dCgpIDw8ICIgbGFzdCBsYXllciBwb3MgIiA8PCBtX2NvbnN0cmFpbnRzLmxheWVy
UG9zaXRpb25BdExhc3RMYXlvdXQoKSA8PCAiIGxheWVyUG9zaXRpb24gIiA8PCBsYXllclBvc2l0
aW9uKTsKKworICAgIGxheWVyUG9zaXRpb24gLT0gbV9jb25zdHJhaW50cy5hbGlnbm1lbnRPZmZz
ZXQoKTsKKworICAgIEFTU0VSVChtX2xheWVyKTsKKyAgICBtX2xheWVyLT51cGRhdGVTdGF0ZSgK
KyAgICAgICAgWyZsYXllclBvc2l0aW9uXShOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyOjpMYXll
clN0YXRlJiBzdGF0ZSkKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGUucG9zaXRpb24gPSBs
YXllclBvc2l0aW9uOworICAgICAgICAgICAgc3RhdGUuZGVsdGEucG9zaXRpb25DaGFuZ2VkID0g
dHJ1ZTsKKyAgICAgICAgfSk7Cit9CisKK0Zsb2F0UG9pbnQgU2Nyb2xsaW5nVHJlZVN0aWNreU5v
ZGVOaWNvc2lhOjpsYXllclRvcExlZnQoKSBjb25zdAoreworICAgIEZsb2F0UG9pbnQgbGF5ZXJU
b3BMZWZ0OworICAgIEFTU0VSVChtX2xheWVyKTsKKyAgICBtX2xheWVyLT5hY2Nlc3NDb21taXR0
ZWQoCisgICAgICAgIFt0aGlzLCAmbGF5ZXJUb3BMZWZ0XShOaWNvc2lhOjpDb21wb3NpdGlvbkxh
eWVyOjpMYXllclN0YXRlJiBzdGF0ZSkKKyAgICAgICAgeworICAgICAgICAgICAgbGF5ZXJUb3BM
ZWZ0ID0gc3RhdGUucG9zaXRpb24gLSB0b0Zsb2F0U2l6ZShzdGF0ZS5hbmNob3JQb2ludC54eSgp
KSAqIHN0YXRlLnNpemUgKyBtX2NvbnN0cmFpbnRzLmFsaWdubWVudE9mZnNldCgpOworICAgICAg
ICB9KTsKKyAgICByZXR1cm4gbGF5ZXJUb3BMZWZ0OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBVU0UoTklDT1NJQSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xs
aW5nVHJlZVN0aWNreU5vZGVOaWNvc2lhLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlTmljb3NpYS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMx
MTYxM2Y5ODI0YWNmODk4NTk5NjUwMDY0MWY0NTJmNmYzZGQwYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlj
a3lOb2RlTmljb3NpYS5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5
IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNj
bGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQKKyAqICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9MREVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFVTRShOSUNPU0lBKQorCisjaW5j
bHVkZSAiU2Nyb2xsaW5nQ29uc3RyYWludHMuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVlU3Rp
Y2t5Tm9kZS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIE5pY29zaWEg
eworY2xhc3MgQ29tcG9zaXRpb25MYXllcjsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZU5pY29zaWEgZmluYWwgOiBwdWJsaWMgU2Nyb2xs
aW5nVHJlZVN0aWNreU5vZGUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U2Nyb2xsaW5nVHJl
ZVN0aWNreU5vZGVOaWNvc2lhPiBjcmVhdGUoU2Nyb2xsaW5nVHJlZSYsIFNjcm9sbGluZ05vZGVJ
RCk7CisgICAgdmlydHVhbCB+U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVOaWNvc2lhKCkgPSBkZWZh
dWx0OworCitwcml2YXRlOgorICAgIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlTmljb3NpYShTY3Jv
bGxpbmdUcmVlJiwgU2Nyb2xsaW5nTm9kZUlEKTsKKworICAgIHZvaWQgY29tbWl0U3RhdGVCZWZv
cmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGFwcGx5TGF5ZXJQb3NpdGlvbnMoKSBvdmVycmlkZTsKKyAgICBGbG9hdFBvaW50IGxheWVyVG9w
TGVmdCgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgUmVmUHRyPE5pY29zaWE6OkNvbXBvc2l0aW9u
TGF5ZXI+IG1fbGF5ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBVU0UoTklDT1NJQSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RleHR1cmVNYXBwZXIuY21ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9UZXh0dXJlTWFwcGVyLmNtYWtlCmluZGV4IGQyYmNkOWFmMDgyZDJiN2U2NmE5
MjZiMjE4ZjI0MDg1MGI2YTk5NDQuLjU1M2I1YWU3NTZkYmZlYWNhODljNDYyYWM1ZTkwMDM5MzUx
MTEzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RleHR1cmVNYXBwZXIu
Y21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGV4dHVyZU1hcHBlci5jbWFrZQpA
QCAtMTAwLDcgKzEwMCw3IEBAIGlmIChVU0VfQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgKQog
ICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgICAg
ICBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUuaAotICAgICAg
ICBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmgKKyAgICAg
ICAgcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZU5pY29zaWEu
aAogCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUFuaW1hdGVkQmFj
a2luZ1N0b3JlQ2xpZW50LmgKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNv
c2lhQnVmZmVyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdUcmVlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdUcmVlLmNwcAppbmRleCA3ZGRhMzM2M2Uw
NWIzZDBmMmM0NDRiOTlkMWUyYzUzNDFjZGEzYjM3Li4zOTI4MjhhZWUzMTkwODhiZDRhNzM5ZWE1
Y2QzMWY2ODdkZGRlZmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ1RyZWUuY3BwCkBAIC0zNCw3
ICszNCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxpbmdUcmVlRnJhbWVIb3N0aW5nTm9k
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsUHJveHlO
b2RlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUNvY29hLmg+CiAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1v
dGVJT1MuaCIKQEAgLTEyNyw3ICsxMjcsNyBAQCBSZWY8U2Nyb2xsaW5nVHJlZU5vZGU+IFJlbW90
ZVNjcm9sbGluZ1RyZWU6OmNyZWF0ZVNjcm9sbGluZ1RyZWVOb2RlKFNjcm9sbGluZ05vZAogICAg
IGNhc2UgU2Nyb2xsaW5nTm9kZVR5cGU6OkZpeGVkOgogICAgICAgICByZXR1cm4gU2Nyb2xsaW5n
VHJlZUZpeGVkTm9kZTo6Y3JlYXRlKCp0aGlzLCBub2RlSUQpOwogICAgIGNhc2UgU2Nyb2xsaW5n
Tm9kZVR5cGU6OlN0aWNreToKLSAgICAgICAgcmV0dXJuIFNjcm9sbGluZ1RyZWVTdGlja3lOb2Rl
OjpjcmVhdGUoKnRoaXMsIG5vZGVJRCk7CisgICAgICAgIHJldHVybiBTY3JvbGxpbmdUcmVlU3Rp
Y2t5Tm9kZUNvY29hOjpjcmVhdGUoKnRoaXMsIG5vZGVJRCk7CiAgICAgY2FzZSBTY3JvbGxpbmdO
b2RlVHlwZTo6UG9zaXRpb25lZDoKICAgICAgICAgcmV0dXJuIFNjcm9sbGluZ1RyZWVQb3NpdGlv
bmVkTm9kZTo6Y3JlYXRlKCp0aGlzLCBub2RlSUQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxp
bmdDb29yZGluYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5tbQppbmRleCA4NGEyZmIwZjli
Mjc2MmEyYzIyODliYjk1ZTk0MzEyZjZiMGYxYWE1Li4zNDA0ZGQ4ODcxYjA4MzBmMjBlOTU4YWI1
NzczNWIwNjUxNmUzODY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yLm1tCkBAIC00Myw3ICs0Myw3IEBACiAjaW1wb3J0IDxXZWJDb3Jl
L1JlbmRlckxheWVyQ29tcG9zaXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJWaWV3Lmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUuaD4KLSNpbXBvcnQgPFdl
YkNvcmUvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xs
aW5nVHJlZVN0aWNreU5vZGVDb2NvYS5oPgogCiAKIG5hbWVzcGFjZSBXZWJLaXQgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441064</attachid>
            <date>2021-10-13 06:03:23 -0700</date>
            <delta_ts>2021-10-13 12:03:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231571-20211013150321.patch</filename>
            <type>text/plain</type>
            <size>66836</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MDg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjYyZGE4NWFmOTJhYWFm
ZjM3NTc0Y2FjMTM2ZmM0NzQ4MGY0ZmYzYS4uN2ZjNWVlYWViZDg2MzVjZDZjZmE2YWQ3NjA3MDVk
YzhlN2Q1YmUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIxLTEwLTEzICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBFbGltaW5hdGUg
ZHVwbGljYXRlZCBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlIGluIFNjcm9sbGluZ1RyZWVTdGlja3lO
b2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE1
NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBYnN0
cmFjdCBjb2RlIGZyb20gdGhlIE5pY29zaWEgYW5kIENvb2NhIHZlcnNpb24gb2YgU2Nyb2xsaW5n
VHJlZVN0aWNreU5vZGUsCisgICAgICAgIHNvIHRoYXQgaXQgY2FuIGJlIHNoYXJlZCBieSBib3Ro
IHBvcnRzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBzaG91bGQgbm90IGNoYW5nZSBh
bnkgYmVoYXZpb3IuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFBsYXRm
b3JtTWFjLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtUGxheVN0YXRpb24uY21ha2U6CisgICAg
ICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAg
KiBTb3VyY2VzR1RLLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUu
Y3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9T
Y3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdU
cmVlU3RpY2t5Tm9kZTo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6ZHVtcFByb3BlcnRpZXMgY29uc3QpOgorICAg
ICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0
aWNreU5vZGUuaC4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVl
Rml4ZWROb2RlLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6
YXBwbHlMYXllclBvc2l0aW9ucyk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Ny
b2xsaW5nVHJlZVN0aWNreU5vZGUubW06IFJlbW92ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdUcmVlU3RpY2t5Tm9kZTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6flNjcm9sbGlu
Z1RyZWVTdGlja3lOb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1Ry
ZWVTdGlja3lOb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpjb21wdXRlTGF5ZXJQb3NpdGlv
biBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU3RpY2t5
Tm9kZTo6YXBwbHlMYXllclBvc2l0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6c2Nyb2xsRGVsdGFTaW5jZUxhc3RDb21taXQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OmR1
bXBQcm9wZXJ0aWVzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9j
b2NvYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUNvY29hLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oLgor
ICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlQ29j
b2EubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVD
b2NvYTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTdGlja3lOb2Rl
Q29jb2E6OlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlQ29jb2EpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVDb2NvYTo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUNvY29hOjphcHBseUxh
eWVyUG9zaXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTdGlja3lOb2Rl
Q29jb2E6OmxheWVyVG9wTGVmdCBjb25zdCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFj
L1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdUcmVlTWFjLm1tOgorICAgICAgICAoU2Nyb2xsaW5nVHJlZU1hYzo6Y3JlYXRl
U2Nyb2xsaW5nVHJlZU5vZGUpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Ny
b2xsaW5nVHJlZU5pY29zaWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU5p
Y29zaWE6OmNyZWF0ZVNjcm9sbGluZ1RyZWVOb2RlKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlTmljb3NpYS5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVOaWNvc2lhOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVOaWNvc2lhOjpTY3JvbGxp
bmdUcmVlU3RpY2t5Tm9kZU5pY29zaWEpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJl
ZVN0aWNreU5vZGVOaWNvc2lhOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlTmljb3NpYTo6YXBwbHlMYXllclBvc2l0
aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZU5pY29zaWE6
OmxheWVyVG9wTGVmdCBjb25zdCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9T
Y3JvbGxpbmdUcmVlU3RpY2t5Tm9kZU5pY29zaWEuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9UZXh0dXJlTWFwcGVyLmNtYWtlOgorCiAyMDIxLTEwLTEzICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KIAogICAgICAgICBTdGlja3kgZWxl
bWVudCBpbnNpZGUgYW5vdGhlciBzdGlja3kgZWxlbWVudCBkb2VzIG5vdCByZWRyYXcgcHJvcGVy
bHkgb24gc2Nyb2xsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZhMDczYjkzYWJjMzY3NTc1OTY1NDU3NDZiNzc0NjU4
YmIwYmIwY2EuLmQ0ZDhiNTM0NTRlYTczODk1ZTNmMWU4OGQ5NDRlN2UzYjE4NzVmYWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMTAtMTMgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2Jp
bnNvbkB3ZWJraXQub3JnPgorCisgICAgICAgIEVsaW1pbmF0ZSBkdXBsaWNhdGVkIHBsYXRmb3Jt
LXNwZWNpZmljIGNvZGUgaW4gU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTU3MQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFic3RyYWN0IGNvZGUgZnJvbSB0aGUg
Tmljb3NpYSBhbmQgQ29vY2EgdmVyc2lvbiBvZiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSwKKyAg
ICAgICAgc28gdGhhdCBpdCBjYW4gYmUgc2hhcmVkIGJ5IGJvdGggcG9ydHMuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ1RyZWUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdUcmVlOjpjcmVhdGVTY3JvbGxpbmdUcmVlTm9k
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvci5tbToKKwogMjAyMS0xMC0xMiAgSmVyIE5vYmxlICA8amVyLm5v
YmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbQnVpbGQtdGltZSBwZXJmXSBGb3J3YXJkLWRlY2xh
cmUgbW9yZSB0aGluZ3MgaW4gRG9jdW1lbnQuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggZGQwOTMz
OWFiY2IwZTZhZmFlNzJhYzRmM2MxODY4MDg5ZjU2NDBiMi4uMjNkNGYwNWNlNDhlYjQwNDVhYTY5
MGQ0ZDRjN2VmMTcyYTgxMWVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMDUyLDYgKzEwNTIs
NyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oCiAgICAgcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaAogICAgIHBhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuaAorICAgIHBhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVTdGlja3lOb2RlLmgKICAgICBwYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9s
bGluZ1RyZWUuaAogCiAgICAgcGxhdGZvcm0vQWJvcnRhYmxlVGFza1F1ZXVlLmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1NYWMuY21ha2UKaW5kZXggYmNmY2ViNzkzMTNlYzA1YzM1NGM1ZmVmZTM0YWI1MTBhYjMz
ZTcxNy4uNTcwZjllMWU0ODg3ZDJlNGI0MDA4OTZjYzk0NGIwM2U0ODRjNDg5MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1NYWMuY21ha2UKQEAgLTU1MSw3ICs1NTEsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3Jl
X1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwYWdlL3Njcm9sbGluZy9jb2NvYS9TY3Jv
bGxpbmdUcmVlRml4ZWROb2RlLmgKICAgICBwYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxQcm94eU5vZGUuaAogICAgIHBhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Nj
cm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZS5oCi0gICAgcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Ny
b2xsaW5nVHJlZVN0aWNreU5vZGUuaAorICAgIHBhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGlu
Z1RyZWVTdGlja3lOb2RlQ29jb2EuaAogCiAgICAgcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGlu
Z1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMuaAogICAgIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3Jv
bGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bVBsYXlTdGF0aW9uLmNtYWtlCmluZGV4IDlmMTU1OWVjMmU1ZDkyZjZlMmUyOTRhZWZkNDBhMjgy
OTRlZjNhYzEuLmIwMzhiZmNiMzVjZjFhMTE5NzRkOThjY2E5ODBlY2IzOTg0YjQ1NDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UKKysrIGIvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZQpAQCAtMjksNyArMjksNyBAQCBs
aXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Nj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmNwcAogICAgIHBhZ2Uvc2Ny
b2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlLmNwcAogICAgIHBhZ2Uv
c2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29z
aWEuY3BwCi0gICAgcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZS5jcHAKKyAgICBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2Rl
Tmljb3NpYS5jcHAKIAogICAgIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwCiAg
ICAgcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA1
MjhlY2ViMWQzOTIzYTAxNGQ3ZjE1MTU5YzZiN2YzNTNmYjM0OWZiLi40ZmEwZmVlOTkwNGE5OTY5
MWI1ZDdlMmI2YWJlNzJhNTdiYTRlODRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTc5Myw2ICsxNzkz
LDcgQEAgcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3BwCiBwYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmNwcAogcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmNwcAorcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJl
ZVN0aWNreU5vZGUuY3BwCiBwYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuY3Bw
CiBwbGF0Zm9ybS9Db250ZW50VHlwZS5jcHAKIHBsYXRmb3JtL0NvbnRleHRNZW51LmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggYTRjMGE3NjI3YzM3ODFkZmNkMDQ5MDZmYzUyMzMwOWM5
MDczMGMyYy4uMTU3YTlkZDM5ZDM3NWRhNDhjNjFmMTE1ZWM3ODU2NzJhMmI4NmMxMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0yMDcsNyArMjA3LDcgQEAgcGFnZS9zY3JvbGxpbmcvY29j
b2EvU2Nyb2xsaW5nU3RhdGVOb2RlLm1tCiBwYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdU
cmVlRml4ZWROb2RlLm1tCiBwYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlT3ZlcmZs
b3dTY3JvbGxQcm94eU5vZGUubW0KIHBhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVQ
b3NpdGlvbmVkTm9kZS5tbQotcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZVN0aWNr
eU5vZGUubW0KK3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlQ29j
b2EubW0KIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5tbQogcGFn
ZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZU1hYy5tbQogcGFnZS9z
Y3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNHVEsudHh0IGIvU291cmNlL1dlYkNvcmUvU291
cmNlc0dUSy50eHQKaW5kZXggM2NkZjNlODFlZTM1MzUyYzU5ZjgzYmUxYjhiY2RjZGYxZDc5YmYz
OS4uNmE5Y2Q2MzA4N2VmMGZiZDA4NDM4M2NmNmRjNGZmYTdjZDZjNmMyNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNl
c0dUSy50eHQKQEAgLTY5LDcgKzY5LDcgQEAgcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxQcm94eU5vZGUuY3BwCiBwYWdlL3Njcm9sbGluZy9uaWNvc2lh
L1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmNwcAogcGFnZS9zY3Jv
bGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuY3BwCiBwYWdlL3Njcm9s
bGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNw
cAotcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAKK3Bh
Z2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVOaWNvc2lhLmNwcAog
CiBwbGF0Zm9ybS9Vc2VyQWdlbnRRdWlya3MuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNXUEUudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc1dQRS50eHQKaW5kZXgg
NjYzM2FhMThhOWNkODEyMTZlNmM0NmE3YzQyMzdmMDFhMWU0YmJiYi4uZmQwNThlOGY2MTRlZGJh
NzBmZDBkMTA0Mjg1ODY0ZTc2OGVjZWI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291
cmNlc1dQRS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc1dQRS50eHQKQEAgLTU2LDcg
KzU2LDcgQEAgcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3Jv
bGxQcm94eU5vZGUuY3BwCiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVy
Zmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmNwcAogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3Jv
bGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuY3BwCiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcAotcGFnZS9zY3JvbGxpbmcv
bmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAKK3BhZ2Uvc2Nyb2xsaW5nL25pY29z
aWEvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVOaWNvc2lhLmNwcAogCiBwbGF0Zm9ybS9Vc2VyQWdl
bnRRdWlya3MuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCBiNWE0YjRkNmI3MDI0NzMwNzVmMjk4ZjM5YWMzOTY0NThiMjdj
Y2VhLi5jMmE1NzJmZGNhYjcyNGE4NDRmZmQ0NTE2YTQxMzViZjE2ZTMxNDZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMzcs
NyArMzM3LDcgQEAKIAkJMEY4QjQ1NzIxREMzRkJBMzAwNDQzQzNGIC8qIEludGVyc2VjdGlvbk9i
c2VydmVyQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGOEI0NTcxMURDM0ZCQTMwMDQ0M0MzRiAvKiBJbnRlcnNlY3Rpb25PYnNlcnZlckNh
bGxiYWNrLmggKi87IH07CiAJCTBGOEI0NTc2MURDNDFEQkEwMDQ0M0MzRiAvKiBKU0ludGVyc2Vj
dGlvbk9ic2VydmVyQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGOEI0NTc0MURDNDFEQkEwMDQ0M0MzRiAvKiBKU0ludGVyc2VjdGlvbk9i
c2VydmVyQ2FsbGJhY2suaCAqLzsgfTsKIAkJMEY5NEI2NDcyMjA4RkUzNjAwMTU3MDE0IC8qIFNj
cm9sbGluZ1RyZWVGaXhlZE5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGOTRCNjQyMjIwOEY3MDEwMDE1NzAxNCAvKiBTY3JvbGxpbmdUcmVlRml4
ZWROb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
LQkJMEY5NEI2NDkyMjA4RkUzQjAwMTU3MDE0IC8qIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjk0QjY0MzIy
MDhGNzAyMDAxNTcwMTQgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjk0QjY0OTIyMDhGRTNCMDAx
NTcwMTQgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5NEI2NDMyMjA4RjcwMjAwMTU3MDE0IC8q
IFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlQ29jb2EuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjk0QjY1MjIyMDkxNTA2MDAxNTcwMTQgLyogU2Ny
b2xsaW5nU3RhdGVQb3NpdGlvbmVkTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY5NEI2NTEyMjA5MTRGRjAwMTU3MDE0IC8qIFNjcm9sbGluZ1N0
YXRlUG9zaXRpb25lZE5vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRjk0QjY1NTIyMDkzMUU0MDAxNTcwMTQgLyogU2Nyb2xsaW5nVHJlZVBv
c2l0aW9uZWROb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjk0QjY1MzIyMDkxNTZDMDAxNTcwMTQgLyogU2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWRO
b2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEY5NEYzN0UyMzY2MTYyNjAwM0FBNUM3IC8qIFN0eWxlUnVsZVR5cGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTRGMzdDMjM2NjExMzEwMDNBQTVD
NyAvKiBTdHlsZVJ1bGVUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTIwMTcsNiArMjAxNyw3IEBACiAJCTVCMzA2OTVFMThCM0QzNDUwMDk5
RDVFOCAvKiBXZWJHTERyYXdCdWZmZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1QjMwNjk1QjE4QjNEMzQ1MDA5OUQ1RTggLyogV2ViR0xEcmF3QnVm
ZmVycy5oICovOyB9OwogCQk1QjQ2NjU2MzI1RDE0QzBBMDAwQ0ZFMTQgLyogU2Nyb2xsaW5nRWZm
ZWN0c0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVCNDY2NTVGMjVEMTRDMDkwMDBDRkUxNCAvKiBTY3JvbGxpbmdFZmZlY3RzQ29udHJv
bGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTVCNDY2NTY0MjVEMTRDMEEwMDBDRkUxNCAvKiBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUI0NjY1NjAyNUQx
NEMwQTAwMENGRTE0IC8qIFNjcm9sbFNuYXBBbmltYXRvclN0YXRlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNUI5MkM0MkQyNzE2RTI4QTAwQTM3
Q0MwIC8qIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QjkyQzQyQjI3MTZFMjMzMDBBMzdDQzAgLyogU2Nyb2xs
aW5nVHJlZVN0aWNreU5vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1QzFCMUQzRjI2RjM5NzgwMDA4ODJEQTIgLyogUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1QzFCMUQzRDI2RjM5NzdGMDA4ODJEQTIgLyogUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUMyQjFB
RUMyMjM5N0VCQzAwQjkxQ0Y3IC8qIFJlc291cmNlUmVzcG9uc2VDb2NvYS5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRjc4RDBCMUMyNTQyMkMwMDI0
NTQ0NiAvKiBSZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0gKi87IH07CiAJCTVDNDMwNEIxMTkxQUM5
MDgwMDBFMkJDMCAvKiBFWFRTaGFkZXJUZXh0dXJlTE9ELmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzQzMDRBRTE5MUFDOTA4MDAwRTJCQzAgLyogRVhU
U2hhZGVyVGV4dHVyZUxPRC5oICovOyB9OwpAQCAtNjMyOCw5ICs2MzI5LDkgQEAKIAkJMEY5NDcy
MkQyNTM0QkE3MzAwRjE1M0M4IC8qIERpc3BsYXlGaWxsTGF5ZXJJbWFnZUdlb21ldHJ5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERpc3BsYXlGaWxsTGF5ZXJJbWFnZUdlb21ldHJ5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGOTRBMzk1MUVGMUIxMDUwMEZCQUZGQiAvKiBKU0RPTVF1YWRD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01RdWFk
Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5NEI2NDIyMjA4Rjcw
MTAwMTU3MDE0IC8qIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU2Ny
b2xsaW5nVHJlZUZpeGVkTm9kZS5oOyBwYXRoID0gcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xs
aW5nVHJlZUZpeGVkTm9kZS5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07Ci0JCTBGOTRC
NjQzMjIwOEY3MDIwMDE1NzAxNCAvKiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oOyBwYXRoID0gcGFnZS9zY3JvbGxpbmcv
Y29jb2EvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09U
OyB9OworCQkwRjk0QjY0MzIyMDhGNzAyMDAxNTcwMTQgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5v
ZGVDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUNvY29hLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTRCNjQ0MjIwOEY3MDIwMDE1NzAxNCAv
KiBTY3JvbGxpbmdUcmVlRml4ZWROb2RlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gU2Nyb2xs
aW5nVHJlZUZpeGVkTm9kZS5tbTsgcGF0aCA9IHBhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGlu
Z1RyZWVGaXhlZE5vZGUubW07IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKLQkJMEY5NEI2
NDUyMjA4RjcwMzAwMTU3MDE0IC8qIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBuYW1lID0gU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUubW07IHBhdGggPSBwYWdlL3Nj
cm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbTsgc291cmNlVHJlZSA9IFNP
VVJDRV9ST09UOyB9OworCQkwRjk0QjY0NTIyMDhGNzAzMDAxNTcwMTQgLyogU2Nyb2xsaW5nVHJl
ZVN0aWNreU5vZGVDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcm9sbGluZ1RyZWVT
dGlja3lOb2RlQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTRCNjRG
MjIwOTE0RkUwMDE1NzAxNCAvKiBTY3JvbGxpbmdTdGF0ZVBvc2l0aW9uZWROb2RlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNjcm9sbGluZ1N0YXRlUG9zaXRpb25lZE5vZGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjk0QjY1MTIyMDkxNEZGMDAxNTcwMTQgLyogU2Nyb2xs
aW5nU3RhdGVQb3NpdGlvbmVkTm9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxpbmdTdGF0ZVBv
c2l0aW9uZWROb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTRCNjUzMjIw
OTE1NkMwMDE1NzAxNCAvKiBTY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC05ODI1LDYgKzk4MjYsOCBAQAogCQk1QjQ2NjU1RjI1RDE0QzA5MDAwQ0ZFMTQg
LyogU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNUI0NjY1NjAyNUQxNEMwQTAwMENGRTE0IC8qIFNjcm9sbFNuYXBBbmltYXRv
clN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbFNuYXBBbmlt
YXRvclN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVCN0FCOUY2MjU2N0RC
N0UwMDY1OTJEMCAvKiBTY3JvbGxTbmFwT2Zmc2V0c0luZm8uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xsU25hcE9mZnNldHNJbmZvLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUI5MkM0MjkyNzE2RTIzMzAwQTM3Q0MwIC8qIFNjcm9sbGlu
Z1RyZWVTdGlja3lOb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNUI5MkM0MkIyNzE2RTIzMzAwQTM3Q0MwIC8qIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbGluZ1RyZWVTdGlja3lOb2Rl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMDAxNTIxMjUwMDExMDAwMDk0QUE5
MyAvKiBUZXh0Q29kZWNTaW5nbGVCeXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFRleHRDb2RlY1NpbmdsZUJ5dGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1QzAwMTUyMzI1MDAxMTAxMDA5NEFBOTMgLyogVGV4dENvZGVjU2luZ2xlQnl0ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0Q29kZWNTaW5nbGVCeXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMUIxRDFFMjZGMTVCMTkwMDg4MkRBMiAv
KiBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xOTA0NSw2ICsxOTA0OCw4IEBACiAJCQkJOTM5MUE5OUIxNjI5RDcwMDAw
Mjk3MzMwIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmggKi8sCiAJCQkJQTZENUE5OUEx
NjI5RDZGRjAwMjk3MzMwIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuY3Bw
ICovLAogCQkJCUE2RDVBOTlCMTYyOUQ3MDAwMDI5NzMzMCAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlLmggKi8sCisJCQkJNUI5MkM0MjkyNzE2RTIzMzAwQTM3Q0MwIC8qIFNj
cm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcCAqLywKKwkJCQk1QjkyQzQyQjI3MTZFMjMzMDBBMzdD
QzAgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaCAqLywKIAkJCQkwRjk1MTBGMjI0RjQ3NjlD
MDAxRjUyREMgLyogU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyLmNwcCAqLywKIAkJCQkwRjk1MTBG
MDI0RjQ3NjlDMDAxRjUyREMgLyogU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyLmggKi8sCiAJCQkJ
NUI3QUI5RjYyNTY3REI3RTAwNjU5MkQwIC8qIFNjcm9sbFNuYXBPZmZzZXRzSW5mby5jcHAgKi8s
CkBAIC0yNDMyMiw4ICsyNDMyNyw4IEBACiAJCQkJMEZDNEIwMDUyMkI5QTAyRDAwQ0YzQjFFIC8q
IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZS5tbSAqLywKIAkJCQkwRjk0QjY1
MzIyMDkxNTZDMDAxNTcwMTQgLyogU2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlLmggKi8sCiAJ
CQkJMEY5NEI2NTQyMjA5MTU2QzAwMTU3MDE0IC8qIFNjcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9k
ZS5tbSAqLywKLQkJCQkwRjk0QjY0MzIyMDhGNzAyMDAxNTcwMTQgLyogU2Nyb2xsaW5nVHJlZVN0
aWNreU5vZGUuaCAqLywKLQkJCQkwRjk0QjY0NTIyMDhGNzAzMDAxNTcwMTQgLyogU2Nyb2xsaW5n
VHJlZVN0aWNreU5vZGUubW0gKi8sCisJCQkJMEY5NEI2NDMyMjA4RjcwMjAwMTU3MDE0IC8qIFNj
cm9sbGluZ1RyZWVTdGlja3lOb2RlQ29jb2EuaCAqLywKKwkJCQkwRjk0QjY0NTIyMDhGNzAzMDAx
NTcwMTQgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVDb2NvYS5tbSAqLywKIAkJCSk7CiAJCQlw
YXRoID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzUyODAsNyArMzUy
ODUsOCBAQAogCQkJCTkzOTFBOTlEMTYyOUQ3MDAwMDI5NzMzMCAvKiBTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTZENUE5OUQxNjI5RDcwMDAwMjk3MzMw
IC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMzdGMDg1MjIwMkJGOTgwMEE4OUMwQiAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlTWFjLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjk0QjY0OTIyMDhGRTNCMDAxNTcw
MTQgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTVCOTJD
NDJEMjcxNkUyOEEwMEEzN0NDMCAvKiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEY5NEI2NDkyMjA4RkUzQjAwMTU3MDE0IC8qIFNjcm9sbGluZ1RyZWVTdGlj
a3lOb2RlQ29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzQzU3OTVEMURBNUMzMDEwMDZGOUM5
NyAvKiBTY3JvbGxJbnRvVmlld09wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzQzU3OTVE
MURBNUMzMDEwMDZGOUM4NiAvKiBTY3JvbGxMb2dpY2FsUG9zaXRpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTgzQzU3OTVEMURBNUMzMDEwMDZGQUM5NyAvKiBTY3JvbGxPcHRpb25zLmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RyZWVTdGlja3lOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMzlmMjM1YzI2ZWRmNDViOTZh
MDA2ODM2MWExZWZmMGU4YTIwYzJiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuY3BwCkBAIC0wLDAgKzEsMTIz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNjcm9sbGlu
Z1RyZWVTdGlja3lOb2RlLmgiCisKKyNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQorCisjaW5j
bHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5oIgor
I2luY2x1ZGUgIlNjcm9sbGluZ1RyZWUuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVlRml4ZWRO
b2RlLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5oIgorI2lu
Y2x1ZGUgIlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZS5oIgorI2luY2x1ZGUg
IlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4
dC9UZXh0U3RyZWFtLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU2Nyb2xsaW5nVHJlZVN0
aWNreU5vZGU6OlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlKFNjcm9sbGluZ1RyZWUmIHNjcm9sbGlu
Z1RyZWUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCisgICAgOiBTY3JvbGxpbmdUcmVlTm9kZShz
Y3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdOb2RlVHlwZTo6U3RpY2t5LCBub2RlSUQpCit7CisgICAg
c2Nyb2xsaW5nVHJlZS5maXhlZE9yU3RpY2t5Tm9kZUFkZGVkKCk7Cit9CisKK1Njcm9sbGluZ1Ry
ZWVTdGlja3lOb2RlOjp+U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUoKQoreworICAgIHNjcm9sbGlu
Z1RyZWUoKS5maXhlZE9yU3RpY2t5Tm9kZVJlbW92ZWQoKTsKK30KKwordm9pZCBTY3JvbGxpbmdU
cmVlU3RpY2t5Tm9kZTo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdT
dGF0ZU5vZGUmIHN0YXRlTm9kZSkKK3sKKyAgICBhdXRvJiBzdGlja3lTdGF0ZU5vZGUgPSBkb3du
Y2FzdDxTY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGU+KHN0YXRlTm9kZSk7CisKKyAgICBpZiAoc3Rp
Y2t5U3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3Bl
cnR5OjpWaWV3cG9ydENvbnN0cmFpbnRzKSkKKyAgICAgICAgbV9jb25zdHJhaW50cyA9IHN0aWNr
eVN0YXRlTm9kZS52aWV3cG9ydENvbnN0cmFpbnRzKCk7Cit9CisKK0Zsb2F0UG9pbnQgU2Nyb2xs
aW5nVHJlZVN0aWNreU5vZGU6OmNvbXB1dGVMYXllclBvc2l0aW9uKCkgY29uc3QKK3sKKyAgICBG
bG9hdFNpemUgb2Zmc2V0RnJvbVN0aWNreUFuY2VzdG9yczsKKyAgICBhdXRvIGNvbXB1dGVMYXll
clBvc2l0aW9uRm9yU2Nyb2xsaW5nTm9kZSA9IFsmXShTY3JvbGxpbmdUcmVlTm9kZSYgc2Nyb2xs
aW5nTm9kZSkgeworICAgICAgICBGbG9hdFJlY3QgY29uc3RyYWluaW5nUmVjdDsKKyAgICAgICAg
aWYgKGlzPFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU+KHNjcm9sbGluZ05vZGUpKSB7
CisgICAgICAgICAgICBhdXRvJiBmcmFtZVNjcm9sbGluZ05vZGUgPSBkb3duY2FzdDxTY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPihzY3JvbGxpbmdOb2RlKTsKKyAgICAgICAgICAgIGNv
bnN0cmFpbmluZ1JlY3QgPSBmcmFtZVNjcm9sbGluZ05vZGUubGF5b3V0Vmlld3BvcnQoKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8mIG92ZXJmbG93U2Nyb2xsaW5nTm9kZSA9
IGRvd25jYXN0PFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGU+KHNjcm9sbGluZ05v
ZGUpOworICAgICAgICAgICAgY29uc3RyYWluaW5nUmVjdCA9IG1fY29uc3RyYWludHMuY29uc3Ry
YWluaW5nUmVjdEF0TGFzdExheW91dCgpOworICAgICAgICAgICAgY29uc3RyYWluaW5nUmVjdC5t
b3ZlKG92ZXJmbG93U2Nyb2xsaW5nTm9kZS5zY3JvbGxEZWx0YVNpbmNlTGFzdENvbW1pdCgpKTsK
KyAgICAgICAgfQorICAgICAgICBjb25zdHJhaW5pbmdSZWN0Lm1vdmUoLW9mZnNldEZyb21TdGlj
a3lBbmNlc3RvcnMpOworICAgICAgICByZXR1cm4gbV9jb25zdHJhaW50cy5sYXllclBvc2l0aW9u
Rm9yQ29uc3RyYWluaW5nUmVjdChjb25zdHJhaW5pbmdSZWN0KTsKKyAgICB9OworCisgICAgZm9y
IChhdXRvKiBhbmNlc3RvciA9IHBhcmVudCgpOyBhbmNlc3RvcjsgYW5jZXN0b3IgPSBhbmNlc3Rv
ci0+cGFyZW50KCkpIHsKKyAgICAgICAgaWYgKGlzPFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bFByb3h5Tm9kZT4oKmFuY2VzdG9yKSkgeworICAgICAgICAgICAgYXV0byYgb3ZlcmZsb3dQcm94
eU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxQcm94eU5vZGU+KCph
bmNlc3Rvcik7CisgICAgICAgICAgICBhdXRvIG92ZXJmbG93Tm9kZSA9IHNjcm9sbGluZ1RyZWUo
KS5ub2RlRm9ySUQob3ZlcmZsb3dQcm94eU5vZGUub3ZlcmZsb3dTY3JvbGxpbmdOb2RlSUQoKSk7
CisgICAgICAgICAgICBpZiAoIW92ZXJmbG93Tm9kZSkKKyAgICAgICAgICAgICAgICBicmVhazsK
KworICAgICAgICAgICAgcmV0dXJuIGNvbXB1dGVMYXllclBvc2l0aW9uRm9yU2Nyb2xsaW5nTm9k
ZSgqb3ZlcmZsb3dOb2RlKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpczxTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZT4oKmFuY2VzdG9yKSkKKyAgICAgICAgICAgIHJldHVybiBjb21wdXRl
TGF5ZXJQb3NpdGlvbkZvclNjcm9sbGluZ05vZGUoKmFuY2VzdG9yKTsKKworICAgICAgICBpZiAo
aXM8U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU+KCphbmNlc3RvcikpCisgICAgICAgICAgICBvZmZz
ZXRGcm9tU3RpY2t5QW5jZXN0b3JzICs9IGRvd25jYXN0PFNjcm9sbGluZ1RyZWVTdGlja3lOb2Rl
PigqYW5jZXN0b3IpLnNjcm9sbERlbHRhU2luY2VMYXN0Q29tbWl0KCk7CisKKyAgICAgICAgaWYg
KGlzPFNjcm9sbGluZ1RyZWVGaXhlZE5vZGU+KCphbmNlc3RvcikpIHsKKyAgICAgICAgICAgIC8v
IEZJWE1FOiBEbyB3ZSBuZWVkIHNjcm9sbGluZyB0cmVlIG5vZGVzIGF0IGFsbCBmb3IgbmVzdGVk
IGNhc2VzPworICAgICAgICAgICAgcmV0dXJuIG1fY29uc3RyYWludHMubGF5ZXJQb3NpdGlvbkF0
TGFzdExheW91dCgpOworICAgICAgICB9CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBtX2NvbnN0cmFpbnRzLmxheWVyUG9zaXRpb25BdExhc3RMYXlvdXQoKTsK
K30KKworRmxvYXRTaXplIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpzY3JvbGxEZWx0YVNpbmNl
TGFzdENvbW1pdCgpIGNvbnN0Cit7CisgICAgYXV0byBsYXllclBvc2l0aW9uID0gY29tcHV0ZUxh
eWVyUG9zaXRpb24oKTsKKyAgICByZXR1cm4gbGF5ZXJQb3NpdGlvbiAtIG1fY29uc3RyYWludHMu
bGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCgpOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVTdGlj
a3lOb2RlOjpkdW1wUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywgU2Nyb2xsaW5nU3RhdGVUcmVl
QXNUZXh0QmVoYXZpb3IgYmVoYXZpb3IpIGNvbnN0Cit7CisgICAgdHMgPDwgInN0aWNreSBub2Rl
IjsKKyAgICBTY3JvbGxpbmdUcmVlTm9kZTo6ZHVtcFByb3BlcnRpZXModHMsIGJlaGF2aW9yKTsK
KyAgICB0cy5kdW1wUHJvcGVydHkoInN0aWNreSBjb25zdHJhaW50cyIsIG1fY29uc3RyYWludHMp
OworICAgIGlmIChiZWhhdmlvciAmIFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9ySW5j
bHVkZUxheWVyUG9zaXRpb25zKQorICAgICAgICB0cy5kdW1wUHJvcGVydHkoImxheWVyIHRvcCBs
ZWZ0IiwgbGF5ZXJUb3BMZWZ0KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBVU0UoTklDT1NJQSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTdGlja3lOb2Rl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjllZmY5M2I0NjNiYTA1MGRjNGRkYTYyZjlmYTZiMjFkZTJmOWZhNGMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlU3RpY2t5Tm9kZS5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE5IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBk
aXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQKKyAqICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9MREVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCisKKyNpbmNsdWRlICJTY3JvbGxp
bmdDb25zdHJhaW50cy5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVOb2RlLmgiCisjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcm9sbGlu
Z1RyZWVTdGlja3lOb2RlIDogcHVibGljIFNjcm9sbGluZ1RyZWVOb2RlIHsKK3B1YmxpYzoKKyAg
ICB2aXJ0dWFsIH5TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSgpOworCisgICAgRmxvYXRTaXplIHNj
cm9sbERlbHRhU2luY2VMYXN0Q29tbWl0KCkgY29uc3Q7CisKK3Byb3RlY3RlZDoKKyAgICBTY3Jv
bGxpbmdUcmVlU3RpY2t5Tm9kZShTY3JvbGxpbmdUcmVlJiwgU2Nyb2xsaW5nTm9kZUlEKTsKKwor
ICAgIHZvaWQgY29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5v
ZGUmKSBvdmVycmlkZTsKKyAgICBGbG9hdFBvaW50IGNvbXB1dGVMYXllclBvc2l0aW9uKCkgY29u
c3Q7CisgICAgdm9pZCBkdW1wUHJvcGVydGllcyhXVEY6OlRleHRTdHJlYW0mLCBTY3JvbGxpbmdT
dGF0ZVRyZWVBc1RleHRCZWhhdmlvcikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICB2aXJ0dWFsIEZs
b2F0UG9pbnQgbGF5ZXJUb3BMZWZ0KCkgY29uc3QgPSAwOworCisgICAgU3RpY2t5UG9zaXRpb25W
aWV3cG9ydENvbnN0cmFpbnRzIG1fY29uc3RyYWludHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfU0NST0xMSU5HX05PREUoU2Nyb2xsaW5n
VHJlZVN0aWNreU5vZGUsIGlzU3RpY2t5Tm9kZSgpKQorCisjZW5kaWYgLy8gRU5BQkxFKEFTWU5D
X1NDUk9MTElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nv
Y29hL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLm1tCmluZGV4IDZhNmU3N2Q3NTVlNDNi
NmEzZWEzOGEzZTBkMzk5ZTFmOGQ5ZjhkY2QuLjJhZjM1OGZlN2ZmNWE1OTZiNjhjNmE4ZmE0NmUx
ZDczODlkYWIyOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nv
Y29hL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5tbQpAQCAtMzUsNyArMzUsNyBA
QAogI2ltcG9ydCAiU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlLmgiCiAjaW1w
b3J0ICJTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmgiCiAjaW1wb3J0ICJTY3Jv
bGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuaCIKLSNpbXBvcnQgIlNjcm9sbGluZ1RyZWVTdGlja3lO
b2RlLmgiCisjaW1wb3J0ICJTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUNvY29hLmgiCiAjaW1wb3J0
ICJXZWJDb3JlQ0FMYXllckV4dHJhcy5oIgogI2ltcG9ydCA8d3RmL3RleHQvVGV4dFN0cmVhbS5o
PgogCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6YXBwbHlM
YXllclBvc2l0aW9ucygpCiB7CiAgICAgYXV0byBjb21wdXRlTGF5ZXJQb3NpdGlvbiA9IFsmXSB7
CiAgICAgICAgIEZsb2F0U2l6ZSBvdmVyZmxvd1Njcm9sbERlbHRhOwotICAgICAgICBTY3JvbGxp
bmdUcmVlU3RpY2t5Tm9kZSogbGFzdFN0aWNreU5vZGUgPSBudWxscHRyOworICAgICAgICBTY3Jv
bGxpbmdUcmVlU3RpY2t5Tm9kZUNvY29hKiBsYXN0U3RpY2t5Tm9kZSA9IG51bGxwdHI7CiAgICAg
ICAgIGZvciAoYXV0byogYW5jZXN0b3IgPSBwYXJlbnQoKTsgYW5jZXN0b3I7IGFuY2VzdG9yID0g
YW5jZXN0b3ItPnBhcmVudCgpKSB7CiAgICAgICAgICAgICBpZiAoaXM8U2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZT4oKmFuY2VzdG9yKSkgewogICAgICAgICAgICAgICAgIC8vIEZpeGVk
IG5vZGVzIGFyZSBwb3NpdGlvbmVkIHJlbGF0aXZlIHRvIHRoZSBjb250YWluaW5nIGZyYW1lIHNj
cm9sbGluZyBub2RlLgpAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZpeGVk
Tm9kZTo6YXBwbHlMYXllclBvc2l0aW9ucygpCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IGlmIChpczxTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZT4oKmFuY2VzdG9yKSkgewotICAgICAgICAg
ICAgICAgIGF1dG8mIHN0aWNreU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZT4oKmFuY2VzdG9yKTsKKyAgICAgICAgICAgICAgICBhdXRvJiBzdGlja3lOb2RlID0gZG93bmNh
c3Q8U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVDb2NvYT4oKmFuY2VzdG9yKTsKICAgICAgICAgICAg
ICAgICBvdmVyZmxvd1Njcm9sbERlbHRhICs9IHN0aWNreU5vZGUuc2Nyb2xsRGVsdGFTaW5jZUxh
c3RDb21taXQoKTsKICAgICAgICAgICAgICAgICBsYXN0U3RpY2t5Tm9kZSA9ICZzdGlja3lOb2Rl
OwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3NzRjMzAxNTI4NTFlYzUwZGNiMTU1NGE0MmIy
MTkxNGQyMjM1MGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZVN0aWNr
eU5vZGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCi0KLSNpbmNsdWRlICJTY3Jv
bGxpbmdDb25zdHJhaW50cy5oIgotI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVOb2RlLmgiCi0jaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1PQkpDX0NMQVNTIENBTGF5ZXI7Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUgOiBwdWJsaWMgU2Ny
b2xsaW5nVHJlZU5vZGUgewotcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU+IGNyZWF0ZShTY3JvbGxpbmdUcmVlJiwgU2Nyb2xsaW5n
Tm9kZUlEKTsKLQotICAgIHZpcnR1YWwgflNjcm9sbGluZ1RyZWVTdGlja3lOb2RlKCk7Ci0KLSAg
ICBGbG9hdFNpemUgc2Nyb2xsRGVsdGFTaW5jZUxhc3RDb21taXQoKSBjb25zdDsKLQotICAgIENB
TGF5ZXIgKmxheWVyKCkgeyByZXR1cm4gbV9sYXllci5nZXQoKTsgfQotCi1wcml2YXRlOgotICAg
IFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlKFNjcm9sbGluZ1RyZWUmLCBTY3JvbGxpbmdOb2RlSUQp
OwotCi0gICAgdm9pZCBjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0
YXRlTm9kZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgYXBwbHlMYXllclBvc2l0aW9ucygpIG92ZXJy
aWRlOwotCi0gICAgRmxvYXRQb2ludCBjb21wdXRlTGF5ZXJQb3NpdGlvbigpIGNvbnN0OwotCi0g
ICAgdm9pZCBkdW1wUHJvcGVydGllcyhXVEY6OlRleHRTdHJlYW0mLCBTY3JvbGxpbmdTdGF0ZVRy
ZWVBc1RleHRCZWhhdmlvcikgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICBTdGlja3lQb3NpdGlvblZp
ZXdwb3J0Q29uc3RyYWludHMgbV9jb25zdHJhaW50czsKLSAgICBSZXRhaW5QdHI8Q0FMYXllcj4g
bV9sYXllcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19TQ1JPTExJTkdfTk9ERShTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSwgaXNTdGlja3lO
b2RlKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZVN0aWNreU5v
ZGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZS5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTU5M2ZlZGIzMzNj
NjlmODMxNTkzZGM3ZmM4NWRlOTNhM2FlNGIyMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb2NvYS9T
Y3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbQorKysgL2Rldi9udWxsCkBAIC0xLDE0NSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZS5oIgotCi0jaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKLQotI2ltcG9ydCAi
TG9nZ2luZy5oIgotI2ltcG9ydCAiU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlLmgiCi0jaW1wb3J0
ICJTY3JvbGxpbmdUcmVlLmgiCi0jaW1wb3J0ICJTY3JvbGxpbmdUcmVlRml4ZWROb2RlLmgiCi0j
aW1wb3J0ICJTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLmgiCi0jaW1wb3J0ICJTY3Jv
bGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxQcm94eU5vZGUuaCIKLSNpbXBvcnQgIlNjcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUuaCIKLSNpbXBvcnQgIldlYkNvcmVDQUxheWVyRXh0cmFz
LmgiCi0jaW1wb3J0IDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotUmVmPFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlPiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZTo6Y3JlYXRlKFNjcm9sbGluZ1RyZWUmIHNjcm9sbGluZ1RyZWUsIFNjcm9sbGluZ05vZGVJRCBu
b2RlSUQpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2Nyb2xsaW5nVHJlZVN0aWNreU5v
ZGUoc2Nyb2xsaW5nVHJlZSwgbm9kZUlEKSk7Ci19Ci0KLVNjcm9sbGluZ1RyZWVTdGlja3lOb2Rl
OjpTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZShTY3JvbGxpbmdUcmVlJiBzY3JvbGxpbmdUcmVlLCBT
Y3JvbGxpbmdOb2RlSUQgbm9kZUlEKQotICAgIDogU2Nyb2xsaW5nVHJlZU5vZGUoc2Nyb2xsaW5n
VHJlZSwgU2Nyb2xsaW5nTm9kZVR5cGU6OlN0aWNreSwgbm9kZUlEKQotewotICAgIHNjcm9sbGlu
Z1RyZWUuZml4ZWRPclN0aWNreU5vZGVBZGRlZCgpOwotfQotCi1TY3JvbGxpbmdUcmVlU3RpY2t5
Tm9kZTo6flNjcm9sbGluZ1RyZWVTdGlja3lOb2RlKCkKLXsKLSAgICBzY3JvbGxpbmdUcmVlKCku
Zml4ZWRPclN0aWNreU5vZGVSZW1vdmVkKCk7Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nVHJlZVN0aWNr
eU5vZGU6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2Rl
JiBzdGF0ZU5vZGUpCi17Ci0gICAgY29uc3QgU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlJiBzdGlj
a3lTdGF0ZU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGU+KHN0YXRlTm9k
ZSk7Ci0KLSAgICBpZiAoc3RpY2t5U3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxp
bmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpMYXllcikpCi0gICAgICAgIG1fbGF5ZXIgPSBzdGF0aWNf
Y2FzdDxDQUxheWVyKj4oc3RpY2t5U3RhdGVOb2RlLmxheWVyKCkpOwotCi0gICAgaWYgKHN0YXRl
Tm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Vmll
d3BvcnRDb25zdHJhaW50cykpCi0gICAgICAgIG1fY29uc3RyYWludHMgPSBzdGlja3lTdGF0ZU5v
ZGUudmlld3BvcnRDb25zdHJhaW50cygpOwotfQotCi1GbG9hdFBvaW50IFNjcm9sbGluZ1RyZWVT
dGlja3lOb2RlOjpjb21wdXRlTGF5ZXJQb3NpdGlvbigpIGNvbnN0Ci17Ci0gICAgRmxvYXRTaXpl
IG9mZnNldEZyb21TdGlja3lBbmNlc3RvcnM7Ci0gICAgYXV0byBjb21wdXRlTGF5ZXJQb3NpdGlv
bkZvclNjcm9sbGluZ05vZGUgPSBbJl0oU2Nyb2xsaW5nVHJlZU5vZGUmIHNjcm9sbGluZ05vZGUp
IHsKLSAgICAgICAgRmxvYXRSZWN0IGNvbnN0cmFpbmluZ1JlY3Q7Ci0gICAgICAgIGlmIChpczxT
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPihzY3JvbGxpbmdOb2RlKSkgewotICAgICAg
ICAgICAgYXV0byYgZnJhbWVTY3JvbGxpbmdOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZT4oc2Nyb2xsaW5nTm9kZSk7Ci0gICAgICAgICAgICBjb25zdHJhaW5p
bmdSZWN0ID0gZnJhbWVTY3JvbGxpbmdOb2RlLmxheW91dFZpZXdwb3J0KCk7Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBhdXRvJiBvdmVyZmxvd1Njcm9sbGluZ05vZGUgPSBkb3duY2Fz
dDxTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlPihzY3JvbGxpbmdOb2RlKTsKLSAg
ICAgICAgICAgIGNvbnN0cmFpbmluZ1JlY3QgPSBtX2NvbnN0cmFpbnRzLmNvbnN0cmFpbmluZ1Jl
Y3RBdExhc3RMYXlvdXQoKTsKLSAgICAgICAgICAgIGNvbnN0cmFpbmluZ1JlY3QubW92ZShvdmVy
Zmxvd1Njcm9sbGluZ05vZGUuc2Nyb2xsRGVsdGFTaW5jZUxhc3RDb21taXQoKSk7Ci0gICAgICAg
IH0KLSAgICAgICAgY29uc3RyYWluaW5nUmVjdC5tb3ZlKC1vZmZzZXRGcm9tU3RpY2t5QW5jZXN0
b3JzKTsKLSAgICAgICAgcmV0dXJuIG1fY29uc3RyYWludHMubGF5ZXJQb3NpdGlvbkZvckNvbnN0
cmFpbmluZ1JlY3QoY29uc3RyYWluaW5nUmVjdCk7Ci0gICAgfTsKLQotICAgIGZvciAoYXV0byog
YW5jZXN0b3IgPSBwYXJlbnQoKTsgYW5jZXN0b3I7IGFuY2VzdG9yID0gYW5jZXN0b3ItPnBhcmVu
dCgpKSB7Ci0gICAgICAgIGlmIChpczxTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxQcm94eU5v
ZGU+KCphbmNlc3RvcikpIHsKLSAgICAgICAgICAgIGF1dG8mIG92ZXJmbG93UHJveHlOb2RlID0g
ZG93bmNhc3Q8U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlPigqYW5jZXN0b3Ip
OwotICAgICAgICAgICAgYXV0byBvdmVyZmxvd05vZGUgPSBzY3JvbGxpbmdUcmVlKCkubm9kZUZv
cklEKG92ZXJmbG93UHJveHlOb2RlLm92ZXJmbG93U2Nyb2xsaW5nTm9kZUlEKCkpOwotICAgICAg
ICAgICAgaWYgKCFvdmVyZmxvd05vZGUpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAg
ICAgICAgIHJldHVybiBjb21wdXRlTGF5ZXJQb3NpdGlvbkZvclNjcm9sbGluZ05vZGUoKm92ZXJm
bG93Tm9kZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoaXM8U2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGU+KCphbmNlc3RvcikpCi0gICAgICAgICAgICByZXR1cm4gY29tcHV0ZUxheWVyUG9z
aXRpb25Gb3JTY3JvbGxpbmdOb2RlKCphbmNlc3Rvcik7Ci0KLSAgICAgICAgaWYgKGlzPFNjcm9s
bGluZ1RyZWVTdGlja3lOb2RlPigqYW5jZXN0b3IpKQotICAgICAgICAgICAgb2Zmc2V0RnJvbVN0
aWNreUFuY2VzdG9ycyArPSBkb3duY2FzdDxTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZT4oKmFuY2Vz
dG9yKS5zY3JvbGxEZWx0YVNpbmNlTGFzdENvbW1pdCgpOwotCi0gICAgICAgIGlmIChpczxTY3Jv
bGxpbmdUcmVlRml4ZWROb2RlPigqYW5jZXN0b3IpKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTog
RG8gd2UgbmVlZCBzY3JvbGxpbmcgdHJlZSBub2RlcyBhdCBhbGwgZm9yIG5lc3RlZCBjYXNlcz8K
LSAgICAgICAgICAgIHJldHVybiBtX2NvbnN0cmFpbnRzLmxheWVyUG9zaXRpb25BdExhc3RMYXlv
dXQoKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gbV9jb25zdHJhaW50cy5sYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0KCk7Ci19Ci0KLXZv
aWQgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OmFwcGx5TGF5ZXJQb3NpdGlvbnMoKQotewotICAg
IGF1dG8gbGF5ZXJQb3NpdGlvbiA9IGNvbXB1dGVMYXllclBvc2l0aW9uKCk7Ci0KLSAgICBMT0df
V0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwgIlNjcm9sbGluZ1RyZWVTdGlja3lOb2Rl
ICIgPDwgc2Nyb2xsaW5nTm9kZUlEKCkgPDwgIiBjb25zdHJhaW5pbmdSZWN0QXRMYXN0TGF5b3V0
ICIgPDwgbV9jb25zdHJhaW50cy5jb25zdHJhaW5pbmdSZWN0QXRMYXN0TGF5b3V0KCkgPDwgIiBs
YXN0IGxheWVyIHBvcyAiIDw8IG1fY29uc3RyYWludHMubGF5ZXJQb3NpdGlvbkF0TGFzdExheW91
dCgpIDw8ICIgbGF5ZXJQb3NpdGlvbiAiIDw8IGxheWVyUG9zaXRpb24pOwotCi0gICAgW21fbGF5
ZXIgX3dlYl9zZXRMYXllclRvcExlZnRQb3NpdGlvbjpsYXllclBvc2l0aW9uIC0gbV9jb25zdHJh
aW50cy5hbGlnbm1lbnRPZmZzZXQoKV07Ci19Ci0KLUZsb2F0U2l6ZSBTY3JvbGxpbmdUcmVlU3Rp
Y2t5Tm9kZTo6c2Nyb2xsRGVsdGFTaW5jZUxhc3RDb21taXQoKSBjb25zdAotewotICAgIGF1dG8g
bGF5ZXJQb3NpdGlvbiA9IGNvbXB1dGVMYXllclBvc2l0aW9uKCk7Ci0gICAgcmV0dXJuIGxheWVy
UG9zaXRpb24gLSBtX2NvbnN0cmFpbnRzLmxheWVyUG9zaXRpb25BdExhc3RMYXlvdXQoKTsKLX0K
LQotdm9pZCBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6ZHVtcFByb3BlcnRpZXMoVGV4dFN0cmVh
bSYgdHMsIFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9yIGJlaGF2aW9yKSBjb25zdAot
ewotICAgIHRzIDw8ICJzdGlja3kgbm9kZSI7Ci0KLSAgICBTY3JvbGxpbmdUcmVlTm9kZTo6ZHVt
cFByb3BlcnRpZXModHMsIGJlaGF2aW9yKTsKLSAgICB0cy5kdW1wUHJvcGVydHkoInN0aWNreSBj
b25zdHJhaW50cyIsIG1fY29uc3RyYWludHMpOwotCi0gICAgaWYgKGJlaGF2aW9yICYgU2Nyb2xs
aW5nU3RhdGVUcmVlQXNUZXh0QmVoYXZpb3JJbmNsdWRlTGF5ZXJQb3NpdGlvbnMpIHsKLSAgICAg
ICAgRmxvYXRSZWN0IGxheWVyQm91bmRzID0gW21fbGF5ZXIgYm91bmRzXTsKLSAgICAgICAgRmxv
YXRQb2ludCBhbmNob3JQb2ludCA9IFttX2xheWVyIGFuY2hvclBvaW50XTsKLSAgICAgICAgRmxv
YXRQb2ludCBwb3NpdGlvbiA9IFttX2xheWVyIHBvc2l0aW9uXTsKLSAgICAgICAgRmxvYXRQb2lu
dCBsYXllclRvcExlZnQgPSBwb3NpdGlvbiAtIHRvRmxvYXRTaXplKGFuY2hvclBvaW50KSAqIGxh
eWVyQm91bmRzLnNpemUoKSArIG1fY29uc3RyYWludHMuYWxpZ25tZW50T2Zmc2V0KCk7Ci0gICAg
ICAgIHRzLmR1bXBQcm9wZXJ0eSgibGF5ZXIgdG9wIGxlZnQiLCBsYXllclRvcExlZnQpOwotICAg
IH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKEFTWU5D
X1NDUk9MTElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nv
Y29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlQ29jb2EuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lOGNhMzY2MjM3ZGRlZjg2OGRkOGU5ZDc4YzMxZDI5NDliMWNiZmUyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZVN0
aWNreU5vZGVDb2NvYS5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCisKKyNpbmNsdWRlICJTY3JvbGxpbmdD
b25zdHJhaW50cy5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLmgiCisjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX0NMQVNTIENBTGF5ZXI7CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVDb2NvYSA6IHB1Ymxp
YyBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZjxTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUNvY29hPiBjcmVhdGUoU2Nyb2xsaW5n
VHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7CisKKyAgICB2aXJ0dWFsIH5TY3JvbGxpbmdUcmVlU3Rp
Y2t5Tm9kZUNvY29hKCkgPSBkZWZhdWx0OworCisgICAgQ0FMYXllciAqbGF5ZXIoKSB7IHJldHVy
biBtX2xheWVyLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgU2Nyb2xsaW5nVHJlZVN0aWNreU5v
ZGVDb2NvYShTY3JvbGxpbmdUcmVlJiwgU2Nyb2xsaW5nTm9kZUlEKTsKKworICAgIHZvaWQgY29t
bWl0U3RhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGFwcGx5TGF5ZXJQb3NpdGlvbnMoKSBvdmVycmlkZTsKKyAgICBGbG9hdFBv
aW50IGxheWVyVG9wTGVmdCgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgUmV0YWluUHRyPENBTGF5
ZXI+IG1fbGF5ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoQVNZTkNfU0NST0xMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlQ29jb2Eu
bW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYjk4ZmU5ZjAwMjBlYmU1MTZhOWQ2OTQwZGVlZTVlYzk4Y2E1ZmU3MAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Nj
cm9sbGluZ1RyZWVTdGlja3lOb2RlQ29jb2EubW0KQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVD
b2NvYS5oIgorCisjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKKworI2ltcG9ydCAiTG9nZ2lu
Zy5oIgorI2ltcG9ydCAiU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlLmgiCisjaW1wb3J0ICJTY3Jv
bGxpbmdUcmVlLmgiCisjaW1wb3J0ICJXZWJDb3JlQ0FMYXllckV4dHJhcy5oIgorI2ltcG9ydCA8
d3RmL3RleHQvVGV4dFN0cmVhbS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxTY3Jv
bGxpbmdUcmVlU3RpY2t5Tm9kZUNvY29hPiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUNvY29hOjpj
cmVhdGUoU2Nyb2xsaW5nVHJlZSYgc2Nyb2xsaW5nVHJlZSwgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJ
RCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUNv
Y29hKHNjcm9sbGluZ1RyZWUsIG5vZGVJRCkpOworfQorCitTY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZUNvY29hOjpTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUNvY29hKFNjcm9sbGluZ1RyZWUmIHNjcm9s
bGluZ1RyZWUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCisgICAgOiBTY3JvbGxpbmdUcmVlU3Rp
Y2t5Tm9kZShzY3JvbGxpbmdUcmVlLCBub2RlSUQpCit7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJl
ZVN0aWNreU5vZGVDb2NvYTo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxp
bmdTdGF0ZU5vZGUmIHN0YXRlTm9kZSkKK3sKKyAgICBjb25zdCBTY3JvbGxpbmdTdGF0ZVN0aWNr
eU5vZGUmIHN0aWNreVN0YXRlTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9k
ZT4oc3RhdGVOb2RlKTsKKworICAgIGlmIChzdGlja3lTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3Bl
cnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkxheWVyKSkKKyAgICAgICAgbV9sYXll
ciA9IHN0YXRpY19jYXN0PENBTGF5ZXIqPihzdGlja3lTdGF0ZU5vZGUubGF5ZXIoKSk7CisKKyAg
ICBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihzdGF0
ZU5vZGUpOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlQ29jb2E6OmFwcGx5TGF5
ZXJQb3NpdGlvbnMoKQoreworICAgIGF1dG8gbGF5ZXJQb3NpdGlvbiA9IGNvbXB1dGVMYXllclBv
c2l0aW9uKCk7CisKKyAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwgIlNj
cm9sbGluZ1RyZWVTdGlja3lOb2RlQ29jb2EgIiA8PCBzY3JvbGxpbmdOb2RlSUQoKSA8PCAiIGNv
bnN0cmFpbmluZ1JlY3RBdExhc3RMYXlvdXQgIiA8PCBtX2NvbnN0cmFpbnRzLmNvbnN0cmFpbmlu
Z1JlY3RBdExhc3RMYXlvdXQoKSA8PCAiIGxhc3QgbGF5ZXIgcG9zICIgPDwgbV9jb25zdHJhaW50
cy5sYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0KCkgPDwgIiBsYXllclBvc2l0aW9uICIgPDwgbGF5
ZXJQb3NpdGlvbik7CisKKyAgICBbbV9sYXllciBfd2ViX3NldExheWVyVG9wTGVmdFBvc2l0aW9u
OmxheWVyUG9zaXRpb24gLSBtX2NvbnN0cmFpbnRzLmFsaWdubWVudE9mZnNldCgpXTsKK30KKwor
RmxvYXRQb2ludCBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUNvY29hOjpsYXllclRvcExlZnQoKSBj
b25zdAoreworICAgIEZsb2F0UmVjdCBsYXllckJvdW5kcyA9IFttX2xheWVyIGJvdW5kc107Cisg
ICAgRmxvYXRQb2ludCBhbmNob3JQb2ludCA9IFttX2xheWVyIGFuY2hvclBvaW50XTsKKyAgICBG
bG9hdFBvaW50IHBvc2l0aW9uID0gW21fbGF5ZXIgcG9zaXRpb25dOworICAgIHJldHVybiBwb3Np
dGlvbiAtIHRvRmxvYXRTaXplKGFuY2hvclBvaW50KSAqIGxheWVyQm91bmRzLnNpemUoKSArIG1f
Y29uc3RyYWludHMuYWxpZ25tZW50T2Zmc2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JN
YWMubW0KaW5kZXggMGJjYmY2OTM2YzAyOTI2YjQ3YTEzNDJiNTdjMDY5MTUyYTkzYjYwZi4uYzYz
OTc3MmI4MDU4ZThmNTQwNzEyMDQ3YTkxNmQ4YTAxMjBlZGYxNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRv
ck1hYy5tbQpAQCAtNDAsNyArNDAsNyBAQAogI2ltcG9ydCAiU2Nyb2xsaW5nVHJlZUZpeGVkTm9k
ZS5oIgogI2ltcG9ydCAiU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5oIgogI2lt
cG9ydCAiU2Nyb2xsaW5nVHJlZU1hYy5oIgotI2ltcG9ydCAiU2Nyb2xsaW5nVHJlZVN0aWNreU5v
ZGUuaCIKKyNpbXBvcnQgIlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlQ29jb2EuaCIKICNpbXBvcnQg
IlRpbGVkQmFja2luZy5oIgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5tbQpp
bmRleCAwMTY0ZDUzMjQ2MjQxY2JhZjE4NzVhZWU3OTk2YjFlNTMyOTU4MmYyLi4zNWZjZTFhMmQw
MDQwYTcwNTljMzhmMmI4OTE4MDJiMTY1ZDM3ZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5tbQpAQCAtMzQsNyArMzQs
NyBAQAogI2ltcG9ydCAiU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlLmgiCiAj
aW1wb3J0ICJTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjLmgiCiAjaW1wb3J0
ICJTY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuaCIKLSNpbXBvcnQgIlNjcm9sbGluZ1RyZWVT
dGlja3lOb2RlLmgiCisjaW1wb3J0ICJTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUNvY29hLmgiCiAj
aW1wb3J0ICJXZWJDb3JlQ0FMYXllckV4dHJhcy5oIgogI2ltcG9ydCAiV2ViTGF5ZXIuaCIKICNp
bXBvcnQgIldoZWVsRXZlbnRUZXN0TW9uaXRvci5oIgpAQCAtNjksNyArNjksNyBAQCBSZWY8U2Ny
b2xsaW5nVHJlZU5vZGU+IFNjcm9sbGluZ1RyZWVNYWM6OmNyZWF0ZVNjcm9sbGluZ1RyZWVOb2Rl
KFNjcm9sbGluZ05vZGVUeQogICAgIGNhc2UgU2Nyb2xsaW5nTm9kZVR5cGU6OkZpeGVkOgogICAg
ICAgICByZXR1cm4gU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6Y3JlYXRlKCp0aGlzLCBub2RlSUQp
OwogICAgIGNhc2UgU2Nyb2xsaW5nTm9kZVR5cGU6OlN0aWNreToKLSAgICAgICAgcmV0dXJuIFNj
cm9sbGluZ1RyZWVTdGlja3lOb2RlOjpjcmVhdGUoKnRoaXMsIG5vZGVJRCk7CisgICAgICAgIHJl
dHVybiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUNvY29hOjpjcmVhdGUoKnRoaXMsIG5vZGVJRCk7
CiAgICAgY2FzZSBTY3JvbGxpbmdOb2RlVHlwZTo6UG9zaXRpb25lZDoKICAgICAgICAgcmV0dXJu
IFNjcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZTo6Y3JlYXRlKCp0aGlzLCBub2RlSUQpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Ny
b2xsaW5nVHJlZU5pY29zaWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdUcmVlTmljb3NpYS5jcHAKaW5kZXggMmQxNGU3OTk2NzE0OTNiOTk5YjA3
ZjNjMTBkZmMzMmMwZGJiY2ZiMi4uMDc1OWMzMjRmNmMyMzc1MWUyNmFjYmVlZWU2NWU4MmQ2MjUz
ZmVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9T
Y3JvbGxpbmdUcmVlTmljb3NpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlTmljb3NpYS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKICNp
bmNsdWRlICJTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxQcm94eU5vZGUuaCIKICNpbmNsdWRl
ICJTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYS5oIgogI2luY2x1ZGUg
IlNjcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZS5oIgotI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVT
dGlja3lOb2RlLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVOaWNvc2lhLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjcsNyArNjcsNyBAQCBSZWY8U2Nyb2xsaW5n
VHJlZU5vZGU+IFNjcm9sbGluZ1RyZWVOaWNvc2lhOjpjcmVhdGVTY3JvbGxpbmdUcmVlTm9kZShT
Y3JvbGxpbmdObwogICAgIGNhc2UgU2Nyb2xsaW5nTm9kZVR5cGU6OkZpeGVkOgogICAgICAgICBy
ZXR1cm4gU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6Y3JlYXRlKCp0aGlzLCBub2RlSUQpOwogICAg
IGNhc2UgU2Nyb2xsaW5nTm9kZVR5cGU6OlN0aWNreToKLSAgICAgICAgcmV0dXJuIFNjcm9sbGlu
Z1RyZWVTdGlja3lOb2RlOjpjcmVhdGUoKnRoaXMsIG5vZGVJRCk7CisgICAgICAgIHJldHVybiBT
Y3JvbGxpbmdUcmVlU3RpY2t5Tm9kZU5pY29zaWE6OmNyZWF0ZSgqdGhpcywgbm9kZUlEKTsKICAg
ICBjYXNlIFNjcm9sbGluZ05vZGVUeXBlOjpQb3NpdGlvbmVkOgogICAgICAgICByZXR1cm4gU2Ny
b2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlOjpjcmVhdGUoKnRoaXMsIG5vZGVJRCk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxp
bmdUcmVlU3RpY2t5Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNv
c2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMTI3ZWVjOWE2OGU2YzI1NTEwNTQ2OGNkMjAwNDQ5Yjg5YWJlYThlYi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDE2MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEgUy5M
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwotICogICAgZGlzY2xhaW1lciBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCi0gKiAgICB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLmgiCi0KLSNpZiBFTkFCTEUoQVNZTkNf
U0NST0xMSU5HKSAmJiBVU0UoTklDT1NJQSkKLQotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNs
dWRlICJOaWNvc2lhUGxhdGZvcm1MYXllci5oIgotI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlU3Rp
Y2t5Tm9kZS5oIgotI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWUuaCIKLSNpbmNsdWRlICJTY3JvbGxp
bmdUcmVlRml4ZWROb2RlLmgiCi0jaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZS5oIgotI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZS5o
IgotI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUuaCIKLSNpbmNs
dWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVm
PFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlPiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6Y3JlYXRl
KFNjcm9sbGluZ1RyZWUmIHNjcm9sbGluZ1RyZWUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCi17
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUoc2Nyb2xs
aW5nVHJlZSwgbm9kZUlEKSk7Ci19Ci0KLVNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpTY3JvbGxp
bmdUcmVlU3RpY2t5Tm9kZShTY3JvbGxpbmdUcmVlJiBzY3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdO
b2RlSUQgbm9kZUlEKQotICAgIDogU2Nyb2xsaW5nVHJlZU5vZGUoc2Nyb2xsaW5nVHJlZSwgU2Ny
b2xsaW5nTm9kZVR5cGU6OlN0aWNreSwgbm9kZUlEKQotewotICAgIHNjcm9sbGluZ1RyZWUuZml4
ZWRPclN0aWNreU5vZGVBZGRlZCgpOwotfQotCi1TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6flNj
cm9sbGluZ1RyZWVTdGlja3lOb2RlKCkKLXsKLSAgICBzY3JvbGxpbmdUcmVlKCkuZml4ZWRPclN0
aWNreU5vZGVSZW1vdmVkKCk7Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OmNv
bW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJiBzdGF0ZU5v
ZGUpCi17Ci0gICAgYXV0byYgc3RpY2t5U3RhdGVOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nU3Rh
dGVTdGlja3lOb2RlPihzdGF0ZU5vZGUpOwotCi0gICAgaWYgKHN0aWNreVN0YXRlTm9kZS5oYXND
aGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6TGF5ZXIpKSB7Ci0g
ICAgICAgIGF1dG8qIGxheWVyID0gc3RhdGljX2Nhc3Q8Tmljb3NpYTo6UGxhdGZvcm1MYXllcio+
KHN0aWNreVN0YXRlTm9kZS5sYXllcigpKTsKLSAgICAgICAgbV9sYXllciA9IGRvd25jYXN0PE5p
Y29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+KGxheWVyKTsKLSAgICB9Ci0KLSAgICBpZiAoc3RpY2t5
U3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5
OjpWaWV3cG9ydENvbnN0cmFpbnRzKSkKLSAgICAgICAgbV9jb25zdHJhaW50cyA9IHN0aWNreVN0
YXRlTm9kZS52aWV3cG9ydENvbnN0cmFpbnRzKCk7Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nVHJlZVN0
aWNreU5vZGU6OmFwcGx5TGF5ZXJQb3NpdGlvbnMoKQotewotICAgIGF1dG8gbGF5ZXJQb3NpdGlv
biA9IGNvbXB1dGVMYXllclBvc2l0aW9uKCk7Ci0KLSAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xs
aW5nLCBzdHJlYW0gPDwgIlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlICIgPDwgc2Nyb2xsaW5nTm9k
ZUlEKCkgPDwgIiBjb25zdHJhaW5pbmdSZWN0QXRMYXN0TGF5b3V0ICIgPDwgbV9jb25zdHJhaW50
cy5jb25zdHJhaW5pbmdSZWN0QXRMYXN0TGF5b3V0KCkgPDwgIiBsYXN0IGxheWVyIHBvcyAiIDw8
IG1fY29uc3RyYWludHMubGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCgpIDw8ICIgbGF5ZXJQb3Np
dGlvbiAiIDw8IGxheWVyUG9zaXRpb24pOwotCi0gICAgbGF5ZXJQb3NpdGlvbiAtPSBtX2NvbnN0
cmFpbnRzLmFsaWdubWVudE9mZnNldCgpOwotCi0gICAgQVNTRVJUKG1fbGF5ZXIpOwotICAgIG1f
bGF5ZXItPnVwZGF0ZVN0YXRlKAotICAgICAgICBbJmxheWVyUG9zaXRpb25dKE5pY29zaWE6OkNv
bXBvc2l0aW9uTGF5ZXI6OkxheWVyU3RhdGUmIHN0YXRlKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBzdGF0ZS5wb3NpdGlvbiA9IGxheWVyUG9zaXRpb247Ci0gICAgICAgICAgICBzdGF0ZS5kZWx0
YS5wb3NpdGlvbkNoYW5nZWQgPSB0cnVlOwotICAgICAgICB9KTsKLX0KLQotdm9pZCBTY3JvbGxp
bmdUcmVlU3RpY2t5Tm9kZTo6ZHVtcFByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMsIFNjcm9sbGlu
Z1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9yIGJlaGF2aW9yKSBjb25zdAotewotICAgIHRzIDw8ICJz
dGlja3kgbm9kZSI7Ci0KLSAgICBTY3JvbGxpbmdUcmVlTm9kZTo6ZHVtcFByb3BlcnRpZXModHMs
IGJlaGF2aW9yKTsKLSAgICB0cy5kdW1wUHJvcGVydHkoInN0aWNreSBjb25zdHJhaW50cyIsIG1f
Y29uc3RyYWludHMpOwotCi0gICAgaWYgKGJlaGF2aW9yICYgU2Nyb2xsaW5nU3RhdGVUcmVlQXNU
ZXh0QmVoYXZpb3JJbmNsdWRlTGF5ZXJQb3NpdGlvbnMpIHsKLSAgICAgICAgRmxvYXRQb2ludCBs
YXllclRvcExlZnQ7Ci0gICAgICAgIEFTU0VSVChtX2xheWVyKTsKLSAgICAgICAgbV9sYXllci0+
YWNjZXNzQ29tbWl0dGVkKAotICAgICAgICAgICAgW3RoaXMsICZsYXllclRvcExlZnRdKE5pY29z
aWE6OkNvbXBvc2l0aW9uTGF5ZXI6OkxheWVyU3RhdGUmIHN0YXRlKQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIGxheWVyVG9wTGVmdCA9IHN0YXRlLnBvc2l0aW9uIC0gdG9GbG9hdFNp
emUoc3RhdGUuYW5jaG9yUG9pbnQueHkoKSkgKiBzdGF0ZS5zaXplICsgbV9jb25zdHJhaW50cy5h
bGlnbm1lbnRPZmZzZXQoKTsKLSAgICAgICAgICAgIH0pOwotCi0gICAgICAgIHRzLmR1bXBQcm9w
ZXJ0eSgibGF5ZXIgdG9wIGxlZnQiLCBsYXllclRvcExlZnQpOwotICAgIH0KLX0KLQotRmxvYXRQ
b2ludCBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6Y29tcHV0ZUxheWVyUG9zaXRpb24oKSBjb25z
dAotewotICAgIEZsb2F0U2l6ZSBvZmZzZXRGcm9tU3RpY2t5QW5jZXN0b3JzOwotICAgIGF1dG8g
Y29tcHV0ZUxheWVyUG9zaXRpb25Gb3JTY3JvbGxpbmdOb2RlID0gWyZdKFNjcm9sbGluZ1RyZWVO
b2RlJiBzY3JvbGxpbmdOb2RlKSB7Ci0gICAgICAgIEZsb2F0UmVjdCBjb25zdHJhaW5pbmdSZWN0
OwotICAgICAgICBpZiAoaXM8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZT4oc2Nyb2xs
aW5nTm9kZSkpIHsKLSAgICAgICAgICAgIGF1dG8mIGZyYW1lU2Nyb2xsaW5nTm9kZSA9IGRvd25j
YXN0PFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU+KHNjcm9sbGluZ05vZGUpOwotICAg
ICAgICAgICAgY29uc3RyYWluaW5nUmVjdCA9IGZyYW1lU2Nyb2xsaW5nTm9kZS5sYXlvdXRWaWV3
cG9ydCgpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYXV0byYgb3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZT4o
c2Nyb2xsaW5nTm9kZSk7Ci0gICAgICAgICAgICBjb25zdHJhaW5pbmdSZWN0ID0gbV9jb25zdHJh
aW50cy5jb25zdHJhaW5pbmdSZWN0QXRMYXN0TGF5b3V0KCk7Ci0gICAgICAgICAgICBjb25zdHJh
aW5pbmdSZWN0Lm1vdmUob3ZlcmZsb3dTY3JvbGxpbmdOb2RlLnNjcm9sbERlbHRhU2luY2VMYXN0
Q29tbWl0KCkpOwotICAgICAgICB9Ci0gICAgICAgIGNvbnN0cmFpbmluZ1JlY3QubW92ZSgtb2Zm
c2V0RnJvbVN0aWNreUFuY2VzdG9ycyk7Ci0gICAgICAgIHJldHVybiBtX2NvbnN0cmFpbnRzLmxh
eWVyUG9zaXRpb25Gb3JDb25zdHJhaW5pbmdSZWN0KGNvbnN0cmFpbmluZ1JlY3QpOwotICAgIH07
Ci0KLSAgICBmb3IgKGF1dG8qIGFuY2VzdG9yID0gcGFyZW50KCk7IGFuY2VzdG9yOyBhbmNlc3Rv
ciA9IGFuY2VzdG9yLT5wYXJlbnQoKSkgewotICAgICAgICBpZiAoaXM8U2Nyb2xsaW5nVHJlZU92
ZXJmbG93U2Nyb2xsUHJveHlOb2RlPigqYW5jZXN0b3IpKSB7Ci0gICAgICAgICAgICBhdXRvJiBv
dmVyZmxvd1Byb3h5Tm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbFBy
b3h5Tm9kZT4oKmFuY2VzdG9yKTsKLSAgICAgICAgICAgIGF1dG8gb3ZlcmZsb3dOb2RlID0gc2Ny
b2xsaW5nVHJlZSgpLm5vZGVGb3JJRChvdmVyZmxvd1Byb3h5Tm9kZS5vdmVyZmxvd1Njcm9sbGlu
Z05vZGVJRCgpKTsKLSAgICAgICAgICAgIGlmICghb3ZlcmZsb3dOb2RlKQotICAgICAgICAgICAg
ICAgIGJyZWFrOwotCi0gICAgICAgICAgICByZXR1cm4gY29tcHV0ZUxheWVyUG9zaXRpb25Gb3JT
Y3JvbGxpbmdOb2RlKCpvdmVyZmxvd05vZGUpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGlz
PFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlPigqYW5jZXN0b3IpKQotICAgICAgICAgICAgcmV0
dXJuIGNvbXB1dGVMYXllclBvc2l0aW9uRm9yU2Nyb2xsaW5nTm9kZSgqYW5jZXN0b3IpOwotCi0g
ICAgICAgIGlmIChpczxTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZT4oKmFuY2VzdG9yKSkKLSAgICAg
ICAgICAgIG9mZnNldEZyb21TdGlja3lBbmNlc3RvcnMgKz0gZG93bmNhc3Q8U2Nyb2xsaW5nVHJl
ZVN0aWNreU5vZGU+KCphbmNlc3Rvcikuc2Nyb2xsRGVsdGFTaW5jZUxhc3RDb21taXQoKTsKLQot
ICAgICAgICBpZiAoaXM8U2Nyb2xsaW5nVHJlZUZpeGVkTm9kZT4oKmFuY2VzdG9yKSkgewotICAg
ICAgICAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgc2Nyb2xsaW5nIHRyZWUgbm9kZXMgYXQgYWxs
IGZvciBuZXN0ZWQgY2FzZXM/Ci0gICAgICAgICAgICByZXR1cm4gbV9jb25zdHJhaW50cy5sYXll
clBvc2l0aW9uQXRMYXN0TGF5b3V0KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIG1fY29uc3RyYWludHMubGF5ZXJQb3NpdGlvbkF0TGFz
dExheW91dCgpOwotfQotCi1GbG9hdFNpemUgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OnNjcm9s
bERlbHRhU2luY2VMYXN0Q29tbWl0KCkgY29uc3QKLXsKLSAgICBhdXRvIGxheWVyUG9zaXRpb24g
PSBjb21wdXRlTGF5ZXJQb3NpdGlvbigpOwotICAgIHJldHVybiBsYXllclBvc2l0aW9uIC0gbV9j
b25zdHJhaW50cy5sYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0KCk7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFVTRShO
SUNPU0lBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3Np
YS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBhMDhmOWRmNjIwY2NmYzExNjE2ODEwZDZkZDJiNDczZWQ0ODFhZmQ0Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaAorKysgL2Rl
di9udWxsCkBAIC0xLDY3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE5IElnYWxpYSBT
LkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVyIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKLSAqICAg
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogSE9MREVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFVTRShOSUNPU0lBKQotCi0jaW5jbHVkZSAiU2Ny
b2xsaW5nQ29uc3RyYWludHMuaCIKLSNpbmNsdWRlICJTY3JvbGxpbmdUcmVlTm9kZS5oIgotI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIE5pY29zaWEgewotY2xhc3MgQ29tcG9z
aXRpb25MYXllcjsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTY3JvbGxpbmdU
cmVlU3RpY2t5Tm9kZSBmaW5hbCA6IHB1YmxpYyBTY3JvbGxpbmdUcmVlTm9kZSB7Ci1wdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZT4gY3JlYXRlKFNjcm9sbGlu
Z1RyZWUmLCBTY3JvbGxpbmdOb2RlSUQpOwotICAgIHZpcnR1YWwgflNjcm9sbGluZ1RyZWVTdGlj
a3lOb2RlKCk7Ci0KLXByaXZhdGU6Ci0gICAgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUoU2Nyb2xs
aW5nVHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7Ci0KLSAgICB2b2lkIGNvbW1pdFN0YXRlQmVmb3Jl
Q2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBh
cHBseUxheWVyUG9zaXRpb25zKCkgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGR1bXBQcm9wZXJ0aWVz
KFdURjo6VGV4dFN0cmVhbSYsIFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9yKSBjb25z
dCBvdmVycmlkZTsKLQotICAgIEZsb2F0UG9pbnQgY29tcHV0ZUxheWVyUG9zaXRpb24oKSBjb25z
dDsKLSAgICBGbG9hdFNpemUgc2Nyb2xsRGVsdGFTaW5jZUxhc3RDb21taXQoKSBjb25zdDsKLQot
ICAgIFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cyBtX2NvbnN0cmFpbnRzOwotICAg
IFJlZlB0cjxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPiBtX2xheWVyOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1NDUk9MTElOR19OT0RF
KFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLCBpc1N0aWNreU5vZGUoKSkKLQotI2VuZGlmIC8vIEVO
QUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFVTRShOSUNPU0lBKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZU5p
Y29zaWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxp
bmdUcmVlU3RpY2t5Tm9kZU5pY29zaWEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjMzIwOTM5ZmUyMWJhMzAx
OGYxMThiYTZiZmUwZTUzZWQxZDY2MmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlTmljb3NpYS5j
cHAKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorICogICAgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZU5pY29zaWEuaCIKKworI2lmIEVOQUJMRShB
U1lOQ19TQ1JPTExJTkcpICYmIFVTRShOSUNPU0lBKQorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgor
I2luY2x1ZGUgIk5pY29zaWFQbGF0Zm9ybUxheWVyLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nU3Rh
dGVTdGlja3lOb2RlLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZS5oIgorI2luY2x1ZGUgIlNj
cm9sbGluZ1RyZWVGaXhlZE5vZGUuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsUHJveHlO
b2RlLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oIgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitSZWY8U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVOaWNvc2lhPiBTY3JvbGxpbmdUcmVlU3RpY2t5
Tm9kZU5pY29zaWE6OmNyZWF0ZShTY3JvbGxpbmdUcmVlJiBzY3JvbGxpbmdUcmVlLCBTY3JvbGxp
bmdOb2RlSUQgbm9kZUlEKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNjcm9sbGluZ1Ry
ZWVTdGlja3lOb2RlTmljb3NpYShzY3JvbGxpbmdUcmVlLCBub2RlSUQpKTsKK30KKworU2Nyb2xs
aW5nVHJlZVN0aWNreU5vZGVOaWNvc2lhOjpTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZU5pY29zaWEo
U2Nyb2xsaW5nVHJlZSYgc2Nyb2xsaW5nVHJlZSwgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKKyAg
ICA6IFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlKHNjcm9sbGluZ1RyZWUsIG5vZGVJRCkKK3sKK30K
Kwordm9pZCBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZU5pY29zaWE6OmNvbW1pdFN0YXRlQmVmb3Jl
Q2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJiBzdGF0ZU5vZGUpCit7CisgICAgYXV0
byYgc3RpY2t5U3RhdGVOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlPihz
dGF0ZU5vZGUpOworICAgIGlmIChzdGlja3lTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNj
cm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkxheWVyKSkgeworICAgICAgICBhdXRvKiBsYXll
ciA9IHN0YXRpY19jYXN0PE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIqPihzdGlja3lTdGF0ZU5vZGUu
bGF5ZXIoKSk7CisgICAgICAgIG1fbGF5ZXIgPSBkb3duY2FzdDxOaWNvc2lhOjpDb21wb3NpdGlv
bkxheWVyPihsYXllcik7CisgICAgfQorCisgICAgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OmNv
bW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oc3RhdGVOb2RlKTsKK30KKwordm9pZCBTY3JvbGxpbmdU
cmVlU3RpY2t5Tm9kZU5pY29zaWE6OmFwcGx5TGF5ZXJQb3NpdGlvbnMoKQoreworICAgIGF1dG8g
bGF5ZXJQb3NpdGlvbiA9IGNvbXB1dGVMYXllclBvc2l0aW9uKCk7CisKKyAgICBMT0dfV0lUSF9T
VFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwgIlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlTmljb3Np
YSAiIDw8IHNjcm9sbGluZ05vZGVJRCgpIDw8ICIgY29uc3RyYWluaW5nUmVjdEF0TGFzdExheW91
dCAiIDw8IG1fY29uc3RyYWludHMuY29uc3RyYWluaW5nUmVjdEF0TGFzdExheW91dCgpIDw8ICIg
bGFzdCBsYXllciBwb3MgIiA8PCBtX2NvbnN0cmFpbnRzLmxheWVyUG9zaXRpb25BdExhc3RMYXlv
dXQoKSA8PCAiIGxheWVyUG9zaXRpb24gIiA8PCBsYXllclBvc2l0aW9uKTsKKworICAgIGxheWVy
UG9zaXRpb24gLT0gbV9jb25zdHJhaW50cy5hbGlnbm1lbnRPZmZzZXQoKTsKKworICAgIEFTU0VS
VChtX2xheWVyKTsKKyAgICBtX2xheWVyLT51cGRhdGVTdGF0ZSgKKyAgICAgICAgWyZsYXllclBv
c2l0aW9uXShOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyOjpMYXllclN0YXRlJiBzdGF0ZSkKKyAg
ICAgICAgeworICAgICAgICAgICAgc3RhdGUucG9zaXRpb24gPSBsYXllclBvc2l0aW9uOworICAg
ICAgICAgICAgc3RhdGUuZGVsdGEucG9zaXRpb25DaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgfSk7
Cit9CisKK0Zsb2F0UG9pbnQgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVOaWNvc2lhOjpsYXllclRv
cExlZnQoKSBjb25zdAoreworICAgIEZsb2F0UG9pbnQgbGF5ZXJUb3BMZWZ0OworICAgIEFTU0VS
VChtX2xheWVyKTsKKyAgICBtX2xheWVyLT5hY2Nlc3NDb21taXR0ZWQoCisgICAgICAgIFt0aGlz
LCAmbGF5ZXJUb3BMZWZ0XShOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyOjpMYXllclN0YXRlJiBz
dGF0ZSkKKyAgICAgICAgeworICAgICAgICAgICAgbGF5ZXJUb3BMZWZ0ID0gc3RhdGUucG9zaXRp
b24gLSB0b0Zsb2F0U2l6ZShzdGF0ZS5hbmNob3JQb2ludC54eSgpKSAqIHN0YXRlLnNpemUgKyBt
X2NvbnN0cmFpbnRzLmFsaWdubWVudE9mZnNldCgpOworICAgICAgICB9KTsKKyAgICByZXR1cm4g
bGF5ZXJUb3BMZWZ0OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBVU0UoTklDT1NJQSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVO
aWNvc2lhLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGlu
Z1RyZWVTdGlja3lOb2RlTmljb3NpYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxMTYxM2Y5ODI0YWNmODk4NTk5
NjUwMDY0MWY0NTJmNmYzZGQwYzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlTmljb3NpYS5oCkBA
IC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5IElnYWxpYSBTLkwuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKyAqICAgIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShB
U1lOQ19TQ1JPTExJTkcpICYmIFVTRShOSUNPU0lBKQorCisjaW5jbHVkZSAiU2Nyb2xsaW5nQ29u
c3RyYWludHMuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oIgorI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIE5pY29zaWEgeworY2xhc3MgQ29tcG9zaXRp
b25MYXllcjsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZU5pY29zaWEgZmluYWwgOiBwdWJsaWMgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUg
eworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVOaWNvc2lh
PiBjcmVhdGUoU2Nyb2xsaW5nVHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7CisgICAgdmlydHVhbCB+
U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVOaWNvc2lhKCkgPSBkZWZhdWx0OworCitwcml2YXRlOgor
ICAgIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlTmljb3NpYShTY3JvbGxpbmdUcmVlJiwgU2Nyb2xs
aW5nTm9kZUlEKTsKKworICAgIHZvaWQgY29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBT
Y3JvbGxpbmdTdGF0ZU5vZGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIGFwcGx5TGF5ZXJQb3NpdGlv
bnMoKSBvdmVycmlkZTsKKyAgICBGbG9hdFBvaW50IGxheWVyVG9wTGVmdCgpIGNvbnN0IG92ZXJy
aWRlOworCisgICAgUmVmUHRyPE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+IG1fbGF5ZXI7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NS
T0xMSU5HKSAmJiBVU0UoTklDT1NJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1RleHR1cmVNYXBwZXIuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UZXh0dXJl
TWFwcGVyLmNtYWtlCmluZGV4IGQyYmNkOWFmMDgyZDJiN2U2NmE5MjZiMjE4ZjI0MDg1MGI2YTk5
NDQuLjU1M2I1YWU3NTZkYmZlYWNhODljNDYyYWM1ZTkwMDM5MzUxMTEzMDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RleHR1cmVNYXBwZXIuY21ha2UKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVGV4dHVyZU1hcHBlci5jbWFrZQpAQCAtMTAwLDcgKzEwMCw3IEBA
IGlmIChVU0VfQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgKQogICAgIGxpc3QoQVBQRU5EIFdl
YkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgICAgICBwYWdlL3Njcm9sbGluZy9u
aWNvc2lhL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUuaAotICAgICAgICBwYWdlL3Njcm9sbGluZy9u
aWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmgKKyAgICAgICAgcGFnZS9zY3JvbGxpbmcv
bmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZU5pY29zaWEuaAogCiAgICAgICAgIHBsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50LmgK
ICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhQnVmZmVyLmgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3Jv
bGxpbmdUcmVlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVTY3JvbGxpbmdUcmVlLmNwcAppbmRleCA3ZGRhMzM2M2UwNWIzZDBmMmM0NDRiOTlkMWUy
YzUzNDFjZGEzYjM3Li4zOTI4MjhhZWUzMTkwODhiZDRhNzM5ZWE1Y2QzMWY2ODdkZGRlZmZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
U2Nyb2xsaW5nVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ1RyZWUuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9TY3JvbGxpbmdUcmVlRnJhbWVIb3N0aW5nTm9kZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxpbmdU
cmVlU3RpY2t5Tm9kZUNvY29hLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1
ZGUgIlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MuaCIKQEAgLTEyNyw3
ICsxMjcsNyBAQCBSZWY8U2Nyb2xsaW5nVHJlZU5vZGU+IFJlbW90ZVNjcm9sbGluZ1RyZWU6OmNy
ZWF0ZVNjcm9sbGluZ1RyZWVOb2RlKFNjcm9sbGluZ05vZAogICAgIGNhc2UgU2Nyb2xsaW5nTm9k
ZVR5cGU6OkZpeGVkOgogICAgICAgICByZXR1cm4gU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6Y3Jl
YXRlKCp0aGlzLCBub2RlSUQpOwogICAgIGNhc2UgU2Nyb2xsaW5nTm9kZVR5cGU6OlN0aWNreToK
LSAgICAgICAgcmV0dXJuIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpjcmVhdGUoKnRoaXMsIG5v
ZGVJRCk7CisgICAgICAgIHJldHVybiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUNvY29hOjpjcmVh
dGUoKnRoaXMsIG5vZGVJRCk7CiAgICAgY2FzZSBTY3JvbGxpbmdOb2RlVHlwZTo6UG9zaXRpb25l
ZDoKICAgICAgICAgcmV0dXJuIFNjcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZTo6Y3JlYXRlKCp0
aGlzLCBub2RlSUQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvci5tbQppbmRleCA4NGEyZmIwZjliMjc2MmEyYzIyODliYjk1ZTk0
MzEyZjZiMGYxYWE1Li4zNDA0ZGQ4ODcxYjA4MzBmMjBlOTU4YWI1NzczNWIwNjUxNmUzODY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
Lm1tCkBAIC00Myw3ICs0Myw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlckxheWVyQ29tcG9z
aXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUuaD4KLSNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsaW5nVHJl
ZVN0aWNreU5vZGUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVD
b2NvYS5oPgogCiAKIG5hbWVzcGFjZSBXZWJLaXQgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441117</attachid>
            <date>2021-10-13 12:03:23 -0700</date>
            <delta_ts>2021-10-27 03:33:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231571-20211013210322.patch</filename>
            <type>text/plain</type>
            <size>67012</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MDg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjYyZGE4NWFmOTJhYWFm
ZjM3NTc0Y2FjMTM2ZmM0NzQ4MGY0ZmYzYS4uN2ZjNWVlYWViZDg2MzVjZDZjZmE2YWQ3NjA3MDVk
YzhlN2Q1YmUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIxLTEwLTEzICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBFbGltaW5hdGUg
ZHVwbGljYXRlZCBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlIGluIFNjcm9sbGluZ1RyZWVTdGlja3lO
b2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE1
NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBYnN0
cmFjdCBjb2RlIGZyb20gdGhlIE5pY29zaWEgYW5kIENvb2NhIHZlcnNpb24gb2YgU2Nyb2xsaW5n
VHJlZVN0aWNreU5vZGUsCisgICAgICAgIHNvIHRoYXQgaXQgY2FuIGJlIHNoYXJlZCBieSBib3Ro
IHBvcnRzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBzaG91bGQgbm90IGNoYW5nZSBh
bnkgYmVoYXZpb3IuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFBsYXRm
b3JtTWFjLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtUGxheVN0YXRpb24uY21ha2U6CisgICAg
ICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAg
KiBTb3VyY2VzR1RLLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUu
Y3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9T
Y3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdU
cmVlU3RpY2t5Tm9kZTo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6ZHVtcFByb3BlcnRpZXMgY29uc3QpOgorICAg
ICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0
aWNreU5vZGUuaC4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVl
Rml4ZWROb2RlLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6
YXBwbHlMYXllclBvc2l0aW9ucyk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Ny
b2xsaW5nVHJlZVN0aWNreU5vZGUubW06IFJlbW92ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdUcmVlU3RpY2t5Tm9kZTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6flNjcm9sbGlu
Z1RyZWVTdGlja3lOb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1Ry
ZWVTdGlja3lOb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpjb21wdXRlTGF5ZXJQb3NpdGlv
biBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU3RpY2t5
Tm9kZTo6YXBwbHlMYXllclBvc2l0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6c2Nyb2xsRGVsdGFTaW5jZUxhc3RDb21taXQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OmR1
bXBQcm9wZXJ0aWVzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9j
b2NvYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUNvY29hLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oLgor
ICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlQ29j
b2EubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVD
b2NvYTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTdGlja3lOb2Rl
Q29jb2E6OlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlQ29jb2EpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVDb2NvYTo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUNvY29hOjphcHBseUxh
eWVyUG9zaXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTdGlja3lOb2Rl
Q29jb2E6OmxheWVyVG9wTGVmdCBjb25zdCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFj
L1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdUcmVlTWFjLm1tOgorICAgICAgICAoU2Nyb2xsaW5nVHJlZU1hYzo6Y3JlYXRl
U2Nyb2xsaW5nVHJlZU5vZGUpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Ny
b2xsaW5nVHJlZU5pY29zaWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU5p
Y29zaWE6OmNyZWF0ZVNjcm9sbGluZ1RyZWVOb2RlKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlTmljb3NpYS5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVOaWNvc2lhOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVOaWNvc2lhOjpTY3JvbGxp
bmdUcmVlU3RpY2t5Tm9kZU5pY29zaWEpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJl
ZVN0aWNreU5vZGVOaWNvc2lhOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlTmljb3NpYTo6YXBwbHlMYXllclBvc2l0
aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZU5pY29zaWE6
OmxheWVyVG9wTGVmdCBjb25zdCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9T
Y3JvbGxpbmdUcmVlU3RpY2t5Tm9kZU5pY29zaWEuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9UZXh0dXJlTWFwcGVyLmNtYWtlOgorCiAyMDIxLTEwLTEzICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KIAogICAgICAgICBTdGlja3kgZWxl
bWVudCBpbnNpZGUgYW5vdGhlciBzdGlja3kgZWxlbWVudCBkb2VzIG5vdCByZWRyYXcgcHJvcGVy
bHkgb24gc2Nyb2xsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZhMDczYjkzYWJjMzY3NTc1OTY1NDU3NDZiNzc0NjU4
YmIwYmIwY2EuLmQ0ZDhiNTM0NTRlYTczODk1ZTNmMWU4OGQ5NDRlN2UzYjE4NzVmYWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMTAtMTMgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2Jp
bnNvbkB3ZWJraXQub3JnPgorCisgICAgICAgIEVsaW1pbmF0ZSBkdXBsaWNhdGVkIHBsYXRmb3Jt
LXNwZWNpZmljIGNvZGUgaW4gU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTU3MQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFic3RyYWN0IGNvZGUgZnJvbSB0aGUg
Tmljb3NpYSBhbmQgQ29vY2EgdmVyc2lvbiBvZiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSwKKyAg
ICAgICAgc28gdGhhdCBpdCBjYW4gYmUgc2hhcmVkIGJ5IGJvdGggcG9ydHMuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ1RyZWUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdUcmVlOjpjcmVhdGVTY3JvbGxpbmdUcmVlTm9k
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvci5tbToKKwogMjAyMS0xMC0xMiAgSmVyIE5vYmxlICA8amVyLm5v
YmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbQnVpbGQtdGltZSBwZXJmXSBGb3J3YXJkLWRlY2xh
cmUgbW9yZSB0aGluZ3MgaW4gRG9jdW1lbnQuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggZGQwOTMz
OWFiY2IwZTZhZmFlNzJhYzRmM2MxODY4MDg5ZjU2NDBiMi4uMjNkNGYwNWNlNDhlYjQwNDVhYTY5
MGQ0ZDRjN2VmMTcyYTgxMWVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMDUyLDYgKzEwNTIs
NyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oCiAgICAgcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaAogICAgIHBhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuaAorICAgIHBhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVTdGlja3lOb2RlLmgKICAgICBwYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9s
bGluZ1RyZWUuaAogCiAgICAgcGxhdGZvcm0vQWJvcnRhYmxlVGFza1F1ZXVlLmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1NYWMuY21ha2UKaW5kZXggYmNmY2ViNzkzMTNlYzA1YzM1NGM1ZmVmZTM0YWI1MTBhYjMz
ZTcxNy4uNTcwZjllMWU0ODg3ZDJlNGI0MDA4OTZjYzk0NGIwM2U0ODRjNDg5MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1NYWMuY21ha2UKQEAgLTU1MSw3ICs1NTEsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3Jl
X1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwYWdlL3Njcm9sbGluZy9jb2NvYS9TY3Jv
bGxpbmdUcmVlRml4ZWROb2RlLmgKICAgICBwYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxQcm94eU5vZGUuaAogICAgIHBhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Nj
cm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZS5oCi0gICAgcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Ny
b2xsaW5nVHJlZVN0aWNreU5vZGUuaAorICAgIHBhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGlu
Z1RyZWVTdGlja3lOb2RlQ29jb2EuaAogCiAgICAgcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGlu
Z1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMuaAogICAgIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3Jv
bGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bVBsYXlTdGF0aW9uLmNtYWtlCmluZGV4IDlmMTU1OWVjMmU1ZDkyZjZlMmUyOTRhZWZkNDBhMjgy
OTRlZjNhYzEuLmIwMzhiZmNiMzVjZjFhMTE5NzRkOThjY2E5ODBlY2IzOTg0YjQ1NDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UKKysrIGIvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZQpAQCAtMjksNyArMjksNyBAQCBs
aXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Nj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmNwcAogICAgIHBhZ2Uvc2Ny
b2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlLmNwcAogICAgIHBhZ2Uv
c2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29z
aWEuY3BwCi0gICAgcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZS5jcHAKKyAgICBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2Rl
Tmljb3NpYS5jcHAKIAogICAgIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwCiAg
ICAgcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA1
MjhlY2ViMWQzOTIzYTAxNGQ3ZjE1MTU5YzZiN2YzNTNmYjM0OWZiLi40ZmEwZmVlOTkwNGE5OTY5
MWI1ZDdlMmI2YWJlNzJhNTdiYTRlODRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTc5Myw2ICsxNzkz
LDcgQEAgcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3BwCiBwYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmNwcAogcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmNwcAorcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJl
ZVN0aWNreU5vZGUuY3BwCiBwYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuY3Bw
CiBwbGF0Zm9ybS9Db250ZW50VHlwZS5jcHAKIHBsYXRmb3JtL0NvbnRleHRNZW51LmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggYTRjMGE3NjI3YzM3ODFkZmNkMDQ5MDZmYzUyMzMwOWM5
MDczMGMyYy4uMTU3YTlkZDM5ZDM3NWRhNDhjNjFmMTE1ZWM3ODU2NzJhMmI4NmMxMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0yMDcsNyArMjA3LDcgQEAgcGFnZS9zY3JvbGxpbmcvY29j
b2EvU2Nyb2xsaW5nU3RhdGVOb2RlLm1tCiBwYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdU
cmVlRml4ZWROb2RlLm1tCiBwYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlT3ZlcmZs
b3dTY3JvbGxQcm94eU5vZGUubW0KIHBhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVQ
b3NpdGlvbmVkTm9kZS5tbQotcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZVN0aWNr
eU5vZGUubW0KK3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlQ29j
b2EubW0KIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5tbQogcGFn
ZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZU1hYy5tbQogcGFnZS9z
Y3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNHVEsudHh0IGIvU291cmNlL1dlYkNvcmUvU291
cmNlc0dUSy50eHQKaW5kZXggM2NkZjNlODFlZTM1MzUyYzU5ZjgzYmUxYjhiY2RjZGYxZDc5YmYz
OS4uNmE5Y2Q2MzA4N2VmMGZiZDA4NDM4M2NmNmRjNGZmYTdjZDZjNmMyNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNl
c0dUSy50eHQKQEAgLTY5LDcgKzY5LDcgQEAgcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxQcm94eU5vZGUuY3BwCiBwYWdlL3Njcm9sbGluZy9uaWNvc2lh
L1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmNwcAogcGFnZS9zY3Jv
bGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuY3BwCiBwYWdlL3Njcm9s
bGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNw
cAotcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAKK3Bh
Z2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVOaWNvc2lhLmNwcAog
CiBwbGF0Zm9ybS9Vc2VyQWdlbnRRdWlya3MuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNXUEUudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc1dQRS50eHQKaW5kZXgg
NjYzM2FhMThhOWNkODEyMTZlNmM0NmE3YzQyMzdmMDFhMWU0YmJiYi4uZmQwNThlOGY2MTRlZGJh
NzBmZDBkMTA0Mjg1ODY0ZTc2OGVjZWI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291
cmNlc1dQRS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc1dQRS50eHQKQEAgLTU2LDcg
KzU2LDcgQEAgcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3Jv
bGxQcm94eU5vZGUuY3BwCiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVy
Zmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmNwcAogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3Jv
bGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuY3BwCiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcAotcGFnZS9zY3JvbGxpbmcv
bmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAKK3BhZ2Uvc2Nyb2xsaW5nL25pY29z
aWEvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVOaWNvc2lhLmNwcAogCiBwbGF0Zm9ybS9Vc2VyQWdl
bnRRdWlya3MuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCBiNWE0YjRkNmI3MDI0NzMwNzVmMjk4ZjM5YWMzOTY0NThiMjdj
Y2VhLi5jMmE1NzJmZGNhYjcyNGE4NDRmZmQ0NTE2YTQxMzViZjE2ZTMxNDZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMzcs
NyArMzM3LDcgQEAKIAkJMEY4QjQ1NzIxREMzRkJBMzAwNDQzQzNGIC8qIEludGVyc2VjdGlvbk9i
c2VydmVyQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGOEI0NTcxMURDM0ZCQTMwMDQ0M0MzRiAvKiBJbnRlcnNlY3Rpb25PYnNlcnZlckNh
bGxiYWNrLmggKi87IH07CiAJCTBGOEI0NTc2MURDNDFEQkEwMDQ0M0MzRiAvKiBKU0ludGVyc2Vj
dGlvbk9ic2VydmVyQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGOEI0NTc0MURDNDFEQkEwMDQ0M0MzRiAvKiBKU0ludGVyc2VjdGlvbk9i
c2VydmVyQ2FsbGJhY2suaCAqLzsgfTsKIAkJMEY5NEI2NDcyMjA4RkUzNjAwMTU3MDE0IC8qIFNj
cm9sbGluZ1RyZWVGaXhlZE5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGOTRCNjQyMjIwOEY3MDEwMDE1NzAxNCAvKiBTY3JvbGxpbmdUcmVlRml4
ZWROb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
LQkJMEY5NEI2NDkyMjA4RkUzQjAwMTU3MDE0IC8qIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjk0QjY0MzIy
MDhGNzAyMDAxNTcwMTQgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjk0QjY0OTIyMDhGRTNCMDAx
NTcwMTQgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5NEI2NDMyMjA4RjcwMjAwMTU3MDE0IC8q
IFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlQ29jb2EuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjk0QjY1MjIyMDkxNTA2MDAxNTcwMTQgLyogU2Ny
b2xsaW5nU3RhdGVQb3NpdGlvbmVkTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY5NEI2NTEyMjA5MTRGRjAwMTU3MDE0IC8qIFNjcm9sbGluZ1N0
YXRlUG9zaXRpb25lZE5vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRjk0QjY1NTIyMDkzMUU0MDAxNTcwMTQgLyogU2Nyb2xsaW5nVHJlZVBv
c2l0aW9uZWROb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjk0QjY1MzIyMDkxNTZDMDAxNTcwMTQgLyogU2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWRO
b2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEY5NEYzN0UyMzY2MTYyNjAwM0FBNUM3IC8qIFN0eWxlUnVsZVR5cGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTRGMzdDMjM2NjExMzEwMDNBQTVD
NyAvKiBTdHlsZVJ1bGVUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTIwMTcsNiArMjAxNyw3IEBACiAJCTVCMzA2OTVFMThCM0QzNDUwMDk5
RDVFOCAvKiBXZWJHTERyYXdCdWZmZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1QjMwNjk1QjE4QjNEMzQ1MDA5OUQ1RTggLyogV2ViR0xEcmF3QnVm
ZmVycy5oICovOyB9OwogCQk1QjQ2NjU2MzI1RDE0QzBBMDAwQ0ZFMTQgLyogU2Nyb2xsaW5nRWZm
ZWN0c0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVCNDY2NTVGMjVEMTRDMDkwMDBDRkUxNCAvKiBTY3JvbGxpbmdFZmZlY3RzQ29udHJv
bGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTVCNDY2NTY0MjVEMTRDMEEwMDBDRkUxNCAvKiBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUI0NjY1NjAyNUQx
NEMwQTAwMENGRTE0IC8qIFNjcm9sbFNuYXBBbmltYXRvclN0YXRlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNUI5MkM0MkQyNzE2RTI4QTAwQTM3
Q0MwIC8qIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QjkyQzQyQjI3MTZFMjMzMDBBMzdDQzAgLyogU2Nyb2xs
aW5nVHJlZVN0aWNreU5vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1QzFCMUQzRjI2RjM5NzgwMDA4ODJEQTIgLyogUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1QzFCMUQzRDI2RjM5NzdGMDA4ODJEQTIgLyogUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUMyQjFB
RUMyMjM5N0VCQzAwQjkxQ0Y3IC8qIFJlc291cmNlUmVzcG9uc2VDb2NvYS5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRjc4RDBCMUMyNTQyMkMwMDI0
NTQ0NiAvKiBSZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0gKi87IH07CiAJCTVDNDMwNEIxMTkxQUM5
MDgwMDBFMkJDMCAvKiBFWFRTaGFkZXJUZXh0dXJlTE9ELmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzQzMDRBRTE5MUFDOTA4MDAwRTJCQzAgLyogRVhU
U2hhZGVyVGV4dHVyZUxPRC5oICovOyB9OwpAQCAtNjMyOCw5ICs2MzI5LDkgQEAKIAkJMEY5NDcy
MkQyNTM0QkE3MzAwRjE1M0M4IC8qIERpc3BsYXlGaWxsTGF5ZXJJbWFnZUdlb21ldHJ5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERpc3BsYXlGaWxsTGF5ZXJJbWFnZUdlb21ldHJ5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGOTRBMzk1MUVGMUIxMDUwMEZCQUZGQiAvKiBKU0RPTVF1YWRD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01RdWFk
Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5NEI2NDIyMjA4Rjcw
MTAwMTU3MDE0IC8qIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU2Ny
b2xsaW5nVHJlZUZpeGVkTm9kZS5oOyBwYXRoID0gcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xs
aW5nVHJlZUZpeGVkTm9kZS5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07Ci0JCTBGOTRC
NjQzMjIwOEY3MDIwMDE1NzAxNCAvKiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oOyBwYXRoID0gcGFnZS9zY3JvbGxpbmcv
Y29jb2EvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09U
OyB9OworCQkwRjk0QjY0MzIyMDhGNzAyMDAxNTcwMTQgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5v
ZGVDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUNvY29hLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTRCNjQ0MjIwOEY3MDIwMDE1NzAxNCAv
KiBTY3JvbGxpbmdUcmVlRml4ZWROb2RlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gU2Nyb2xs
aW5nVHJlZUZpeGVkTm9kZS5tbTsgcGF0aCA9IHBhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGlu
Z1RyZWVGaXhlZE5vZGUubW07IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKLQkJMEY5NEI2
NDUyMjA4RjcwMzAwMTU3MDE0IC8qIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBuYW1lID0gU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUubW07IHBhdGggPSBwYWdlL3Nj
cm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbTsgc291cmNlVHJlZSA9IFNP
VVJDRV9ST09UOyB9OworCQkwRjk0QjY0NTIyMDhGNzAzMDAxNTcwMTQgLyogU2Nyb2xsaW5nVHJl
ZVN0aWNreU5vZGVDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcm9sbGluZ1RyZWVT
dGlja3lOb2RlQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTRCNjRG
MjIwOTE0RkUwMDE1NzAxNCAvKiBTY3JvbGxpbmdTdGF0ZVBvc2l0aW9uZWROb2RlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNjcm9sbGluZ1N0YXRlUG9zaXRpb25lZE5vZGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjk0QjY1MTIyMDkxNEZGMDAxNTcwMTQgLyogU2Nyb2xs
aW5nU3RhdGVQb3NpdGlvbmVkTm9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxpbmdTdGF0ZVBv
c2l0aW9uZWROb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTRCNjUzMjIw
OTE1NkMwMDE1NzAxNCAvKiBTY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC05ODI1LDYgKzk4MjYsOCBAQAogCQk1QjQ2NjU1RjI1RDE0QzA5MDAwQ0ZFMTQg
LyogU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNUI0NjY1NjAyNUQxNEMwQTAwMENGRTE0IC8qIFNjcm9sbFNuYXBBbmltYXRv
clN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbFNuYXBBbmlt
YXRvclN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVCN0FCOUY2MjU2N0RC
N0UwMDY1OTJEMCAvKiBTY3JvbGxTbmFwT2Zmc2V0c0luZm8uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xsU25hcE9mZnNldHNJbmZvLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUI5MkM0MjkyNzE2RTIzMzAwQTM3Q0MwIC8qIFNjcm9sbGlu
Z1RyZWVTdGlja3lOb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNUI5MkM0MkIyNzE2RTIzMzAwQTM3Q0MwIC8qIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbGluZ1RyZWVTdGlja3lOb2Rl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMDAxNTIxMjUwMDExMDAwMDk0QUE5
MyAvKiBUZXh0Q29kZWNTaW5nbGVCeXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFRleHRDb2RlY1NpbmdsZUJ5dGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1QzAwMTUyMzI1MDAxMTAxMDA5NEFBOTMgLyogVGV4dENvZGVjU2luZ2xlQnl0ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0Q29kZWNTaW5nbGVCeXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMUIxRDFFMjZGMTVCMTkwMDg4MkRBMiAv
KiBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xOTA0NSw2ICsxOTA0OCw4IEBACiAJCQkJOTM5MUE5OUIxNjI5RDcwMDAw
Mjk3MzMwIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmggKi8sCiAJCQkJQTZENUE5OUEx
NjI5RDZGRjAwMjk3MzMwIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuY3Bw
ICovLAogCQkJCUE2RDVBOTlCMTYyOUQ3MDAwMDI5NzMzMCAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlLmggKi8sCisJCQkJNUI5MkM0MjkyNzE2RTIzMzAwQTM3Q0MwIC8qIFNj
cm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcCAqLywKKwkJCQk1QjkyQzQyQjI3MTZFMjMzMDBBMzdD
QzAgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaCAqLywKIAkJCQkwRjk1MTBGMjI0RjQ3NjlD
MDAxRjUyREMgLyogU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyLmNwcCAqLywKIAkJCQkwRjk1MTBG
MDI0RjQ3NjlDMDAxRjUyREMgLyogU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyLmggKi8sCiAJCQkJ
NUI3QUI5RjYyNTY3REI3RTAwNjU5MkQwIC8qIFNjcm9sbFNuYXBPZmZzZXRzSW5mby5jcHAgKi8s
CkBAIC0yNDMyMiw4ICsyNDMyNyw4IEBACiAJCQkJMEZDNEIwMDUyMkI5QTAyRDAwQ0YzQjFFIC8q
IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZS5tbSAqLywKIAkJCQkwRjk0QjY1
MzIyMDkxNTZDMDAxNTcwMTQgLyogU2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlLmggKi8sCiAJ
CQkJMEY5NEI2NTQyMjA5MTU2QzAwMTU3MDE0IC8qIFNjcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9k
ZS5tbSAqLywKLQkJCQkwRjk0QjY0MzIyMDhGNzAyMDAxNTcwMTQgLyogU2Nyb2xsaW5nVHJlZVN0
aWNreU5vZGUuaCAqLywKLQkJCQkwRjk0QjY0NTIyMDhGNzAzMDAxNTcwMTQgLyogU2Nyb2xsaW5n
VHJlZVN0aWNreU5vZGUubW0gKi8sCisJCQkJMEY5NEI2NDMyMjA4RjcwMjAwMTU3MDE0IC8qIFNj
cm9sbGluZ1RyZWVTdGlja3lOb2RlQ29jb2EuaCAqLywKKwkJCQkwRjk0QjY0NTIyMDhGNzAzMDAx
NTcwMTQgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVDb2NvYS5tbSAqLywKIAkJCSk7CiAJCQlw
YXRoID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzUyODAsNyArMzUy
ODUsOCBAQAogCQkJCTkzOTFBOTlEMTYyOUQ3MDAwMDI5NzMzMCAvKiBTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTZENUE5OUQxNjI5RDcwMDAwMjk3MzMw
IC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMzdGMDg1MjIwMkJGOTgwMEE4OUMwQiAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlTWFjLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjk0QjY0OTIyMDhGRTNCMDAxNTcw
MTQgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTVCOTJD
NDJEMjcxNkUyOEEwMEEzN0NDMCAvKiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEY5NEI2NDkyMjA4RkUzQjAwMTU3MDE0IC8qIFNjcm9sbGluZ1RyZWVTdGlj
a3lOb2RlQ29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzQzU3OTVEMURBNUMzMDEwMDZGOUM5
NyAvKiBTY3JvbGxJbnRvVmlld09wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzQzU3OTVE
MURBNUMzMDEwMDZGOUM4NiAvKiBTY3JvbGxMb2dpY2FsUG9zaXRpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTgzQzU3OTVEMURBNUMzMDEwMDZGQUM5NyAvKiBTY3JvbGxPcHRpb25zLmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RyZWVTdGlja3lOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMzlmMjM1YzI2ZWRmNDViOTZh
MDA2ODM2MWExZWZmMGU4YTIwYzJiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuY3BwCkBAIC0wLDAgKzEsMTIz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNjcm9sbGlu
Z1RyZWVTdGlja3lOb2RlLmgiCisKKyNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQorCisjaW5j
bHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5oIgor
I2luY2x1ZGUgIlNjcm9sbGluZ1RyZWUuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVlRml4ZWRO
b2RlLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5oIgorI2lu
Y2x1ZGUgIlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZS5oIgorI2luY2x1ZGUg
IlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4
dC9UZXh0U3RyZWFtLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU2Nyb2xsaW5nVHJlZVN0
aWNreU5vZGU6OlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlKFNjcm9sbGluZ1RyZWUmIHNjcm9sbGlu
Z1RyZWUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCisgICAgOiBTY3JvbGxpbmdUcmVlTm9kZShz
Y3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdOb2RlVHlwZTo6U3RpY2t5LCBub2RlSUQpCit7CisgICAg
c2Nyb2xsaW5nVHJlZS5maXhlZE9yU3RpY2t5Tm9kZUFkZGVkKCk7Cit9CisKK1Njcm9sbGluZ1Ry
ZWVTdGlja3lOb2RlOjp+U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUoKQoreworICAgIHNjcm9sbGlu
Z1RyZWUoKS5maXhlZE9yU3RpY2t5Tm9kZVJlbW92ZWQoKTsKK30KKwordm9pZCBTY3JvbGxpbmdU
cmVlU3RpY2t5Tm9kZTo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdT
dGF0ZU5vZGUmIHN0YXRlTm9kZSkKK3sKKyAgICBhdXRvJiBzdGlja3lTdGF0ZU5vZGUgPSBkb3du
Y2FzdDxTY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGU+KHN0YXRlTm9kZSk7CisKKyAgICBpZiAoc3Rp
Y2t5U3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3Bl
cnR5OjpWaWV3cG9ydENvbnN0cmFpbnRzKSkKKyAgICAgICAgbV9jb25zdHJhaW50cyA9IHN0aWNr
eVN0YXRlTm9kZS52aWV3cG9ydENvbnN0cmFpbnRzKCk7Cit9CisKK0Zsb2F0UG9pbnQgU2Nyb2xs
aW5nVHJlZVN0aWNreU5vZGU6OmNvbXB1dGVMYXllclBvc2l0aW9uKCkgY29uc3QKK3sKKyAgICBG
bG9hdFNpemUgb2Zmc2V0RnJvbVN0aWNreUFuY2VzdG9yczsKKyAgICBhdXRvIGNvbXB1dGVMYXll
clBvc2l0aW9uRm9yU2Nyb2xsaW5nTm9kZSA9IFsmXShTY3JvbGxpbmdUcmVlTm9kZSYgc2Nyb2xs
aW5nTm9kZSkgeworICAgICAgICBGbG9hdFJlY3QgY29uc3RyYWluaW5nUmVjdDsKKyAgICAgICAg
aWYgKGlzPFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU+KHNjcm9sbGluZ05vZGUpKSB7
CisgICAgICAgICAgICBhdXRvJiBmcmFtZVNjcm9sbGluZ05vZGUgPSBkb3duY2FzdDxTY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPihzY3JvbGxpbmdOb2RlKTsKKyAgICAgICAgICAgIGNv
bnN0cmFpbmluZ1JlY3QgPSBmcmFtZVNjcm9sbGluZ05vZGUubGF5b3V0Vmlld3BvcnQoKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8mIG92ZXJmbG93U2Nyb2xsaW5nTm9kZSA9
IGRvd25jYXN0PFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGU+KHNjcm9sbGluZ05v
ZGUpOworICAgICAgICAgICAgY29uc3RyYWluaW5nUmVjdCA9IG1fY29uc3RyYWludHMuY29uc3Ry
YWluaW5nUmVjdEF0TGFzdExheW91dCgpOworICAgICAgICAgICAgY29uc3RyYWluaW5nUmVjdC5t
b3ZlKG92ZXJmbG93U2Nyb2xsaW5nTm9kZS5zY3JvbGxEZWx0YVNpbmNlTGFzdENvbW1pdCgpKTsK
KyAgICAgICAgfQorICAgICAgICBjb25zdHJhaW5pbmdSZWN0Lm1vdmUoLW9mZnNldEZyb21TdGlj
a3lBbmNlc3RvcnMpOworICAgICAgICByZXR1cm4gbV9jb25zdHJhaW50cy5sYXllclBvc2l0aW9u
Rm9yQ29uc3RyYWluaW5nUmVjdChjb25zdHJhaW5pbmdSZWN0KTsKKyAgICB9OworCisgICAgZm9y
IChhdXRvKiBhbmNlc3RvciA9IHBhcmVudCgpOyBhbmNlc3RvcjsgYW5jZXN0b3IgPSBhbmNlc3Rv
ci0+cGFyZW50KCkpIHsKKyAgICAgICAgaWYgKGlzPFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bFByb3h5Tm9kZT4oKmFuY2VzdG9yKSkgeworICAgICAgICAgICAgYXV0byYgb3ZlcmZsb3dQcm94
eU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxQcm94eU5vZGU+KCph
bmNlc3Rvcik7CisgICAgICAgICAgICBhdXRvIG92ZXJmbG93Tm9kZSA9IHNjcm9sbGluZ1RyZWUo
KS5ub2RlRm9ySUQob3ZlcmZsb3dQcm94eU5vZGUub3ZlcmZsb3dTY3JvbGxpbmdOb2RlSUQoKSk7
CisgICAgICAgICAgICBpZiAoIW92ZXJmbG93Tm9kZSkKKyAgICAgICAgICAgICAgICBicmVhazsK
KworICAgICAgICAgICAgcmV0dXJuIGNvbXB1dGVMYXllclBvc2l0aW9uRm9yU2Nyb2xsaW5nTm9k
ZSgqb3ZlcmZsb3dOb2RlKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpczxTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZT4oKmFuY2VzdG9yKSkKKyAgICAgICAgICAgIHJldHVybiBjb21wdXRl
TGF5ZXJQb3NpdGlvbkZvclNjcm9sbGluZ05vZGUoKmFuY2VzdG9yKTsKKworICAgICAgICBpZiAo
aXM8U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU+KCphbmNlc3RvcikpCisgICAgICAgICAgICBvZmZz
ZXRGcm9tU3RpY2t5QW5jZXN0b3JzICs9IGRvd25jYXN0PFNjcm9sbGluZ1RyZWVTdGlja3lOb2Rl
PigqYW5jZXN0b3IpLnNjcm9sbERlbHRhU2luY2VMYXN0Q29tbWl0KCk7CisKKyAgICAgICAgaWYg
KGlzPFNjcm9sbGluZ1RyZWVGaXhlZE5vZGU+KCphbmNlc3RvcikpIHsKKyAgICAgICAgICAgIC8v
IEZJWE1FOiBEbyB3ZSBuZWVkIHNjcm9sbGluZyB0cmVlIG5vZGVzIGF0IGFsbCBmb3IgbmVzdGVk
IGNhc2VzPworICAgICAgICAgICAgcmV0dXJuIG1fY29uc3RyYWludHMubGF5ZXJQb3NpdGlvbkF0
TGFzdExheW91dCgpOworICAgICAgICB9CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBtX2NvbnN0cmFpbnRzLmxheWVyUG9zaXRpb25BdExhc3RMYXlvdXQoKTsK
K30KKworRmxvYXRTaXplIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpzY3JvbGxEZWx0YVNpbmNl
TGFzdENvbW1pdCgpIGNvbnN0Cit7CisgICAgYXV0byBsYXllclBvc2l0aW9uID0gY29tcHV0ZUxh
eWVyUG9zaXRpb24oKTsKKyAgICByZXR1cm4gbGF5ZXJQb3NpdGlvbiAtIG1fY29uc3RyYWludHMu
bGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCgpOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVTdGlj
a3lOb2RlOjpkdW1wUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywgU2Nyb2xsaW5nU3RhdGVUcmVl
QXNUZXh0QmVoYXZpb3IgYmVoYXZpb3IpIGNvbnN0Cit7CisgICAgdHMgPDwgInN0aWNreSBub2Rl
IjsKKyAgICBTY3JvbGxpbmdUcmVlTm9kZTo6ZHVtcFByb3BlcnRpZXModHMsIGJlaGF2aW9yKTsK
KyAgICB0cy5kdW1wUHJvcGVydHkoInN0aWNreSBjb25zdHJhaW50cyIsIG1fY29uc3RyYWludHMp
OworICAgIGlmIChiZWhhdmlvciAmIFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9ySW5j
bHVkZUxheWVyUG9zaXRpb25zKQorICAgICAgICB0cy5kdW1wUHJvcGVydHkoImxheWVyIHRvcCBs
ZWZ0IiwgbGF5ZXJUb3BMZWZ0KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBVU0UoTklDT1NJQSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTdGlja3lOb2Rl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjllZmY5M2I0NjNiYTA1MGRjNGRkYTYyZjlmYTZiMjFkZTJmOWZhNGMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlU3RpY2t5Tm9kZS5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE5IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBk
aXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQKKyAqICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9MREVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCisKKyNpbmNsdWRlICJTY3JvbGxp
bmdDb25zdHJhaW50cy5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVOb2RlLmgiCisjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcm9sbGlu
Z1RyZWVTdGlja3lOb2RlIDogcHVibGljIFNjcm9sbGluZ1RyZWVOb2RlIHsKK3B1YmxpYzoKKyAg
ICB2aXJ0dWFsIH5TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSgpOworCisgICAgRmxvYXRTaXplIHNj
cm9sbERlbHRhU2luY2VMYXN0Q29tbWl0KCkgY29uc3Q7CisKK3Byb3RlY3RlZDoKKyAgICBTY3Jv
bGxpbmdUcmVlU3RpY2t5Tm9kZShTY3JvbGxpbmdUcmVlJiwgU2Nyb2xsaW5nTm9kZUlEKTsKKwor
ICAgIHZvaWQgY29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5v
ZGUmKSBvdmVycmlkZTsKKyAgICBGbG9hdFBvaW50IGNvbXB1dGVMYXllclBvc2l0aW9uKCkgY29u
c3Q7CisgICAgdm9pZCBkdW1wUHJvcGVydGllcyhXVEY6OlRleHRTdHJlYW0mLCBTY3JvbGxpbmdT
dGF0ZVRyZWVBc1RleHRCZWhhdmlvcikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICB2aXJ0dWFsIEZs
b2F0UG9pbnQgbGF5ZXJUb3BMZWZ0KCkgY29uc3QgPSAwOworCisgICAgU3RpY2t5UG9zaXRpb25W
aWV3cG9ydENvbnN0cmFpbnRzIG1fY29uc3RyYWludHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfU0NST0xMSU5HX05PREUoU2Nyb2xsaW5n
VHJlZVN0aWNreU5vZGUsIGlzU3RpY2t5Tm9kZSgpKQorCisjZW5kaWYgLy8gRU5BQkxFKEFTWU5D
X1NDUk9MTElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nv
Y29hL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLm1tCmluZGV4IDZhNmU3N2Q3NTVlNDNi
NmEzZWEzOGEzZTBkMzk5ZTFmOGQ5ZjhkY2QuLjJhZjM1OGZlN2ZmNWE1OTZiNjhjNmE4ZmE0NmUx
ZDczODlkYWIyOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nv
Y29hL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5tbQpAQCAtMzUsNyArMzUsNyBA
QAogI2ltcG9ydCAiU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlLmgiCiAjaW1w
b3J0ICJTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmgiCiAjaW1wb3J0ICJTY3Jv
bGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuaCIKLSNpbXBvcnQgIlNjcm9sbGluZ1RyZWVTdGlja3lO
b2RlLmgiCisjaW1wb3J0ICJTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUNvY29hLmgiCiAjaW1wb3J0
ICJXZWJDb3JlQ0FMYXllckV4dHJhcy5oIgogI2ltcG9ydCA8d3RmL3RleHQvVGV4dFN0cmVhbS5o
PgogCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6YXBwbHlM
YXllclBvc2l0aW9ucygpCiB7CiAgICAgYXV0byBjb21wdXRlTGF5ZXJQb3NpdGlvbiA9IFsmXSB7
CiAgICAgICAgIEZsb2F0U2l6ZSBvdmVyZmxvd1Njcm9sbERlbHRhOwotICAgICAgICBTY3JvbGxp
bmdUcmVlU3RpY2t5Tm9kZSogbGFzdFN0aWNreU5vZGUgPSBudWxscHRyOworICAgICAgICBTY3Jv
bGxpbmdUcmVlU3RpY2t5Tm9kZUNvY29hKiBsYXN0U3RpY2t5Tm9kZSA9IG51bGxwdHI7CiAgICAg
ICAgIGZvciAoYXV0byogYW5jZXN0b3IgPSBwYXJlbnQoKTsgYW5jZXN0b3I7IGFuY2VzdG9yID0g
YW5jZXN0b3ItPnBhcmVudCgpKSB7CiAgICAgICAgICAgICBpZiAoaXM8U2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZT4oKmFuY2VzdG9yKSkgewogICAgICAgICAgICAgICAgIC8vIEZpeGVk
IG5vZGVzIGFyZSBwb3NpdGlvbmVkIHJlbGF0aXZlIHRvIHRoZSBjb250YWluaW5nIGZyYW1lIHNj
cm9sbGluZyBub2RlLgpAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZpeGVk
Tm9kZTo6YXBwbHlMYXllclBvc2l0aW9ucygpCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IGlmIChpczxTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZT4oKmFuY2VzdG9yKSkgewotICAgICAgICAg
ICAgICAgIGF1dG8mIHN0aWNreU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZT4oKmFuY2VzdG9yKTsKKyAgICAgICAgICAgICAgICBhdXRvJiBzdGlja3lOb2RlID0gZG93bmNh
c3Q8U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVDb2NvYT4oKmFuY2VzdG9yKTsKICAgICAgICAgICAg
ICAgICBvdmVyZmxvd1Njcm9sbERlbHRhICs9IHN0aWNreU5vZGUuc2Nyb2xsRGVsdGFTaW5jZUxh
c3RDb21taXQoKTsKICAgICAgICAgICAgICAgICBsYXN0U3RpY2t5Tm9kZSA9ICZzdGlja3lOb2Rl
OwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3NzRjMzAxNTI4NTFlYzUwZGNiMTU1NGE0MmIy
MTkxNGQyMjM1MGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZVN0aWNr
eU5vZGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCi0KLSNpbmNsdWRlICJTY3Jv
bGxpbmdDb25zdHJhaW50cy5oIgotI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVOb2RlLmgiCi0jaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1PQkpDX0NMQVNTIENBTGF5ZXI7Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUgOiBwdWJsaWMgU2Ny
b2xsaW5nVHJlZU5vZGUgewotcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU+IGNyZWF0ZShTY3JvbGxpbmdUcmVlJiwgU2Nyb2xsaW5n
Tm9kZUlEKTsKLQotICAgIHZpcnR1YWwgflNjcm9sbGluZ1RyZWVTdGlja3lOb2RlKCk7Ci0KLSAg
ICBGbG9hdFNpemUgc2Nyb2xsRGVsdGFTaW5jZUxhc3RDb21taXQoKSBjb25zdDsKLQotICAgIENB
TGF5ZXIgKmxheWVyKCkgeyByZXR1cm4gbV9sYXllci5nZXQoKTsgfQotCi1wcml2YXRlOgotICAg
IFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlKFNjcm9sbGluZ1RyZWUmLCBTY3JvbGxpbmdOb2RlSUQp
OwotCi0gICAgdm9pZCBjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0
YXRlTm9kZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgYXBwbHlMYXllclBvc2l0aW9ucygpIG92ZXJy
aWRlOwotCi0gICAgRmxvYXRQb2ludCBjb21wdXRlTGF5ZXJQb3NpdGlvbigpIGNvbnN0OwotCi0g
ICAgdm9pZCBkdW1wUHJvcGVydGllcyhXVEY6OlRleHRTdHJlYW0mLCBTY3JvbGxpbmdTdGF0ZVRy
ZWVBc1RleHRCZWhhdmlvcikgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICBTdGlja3lQb3NpdGlvblZp
ZXdwb3J0Q29uc3RyYWludHMgbV9jb25zdHJhaW50czsKLSAgICBSZXRhaW5QdHI8Q0FMYXllcj4g
bV9sYXllcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19TQ1JPTExJTkdfTk9ERShTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSwgaXNTdGlja3lO
b2RlKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZVN0aWNreU5v
ZGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZS5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTU5M2ZlZGIzMzNj
NjlmODMxNTkzZGM3ZmM4NWRlOTNhM2FlNGIyMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb2NvYS9T
Y3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbQorKysgL2Rldi9udWxsCkBAIC0xLDE0NSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZS5oIgotCi0jaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKLQotI2ltcG9ydCAi
TG9nZ2luZy5oIgotI2ltcG9ydCAiU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlLmgiCi0jaW1wb3J0
ICJTY3JvbGxpbmdUcmVlLmgiCi0jaW1wb3J0ICJTY3JvbGxpbmdUcmVlRml4ZWROb2RlLmgiCi0j
aW1wb3J0ICJTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLmgiCi0jaW1wb3J0ICJTY3Jv
bGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxQcm94eU5vZGUuaCIKLSNpbXBvcnQgIlNjcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUuaCIKLSNpbXBvcnQgIldlYkNvcmVDQUxheWVyRXh0cmFz
LmgiCi0jaW1wb3J0IDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotUmVmPFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlPiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZTo6Y3JlYXRlKFNjcm9sbGluZ1RyZWUmIHNjcm9sbGluZ1RyZWUsIFNjcm9sbGluZ05vZGVJRCBu
b2RlSUQpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2Nyb2xsaW5nVHJlZVN0aWNreU5v
ZGUoc2Nyb2xsaW5nVHJlZSwgbm9kZUlEKSk7Ci19Ci0KLVNjcm9sbGluZ1RyZWVTdGlja3lOb2Rl
OjpTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZShTY3JvbGxpbmdUcmVlJiBzY3JvbGxpbmdUcmVlLCBT
Y3JvbGxpbmdOb2RlSUQgbm9kZUlEKQotICAgIDogU2Nyb2xsaW5nVHJlZU5vZGUoc2Nyb2xsaW5n
VHJlZSwgU2Nyb2xsaW5nTm9kZVR5cGU6OlN0aWNreSwgbm9kZUlEKQotewotICAgIHNjcm9sbGlu
Z1RyZWUuZml4ZWRPclN0aWNreU5vZGVBZGRlZCgpOwotfQotCi1TY3JvbGxpbmdUcmVlU3RpY2t5
Tm9kZTo6flNjcm9sbGluZ1RyZWVTdGlja3lOb2RlKCkKLXsKLSAgICBzY3JvbGxpbmdUcmVlKCku
Zml4ZWRPclN0aWNreU5vZGVSZW1vdmVkKCk7Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nVHJlZVN0aWNr
eU5vZGU6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2Rl
JiBzdGF0ZU5vZGUpCi17Ci0gICAgY29uc3QgU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlJiBzdGlj
a3lTdGF0ZU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGU+KHN0YXRlTm9k
ZSk7Ci0KLSAgICBpZiAoc3RpY2t5U3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxp
bmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpMYXllcikpCi0gICAgICAgIG1fbGF5ZXIgPSBzdGF0aWNf
Y2FzdDxDQUxheWVyKj4oc3RpY2t5U3RhdGVOb2RlLmxheWVyKCkpOwotCi0gICAgaWYgKHN0YXRl
Tm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Vmll
d3BvcnRDb25zdHJhaW50cykpCi0gICAgICAgIG1fY29uc3RyYWludHMgPSBzdGlja3lTdGF0ZU5v
ZGUudmlld3BvcnRDb25zdHJhaW50cygpOwotfQotCi1GbG9hdFBvaW50IFNjcm9sbGluZ1RyZWVT
dGlja3lOb2RlOjpjb21wdXRlTGF5ZXJQb3NpdGlvbigpIGNvbnN0Ci17Ci0gICAgRmxvYXRTaXpl
IG9mZnNldEZyb21TdGlja3lBbmNlc3RvcnM7Ci0gICAgYXV0byBjb21wdXRlTGF5ZXJQb3NpdGlv
bkZvclNjcm9sbGluZ05vZGUgPSBbJl0oU2Nyb2xsaW5nVHJlZU5vZGUmIHNjcm9sbGluZ05vZGUp
IHsKLSAgICAgICAgRmxvYXRSZWN0IGNvbnN0cmFpbmluZ1JlY3Q7Ci0gICAgICAgIGlmIChpczxT
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPihzY3JvbGxpbmdOb2RlKSkgewotICAgICAg
ICAgICAgYXV0byYgZnJhbWVTY3JvbGxpbmdOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZT4oc2Nyb2xsaW5nTm9kZSk7Ci0gICAgICAgICAgICBjb25zdHJhaW5p
bmdSZWN0ID0gZnJhbWVTY3JvbGxpbmdOb2RlLmxheW91dFZpZXdwb3J0KCk7Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBhdXRvJiBvdmVyZmxvd1Njcm9sbGluZ05vZGUgPSBkb3duY2Fz
dDxTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlPihzY3JvbGxpbmdOb2RlKTsKLSAg
ICAgICAgICAgIGNvbnN0cmFpbmluZ1JlY3QgPSBtX2NvbnN0cmFpbnRzLmNvbnN0cmFpbmluZ1Jl
Y3RBdExhc3RMYXlvdXQoKTsKLSAgICAgICAgICAgIGNvbnN0cmFpbmluZ1JlY3QubW92ZShvdmVy
Zmxvd1Njcm9sbGluZ05vZGUuc2Nyb2xsRGVsdGFTaW5jZUxhc3RDb21taXQoKSk7Ci0gICAgICAg
IH0KLSAgICAgICAgY29uc3RyYWluaW5nUmVjdC5tb3ZlKC1vZmZzZXRGcm9tU3RpY2t5QW5jZXN0
b3JzKTsKLSAgICAgICAgcmV0dXJuIG1fY29uc3RyYWludHMubGF5ZXJQb3NpdGlvbkZvckNvbnN0
cmFpbmluZ1JlY3QoY29uc3RyYWluaW5nUmVjdCk7Ci0gICAgfTsKLQotICAgIGZvciAoYXV0byog
YW5jZXN0b3IgPSBwYXJlbnQoKTsgYW5jZXN0b3I7IGFuY2VzdG9yID0gYW5jZXN0b3ItPnBhcmVu
dCgpKSB7Ci0gICAgICAgIGlmIChpczxTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxQcm94eU5v
ZGU+KCphbmNlc3RvcikpIHsKLSAgICAgICAgICAgIGF1dG8mIG92ZXJmbG93UHJveHlOb2RlID0g
ZG93bmNhc3Q8U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlPigqYW5jZXN0b3Ip
OwotICAgICAgICAgICAgYXV0byBvdmVyZmxvd05vZGUgPSBzY3JvbGxpbmdUcmVlKCkubm9kZUZv
cklEKG92ZXJmbG93UHJveHlOb2RlLm92ZXJmbG93U2Nyb2xsaW5nTm9kZUlEKCkpOwotICAgICAg
ICAgICAgaWYgKCFvdmVyZmxvd05vZGUpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAg
ICAgICAgIHJldHVybiBjb21wdXRlTGF5ZXJQb3NpdGlvbkZvclNjcm9sbGluZ05vZGUoKm92ZXJm
bG93Tm9kZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoaXM8U2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGU+KCphbmNlc3RvcikpCi0gICAgICAgICAgICByZXR1cm4gY29tcHV0ZUxheWVyUG9z
aXRpb25Gb3JTY3JvbGxpbmdOb2RlKCphbmNlc3Rvcik7Ci0KLSAgICAgICAgaWYgKGlzPFNjcm9s
bGluZ1RyZWVTdGlja3lOb2RlPigqYW5jZXN0b3IpKQotICAgICAgICAgICAgb2Zmc2V0RnJvbVN0
aWNreUFuY2VzdG9ycyArPSBkb3duY2FzdDxTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZT4oKmFuY2Vz
dG9yKS5zY3JvbGxEZWx0YVNpbmNlTGFzdENvbW1pdCgpOwotCi0gICAgICAgIGlmIChpczxTY3Jv
bGxpbmdUcmVlRml4ZWROb2RlPigqYW5jZXN0b3IpKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTog
RG8gd2UgbmVlZCBzY3JvbGxpbmcgdHJlZSBub2RlcyBhdCBhbGwgZm9yIG5lc3RlZCBjYXNlcz8K
LSAgICAgICAgICAgIHJldHVybiBtX2NvbnN0cmFpbnRzLmxheWVyUG9zaXRpb25BdExhc3RMYXlv
dXQoKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gbV9jb25zdHJhaW50cy5sYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0KCk7Ci19Ci0KLXZv
aWQgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OmFwcGx5TGF5ZXJQb3NpdGlvbnMoKQotewotICAg
IGF1dG8gbGF5ZXJQb3NpdGlvbiA9IGNvbXB1dGVMYXllclBvc2l0aW9uKCk7Ci0KLSAgICBMT0df
V0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwgIlNjcm9sbGluZ1RyZWVTdGlja3lOb2Rl
ICIgPDwgc2Nyb2xsaW5nTm9kZUlEKCkgPDwgIiBjb25zdHJhaW5pbmdSZWN0QXRMYXN0TGF5b3V0
ICIgPDwgbV9jb25zdHJhaW50cy5jb25zdHJhaW5pbmdSZWN0QXRMYXN0TGF5b3V0KCkgPDwgIiBs
YXN0IGxheWVyIHBvcyAiIDw8IG1fY29uc3RyYWludHMubGF5ZXJQb3NpdGlvbkF0TGFzdExheW91
dCgpIDw8ICIgbGF5ZXJQb3NpdGlvbiAiIDw8IGxheWVyUG9zaXRpb24pOwotCi0gICAgW21fbGF5
ZXIgX3dlYl9zZXRMYXllclRvcExlZnRQb3NpdGlvbjpsYXllclBvc2l0aW9uIC0gbV9jb25zdHJh
aW50cy5hbGlnbm1lbnRPZmZzZXQoKV07Ci19Ci0KLUZsb2F0U2l6ZSBTY3JvbGxpbmdUcmVlU3Rp
Y2t5Tm9kZTo6c2Nyb2xsRGVsdGFTaW5jZUxhc3RDb21taXQoKSBjb25zdAotewotICAgIGF1dG8g
bGF5ZXJQb3NpdGlvbiA9IGNvbXB1dGVMYXllclBvc2l0aW9uKCk7Ci0gICAgcmV0dXJuIGxheWVy
UG9zaXRpb24gLSBtX2NvbnN0cmFpbnRzLmxheWVyUG9zaXRpb25BdExhc3RMYXlvdXQoKTsKLX0K
LQotdm9pZCBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6ZHVtcFByb3BlcnRpZXMoVGV4dFN0cmVh
bSYgdHMsIFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9yIGJlaGF2aW9yKSBjb25zdAot
ewotICAgIHRzIDw8ICJzdGlja3kgbm9kZSI7Ci0KLSAgICBTY3JvbGxpbmdUcmVlTm9kZTo6ZHVt
cFByb3BlcnRpZXModHMsIGJlaGF2aW9yKTsKLSAgICB0cy5kdW1wUHJvcGVydHkoInN0aWNreSBj
b25zdHJhaW50cyIsIG1fY29uc3RyYWludHMpOwotCi0gICAgaWYgKGJlaGF2aW9yICYgU2Nyb2xs
aW5nU3RhdGVUcmVlQXNUZXh0QmVoYXZpb3JJbmNsdWRlTGF5ZXJQb3NpdGlvbnMpIHsKLSAgICAg
ICAgRmxvYXRSZWN0IGxheWVyQm91bmRzID0gW21fbGF5ZXIgYm91bmRzXTsKLSAgICAgICAgRmxv
YXRQb2ludCBhbmNob3JQb2ludCA9IFttX2xheWVyIGFuY2hvclBvaW50XTsKLSAgICAgICAgRmxv
YXRQb2ludCBwb3NpdGlvbiA9IFttX2xheWVyIHBvc2l0aW9uXTsKLSAgICAgICAgRmxvYXRQb2lu
dCBsYXllclRvcExlZnQgPSBwb3NpdGlvbiAtIHRvRmxvYXRTaXplKGFuY2hvclBvaW50KSAqIGxh
eWVyQm91bmRzLnNpemUoKSArIG1fY29uc3RyYWludHMuYWxpZ25tZW50T2Zmc2V0KCk7Ci0gICAg
ICAgIHRzLmR1bXBQcm9wZXJ0eSgibGF5ZXIgdG9wIGxlZnQiLCBsYXllclRvcExlZnQpOwotICAg
IH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKEFTWU5D
X1NDUk9MTElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nv
Y29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlQ29jb2EuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hZjk4Nzk4YWNlYjVmNDNkNmVlZTZmYWQ3NWRjMDQwMjExYjQ2OTEyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZVN0
aWNreU5vZGVDb2NvYS5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCisKKyNpbmNsdWRlICJTY3JvbGxpbmdD
b25zdHJhaW50cy5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLmgiCisjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX0NMQVNTIENBTGF5ZXI7CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVDb2NvYSA6IHB1Ymxp
YyBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZjxTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUNvY29hPiBjcmVhdGUoU2Nyb2xsaW5n
VHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7CisKKyAgICB2aXJ0dWFsIH5TY3JvbGxpbmdUcmVlU3Rp
Y2t5Tm9kZUNvY29hKCkgPSBkZWZhdWx0OworCisgICAgQ0FMYXllciAqbGF5ZXIoKSB7IHJldHVy
biBtX2xheWVyLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgU2Nyb2xsaW5nVHJlZVN0aWNreU5v
ZGVDb2NvYShTY3JvbGxpbmdUcmVlJiwgU2Nyb2xsaW5nTm9kZUlEKTsKKworICAgIHZvaWQgY29t
bWl0U3RhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGFwcGx5TGF5ZXJQb3NpdGlvbnMoKSBvdmVycmlkZTsKKyAgICBGbG9hdFBv
aW50IGxheWVyVG9wTGVmdCgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgUmV0YWluUHRyPENBTGF5
ZXI+IG1fbGF5ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfU0NST0xMSU5HX05PREUoU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVDb2NvYSwg
aXNTdGlja3lOb2RlKCkpCisKKyNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJl
ZVN0aWNreU5vZGVDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29h
L1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlQ29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjk4ZmU5ZjAwMjBl
YmU1MTZhOWQ2OTQwZGVlZTVlYzk4Y2E1ZmU3MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlQ29jb2Eu
bW0KQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2lt
cG9ydCAiU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVDb2NvYS5oIgorCisjaWYgRU5BQkxFKEFTWU5D
X1NDUk9MTElORykKKworI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCAiU2Nyb2xsaW5nU3Rh
dGVTdGlja3lOb2RlLmgiCisjaW1wb3J0ICJTY3JvbGxpbmdUcmVlLmgiCisjaW1wb3J0ICJXZWJD
b3JlQ0FMYXllckV4dHJhcy5oIgorI2ltcG9ydCA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUNvY29hPiBT
Y3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUNvY29hOjpjcmVhdGUoU2Nyb2xsaW5nVHJlZSYgc2Nyb2xs
aW5nVHJlZSwgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUNvY29hKHNjcm9sbGluZ1RyZWUsIG5vZGVJRCkp
OworfQorCitTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUNvY29hOjpTY3JvbGxpbmdUcmVlU3RpY2t5
Tm9kZUNvY29hKFNjcm9sbGluZ1RyZWUmIHNjcm9sbGluZ1RyZWUsIFNjcm9sbGluZ05vZGVJRCBu
b2RlSUQpCisgICAgOiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZShzY3JvbGxpbmdUcmVlLCBub2Rl
SUQpCit7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVDb2NvYTo6Y29tbWl0U3Rh
dGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmIHN0YXRlTm9kZSkKK3sK
KyAgICBjb25zdCBTY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGUmIHN0aWNreVN0YXRlTm9kZSA9IGRv
d25jYXN0PFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZT4oc3RhdGVOb2RlKTsKKworICAgIGlmIChz
dGlja3lTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJv
cGVydHk6OkxheWVyKSkKKyAgICAgICAgbV9sYXllciA9IHN0YXRpY19jYXN0PENBTGF5ZXIqPihz
dGlja3lTdGF0ZU5vZGUubGF5ZXIoKSk7CisKKyAgICBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6
Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihzdGF0ZU5vZGUpOworfQorCit2b2lkIFNjcm9sbGlu
Z1RyZWVTdGlja3lOb2RlQ29jb2E6OmFwcGx5TGF5ZXJQb3NpdGlvbnMoKQoreworICAgIGF1dG8g
bGF5ZXJQb3NpdGlvbiA9IGNvbXB1dGVMYXllclBvc2l0aW9uKCk7CisKKyAgICBMT0dfV0lUSF9T
VFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwgIlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlQ29jb2Eg
IiA8PCBzY3JvbGxpbmdOb2RlSUQoKSA8PCAiIGNvbnN0cmFpbmluZ1JlY3RBdExhc3RMYXlvdXQg
IiA8PCBtX2NvbnN0cmFpbnRzLmNvbnN0cmFpbmluZ1JlY3RBdExhc3RMYXlvdXQoKSA8PCAiIGxh
c3QgbGF5ZXIgcG9zICIgPDwgbV9jb25zdHJhaW50cy5sYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0
KCkgPDwgIiBsYXllclBvc2l0aW9uICIgPDwgbGF5ZXJQb3NpdGlvbik7CisKKyAgICBbbV9sYXll
ciBfd2ViX3NldExheWVyVG9wTGVmdFBvc2l0aW9uOmxheWVyUG9zaXRpb24gLSBtX2NvbnN0cmFp
bnRzLmFsaWdubWVudE9mZnNldCgpXTsKK30KKworRmxvYXRQb2ludCBTY3JvbGxpbmdUcmVlU3Rp
Y2t5Tm9kZUNvY29hOjpsYXllclRvcExlZnQoKSBjb25zdAoreworICAgIEZsb2F0UmVjdCBsYXll
ckJvdW5kcyA9IFttX2xheWVyIGJvdW5kc107CisgICAgRmxvYXRQb2ludCBhbmNob3JQb2ludCA9
IFttX2xheWVyIGFuY2hvclBvaW50XTsKKyAgICBGbG9hdFBvaW50IHBvc2l0aW9uID0gW21fbGF5
ZXIgcG9zaXRpb25dOworICAgIHJldHVybiBwb3NpdGlvbiAtIHRvRmxvYXRTaXplKGFuY2hvclBv
aW50KSAqIGxheWVyQm91bmRzLnNpemUoKSArIG1fY29uc3RyYWludHMuYWxpZ25tZW50T2Zmc2V0
KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBU1lO
Q19TQ1JPTExJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9t
YWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW0KaW5kZXggMGJjYmY2OTM2YzAyOTI2
YjQ3YTEzNDJiNTdjMDY5MTUyYTkzYjYwZi4uYzYzOTc3MmI4MDU4ZThmNTQwNzEyMDQ3YTkxNmQ4
YTAxMjBlZGYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFj
L1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5tbQpAQCAtNDAsNyArNDAsNyBAQAog
I2ltcG9ydCAiU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5oIgogI2ltcG9ydCAiU2Nyb2xsaW5nVHJl
ZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5oIgogI2ltcG9ydCAiU2Nyb2xsaW5nVHJlZU1hYy5oIgot
I2ltcG9ydCAiU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaCIKKyNpbXBvcnQgIlNjcm9sbGluZ1Ry
ZWVTdGlja3lOb2RlQ29jb2EuaCIKICNpbXBvcnQgIlRpbGVkQmFja2luZy5oIgogI2ltcG9ydCA8
d3RmL01haW5UaHJlYWQuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5tbQppbmRleCAwMTY0ZDUzMjQ2MjQxY2JhZjE4NzVh
ZWU3OTk2YjFlNTMyOTU4MmYyLi4zNWZjZTFhMmQwMDQwYTcwNTljMzhmMmI4OTE4MDJiMTY1ZDM3
ZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xs
aW5nVHJlZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Ny
b2xsaW5nVHJlZU1hYy5tbQpAQCAtMzQsNyArMzQsNyBAQAogI2ltcG9ydCAiU2Nyb2xsaW5nVHJl
ZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlLmgiCiAjaW1wb3J0ICJTY3JvbGxpbmdUcmVlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlTWFjLmgiCiAjaW1wb3J0ICJTY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5v
ZGUuaCIKLSNpbXBvcnQgIlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLmgiCisjaW1wb3J0ICJTY3Jv
bGxpbmdUcmVlU3RpY2t5Tm9kZUNvY29hLmgiCiAjaW1wb3J0ICJXZWJDb3JlQ0FMYXllckV4dHJh
cy5oIgogI2ltcG9ydCAiV2ViTGF5ZXIuaCIKICNpbXBvcnQgIldoZWVsRXZlbnRUZXN0TW9uaXRv
ci5oIgpAQCAtNjksNyArNjksNyBAQCBSZWY8U2Nyb2xsaW5nVHJlZU5vZGU+IFNjcm9sbGluZ1Ry
ZWVNYWM6OmNyZWF0ZVNjcm9sbGluZ1RyZWVOb2RlKFNjcm9sbGluZ05vZGVUeQogICAgIGNhc2Ug
U2Nyb2xsaW5nTm9kZVR5cGU6OkZpeGVkOgogICAgICAgICByZXR1cm4gU2Nyb2xsaW5nVHJlZUZp
eGVkTm9kZTo6Y3JlYXRlKCp0aGlzLCBub2RlSUQpOwogICAgIGNhc2UgU2Nyb2xsaW5nTm9kZVR5
cGU6OlN0aWNreToKLSAgICAgICAgcmV0dXJuIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpjcmVh
dGUoKnRoaXMsIG5vZGVJRCk7CisgICAgICAgIHJldHVybiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZUNvY29hOjpjcmVhdGUoKnRoaXMsIG5vZGVJRCk7CiAgICAgY2FzZSBTY3JvbGxpbmdOb2RlVHlw
ZTo6UG9zaXRpb25lZDoKICAgICAgICAgcmV0dXJuIFNjcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9k
ZTo6Y3JlYXRlKCp0aGlzLCBub2RlSUQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU5pY29zaWEuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlTmljb3NpYS5j
cHAKaW5kZXggMmQxNGU3OTk2NzE0OTNiOTk5YjA3ZjNjMTBkZmMzMmMwZGJiY2ZiMi4uMDc1OWMz
MjRmNmMyMzc1MWUyNmFjYmVlZWU2NWU4MmQ2MjUzZmVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlTmljb3NpYS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlTmlj
b3NpYS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlICJTY3JvbGxpbmdUcmVlT3ZlcmZs
b3dTY3JvbGxQcm94eU5vZGUuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlTmljb3NpYS5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9k
ZS5oIgotI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLmgiCisjaW5jbHVkZSAiU2Ny
b2xsaW5nVHJlZVN0aWNreU5vZGVOaWNvc2lhLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtNjcsNyArNjcsNyBAQCBSZWY8U2Nyb2xsaW5nVHJlZU5vZGU+IFNjcm9sbGluZ1RyZWVOaWNv
c2lhOjpjcmVhdGVTY3JvbGxpbmdUcmVlTm9kZShTY3JvbGxpbmdObwogICAgIGNhc2UgU2Nyb2xs
aW5nTm9kZVR5cGU6OkZpeGVkOgogICAgICAgICByZXR1cm4gU2Nyb2xsaW5nVHJlZUZpeGVkTm9k
ZTo6Y3JlYXRlKCp0aGlzLCBub2RlSUQpOwogICAgIGNhc2UgU2Nyb2xsaW5nTm9kZVR5cGU6OlN0
aWNreToKLSAgICAgICAgcmV0dXJuIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpjcmVhdGUoKnRo
aXMsIG5vZGVJRCk7CisgICAgICAgIHJldHVybiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZU5pY29z
aWE6OmNyZWF0ZSgqdGhpcywgbm9kZUlEKTsKICAgICBjYXNlIFNjcm9sbGluZ05vZGVUeXBlOjpQ
b3NpdGlvbmVkOgogICAgICAgICByZXR1cm4gU2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlOjpj
cmVhdGUoKnRoaXMsIG5vZGVJRCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2Rl
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTI3ZWVjOWE2OGU2YzI1NTEwNTQ2
OGNkMjAwNDQ5Yjg5YWJlYThlYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGlu
Z1RyZWVTdGlja3lOb2RlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2MiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
IENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0g
KiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZwotICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCi0gKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLSAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVTdGlj
a3lOb2RlLmgiCi0KLSNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBVU0UoTklDT1NJQSkK
LQotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJOaWNvc2lhUGxhdGZvcm1MYXllci5o
IgotI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5oIgotI2luY2x1ZGUgIlNjcm9s
bGluZ1RyZWUuaCIKLSNpbmNsdWRlICJTY3JvbGxpbmdUcmVlRml4ZWROb2RlLmgiCi0jaW5jbHVk
ZSAiU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5oIgotI2luY2x1ZGUgIlNjcm9sbGlu
Z1RyZWVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZS5oIgotI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVP
dmVyZmxvd1Njcm9sbGluZ05vZGUuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmPFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlPiBT
Y3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6Y3JlYXRlKFNjcm9sbGluZ1RyZWUmIHNjcm9sbGluZ1Ry
ZWUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUoc2Nyb2xsaW5nVHJlZSwgbm9kZUlEKSk7Ci19Ci0KLVNj
cm9sbGluZ1RyZWVTdGlja3lOb2RlOjpTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZShTY3JvbGxpbmdU
cmVlJiBzY3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQotICAgIDogU2Nyb2xs
aW5nVHJlZU5vZGUoc2Nyb2xsaW5nVHJlZSwgU2Nyb2xsaW5nTm9kZVR5cGU6OlN0aWNreSwgbm9k
ZUlEKQotewotICAgIHNjcm9sbGluZ1RyZWUuZml4ZWRPclN0aWNreU5vZGVBZGRlZCgpOwotfQot
Ci1TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6flNjcm9sbGluZ1RyZWVTdGlja3lOb2RlKCkKLXsK
LSAgICBzY3JvbGxpbmdUcmVlKCkuZml4ZWRPclN0aWNreU5vZGVSZW1vdmVkKCk7Ci19Ci0KLXZv
aWQgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29u
c3QgU2Nyb2xsaW5nU3RhdGVOb2RlJiBzdGF0ZU5vZGUpCi17Ci0gICAgYXV0byYgc3RpY2t5U3Rh
dGVOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlPihzdGF0ZU5vZGUpOwot
Ci0gICAgaWYgKHN0aWNreVN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3Rh
dGVOb2RlOjpQcm9wZXJ0eTo6TGF5ZXIpKSB7Ci0gICAgICAgIGF1dG8qIGxheWVyID0gc3RhdGlj
X2Nhc3Q8Tmljb3NpYTo6UGxhdGZvcm1MYXllcio+KHN0aWNreVN0YXRlTm9kZS5sYXllcigpKTsK
LSAgICAgICAgbV9sYXllciA9IGRvd25jYXN0PE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+KGxh
eWVyKTsKLSAgICB9Ci0KLSAgICBpZiAoc3RpY2t5U3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpWaWV3cG9ydENvbnN0cmFpbnRzKSkKLSAg
ICAgICAgbV9jb25zdHJhaW50cyA9IHN0aWNreVN0YXRlTm9kZS52aWV3cG9ydENvbnN0cmFpbnRz
KCk7Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OmFwcGx5TGF5ZXJQb3NpdGlv
bnMoKQotewotICAgIGF1dG8gbGF5ZXJQb3NpdGlvbiA9IGNvbXB1dGVMYXllclBvc2l0aW9uKCk7
Ci0KLSAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwgIlNjcm9sbGluZ1Ry
ZWVTdGlja3lOb2RlICIgPDwgc2Nyb2xsaW5nTm9kZUlEKCkgPDwgIiBjb25zdHJhaW5pbmdSZWN0
QXRMYXN0TGF5b3V0ICIgPDwgbV9jb25zdHJhaW50cy5jb25zdHJhaW5pbmdSZWN0QXRMYXN0TGF5
b3V0KCkgPDwgIiBsYXN0IGxheWVyIHBvcyAiIDw8IG1fY29uc3RyYWludHMubGF5ZXJQb3NpdGlv
bkF0TGFzdExheW91dCgpIDw8ICIgbGF5ZXJQb3NpdGlvbiAiIDw8IGxheWVyUG9zaXRpb24pOwot
Ci0gICAgbGF5ZXJQb3NpdGlvbiAtPSBtX2NvbnN0cmFpbnRzLmFsaWdubWVudE9mZnNldCgpOwot
Ci0gICAgQVNTRVJUKG1fbGF5ZXIpOwotICAgIG1fbGF5ZXItPnVwZGF0ZVN0YXRlKAotICAgICAg
ICBbJmxheWVyUG9zaXRpb25dKE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI6OkxheWVyU3RhdGUm
IHN0YXRlKQotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0ZS5wb3NpdGlvbiA9IGxheWVyUG9z
aXRpb247Ci0gICAgICAgICAgICBzdGF0ZS5kZWx0YS5wb3NpdGlvbkNoYW5nZWQgPSB0cnVlOwot
ICAgICAgICB9KTsKLX0KLQotdm9pZCBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6ZHVtcFByb3Bl
cnRpZXMoVGV4dFN0cmVhbSYgdHMsIFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9yIGJl
aGF2aW9yKSBjb25zdAotewotICAgIHRzIDw8ICJzdGlja3kgbm9kZSI7Ci0KLSAgICBTY3JvbGxp
bmdUcmVlTm9kZTo6ZHVtcFByb3BlcnRpZXModHMsIGJlaGF2aW9yKTsKLSAgICB0cy5kdW1wUHJv
cGVydHkoInN0aWNreSBjb25zdHJhaW50cyIsIG1fY29uc3RyYWludHMpOwotCi0gICAgaWYgKGJl
aGF2aW9yICYgU2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0QmVoYXZpb3JJbmNsdWRlTGF5ZXJQb3Np
dGlvbnMpIHsKLSAgICAgICAgRmxvYXRQb2ludCBsYXllclRvcExlZnQ7Ci0gICAgICAgIEFTU0VS
VChtX2xheWVyKTsKLSAgICAgICAgbV9sYXllci0+YWNjZXNzQ29tbWl0dGVkKAotICAgICAgICAg
ICAgW3RoaXMsICZsYXllclRvcExlZnRdKE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI6OkxheWVy
U3RhdGUmIHN0YXRlKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGxheWVyVG9wTGVm
dCA9IHN0YXRlLnBvc2l0aW9uIC0gdG9GbG9hdFNpemUoc3RhdGUuYW5jaG9yUG9pbnQueHkoKSkg
KiBzdGF0ZS5zaXplICsgbV9jb25zdHJhaW50cy5hbGlnbm1lbnRPZmZzZXQoKTsKLSAgICAgICAg
ICAgIH0pOwotCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgibGF5ZXIgdG9wIGxlZnQiLCBsYXll
clRvcExlZnQpOwotICAgIH0KLX0KLQotRmxvYXRQb2ludCBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZTo6Y29tcHV0ZUxheWVyUG9zaXRpb24oKSBjb25zdAotewotICAgIEZsb2F0U2l6ZSBvZmZzZXRG
cm9tU3RpY2t5QW5jZXN0b3JzOwotICAgIGF1dG8gY29tcHV0ZUxheWVyUG9zaXRpb25Gb3JTY3Jv
bGxpbmdOb2RlID0gWyZdKFNjcm9sbGluZ1RyZWVOb2RlJiBzY3JvbGxpbmdOb2RlKSB7Ci0gICAg
ICAgIEZsb2F0UmVjdCBjb25zdHJhaW5pbmdSZWN0OwotICAgICAgICBpZiAoaXM8U2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZT4oc2Nyb2xsaW5nTm9kZSkpIHsKLSAgICAgICAgICAgIGF1
dG8mIGZyYW1lU2Nyb2xsaW5nTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGU+KHNjcm9sbGluZ05vZGUpOwotICAgICAgICAgICAgY29uc3RyYWluaW5nUmVjdCA9
IGZyYW1lU2Nyb2xsaW5nTm9kZS5sYXlvdXRWaWV3cG9ydCgpOwotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgYXV0byYgb3ZlcmZsb3dTY3JvbGxpbmdOb2RlID0gZG93bmNhc3Q8U2Nyb2xs
aW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZT4oc2Nyb2xsaW5nTm9kZSk7Ci0gICAgICAgICAg
ICBjb25zdHJhaW5pbmdSZWN0ID0gbV9jb25zdHJhaW50cy5jb25zdHJhaW5pbmdSZWN0QXRMYXN0
TGF5b3V0KCk7Ci0gICAgICAgICAgICBjb25zdHJhaW5pbmdSZWN0Lm1vdmUob3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlLnNjcm9sbERlbHRhU2luY2VMYXN0Q29tbWl0KCkpOwotICAgICAgICB9Ci0gICAg
ICAgIGNvbnN0cmFpbmluZ1JlY3QubW92ZSgtb2Zmc2V0RnJvbVN0aWNreUFuY2VzdG9ycyk7Ci0g
ICAgICAgIHJldHVybiBtX2NvbnN0cmFpbnRzLmxheWVyUG9zaXRpb25Gb3JDb25zdHJhaW5pbmdS
ZWN0KGNvbnN0cmFpbmluZ1JlY3QpOwotICAgIH07Ci0KLSAgICBmb3IgKGF1dG8qIGFuY2VzdG9y
ID0gcGFyZW50KCk7IGFuY2VzdG9yOyBhbmNlc3RvciA9IGFuY2VzdG9yLT5wYXJlbnQoKSkgewot
ICAgICAgICBpZiAoaXM8U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlPigqYW5j
ZXN0b3IpKSB7Ci0gICAgICAgICAgICBhdXRvJiBvdmVyZmxvd1Byb3h5Tm9kZSA9IGRvd25jYXN0
PFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZT4oKmFuY2VzdG9yKTsKLSAgICAg
ICAgICAgIGF1dG8gb3ZlcmZsb3dOb2RlID0gc2Nyb2xsaW5nVHJlZSgpLm5vZGVGb3JJRChvdmVy
Zmxvd1Byb3h5Tm9kZS5vdmVyZmxvd1Njcm9sbGluZ05vZGVJRCgpKTsKLSAgICAgICAgICAgIGlm
ICghb3ZlcmZsb3dOb2RlKQotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICBy
ZXR1cm4gY29tcHV0ZUxheWVyUG9zaXRpb25Gb3JTY3JvbGxpbmdOb2RlKCpvdmVyZmxvd05vZGUp
OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGlzPFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
PigqYW5jZXN0b3IpKQotICAgICAgICAgICAgcmV0dXJuIGNvbXB1dGVMYXllclBvc2l0aW9uRm9y
U2Nyb2xsaW5nTm9kZSgqYW5jZXN0b3IpOwotCi0gICAgICAgIGlmIChpczxTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZT4oKmFuY2VzdG9yKSkKLSAgICAgICAgICAgIG9mZnNldEZyb21TdGlja3lBbmNl
c3RvcnMgKz0gZG93bmNhc3Q8U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU+KCphbmNlc3Rvcikuc2Ny
b2xsRGVsdGFTaW5jZUxhc3RDb21taXQoKTsKLQotICAgICAgICBpZiAoaXM8U2Nyb2xsaW5nVHJl
ZUZpeGVkTm9kZT4oKmFuY2VzdG9yKSkgewotICAgICAgICAgICAgLy8gRklYTUU6IERvIHdlIG5l
ZWQgc2Nyb2xsaW5nIHRyZWUgbm9kZXMgYXQgYWxsIGZvciBuZXN0ZWQgY2FzZXM/Ci0gICAgICAg
ICAgICByZXR1cm4gbV9jb25zdHJhaW50cy5sYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0KCk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIG1f
Y29uc3RyYWludHMubGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCgpOwotfQotCi1GbG9hdFNpemUg
U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OnNjcm9sbERlbHRhU2luY2VMYXN0Q29tbWl0KCkgY29u
c3QKLXsKLSAgICBhdXRvIGxheWVyUG9zaXRpb24gPSBjb21wdXRlTGF5ZXJQb3NpdGlvbigpOwot
ICAgIHJldHVybiBsYXllclBvc2l0aW9uIC0gbV9jb25zdHJhaW50cy5sYXllclBvc2l0aW9uQXRM
YXN0TGF5b3V0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFVTRShOSUNPU0lBKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3Rp
Y2t5Tm9kZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMDhmOWRmNjIwY2NmYzEx
NjE2ODEwZDZkZDJiNDczZWQ0ODFhZmQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Ny
b2xsaW5nVHJlZVN0aWNreU5vZGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKLSAqICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYm
IFVTRShOSUNPU0lBKQotCi0jaW5jbHVkZSAiU2Nyb2xsaW5nQ29uc3RyYWludHMuaCIKLSNpbmNs
dWRlICJTY3JvbGxpbmdUcmVlTm9kZS5oIgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFt
ZXNwYWNlIE5pY29zaWEgewotY2xhc3MgQ29tcG9zaXRpb25MYXllcjsKLX0KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1jbGFzcyBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSBmaW5hbCA6IHB1Ymxp
YyBTY3JvbGxpbmdUcmVlTm9kZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTY3JvbGxpbmdU
cmVlU3RpY2t5Tm9kZT4gY3JlYXRlKFNjcm9sbGluZ1RyZWUmLCBTY3JvbGxpbmdOb2RlSUQpOwot
ICAgIHZpcnR1YWwgflNjcm9sbGluZ1RyZWVTdGlja3lOb2RlKCk7Ci0KLXByaXZhdGU6Ci0gICAg
U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUoU2Nyb2xsaW5nVHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7
Ci0KLSAgICB2b2lkIGNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3Rh
dGVOb2RlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhcHBseUxheWVyUG9zaXRpb25zKCkgb3ZlcnJp
ZGU7Ci0KLSAgICB2b2lkIGR1bXBQcm9wZXJ0aWVzKFdURjo6VGV4dFN0cmVhbSYsIFNjcm9sbGlu
Z1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9yKSBjb25zdCBvdmVycmlkZTsKLQotICAgIEZsb2F0UG9p
bnQgY29tcHV0ZUxheWVyUG9zaXRpb24oKSBjb25zdDsKLSAgICBGbG9hdFNpemUgc2Nyb2xsRGVs
dGFTaW5jZUxhc3RDb21taXQoKSBjb25zdDsKLQotICAgIFN0aWNreVBvc2l0aW9uVmlld3BvcnRD
b25zdHJhaW50cyBtX2NvbnN0cmFpbnRzOwotICAgIFJlZlB0cjxOaWNvc2lhOjpDb21wb3NpdGlv
bkxheWVyPiBtX2xheWVyOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi1TUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX1NDUk9MTElOR19OT0RFKFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLCBp
c1N0aWNreU5vZGUoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFVT
RShOSUNPU0lBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZU5pY29zaWEuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZU5pY29zaWEuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjBjMzIwOTM5ZmUyMWJhMzAxOGYxMThiYTZiZmUwZTUzZWQxZDY2MmUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Nj
cm9sbGluZ1RyZWVTdGlja3lOb2RlTmljb3NpYS5jcHAKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
ICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZAorICogICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVlU3RpY2t5
Tm9kZU5pY29zaWEuaCIKKworI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFVTRShOSUNP
U0lBKQorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5pY29zaWFQbGF0Zm9ybUxh
eWVyLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlLmgiCisjaW5jbHVkZSAi
U2Nyb2xsaW5nVHJlZS5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVGaXhlZE5vZGUuaCIKKyNp
bmNsdWRlICJTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLmgiCisjaW5jbHVkZSAiU2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5n
VHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJl
YW0uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8U2Nyb2xsaW5nVHJlZVN0aWNreU5v
ZGVOaWNvc2lhPiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZU5pY29zaWE6OmNyZWF0ZShTY3JvbGxp
bmdUcmVlJiBzY3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQoreworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlTmljb3NpYShzY3JvbGxp
bmdUcmVlLCBub2RlSUQpKTsKK30KKworU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVOaWNvc2lhOjpT
Y3JvbGxpbmdUcmVlU3RpY2t5Tm9kZU5pY29zaWEoU2Nyb2xsaW5nVHJlZSYgc2Nyb2xsaW5nVHJl
ZSwgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKKyAgICA6IFNjcm9sbGluZ1RyZWVTdGlja3lOb2Rl
KHNjcm9sbGluZ1RyZWUsIG5vZGVJRCkKK3sKK30KKwordm9pZCBTY3JvbGxpbmdUcmVlU3RpY2t5
Tm9kZU5pY29zaWE6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3Rh
dGVOb2RlJiBzdGF0ZU5vZGUpCit7CisgICAgYXV0byYgc3RpY2t5U3RhdGVOb2RlID0gZG93bmNh
c3Q8U2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlPihzdGF0ZU5vZGUpOworICAgIGlmIChzdGlja3lT
dGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6
OkxheWVyKSkgeworICAgICAgICBhdXRvKiBsYXllciA9IHN0YXRpY19jYXN0PE5pY29zaWE6OlBs
YXRmb3JtTGF5ZXIqPihzdGlja3lTdGF0ZU5vZGUubGF5ZXIoKSk7CisgICAgICAgIG1fbGF5ZXIg
PSBkb3duY2FzdDxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPihsYXllcik7CisgICAgfQorCisg
ICAgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oc3Rh
dGVOb2RlKTsKK30KKwordm9pZCBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZU5pY29zaWE6OmFwcGx5
TGF5ZXJQb3NpdGlvbnMoKQoreworICAgIGF1dG8gbGF5ZXJQb3NpdGlvbiA9IGNvbXB1dGVMYXll
clBvc2l0aW9uKCk7CisKKyAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwg
IlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlTmljb3NpYSAiIDw8IHNjcm9sbGluZ05vZGVJRCgpIDw8
ICIgY29uc3RyYWluaW5nUmVjdEF0TGFzdExheW91dCAiIDw8IG1fY29uc3RyYWludHMuY29uc3Ry
YWluaW5nUmVjdEF0TGFzdExheW91dCgpIDw8ICIgbGFzdCBsYXllciBwb3MgIiA8PCBtX2NvbnN0
cmFpbnRzLmxheWVyUG9zaXRpb25BdExhc3RMYXlvdXQoKSA8PCAiIGxheWVyUG9zaXRpb24gIiA8
PCBsYXllclBvc2l0aW9uKTsKKworICAgIGxheWVyUG9zaXRpb24gLT0gbV9jb25zdHJhaW50cy5h
bGlnbm1lbnRPZmZzZXQoKTsKKworICAgIEFTU0VSVChtX2xheWVyKTsKKyAgICBtX2xheWVyLT51
cGRhdGVTdGF0ZSgKKyAgICAgICAgWyZsYXllclBvc2l0aW9uXShOaWNvc2lhOjpDb21wb3NpdGlv
bkxheWVyOjpMYXllclN0YXRlJiBzdGF0ZSkKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGUu
cG9zaXRpb24gPSBsYXllclBvc2l0aW9uOworICAgICAgICAgICAgc3RhdGUuZGVsdGEucG9zaXRp
b25DaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgfSk7Cit9CisKK0Zsb2F0UG9pbnQgU2Nyb2xsaW5n
VHJlZVN0aWNreU5vZGVOaWNvc2lhOjpsYXllclRvcExlZnQoKSBjb25zdAoreworICAgIEZsb2F0
UG9pbnQgbGF5ZXJUb3BMZWZ0OworICAgIEFTU0VSVChtX2xheWVyKTsKKyAgICBtX2xheWVyLT5h
Y2Nlc3NDb21taXR0ZWQoCisgICAgICAgIFt0aGlzLCAmbGF5ZXJUb3BMZWZ0XShOaWNvc2lhOjpD
b21wb3NpdGlvbkxheWVyOjpMYXllclN0YXRlJiBzdGF0ZSkKKyAgICAgICAgeworICAgICAgICAg
ICAgbGF5ZXJUb3BMZWZ0ID0gc3RhdGUucG9zaXRpb24gLSB0b0Zsb2F0U2l6ZShzdGF0ZS5hbmNo
b3JQb2ludC54eSgpKSAqIHN0YXRlLnNpemUgKyBtX2NvbnN0cmFpbnRzLmFsaWdubWVudE9mZnNl
dCgpOworICAgICAgICB9KTsKKyAgICByZXR1cm4gbGF5ZXJUb3BMZWZ0OworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBV
U0UoTklDT1NJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25p
Y29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVOaWNvc2lhLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlTmljb3NpYS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjdlNjU3OGQzMjI0YTBlZWMzYWE0MjgyNTBlOTQ4YThhZjFmMGY4YTYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9s
bGluZ1RyZWVTdGlja3lOb2RlTmljb3NpYS5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE5IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
CisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQKKyAqICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
SE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFVTRShOSUNP
U0lBKQorCisjaW5jbHVkZSAiU2Nyb2xsaW5nQ29uc3RyYWludHMuaCIKKyNpbmNsdWRlICJTY3Jv
bGxpbmdUcmVlU3RpY2t5Tm9kZS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNw
YWNlIE5pY29zaWEgeworY2xhc3MgQ29tcG9zaXRpb25MYXllcjsKK30KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZU5pY29zaWEgZmluYWwgOiBw
dWJsaWMgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8
U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVOaWNvc2lhPiBjcmVhdGUoU2Nyb2xsaW5nVHJlZSYsIFNj
cm9sbGluZ05vZGVJRCk7CisgICAgdmlydHVhbCB+U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVOaWNv
c2lhKCkgPSBkZWZhdWx0OworCitwcml2YXRlOgorICAgIFNjcm9sbGluZ1RyZWVTdGlja3lOb2Rl
Tmljb3NpYShTY3JvbGxpbmdUcmVlJiwgU2Nyb2xsaW5nTm9kZUlEKTsKKworICAgIHZvaWQgY29t
bWl0U3RhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGFwcGx5TGF5ZXJQb3NpdGlvbnMoKSBvdmVycmlkZTsKKyAgICBGbG9hdFBv
aW50IGxheWVyVG9wTGVmdCgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgUmVmUHRyPE5pY29zaWE6
OkNvbXBvc2l0aW9uTGF5ZXI+IG1fbGF5ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfU0NST0xMSU5HX05PREUoU2Nyb2xsaW5nVHJlZVN0
aWNreU5vZGVOaWNvc2lhLCBpc1N0aWNreU5vZGUoKSkKKworI2VuZGlmIC8vIEVOQUJMRShBU1lO
Q19TQ1JPTExJTkcpICYmIFVTRShOSUNPU0lBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVGV4dHVyZU1hcHBlci5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Rl
eHR1cmVNYXBwZXIuY21ha2UKaW5kZXggZDJiY2Q5YWYwODJkMmI3ZTY2YTkyNmIyMThmMjQwODUw
YjZhOTk0NC4uNTUzYjVhZTc1NmRiZmVhY2E4OWM0NjJhYzVlOTAwMzkzNTExMTMwNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGV4dHVyZU1hcHBlci5jbWFrZQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UZXh0dXJlTWFwcGVyLmNtYWtlCkBAIC0xMDAsNyArMTAw
LDcgQEAgaWYgKFVTRV9DT09SRElOQVRFRF9HUkFQSElDUykKICAgICApCiAgICAgbGlzdChBUFBF
TkQgV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgICAgIHBhZ2Uvc2Nyb2xs
aW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5oCi0gICAgICAgIHBhZ2Uvc2Nyb2xs
aW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaAorICAgICAgICBwYWdlL3Njcm9s
bGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlTmljb3NpYS5oCiAKICAgICAgICAg
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhQW5pbWF0ZWRCYWNraW5nU3RvcmVDbGll
bnQuaAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFCdWZmZXIuaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZVNjcm9sbGluZ1RyZWUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZVNjcm9sbGluZ1RyZWUuY3BwCmluZGV4IDdkZGEzMzYzZTA1YjNkMGYyYzQ0NGI5
OWQxZTJjNTM0MWNkYTNiMzcuLjM5MjgyOGFlZTMxOTA4OGJkNGE3MzllYTVjZDMxZjY4N2RkZGVm
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVTY3JvbGxpbmdUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nVHJlZS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL1Njcm9sbGluZ1RyZWVGcmFtZUhvc3RpbmdOb2RlLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxQcm94eU5vZGUuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1Njcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZS5oPgotI2luY2x1ZGUgPFdl
YkNvcmUvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Njcm9s
bGluZ1RyZWVTdGlja3lOb2RlQ29jb2EuaD4KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAj
aW5jbHVkZSAiU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlPUy5oIgpAQCAt
MTI3LDcgKzEyNyw3IEBAIFJlZjxTY3JvbGxpbmdUcmVlTm9kZT4gUmVtb3RlU2Nyb2xsaW5nVHJl
ZTo6Y3JlYXRlU2Nyb2xsaW5nVHJlZU5vZGUoU2Nyb2xsaW5nTm9kCiAgICAgY2FzZSBTY3JvbGxp
bmdOb2RlVHlwZTo6Rml4ZWQ6CiAgICAgICAgIHJldHVybiBTY3JvbGxpbmdUcmVlRml4ZWROb2Rl
OjpjcmVhdGUoKnRoaXMsIG5vZGVJRCk7CiAgICAgY2FzZSBTY3JvbGxpbmdOb2RlVHlwZTo6U3Rp
Y2t5OgotICAgICAgICByZXR1cm4gU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OmNyZWF0ZSgqdGhp
cywgbm9kZUlEKTsKKyAgICAgICAgcmV0dXJuIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlQ29jb2E6
OmNyZWF0ZSgqdGhpcywgbm9kZUlEKTsKICAgICBjYXNlIFNjcm9sbGluZ05vZGVUeXBlOjpQb3Np
dGlvbmVkOgogICAgICAgICByZXR1cm4gU2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlOjpjcmVh
dGUoKnRoaXMsIG5vZGVJRCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLm1tCmluZGV4IDg0YTJmYjBmOWIyNzYyYTJjMjI4OWJi
OTVlOTQzMTJmNmIwZjFhYTUuLjM0MDRkZDg4NzFiMDgzMGYyMGU5NThhYjU3NzM1YjA2NTE2ZTM4
NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRp
bmF0b3IubW0KQEAgLTQzLDcgKzQzLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyTGF5ZXJD
b21wb3NpdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlclZpZXcuaD4KICNpbXBvcnQgPFdl
YkNvcmUvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxp
bmdUcmVlU3RpY2t5Tm9kZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxpbmdUcmVlU3RpY2t5
Tm9kZUNvY29hLmg+CiAKIAogbmFtZXNwYWNlIFdlYktpdCB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442576</attachid>
            <date>2021-10-27 03:33:36 -0700</date>
            <delta_ts>2021-10-27 04:47:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231571-20211027123334.patch</filename>
            <type>text/plain</type>
            <size>67041</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0ODY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzllNWZlZTZlNTI5MTQ1
M2RhNjNhMTk3NWVjYTcxZjgwNjBmNWE1ZS4uYzdhMzI2ZDNlY2ZhYjkyZjY0YjA1NDI5ZTU3YjNh
N2E3YzFjMTcyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIxLTEwLTEzICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBFbGltaW5hdGUg
ZHVwbGljYXRlZCBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlIGluIFNjcm9sbGluZ1RyZWVTdGlja3lO
b2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE1
NzEKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgQWJzdHJh
Y3QgY29kZSBmcm9tIHRoZSBOaWNvc2lhIGFuZCBDb29jYSB2ZXJzaW9uIG9mIFNjcm9sbGluZ1Ry
ZWVTdGlja3lOb2RlLAorICAgICAgICBzbyB0aGF0IGl0IGNhbiBiZSBzaGFyZWQgYnkgYm90aCBw
b3J0cy4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFRoaXMgc2hvdWxkIG5vdCBjaGFuZ2UgYW55
IGJlaGF2aW9yLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9y
bU1hYy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlOgorICAgICAg
ICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICog
U291cmNlc0dUSy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmNw
cDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Ny
b2xsaW5nVHJlZVN0aWNreU5vZGUuY3BwLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJl
ZVN0aWNreU5vZGU6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OmR1bXBQcm9wZXJ0aWVzIGNvbnN0KToKKyAgICAg
ICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlj
a3lOb2RlLmguCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZUZp
eGVkTm9kZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGaXhlZE5vZGU6OmFw
cGx5TGF5ZXJQb3NpdGlvbnMpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9s
bGluZ1RyZWVTdGlja3lOb2RlLm1tOiBSZW1vdmVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
aW5nVHJlZVN0aWNreU5vZGU6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6On5TY3JvbGxpbmdU
cmVlU3RpY2t5Tm9kZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZTo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6Y29tcHV0ZUxheWVyUG9zaXRpb24g
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVN0aWNreU5v
ZGU6OmFwcGx5TGF5ZXJQb3NpdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nVHJlZVN0aWNreU5vZGU6OnNjcm9sbERlbHRhU2luY2VMYXN0Q29tbWl0IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpkdW1w
UHJvcGVydGllcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvY29j
b2EvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVDb2NvYS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaC4KKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUNvY29h
Lm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlQ29j
b2E6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUNv
Y29hOjpTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUNvY29hKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1RyZWVTdGlja3lOb2RlQ29jb2E6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4pOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVDb2NvYTo6YXBwbHlMYXll
clBvc2l0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUNv
Y29hOjpsYXllclRvcExlZnQgY29uc3QpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9T
Y3JvbGxpbmdDb29yZGluYXRvck1hYy5tbToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMv
U2Nyb2xsaW5nVHJlZU1hYy5tbToKKyAgICAgICAgKFNjcm9sbGluZ1RyZWVNYWM6OmNyZWF0ZVNj
cm9sbGluZ1RyZWVOb2RlKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9s
bGluZ1RyZWVOaWNvc2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVOaWNv
c2lhOjpjcmVhdGVTY3JvbGxpbmdUcmVlTm9kZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcv
bmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZU5pY29zaWEuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlTmljb3NpYTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlTmljb3NpYTo6U2Nyb2xsaW5n
VHJlZVN0aWNreU5vZGVOaWNvc2lhKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVT
dGlja3lOb2RlTmljb3NpYTo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbik6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZU5pY29zaWE6OmFwcGx5TGF5ZXJQb3NpdGlv
bnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVOaWNvc2lhOjps
YXllclRvcExlZnQgY29uc3QpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Ny
b2xsaW5nVHJlZVN0aWNreU5vZGVOaWNvc2lhLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmguCisgICAg
ICAgICogcGxhdGZvcm0vVGV4dHVyZU1hcHBlci5jbWFrZToKKwogMjAyMS0xMC0yNiAgUGhpbGlw
cGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTigy
NDIyODBAbWFpbikgZmFzdC9tZWRpYXN0cmVhbS9jYXB0dXJlU3RyZWFtL2NhbnZhczNkLmh0bWwg
aXMgdGltaW5nIG91dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4OGIzZjQ4YTQ5OTJlNmZiMmJjNDI5MGRmOWNkNjM0
ZTQ5NmUwMTczLi5iN2NlMTA4ZjdjZDc1MjEyNTE3Y2Y3YjIxN2QzNjA2ZGRjYWVjMjYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTEwLTEzICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9i
aW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBFbGltaW5hdGUgZHVwbGljYXRlZCBwbGF0Zm9y
bS1zcGVjaWZpYyBjb2RlIGluIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE1NzEKKworICAgICAgICBSZXZp
ZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgQWJzdHJhY3QgY29kZSBmcm9tIHRoZSBO
aWNvc2lhIGFuZCBDb29jYSB2ZXJzaW9uIG9mIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLAorICAg
ICAgICBzbyB0aGF0IGl0IGNhbiBiZSBzaGFyZWQgYnkgYm90aCBwb3J0cy4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nVHJlZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ1RyZWU6OmNyZWF0ZVNjcm9sbGluZ1RyZWVOb2Rl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yLm1tOgorCiAyMDIxLTEwLTI2ICBQZXIgQXJuZSAgPHB2b2xsYW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdW1dQXSBSZWR1Y2Ugc2FuZGJveCB0ZWxlbWV0cnkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlCmluZGV4IDY1ZThlODVkMDQyMmNkNDMyNWEwNjNkMGNhMzM0N2I0MjFk
MzcxYzcuLjcxYTZlYmJlOTM4YmVhN2M5NjBlYmFiYzRhZTc2NjZmNThlZTQ0OWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZQpAQCAtMTA1OCw2ICsxMDU4LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFN
RVdPUktfSEVBREVSUwogICAgIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Nj
cm9sbGluZ05vZGUuaAogICAgIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlLmgKICAgICBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlLmgKKyAgICBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oCiAgICAg
cGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmgKIAogICAgIHBsYXRmb3JtL0Fi
b3J0YWJsZVRhc2tRdWV1ZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1h
Yy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IDYxNmFlOTAw
MWVmZjIwZDZkMjQ0OTQwMzhkYzExZGZkMmQwOTg4ZTMuLjI0ZjFhY2JjZDA3YmFiOWJiZGNlNTM1
ZTFmYWQ5Y2NlNDFlMzRiNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFj
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC01NTIsNyAr
NTUyLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAg
ICAgcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5oCiAgICAgcGFn
ZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlLmgK
ICAgICBwYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuaAot
ICAgIHBhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmgKKyAgICBw
YWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUNvY29hLmgKIAogICAg
IHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5oCiAgICAgcGFnZS9z
Y3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMuaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZSBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UKaW5kZXggOWYxNTU5ZWMyZTVkOTJmNmUy
ZTI5NGFlZmQ0MGEyODI5NGVmM2FjMS4uYjAzOGJmY2IzNWNmMWExMTk3NGQ5OGNjYTk4MGVjYjM5
ODRiNDU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1QbGF5U3RhdGlvbi5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlCkBAIC0y
OSw3ICsyOSw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBhZ2Uvc2Nyb2xs
aW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWEuY3Bw
CiAgICAgcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUu
Y3BwCiAgICAgcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlTmljb3NpYS5jcHAKLSAgICBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGlu
Z1RyZWVTdGlja3lOb2RlLmNwcAorICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5n
VHJlZVN0aWNreU5vZGVOaWNvc2lhLmNwcAogCiAgICAgcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9u
S2luZXRpYy5jcHAKICAgICBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CmluZGV4IDRiZWExNGY0NGZiZjUyMTE5MGY2MzNhYjY3MzA2OTEyMzNhNTViZjQuLmVm
Mjc5NjgxNmQ1NTJjMWJjMTM1NzA0MThjMTVlMzQzMDcxNjQzODYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBA
IC0xNzk5LDYgKzE3OTksNyBAQCBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5jcHAK
IHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUuY3BwCiBw
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKIHBhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuY3BwCitwYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAKIHBhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Ny
b2xsaW5nVHJlZS5jcHAKIHBsYXRmb3JtL0NvbnRlbnRUeXBlLmNwcAogcGxhdGZvcm0vQ29udGV4
dE1lbnUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCA5MDZjMjk5ODQ1ZGIwM2Y3NzM4
ZTU4MTg1MGQ0ZDBjNGFlOWEzMGM2Li4wY2U1ODRiZTYyNzBmMWM1NzU0MzI0ZTUxZGJhODk1ODk5
YzdiNGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTIwOCw3ICsyMDgsNyBAQCBwYWdl
L3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdTdGF0ZU5vZGUubW0KIHBhZ2Uvc2Nyb2xsaW5nL2Nv
Y29hL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUubW0KIHBhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZS5tbQogcGFnZS9zY3JvbGxpbmcvY29jb2Ev
U2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlLm1tCi1wYWdlL3Njcm9sbGluZy9jb2NvYS9TY3Jv
bGxpbmdUcmVlU3RpY2t5Tm9kZS5tbQorcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJl
ZVN0aWNreU5vZGVDb2NvYS5tbQogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5h
dG9yTWFjLm1tCiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2Rl
TWFjLm1tCiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9k
ZU1hYy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dAppbmRleCA2ZmExYzFhZjgzMjMwNmQ5YzYzYjUzZTVh
OTdiMDA4NDgxOTg3N2Q3Li42YWE0MDYwZDg3MzU3MTJmNDYzYzM1NjkwNjg5MjQyZjI1ZDFkNDQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzR1RLLnR4dApAQCAtNzEsNyArNzEsNyBAQCBwYWdlL3Njcm9sbGluZy9u
aWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZS5jcHAKIHBhZ2Uvc2Ny
b2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWEu
Y3BwCiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZS5j
cHAKIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZU5pY29zaWEuY3BwCi1wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlj
a3lOb2RlLmNwcAorcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZU5pY29zaWEuY3BwCiAKIHBsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5jcHAKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvU291cmNlc1dQRS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
V1BFLnR4dAppbmRleCA2NjMzYWExOGE5Y2Q4MTIxNmU2YzQ2YTdjNDIzN2YwMWExZTRiYmJiLi5m
ZDA1OGU4ZjYxNGVkYmE3MGZkMGQxMDQyODU4NjRlNzY4ZWNlYjVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzV1BFLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzV1BF
LnR4dApAQCAtNTYsNyArNTYsNyBAQCBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZS5jcHAKIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWEuY3BwCiBwYWdlL3Njcm9sbGlu
Zy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZS5jcHAKIHBhZ2Uvc2Nyb2xsaW5n
L25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuY3BwCi1w
YWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcAorcGFnZS9z
Y3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZU5pY29zaWEuY3BwCiAKIHBs
YXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZiNzIzMmQyYjJlOWM0NDYwNThlZWM2
NGNhMzA1MzA3N2IwMGJjMWEuLjgxOTUyOTdlYTZlNWJhZjkyMjU4N2U2ZTY3NmE4ZDJjMTIzYzhk
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTM0MCw3ICszNDAsNyBAQAogCQkwRjhCNDU3MjFEQzNGQkEzMDA0NDNDM0YgLyog
SW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4QjQ1NzExREMzRkJBMzAwNDQzQzNGIC8qIEludGVyc2Vj
dGlvbk9ic2VydmVyQ2FsbGJhY2suaCAqLzsgfTsKIAkJMEY4QjQ1NzYxREM0MURCQTAwNDQzQzNG
IC8qIEpTSW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4QjQ1NzQxREM0MURCQTAwNDQzQzNGIC8qIEpT
SW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjay5oICovOyB9OwogCQkwRjk0QjY0NzIyMDhGRTM2
MDAxNTcwMTQgLyogU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5NEI2NDIyMjA4RjcwMTAwMTU3MDE0IC8qIFNj
cm9sbGluZ1RyZWVGaXhlZE5vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwotCQkwRjk0QjY0OTIyMDhGRTNCMDAxNTcwMTQgLyogU2Nyb2xsaW5nVHJl
ZVN0aWNreU5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGOTRCNjQzMjIwOEY3MDIwMDE1NzAxNCAvKiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGOTRC
NjQ5MjIwOEZFM0IwMDE1NzAxNCAvKiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUNvY29hLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjk0QjY0MzIyMDhG
NzAyMDAxNTcwMTQgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVDb2NvYS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGOTRCNjUyMjIwOTE1MDYw
MDE1NzAxNCAvKiBTY3JvbGxpbmdTdGF0ZVBvc2l0aW9uZWROb2RlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjk0QjY1MTIyMDkxNEZGMDAxNTcwMTQg
LyogU2Nyb2xsaW5nU3RhdGVQb3NpdGlvbmVkTm9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGOTRCNjU1MjIwOTMxRTQwMDE1NzAxNCAvKiBT
Y3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTRCNjUzMjIwOTE1NkMwMDE1NzAxNCAvKiBTY3JvbGxpbmdU
cmVlUG9zaXRpb25lZE5vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRjk0RjM3RTIzNjYxNjI2MDAzQUE1QzcgLyogU3R5bGVSdWxlVHlwZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5NEYzN0My
MzY2MTEzMTAwM0FBNUM3IC8qIFN0eWxlUnVsZVR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjAyOCw2ICsyMDI4LDcgQEAKIAkJNUIzMDY5
NUUxOEIzRDM0NTAwOTlENUU4IC8qIFdlYkdMRHJhd0J1ZmZlcnMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVCMzA2OTVCMThCM0QzNDUwMDk5RDVFOCAv
KiBXZWJHTERyYXdCdWZmZXJzLmggKi87IH07CiAJCTVCNDY2NTYzMjVEMTRDMEEwMDBDRkUxNCAv
KiBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUI0NjY1NUYyNUQxNEMwOTAwMENGRTE0IC8qIFNjcm9sbGlu
Z0VmZmVjdHNDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNUI0NjY1NjQyNUQxNEMwQTAwMENGRTE0IC8qIFNjcm9sbFNuYXBBbmlt
YXRvclN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1QjQ2NjU2MDI1RDE0QzBBMDAwQ0ZFMTQgLyogU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1QjkyQzQy
RDI3MTZFMjhBMDBBMzdDQzAgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVCOTJDNDJCMjcxNkUyMzMwMEEz
N0NDMCAvKiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDMUIxRDNGMjZGMzk3ODAwMDg4MkRBMiAvKiBS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDMUIxRDNEMjZGMzk3N0YwMDg4MkRBMiAvKiBSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1QzJCMUFFQzIyMzk3RUJDMDBCOTFDRjcgLyogUmVzb3VyY2VSZXNwb25zZUNvY29h
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFGNzhE
MEIxQzI1NDIyQzAwMjQ1NDQ2IC8qIFJlc291cmNlUmVzcG9uc2VDb2NvYS5tbSAqLzsgfTsKIAkJ
NUM0MzA0QjExOTFBQzkwODAwMEUyQkMwIC8qIEVYVFNoYWRlclRleHR1cmVMT0QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNDMwNEFFMTkxQUM5MDgw
MDBFMkJDMCAvKiBFWFRTaGFkZXJUZXh0dXJlTE9ELmggKi87IH07CkBAIC02MzQ1LDkgKzYzNDYs
OSBAQAogCQkwRjk0NzIyRDI1MzRCQTczMDBGMTUzQzggLyogRGlzcGxheUZpbGxMYXllckltYWdl
R2VvbWV0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUZpbGxMYXllckltYWdlR2VvbWV0cnku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5NEEzOTUxRUYxQjEwNTAwRkJBRkZC
IC8qIEpTRE9NUXVhZEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0RPTVF1YWRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
Rjk0QjY0MjIyMDhGNzAxMDAxNTcwMTQgLyogU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBTY3JvbGxpbmdUcmVlRml4ZWROb2RlLmg7IHBhdGggPSBwYWdlL3Njcm9sbGlu
Zy9jb2NvYS9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9P
VDsgfTsKLQkJMEY5NEI2NDMyMjA4RjcwMjAwMTU3MDE0IC8qIFNjcm9sbGluZ1RyZWVTdGlja3lO
b2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLmg7IHBhdGggPSBw
YWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oOyBzb3VyY2VUcmVl
ID0gU09VUkNFX1JPT1Q7IH07CisJCTBGOTRCNjQzMjIwOEY3MDIwMDE1NzAxNCAvKiBTY3JvbGxp
bmdUcmVlU3RpY2t5Tm9kZUNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbGluZ1RyZWVTdGlj
a3lOb2RlQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5NEI2NDQyMjA4
RjcwMjAwMTU3MDE0IC8qIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGUubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IG5hbWUgPSBTY3JvbGxpbmdUcmVlRml4ZWROb2RlLm1tOyBwYXRoID0gcGFnZS9zY3JvbGxpbmcv
Y29jb2EvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5tbTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09U
OyB9OwotCQkwRjk0QjY0NTIyMDhGNzAzMDAxNTcwMTQgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5v
ZGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbTsg
cGF0aCA9IHBhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tOyBz
b3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCTBGOTRCNjQ1MjIwOEY3MDMwMDE1NzAxNCAv
KiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY5NEI2NEYyMjA5MTRGRTAwMTU3MDE0IC8qIFNjcm9sbGluZ1N0YXRlUG9zaXRpb25l
ZE5vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xsaW5nU3RhdGVQb3NpdGlvbmVkTm9k
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTRCNjUxMjIwOTE0RkYwMDE1
NzAxNCAvKiBTY3JvbGxpbmdTdGF0ZVBvc2l0aW9uZWROb2RlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNj
cm9sbGluZ1N0YXRlUG9zaXRpb25lZE5vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY5NEI2NTMyMjA5MTU2QzAwMTU3MDE0IC8qIFNjcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9k
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk4NjUsNiArOTg2Niw4IEBACiAJCTVCNDY2NTVGMjVE
MTRDMDkwMDBDRkUxNCAvKiBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QjQ2NjU2MDI1RDE0QzBBMDAwQ0ZFMTQgLyogU2Ny
b2xsU25hcEFuaW1hdG9yU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NUI3QUI5RjYyNTY3REI3RTAwNjU5MkQwIC8qIFNjcm9sbFNuYXBPZmZzZXRzSW5mby5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxTbmFwT2Zmc2V0c0luZm8u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QjkyQzQyOTI3MTZFMjMzMDBBMzdD
QzAgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1QjkyQzQyQjI3MTZFMjMzMDBBMzdDQzAgLyogU2Nyb2xsaW5nVHJl
ZVN0aWNreU5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsaW5n
VHJlZVN0aWNreU5vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMwMDE1MjEy
NTAwMTEwMDAwOTRBQTkzIC8qIFRleHRDb2RlY1NpbmdsZUJ5dGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dENvZGVjU2luZ2xlQnl0ZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMDAxNTIzMjUwMDExMDEwMDk0QUE5MyAvKiBUZXh0Q29k
ZWNTaW5nbGVCeXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRDb2Rl
Y1NpbmdsZUJ5dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMxQjFEMUUyNkYx
NUIxOTAwODgyREEyIC8qIFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5MDg4LDYgKzE5MDkxLDggQEAKIAkJCQk5Mzkx
QTk5QjE2MjlENzAwMDAyOTczMzAgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaCAqLywK
IAkJCQlBNkQ1QTk5QTE2MjlENkZGMDAyOTczMzAgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZS5jcHAgKi8sCiAJCQkJQTZENUE5OUIxNjI5RDcwMDAwMjk3MzMwIC8qIFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuaCAqLywKKwkJCQk1QjkyQzQyOTI3MTZFMjMz
MDBBMzdDQzAgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuY3BwICovLAorCQkJCTVCOTJDNDJC
MjcxNkUyMzMwMEEzN0NDMCAvKiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oICovLAogCQkJCTBG
OTUxMEYyMjRGNDc2OUMwMDFGNTJEQyAvKiBTY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuY3BwICov
LAogCQkJCTBGOTUxMEYwMjRGNDc2OUMwMDFGNTJEQyAvKiBTY3JvbGxMYXRjaGluZ0NvbnRyb2xs
ZXIuaCAqLywKIAkJCQk1QjdBQjlGNjI1NjdEQjdFMDA2NTkyRDAgLyogU2Nyb2xsU25hcE9mZnNl
dHNJbmZvLmNwcCAqLywKQEAgLTI0MzczLDggKzI0Mzc4LDggQEAKIAkJCQkwRkM0QjAwNTIyQjlB
MDJEMDBDRjNCMUUgLyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlLm1tICov
LAogCQkJCTBGOTRCNjUzMjIwOTE1NkMwMDE1NzAxNCAvKiBTY3JvbGxpbmdUcmVlUG9zaXRpb25l
ZE5vZGUuaCAqLywKIAkJCQkwRjk0QjY1NDIyMDkxNTZDMDAxNTcwMTQgLyogU2Nyb2xsaW5nVHJl
ZVBvc2l0aW9uZWROb2RlLm1tICovLAotCQkJCTBGOTRCNjQzMjIwOEY3MDIwMDE1NzAxNCAvKiBT
Y3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oICovLAotCQkJCTBGOTRCNjQ1MjIwOEY3MDMwMDE1NzAx
NCAvKiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbSAqLywKKwkJCQkwRjk0QjY0MzIyMDhGNzAy
MDAxNTcwMTQgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVDb2NvYS5oICovLAorCQkJCTBGOTRC
NjQ1MjIwOEY3MDMwMDE1NzAxNCAvKiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUNvY29hLm1tICov
LAogCQkJKTsKIAkJCXBhdGggPSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBA
IC0zNTM2Miw3ICszNTM2Nyw4IEBACiAJCQkJOTM5MUE5OUQxNjI5RDcwMDAwMjk3MzMwIC8qIFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNkQ1QTk5RDE2
MjlENzAwMDAyOTczMzAgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYzN0YwODUyMjAyQkY5ODAwQTg5QzBCIC8qIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGOTRCNjQ5
MjIwOEZFM0IwMDE1NzAxNCAvKiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNUI5MkM0MkQyNzE2RTI4QTAwQTM3Q0MwIC8qIFNjcm9sbGluZ1RyZWVTdGlja3lO
b2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjk0QjY0OTIyMDhGRTNCMDAxNTcwMTQgLyogU2Ny
b2xsaW5nVHJlZVN0aWNreU5vZGVDb2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNDNTc5NUQx
REE1QzMwMTAwNkY5Qzk3IC8qIFNjcm9sbEludG9WaWV3T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODNDNTc5NUQxREE1QzMwMTAwNkY5Qzg2IC8qIFNjcm9sbExvZ2ljYWxQb3NpdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODNDNTc5NUQxREE1QzMwMTAwNkZBQzk3IC8qIFNjcm9sbE9w
dGlvbnMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjZGNh
MWUzZjVjZjI3ZTQ2YTc4NmM0MmY1Y2RhNDlhMjIwNzM1ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAK
QEAgLTAsMCArMSwxMjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5IElnYWxpYSBTLkwuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKyAqICAgIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaCIKKworI2lmIEVOQUJMRShBU1lOQ19TQ1JP
TExJTkcpCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nU3RhdGVT
dGlja3lOb2RlLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZS5oIgorI2luY2x1ZGUgIlNjcm9s
bGluZ1RyZWVGaXhlZE5vZGUuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxp
bmdOb2RlLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsUHJveHlOb2Rl
LmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oIgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitT
Y3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUoU2Nyb2xsaW5n
VHJlZSYgc2Nyb2xsaW5nVHJlZSwgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKKyAgICA6IFNjcm9s
bGluZ1RyZWVOb2RlKHNjcm9sbGluZ1RyZWUsIFNjcm9sbGluZ05vZGVUeXBlOjpTdGlja3ksIG5v
ZGVJRCkKK3sKKyAgICBzY3JvbGxpbmdUcmVlLmZpeGVkT3JTdGlja3lOb2RlQWRkZWQoKTsKK30K
KworU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6On5TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSgpCit7
CisgICAgc2Nyb2xsaW5nVHJlZSgpLmZpeGVkT3JTdGlja3lOb2RlUmVtb3ZlZCgpOworfQorCit2
b2lkIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNv
bnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYgc3RhdGVOb2RlKQoreworICAgIGF1dG8mIHN0aWNreVN0
YXRlTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZT4oc3RhdGVOb2RlKTsK
KworICAgIGlmIChzdGlja3lTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0
YXRlTm9kZTo6UHJvcGVydHk6OlZpZXdwb3J0Q29uc3RyYWludHMpKQorICAgICAgICBtX2NvbnN0
cmFpbnRzID0gc3RpY2t5U3RhdGVOb2RlLnZpZXdwb3J0Q29uc3RyYWludHMoKTsKK30KKwordm9p
ZCBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6ZHVtcFByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMs
IE9wdGlvblNldDxTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvcj4gYmVoYXZpb3IpIGNv
bnN0Cit7CisgICAgdHMgPDwgInN0aWNreSBub2RlIjsKKyAgICBTY3JvbGxpbmdUcmVlTm9kZTo6
ZHVtcFByb3BlcnRpZXModHMsIGJlaGF2aW9yKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoInN0aWNr
eSBjb25zdHJhaW50cyIsIG1fY29uc3RyYWludHMpOworICAgIGlmIChiZWhhdmlvciAmIFNjcm9s
bGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9yOjpJbmNsdWRlTGF5ZXJQb3NpdGlvbnMpCisgICAg
ICAgIHRzLmR1bXBQcm9wZXJ0eSgibGF5ZXIgdG9wIGxlZnQiLCBsYXllclRvcExlZnQoKSk7Cit9
CisKK0Zsb2F0UG9pbnQgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OmNvbXB1dGVMYXllclBvc2l0
aW9uKCkgY29uc3QKK3sKKyAgICBGbG9hdFNpemUgb2Zmc2V0RnJvbVN0aWNreUFuY2VzdG9yczsK
KyAgICBhdXRvIGNvbXB1dGVMYXllclBvc2l0aW9uRm9yU2Nyb2xsaW5nTm9kZSA9IFsmXShTY3Jv
bGxpbmdUcmVlTm9kZSYgc2Nyb2xsaW5nTm9kZSkgeworICAgICAgICBGbG9hdFJlY3QgY29uc3Ry
YWluaW5nUmVjdDsKKyAgICAgICAgaWYgKGlzPFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGU+KHNjcm9sbGluZ05vZGUpKSB7CisgICAgICAgICAgICBhdXRvJiBmcmFtZVNjcm9sbGluZ05v
ZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPihzY3JvbGxpbmdO
b2RlKTsKKyAgICAgICAgICAgIGNvbnN0cmFpbmluZ1JlY3QgPSBmcmFtZVNjcm9sbGluZ05vZGUu
bGF5b3V0Vmlld3BvcnQoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8mIG92
ZXJmbG93U2Nyb2xsaW5nTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGU+KHNjcm9sbGluZ05vZGUpOworICAgICAgICAgICAgY29uc3RyYWluaW5nUmVjdCA9
IG1fY29uc3RyYWludHMuY29uc3RyYWluaW5nUmVjdEF0TGFzdExheW91dCgpOworICAgICAgICAg
ICAgY29uc3RyYWluaW5nUmVjdC5tb3ZlKG92ZXJmbG93U2Nyb2xsaW5nTm9kZS5zY3JvbGxEZWx0
YVNpbmNlTGFzdENvbW1pdCgpKTsKKyAgICAgICAgfQorICAgICAgICBjb25zdHJhaW5pbmdSZWN0
Lm1vdmUoLW9mZnNldEZyb21TdGlja3lBbmNlc3RvcnMpOworICAgICAgICByZXR1cm4gbV9jb25z
dHJhaW50cy5sYXllclBvc2l0aW9uRm9yQ29uc3RyYWluaW5nUmVjdChjb25zdHJhaW5pbmdSZWN0
KTsKKyAgICB9OworCisgICAgZm9yIChhdXRvKiBhbmNlc3RvciA9IHBhcmVudCgpOyBhbmNlc3Rv
cjsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+cGFyZW50KCkpIHsKKyAgICAgICAgaWYgKGlzPFNjcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZT4oKmFuY2VzdG9yKSkgeworICAgICAgICAg
ICAgYXV0byYgb3ZlcmZsb3dQcm94eU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdUcmVlT3ZlcmZs
b3dTY3JvbGxQcm94eU5vZGU+KCphbmNlc3Rvcik7CisgICAgICAgICAgICBhdXRvIG92ZXJmbG93
Tm9kZSA9IHNjcm9sbGluZ1RyZWUoKS5ub2RlRm9ySUQob3ZlcmZsb3dQcm94eU5vZGUub3ZlcmZs
b3dTY3JvbGxpbmdOb2RlSUQoKSk7CisgICAgICAgICAgICBpZiAoIW92ZXJmbG93Tm9kZSkKKyAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgcmV0dXJuIGNvbXB1dGVMYXllclBv
c2l0aW9uRm9yU2Nyb2xsaW5nTm9kZSgqb3ZlcmZsb3dOb2RlKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmIChpczxTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZT4oKmFuY2VzdG9yKSkKKyAgICAg
ICAgICAgIHJldHVybiBjb21wdXRlTGF5ZXJQb3NpdGlvbkZvclNjcm9sbGluZ05vZGUoKmFuY2Vz
dG9yKTsKKworICAgICAgICBpZiAoaXM8U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU+KCphbmNlc3Rv
cikpCisgICAgICAgICAgICBvZmZzZXRGcm9tU3RpY2t5QW5jZXN0b3JzICs9IGRvd25jYXN0PFNj
cm9sbGluZ1RyZWVTdGlja3lOb2RlPigqYW5jZXN0b3IpLnNjcm9sbERlbHRhU2luY2VMYXN0Q29t
bWl0KCk7CisKKyAgICAgICAgaWYgKGlzPFNjcm9sbGluZ1RyZWVGaXhlZE5vZGU+KCphbmNlc3Rv
cikpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHNjcm9sbGluZyB0cmVlIG5v
ZGVzIGF0IGFsbCBmb3IgbmVzdGVkIGNhc2VzPworICAgICAgICAgICAgcmV0dXJuIG1fY29uc3Ry
YWludHMubGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCgpOworICAgICAgICB9CisgICAgfQorICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBtX2NvbnN0cmFpbnRzLmxheWVyUG9z
aXRpb25BdExhc3RMYXlvdXQoKTsKK30KKworRmxvYXRTaXplIFNjcm9sbGluZ1RyZWVTdGlja3lO
b2RlOjpzY3JvbGxEZWx0YVNpbmNlTGFzdENvbW1pdCgpIGNvbnN0Cit7CisgICAgYXV0byBsYXll
clBvc2l0aW9uID0gY29tcHV0ZUxheWVyUG9zaXRpb24oKTsKKyAgICByZXR1cm4gbGF5ZXJQb3Np
dGlvbiAtIG1fY29uc3RyYWludHMubGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCgpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5H
KSAmJiBVU0UoTklDT1NJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5MzBmM2QwM2QxOTky
MzAzMWMzZTI3NTQ3Y2E2MDUyM2Q3OWZkM2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oCkBAIC0wLDAgKzEs
NjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKyAqICAgIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBU1lOQ19TQ1JP
TExJTkcpCisKKyNpbmNsdWRlICJTY3JvbGxpbmdDb25zdHJhaW50cy5oIgorI2luY2x1ZGUgIlNj
cm9sbGluZ1RyZWVOb2RlLmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlIDogcHVibGljIFNjcm9s
bGluZ1RyZWVOb2RlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5TY3JvbGxpbmdUcmVlU3RpY2t5
Tm9kZSgpOworCisgICAgRmxvYXRTaXplIHNjcm9sbERlbHRhU2luY2VMYXN0Q29tbWl0KCkgY29u
c3Q7CisKK3Byb3RlY3RlZDoKKyAgICBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZShTY3JvbGxpbmdU
cmVlJiwgU2Nyb2xsaW5nTm9kZUlEKTsKKworICAgIHZvaWQgY29tbWl0U3RhdGVCZWZvcmVDaGls
ZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmKSBvdmVycmlkZTsKKyAgICBGbG9hdFBvaW50
IGNvbXB1dGVMYXllclBvc2l0aW9uKCkgY29uc3Q7CisgICAgdm9pZCBkdW1wUHJvcGVydGllcyhX
VEY6OlRleHRTdHJlYW0mLCBPcHRpb25TZXQ8U2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0QmVoYXZp
b3I+KSBjb25zdCBvdmVycmlkZTsKKworICAgIHZpcnR1YWwgRmxvYXRQb2ludCBsYXllclRvcExl
ZnQoKSBjb25zdCA9IDA7CisKKyAgICBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHMg
bV9jb25zdHJhaW50czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19TQ1JPTExJTkdfTk9ERShTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSwgaXNT
dGlja3lOb2RlKCkpCisKKyNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZUZp
eGVkTm9kZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGlu
Z1RyZWVGaXhlZE5vZGUubW0KaW5kZXggNmI0MTM0NmIzNDVjZWEzMTRjMGMwZjZiZDliZWVjZmU2
ZWZlNDI0MC4uMzZiYzViNzU3OWNkOGJmMTcyYmY5OTg5NDI0YmNmZTM0MTJiN2I0OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZUZp
eGVkTm9kZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb2NvYS9TY3Jv
bGxpbmdUcmVlRml4ZWROb2RlLm1tCkBAIC0zNSw3ICszNSw3IEBACiAjaW1wb3J0ICJTY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxQcm94eU5vZGUuaCIKICNpbXBvcnQgIlNjcm9sbGluZ1RyZWVP
dmVyZmxvd1Njcm9sbGluZ05vZGUuaCIKICNpbXBvcnQgIlNjcm9sbGluZ1RyZWVQb3NpdGlvbmVk
Tm9kZS5oIgotI2ltcG9ydCAiU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaCIKKyNpbXBvcnQgIlNj
cm9sbGluZ1RyZWVTdGlja3lOb2RlQ29jb2EuaCIKICNpbXBvcnQgIldlYkNvcmVDQUxheWVyRXh0
cmFzLmgiCiAjaW1wb3J0IDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKQEAgLTcyLDcgKzcyLDcg
QEAgdm9pZCBTY3JvbGxpbmdUcmVlRml4ZWROb2RlOjphcHBseUxheWVyUG9zaXRpb25zKCkKIHsK
ICAgICBhdXRvIGNvbXB1dGVMYXllclBvc2l0aW9uID0gWyZdIHsKICAgICAgICAgRmxvYXRTaXpl
IG92ZXJmbG93U2Nyb2xsRGVsdGE7Ci0gICAgICAgIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlKiBs
YXN0U3RpY2t5Tm9kZSA9IG51bGxwdHI7CisgICAgICAgIFNjcm9sbGluZ1RyZWVTdGlja3lOb2Rl
Q29jb2EqIGxhc3RTdGlja3lOb2RlID0gbnVsbHB0cjsKICAgICAgICAgZm9yIChhdXRvKiBhbmNl
c3RvciA9IHBhcmVudCgpOyBhbmNlc3RvcjsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+cGFyZW50KCkp
IHsKICAgICAgICAgICAgIGlmIChpczxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPigq
YW5jZXN0b3IpKSB7CiAgICAgICAgICAgICAgICAgLy8gRml4ZWQgbm9kZXMgYXJlIHBvc2l0aW9u
ZWQgcmVsYXRpdmUgdG8gdGhlIGNvbnRhaW5pbmcgZnJhbWUgc2Nyb2xsaW5nIG5vZGUuCkBAIC0x
MDcsNyArMTA3LDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlRml4ZWROb2RlOjphcHBseUxheWVyUG9z
aXRpb25zKCkKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGlzPFNjcm9sbGluZ1Ry
ZWVTdGlja3lOb2RlPigqYW5jZXN0b3IpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byYgc3RpY2t5
Tm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlPigqYW5jZXN0b3IpOworICAg
ICAgICAgICAgICAgIGF1dG8mIHN0aWNreU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdUcmVlU3Rp
Y2t5Tm9kZUNvY29hPigqYW5jZXN0b3IpOwogICAgICAgICAgICAgICAgIG92ZXJmbG93U2Nyb2xs
RGVsdGEgKz0gc3RpY2t5Tm9kZS5zY3JvbGxEZWx0YVNpbmNlTGFzdENvbW1pdCgpOwogICAgICAg
ICAgICAgICAgIGxhc3RTdGlja3lOb2RlID0gJnN0aWNreU5vZGU7CiAgICAgICAgICAgICAgICAg
Y29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb2Nv
YS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvY29jb2EvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZDMwMzM3MjA1YjlhMDAyMTdiYTkwZWEyMzFkNjU3N2JlMGI1NmRhNC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oCisrKyAvZGV2L251
bGwKQEAgLTEsNjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKEFTWU5DX1NDUk9MTElORykKLQotI2luY2x1ZGUgIlNjcm9sbGluZ0NvbnN0cmFpbnRzLmgi
Ci0jaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZU5vZGUuaCIKLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+Ci0KLU9CSkNfQ0xBU1MgQ0FMYXllcjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFz
cyBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSA6IHB1YmxpYyBTY3JvbGxpbmdUcmVlTm9kZSB7Ci1w
dWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTY3JvbGxpbmdUcmVlU3RpY2t5
Tm9kZT4gY3JlYXRlKFNjcm9sbGluZ1RyZWUmLCBTY3JvbGxpbmdOb2RlSUQpOwotCi0gICAgdmly
dHVhbCB+U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUoKTsKLQotICAgIEZsb2F0U2l6ZSBzY3JvbGxE
ZWx0YVNpbmNlTGFzdENvbW1pdCgpIGNvbnN0OwotCi0gICAgQ0FMYXllciAqbGF5ZXIoKSB7IHJl
dHVybiBtX2xheWVyLmdldCgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgU2Nyb2xsaW5nVHJlZVN0aWNr
eU5vZGUoU2Nyb2xsaW5nVHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7Ci0KLSAgICB2b2lkIGNvbW1p
dFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBhcHBseUxheWVyUG9zaXRpb25zKCkgb3ZlcnJpZGU7Ci0KLSAgICBGbG9hdFBv
aW50IGNvbXB1dGVMYXllclBvc2l0aW9uKCkgY29uc3Q7Ci0KLSAgICB2b2lkIGR1bXBQcm9wZXJ0
aWVzKFdURjo6VGV4dFN0cmVhbSYsIE9wdGlvblNldDxTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRC
ZWhhdmlvcj4pIGNvbnN0IG92ZXJyaWRlOwotCi0gICAgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENv
bnN0cmFpbnRzIG1fY29uc3RyYWludHM7Ci0gICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fbGF5ZXI7
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
U0NST0xMSU5HX05PREUoU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUsIGlzU3RpY2t5Tm9kZSgpKQot
Ci0jZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZVN0aWNreU5v
ZGUubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiMTYzYWExNmVmYzNhYWI5YWRi
ODQ1OTRiNTIxZWU5YmRjOWZmODEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5n
VHJlZVN0aWNreU5vZGUubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxNDUgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiU2Nyb2xsaW5nVHJlZVN0aWNreU5v
ZGUuaCIKLQotI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCi0KLSNpbXBvcnQgIkxvZ2dpbmcu
aCIKLSNpbXBvcnQgIlNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5oIgotI2ltcG9ydCAiU2Nyb2xs
aW5nVHJlZS5oIgotI2ltcG9ydCAiU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5oIgotI2ltcG9ydCAi
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5oIgotI2ltcG9ydCAiU2Nyb2xsaW5nVHJl
ZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlLmgiCi0jaW1wb3J0ICJTY3JvbGxpbmdUcmVlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlLmgiCi0jaW1wb3J0ICJXZWJDb3JlQ0FMYXllckV4dHJhcy5oIgotI2lt
cG9ydCA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJl
ZjxTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZT4gU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OmNyZWF0
ZShTY3JvbGxpbmdUcmVlJiBzY3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQot
ewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlKHNjcm9s
bGluZ1RyZWUsIG5vZGVJRCkpOwotfQotCi1TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6U2Nyb2xs
aW5nVHJlZVN0aWNreU5vZGUoU2Nyb2xsaW5nVHJlZSYgc2Nyb2xsaW5nVHJlZSwgU2Nyb2xsaW5n
Tm9kZUlEIG5vZGVJRCkKLSAgICA6IFNjcm9sbGluZ1RyZWVOb2RlKHNjcm9sbGluZ1RyZWUsIFNj
cm9sbGluZ05vZGVUeXBlOjpTdGlja3ksIG5vZGVJRCkKLXsKLSAgICBzY3JvbGxpbmdUcmVlLmZp
eGVkT3JTdGlja3lOb2RlQWRkZWQoKTsKLX0KLQotU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6On5T
Y3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSgpCi17Ci0gICAgc2Nyb2xsaW5nVHJlZSgpLmZpeGVkT3JT
dGlja3lOb2RlUmVtb3ZlZCgpOwotfQotCi12b2lkIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpj
b21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYgc3RhdGVO
b2RlKQotewotICAgIGNvbnN0IFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZSYgc3RpY2t5U3RhdGVO
b2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlPihzdGF0ZU5vZGUpOwotCi0g
ICAgaWYgKHN0aWNreVN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVO
b2RlOjpQcm9wZXJ0eTo6TGF5ZXIpKQotICAgICAgICBtX2xheWVyID0gc3RhdGljX2Nhc3Q8Q0FM
YXllcio+KHN0aWNreVN0YXRlTm9kZS5sYXllcigpKTsKLQotICAgIGlmIChzdGF0ZU5vZGUuaGFz
Q2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlZpZXdwb3J0Q29u
c3RyYWludHMpKQotICAgICAgICBtX2NvbnN0cmFpbnRzID0gc3RpY2t5U3RhdGVOb2RlLnZpZXdw
b3J0Q29uc3RyYWludHMoKTsKLX0KLQotRmxvYXRQb2ludCBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZTo6Y29tcHV0ZUxheWVyUG9zaXRpb24oKSBjb25zdAotewotICAgIEZsb2F0U2l6ZSBvZmZzZXRG
cm9tU3RpY2t5QW5jZXN0b3JzOwotICAgIGF1dG8gY29tcHV0ZUxheWVyUG9zaXRpb25Gb3JTY3Jv
bGxpbmdOb2RlID0gWyZdKFNjcm9sbGluZ1RyZWVOb2RlJiBzY3JvbGxpbmdOb2RlKSB7Ci0gICAg
ICAgIEZsb2F0UmVjdCBjb25zdHJhaW5pbmdSZWN0OwotICAgICAgICBpZiAoaXM8U2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZT4oc2Nyb2xsaW5nTm9kZSkpIHsKLSAgICAgICAgICAgIGF1
dG8mIGZyYW1lU2Nyb2xsaW5nTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGU+KHNjcm9sbGluZ05vZGUpOwotICAgICAgICAgICAgY29uc3RyYWluaW5nUmVjdCA9
IGZyYW1lU2Nyb2xsaW5nTm9kZS5sYXlvdXRWaWV3cG9ydCgpOwotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgYXV0byYgb3ZlcmZsb3dTY3JvbGxpbmdOb2RlID0gZG93bmNhc3Q8U2Nyb2xs
aW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZT4oc2Nyb2xsaW5nTm9kZSk7Ci0gICAgICAgICAg
ICBjb25zdHJhaW5pbmdSZWN0ID0gbV9jb25zdHJhaW50cy5jb25zdHJhaW5pbmdSZWN0QXRMYXN0
TGF5b3V0KCk7Ci0gICAgICAgICAgICBjb25zdHJhaW5pbmdSZWN0Lm1vdmUob3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlLnNjcm9sbERlbHRhU2luY2VMYXN0Q29tbWl0KCkpOwotICAgICAgICB9Ci0gICAg
ICAgIGNvbnN0cmFpbmluZ1JlY3QubW92ZSgtb2Zmc2V0RnJvbVN0aWNreUFuY2VzdG9ycyk7Ci0g
ICAgICAgIHJldHVybiBtX2NvbnN0cmFpbnRzLmxheWVyUG9zaXRpb25Gb3JDb25zdHJhaW5pbmdS
ZWN0KGNvbnN0cmFpbmluZ1JlY3QpOwotICAgIH07Ci0KLSAgICBmb3IgKGF1dG8qIGFuY2VzdG9y
ID0gcGFyZW50KCk7IGFuY2VzdG9yOyBhbmNlc3RvciA9IGFuY2VzdG9yLT5wYXJlbnQoKSkgewot
ICAgICAgICBpZiAoaXM8U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlPigqYW5j
ZXN0b3IpKSB7Ci0gICAgICAgICAgICBhdXRvJiBvdmVyZmxvd1Byb3h5Tm9kZSA9IGRvd25jYXN0
PFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZT4oKmFuY2VzdG9yKTsKLSAgICAg
ICAgICAgIGF1dG8gb3ZlcmZsb3dOb2RlID0gc2Nyb2xsaW5nVHJlZSgpLm5vZGVGb3JJRChvdmVy
Zmxvd1Byb3h5Tm9kZS5vdmVyZmxvd1Njcm9sbGluZ05vZGVJRCgpKTsKLSAgICAgICAgICAgIGlm
ICghb3ZlcmZsb3dOb2RlKQotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICBy
ZXR1cm4gY29tcHV0ZUxheWVyUG9zaXRpb25Gb3JTY3JvbGxpbmdOb2RlKCpvdmVyZmxvd05vZGUp
OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGlzPFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
PigqYW5jZXN0b3IpKQotICAgICAgICAgICAgcmV0dXJuIGNvbXB1dGVMYXllclBvc2l0aW9uRm9y
U2Nyb2xsaW5nTm9kZSgqYW5jZXN0b3IpOwotCi0gICAgICAgIGlmIChpczxTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZT4oKmFuY2VzdG9yKSkKLSAgICAgICAgICAgIG9mZnNldEZyb21TdGlja3lBbmNl
c3RvcnMgKz0gZG93bmNhc3Q8U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU+KCphbmNlc3Rvcikuc2Ny
b2xsRGVsdGFTaW5jZUxhc3RDb21taXQoKTsKLQotICAgICAgICBpZiAoaXM8U2Nyb2xsaW5nVHJl
ZUZpeGVkTm9kZT4oKmFuY2VzdG9yKSkgewotICAgICAgICAgICAgLy8gRklYTUU6IERvIHdlIG5l
ZWQgc2Nyb2xsaW5nIHRyZWUgbm9kZXMgYXQgYWxsIGZvciBuZXN0ZWQgY2FzZXM/Ci0gICAgICAg
ICAgICByZXR1cm4gbV9jb25zdHJhaW50cy5sYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0KCk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIG1f
Y29uc3RyYWludHMubGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCgpOwotfQotCi12b2lkIFNjcm9s
bGluZ1RyZWVTdGlja3lOb2RlOjphcHBseUxheWVyUG9zaXRpb25zKCkKLXsKLSAgICBhdXRvIGxh
eWVyUG9zaXRpb24gPSBjb21wdXRlTGF5ZXJQb3NpdGlvbigpOwotCi0gICAgTE9HX1dJVEhfU1RS
RUFNKFNjcm9sbGluZywgc3RyZWFtIDw8ICJTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSAiIDw8IHNj
cm9sbGluZ05vZGVJRCgpIDw8ICIgY29uc3RyYWluaW5nUmVjdEF0TGFzdExheW91dCAiIDw8IG1f
Y29uc3RyYWludHMuY29uc3RyYWluaW5nUmVjdEF0TGFzdExheW91dCgpIDw8ICIgbGFzdCBsYXll
ciBwb3MgIiA8PCBtX2NvbnN0cmFpbnRzLmxheWVyUG9zaXRpb25BdExhc3RMYXlvdXQoKSA8PCAi
IGxheWVyUG9zaXRpb24gIiA8PCBsYXllclBvc2l0aW9uKTsKLQotICAgIFttX2xheWVyIF93ZWJf
c2V0TGF5ZXJUb3BMZWZ0UG9zaXRpb246bGF5ZXJQb3NpdGlvbiAtIG1fY29uc3RyYWludHMuYWxp
Z25tZW50T2Zmc2V0KCldOwotfQotCi1GbG9hdFNpemUgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6
OnNjcm9sbERlbHRhU2luY2VMYXN0Q29tbWl0KCkgY29uc3QKLXsKLSAgICBhdXRvIGxheWVyUG9z
aXRpb24gPSBjb21wdXRlTGF5ZXJQb3NpdGlvbigpOwotICAgIHJldHVybiBsYXllclBvc2l0aW9u
IC0gbV9jb25zdHJhaW50cy5sYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0KCk7Ci19Ci0KLXZvaWQg
U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OmR1bXBQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBP
cHRpb25TZXQ8U2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0QmVoYXZpb3I+IGJlaGF2aW9yKSBjb25z
dAotewotICAgIHRzIDw8ICJzdGlja3kgbm9kZSI7Ci0KLSAgICBTY3JvbGxpbmdUcmVlTm9kZTo6
ZHVtcFByb3BlcnRpZXModHMsIGJlaGF2aW9yKTsKLSAgICB0cy5kdW1wUHJvcGVydHkoInN0aWNr
eSBjb25zdHJhaW50cyIsIG1fY29uc3RyYWludHMpOwotCi0gICAgaWYgKGJlaGF2aW9yICYgU2Ny
b2xsaW5nU3RhdGVUcmVlQXNUZXh0QmVoYXZpb3I6OkluY2x1ZGVMYXllclBvc2l0aW9ucykgewot
ICAgICAgICBGbG9hdFJlY3QgbGF5ZXJCb3VuZHMgPSBbbV9sYXllciBib3VuZHNdOwotICAgICAg
ICBGbG9hdFBvaW50IGFuY2hvclBvaW50ID0gW21fbGF5ZXIgYW5jaG9yUG9pbnRdOwotICAgICAg
ICBGbG9hdFBvaW50IHBvc2l0aW9uID0gW21fbGF5ZXIgcG9zaXRpb25dOwotICAgICAgICBGbG9h
dFBvaW50IGxheWVyVG9wTGVmdCA9IHBvc2l0aW9uIC0gdG9GbG9hdFNpemUoYW5jaG9yUG9pbnQp
ICogbGF5ZXJCb3VuZHMuc2l6ZSgpICsgbV9jb25zdHJhaW50cy5hbGlnbm1lbnRPZmZzZXQoKTsK
LSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJsYXllciB0b3AgbGVmdCIsIGxheWVyVG9wTGVmdCk7
Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUo
QVNZTkNfU0NST0xMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvY29jb2EvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVDb2NvYS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmFmOTg3OThhY2ViNWY0M2Q2ZWVlNmZhZDc1ZGMwNDAyMTFiNDY5MTIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdU
cmVlU3RpY2t5Tm9kZUNvY29hLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKKworI2luY2x1ZGUgIlNjcm9s
bGluZ0NvbnN0cmFpbnRzLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaCIK
KyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfQ0xBU1MgQ0FMYXllcjsKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUNvY29hIDog
cHVibGljIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlIHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmPFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlQ29jb2E+IGNyZWF0ZShTY3Jv
bGxpbmdUcmVlJiwgU2Nyb2xsaW5nTm9kZUlEKTsKKworICAgIHZpcnR1YWwgflNjcm9sbGluZ1Ry
ZWVTdGlja3lOb2RlQ29jb2EoKSA9IGRlZmF1bHQ7CisKKyAgICBDQUxheWVyICpsYXllcigpIHsg
cmV0dXJuIG1fbGF5ZXIuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBTY3JvbGxpbmdUcmVlU3Rp
Y2t5Tm9kZUNvY29hKFNjcm9sbGluZ1RyZWUmLCBTY3JvbGxpbmdOb2RlSUQpOworCisgICAgdm9p
ZCBjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYpIG92
ZXJyaWRlOworICAgIHZvaWQgYXBwbHlMYXllclBvc2l0aW9ucygpIG92ZXJyaWRlOworICAgIEZs
b2F0UG9pbnQgbGF5ZXJUb3BMZWZ0KCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBSZXRhaW5QdHI8
Q0FMYXllcj4gbV9sYXllcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19TQ1JPTExJTkdfTk9ERShTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUNv
Y29hLCBpc1N0aWNreU5vZGUoKSkKKworI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxp
bmdUcmVlU3RpY2t5Tm9kZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
Y29jb2EvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOThmZTlm
MDAyMGViZTUxNmE5ZDY5NDBkZWVlNWVjOThjYTVmZTcwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVD
b2NvYS5tbQpAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisjaW1wb3J0ICJTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUNvY29hLmgiCisKKyNpZiBFTkFCTEUo
QVNZTkNfU0NST0xMSU5HKQorCisjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJTY3JvbGxp
bmdTdGF0ZVN0aWNreU5vZGUuaCIKKyNpbXBvcnQgIlNjcm9sbGluZ1RyZWUuaCIKKyNpbXBvcnQg
IldlYkNvcmVDQUxheWVyRXh0cmFzLmgiCisjaW1wb3J0IDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlQ29j
b2E+IFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlQ29jb2E6OmNyZWF0ZShTY3JvbGxpbmdUcmVlJiBz
Y3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQoreworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlQ29jb2Eoc2Nyb2xsaW5nVHJlZSwgbm9k
ZUlEKSk7Cit9CisKK1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlQ29jb2E6OlNjcm9sbGluZ1RyZWVT
dGlja3lOb2RlQ29jb2EoU2Nyb2xsaW5nVHJlZSYgc2Nyb2xsaW5nVHJlZSwgU2Nyb2xsaW5nTm9k
ZUlEIG5vZGVJRCkKKyAgICA6IFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlKHNjcm9sbGluZ1RyZWUs
IG5vZGVJRCkKK3sKK30KKwordm9pZCBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUNvY29hOjpjb21t
aXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYgc3RhdGVOb2Rl
KQoreworICAgIGNvbnN0IFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZSYgc3RpY2t5U3RhdGVOb2Rl
ID0gZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlPihzdGF0ZU5vZGUpOworCisgICAg
aWYgKHN0aWNreVN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2Rl
OjpQcm9wZXJ0eTo6TGF5ZXIpKQorICAgICAgICBtX2xheWVyID0gc3RhdGljX2Nhc3Q8Q0FMYXll
cio+KHN0aWNreVN0YXRlTm9kZS5sYXllcigpKTsKKworICAgIFNjcm9sbGluZ1RyZWVTdGlja3lO
b2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKHN0YXRlTm9kZSk7Cit9CisKK3ZvaWQgU2Ny
b2xsaW5nVHJlZVN0aWNreU5vZGVDb2NvYTo6YXBwbHlMYXllclBvc2l0aW9ucygpCit7CisgICAg
YXV0byBsYXllclBvc2l0aW9uID0gY29tcHV0ZUxheWVyUG9zaXRpb24oKTsKKworICAgIExPR19X
SVRIX1NUUkVBTShTY3JvbGxpbmcsIHN0cmVhbSA8PCAiU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVD
b2NvYSAiIDw8IHNjcm9sbGluZ05vZGVJRCgpIDw8ICIgY29uc3RyYWluaW5nUmVjdEF0TGFzdExh
eW91dCAiIDw8IG1fY29uc3RyYWludHMuY29uc3RyYWluaW5nUmVjdEF0TGFzdExheW91dCgpIDw8
ICIgbGFzdCBsYXllciBwb3MgIiA8PCBtX2NvbnN0cmFpbnRzLmxheWVyUG9zaXRpb25BdExhc3RM
YXlvdXQoKSA8PCAiIGxheWVyUG9zaXRpb24gIiA8PCBsYXllclBvc2l0aW9uKTsKKworICAgIFtt
X2xheWVyIF93ZWJfc2V0TGF5ZXJUb3BMZWZ0UG9zaXRpb246bGF5ZXJQb3NpdGlvbiAtIG1fY29u
c3RyYWludHMuYWxpZ25tZW50T2Zmc2V0KCldOworfQorCitGbG9hdFBvaW50IFNjcm9sbGluZ1Ry
ZWVTdGlja3lOb2RlQ29jb2E6OmxheWVyVG9wTGVmdCgpIGNvbnN0Cit7CisgICAgRmxvYXRSZWN0
IGxheWVyQm91bmRzID0gW21fbGF5ZXIgYm91bmRzXTsKKyAgICBGbG9hdFBvaW50IGFuY2hvclBv
aW50ID0gW21fbGF5ZXIgYW5jaG9yUG9pbnRdOworICAgIEZsb2F0UG9pbnQgcG9zaXRpb24gPSBb
bV9sYXllciBwb3NpdGlvbl07CisgICAgcmV0dXJuIHBvc2l0aW9uIC0gdG9GbG9hdFNpemUoYW5j
aG9yUG9pbnQpICogbGF5ZXJCb3VuZHMuc2l6ZSgpICsgbV9jb25zdHJhaW50cy5hbGlnbm1lbnRP
ZmZzZXQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KEFTWU5DX1NDUk9MTElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5tbQppbmRleCA4OTI0MmM2MWEz
YjUwYjhmZDY3ZmIyZDcwOTc3OGUzMzNhM2Q5NTgxLi4yMmEyYjIzNDQwNDY2MTFiYWNjM2ZmYzI4
YWQwMTdmN2IzYmNkYTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tCkBAIC00MCw3ICs0MCw3
IEBACiAjaW1wb3J0ICJTY3JvbGxpbmdUcmVlRml4ZWROb2RlLmgiCiAjaW1wb3J0ICJTY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLmgiCiAjaW1wb3J0ICJTY3JvbGxpbmdUcmVlTWFj
LmgiCi0jaW1wb3J0ICJTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oIgorI2ltcG9ydCAiU2Nyb2xs
aW5nVHJlZVN0aWNreU5vZGVDb2NvYS5oIgogI2ltcG9ydCAiVGlsZWRCYWNraW5nLmgiCiAjaW1w
b3J0IDx3dGYvTWFpblRocmVhZC5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTWFjLm1tCmluZGV4IDAxNjRkNTMyNDYyNDFjYmFm
MTg3NWFlZTc5OTZiMWU1MzI5NTgyZjIuLjM1ZmNlMWEyZDAwNDBhNzA1OWMzOGYyYjg5MTgwMmIx
NjVkMzdlN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9T
Y3JvbGxpbmdUcmVlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdUcmVlTWFjLm1tCkBAIC0zNCw3ICszNCw3IEBACiAjaW1wb3J0ICJTY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxQcm94eU5vZGUuaCIKICNpbXBvcnQgIlNjcm9sbGluZ1RyZWVP
dmVyZmxvd1Njcm9sbGluZ05vZGVNYWMuaCIKICNpbXBvcnQgIlNjcm9sbGluZ1RyZWVQb3NpdGlv
bmVkTm9kZS5oIgotI2ltcG9ydCAiU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaCIKKyNpbXBvcnQg
IlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlQ29jb2EuaCIKICNpbXBvcnQgIldlYkNvcmVDQUxheWVy
RXh0cmFzLmgiCiAjaW1wb3J0ICJXZWJMYXllci5oIgogI2ltcG9ydCAiV2hlZWxFdmVudFRlc3RN
b25pdG9yLmgiCkBAIC02OSw3ICs2OSw3IEBAIFJlZjxTY3JvbGxpbmdUcmVlTm9kZT4gU2Nyb2xs
aW5nVHJlZU1hYzo6Y3JlYXRlU2Nyb2xsaW5nVHJlZU5vZGUoU2Nyb2xsaW5nTm9kZVR5CiAgICAg
Y2FzZSBTY3JvbGxpbmdOb2RlVHlwZTo6Rml4ZWQ6CiAgICAgICAgIHJldHVybiBTY3JvbGxpbmdU
cmVlRml4ZWROb2RlOjpjcmVhdGUoKnRoaXMsIG5vZGVJRCk7CiAgICAgY2FzZSBTY3JvbGxpbmdO
b2RlVHlwZTo6U3RpY2t5OgotICAgICAgICByZXR1cm4gU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6
OmNyZWF0ZSgqdGhpcywgbm9kZUlEKTsKKyAgICAgICAgcmV0dXJuIFNjcm9sbGluZ1RyZWVTdGlj
a3lOb2RlQ29jb2E6OmNyZWF0ZSgqdGhpcywgbm9kZUlEKTsKICAgICBjYXNlIFNjcm9sbGluZ05v
ZGVUeXBlOjpQb3NpdGlvbmVkOgogICAgICAgICByZXR1cm4gU2Nyb2xsaW5nVHJlZVBvc2l0aW9u
ZWROb2RlOjpjcmVhdGUoKnRoaXMsIG5vZGVJRCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlTmljb3NpYS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVOaWNv
c2lhLmNwcAppbmRleCBhYjRiNjdjYTJhZjM2YjcxMDVlM2NjMTFiM2JkMzJkNWY4YjBlMDcxLi5l
Y2JiMzgwYTFhYzVhYTkzNjhjYTczYmQ4OGVmMjkzMzBlNTljYWI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVOaWNvc2lhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1Ry
ZWVOaWNvc2lhLmNwcApAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVP
dmVyZmxvd1Njcm9sbFByb3h5Tm9kZS5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbGluZ05vZGVOaWNvc2lhLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZVBvc2l0aW9u
ZWROb2RlLmgiCi0jaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaCIKKyNpbmNsdWRl
ICJTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZU5pY29zaWEuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC02Nyw3ICs2Nyw3IEBAIFJlZjxTY3JvbGxpbmdUcmVlTm9kZT4gU2Nyb2xsaW5nVHJl
ZU5pY29zaWE6OmNyZWF0ZVNjcm9sbGluZ1RyZWVOb2RlKFNjcm9sbGluZ05vCiAgICAgY2FzZSBT
Y3JvbGxpbmdOb2RlVHlwZTo6Rml4ZWQ6CiAgICAgICAgIHJldHVybiBTY3JvbGxpbmdUcmVlRml4
ZWROb2RlOjpjcmVhdGUoKnRoaXMsIG5vZGVJRCk7CiAgICAgY2FzZSBTY3JvbGxpbmdOb2RlVHlw
ZTo6U3RpY2t5OgotICAgICAgICByZXR1cm4gU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OmNyZWF0
ZSgqdGhpcywgbm9kZUlEKTsKKyAgICAgICAgcmV0dXJuIFNjcm9sbGluZ1RyZWVTdGlja3lOb2Rl
Tmljb3NpYTo6Y3JlYXRlKCp0aGlzLCBub2RlSUQpOwogICAgIGNhc2UgU2Nyb2xsaW5nTm9kZVR5
cGU6OlBvc2l0aW9uZWQ6CiAgICAgICAgIHJldHVybiBTY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5v
ZGU6OmNyZWF0ZSgqdGhpcywgbm9kZUlEKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNr
eU5vZGUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZDY2NDNmMTMwM2NkOTIw
ZGZlNDljNGE5MzYyNzg4YjVkOTYxMDIxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Ny
b2xsaW5nVHJlZVN0aWNreU5vZGUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTYyICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICogQ29weXJpZ2h0IChDKSAyMDE5IElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKLSAqICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0g
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2Nyb2xsaW5nVHJl
ZVN0aWNreU5vZGUuaCIKLQotI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFVTRShOSUNP
U0lBKQotCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIk5pY29zaWFQbGF0Zm9ybUxh
eWVyLmgiCi0jaW5jbHVkZSAiU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlLmgiCi0jaW5jbHVkZSAi
U2Nyb2xsaW5nVHJlZS5oIgotI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVGaXhlZE5vZGUuaCIKLSNp
bmNsdWRlICJTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLmgiCi0jaW5jbHVkZSAiU2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlLmgiCi0jaW5jbHVkZSAiU2Nyb2xsaW5n
VHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJl
YW0uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8U2Nyb2xsaW5nVHJlZVN0aWNreU5v
ZGU+IFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpjcmVhdGUoU2Nyb2xsaW5nVHJlZSYgc2Nyb2xs
aW5nVHJlZSwgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZShzY3JvbGxpbmdUcmVlLCBub2RlSUQpKTsKLX0K
LQotU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlKFNjcm9s
bGluZ1RyZWUmIHNjcm9sbGluZ1RyZWUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCi0gICAgOiBT
Y3JvbGxpbmdUcmVlTm9kZShzY3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdOb2RlVHlwZTo6U3RpY2t5
LCBub2RlSUQpCi17Ci0gICAgc2Nyb2xsaW5nVHJlZS5maXhlZE9yU3RpY2t5Tm9kZUFkZGVkKCk7
Ci19Ci0KLVNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjp+U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUo
KQotewotICAgIHNjcm9sbGluZ1RyZWUoKS5maXhlZE9yU3RpY2t5Tm9kZVJlbW92ZWQoKTsKLX0K
LQotdm9pZCBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJl
bihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmIHN0YXRlTm9kZSkKLXsKLSAgICBhdXRvJiBzdGlj
a3lTdGF0ZU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGU+KHN0YXRlTm9k
ZSk7Ci0KLSAgICBpZiAoc3RpY2t5U3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxp
bmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpMYXllcikpIHsKLSAgICAgICAgYXV0byogbGF5ZXIgPSBz
dGF0aWNfY2FzdDxOaWNvc2lhOjpQbGF0Zm9ybUxheWVyKj4oc3RpY2t5U3RhdGVOb2RlLmxheWVy
KCkpOwotICAgICAgICBtX2xheWVyID0gZG93bmNhc3Q8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXll
cj4obGF5ZXIpOwotICAgIH0KLQotICAgIGlmIChzdGlja3lTdGF0ZU5vZGUuaGFzQ2hhbmdlZFBy
b3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlZpZXdwb3J0Q29uc3RyYWludHMp
KQotICAgICAgICBtX2NvbnN0cmFpbnRzID0gc3RpY2t5U3RhdGVOb2RlLnZpZXdwb3J0Q29uc3Ry
YWludHMoKTsKLX0KLQotdm9pZCBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6YXBwbHlMYXllclBv
c2l0aW9ucygpCi17Ci0gICAgYXV0byBsYXllclBvc2l0aW9uID0gY29tcHV0ZUxheWVyUG9zaXRp
b24oKTsKLQotICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxpbmcsIHN0cmVhbSA8PCAiU2Nyb2xs
aW5nVHJlZVN0aWNreU5vZGUgIiA8PCBzY3JvbGxpbmdOb2RlSUQoKSA8PCAiIGNvbnN0cmFpbmlu
Z1JlY3RBdExhc3RMYXlvdXQgIiA8PCBtX2NvbnN0cmFpbnRzLmNvbnN0cmFpbmluZ1JlY3RBdExh
c3RMYXlvdXQoKSA8PCAiIGxhc3QgbGF5ZXIgcG9zICIgPDwgbV9jb25zdHJhaW50cy5sYXllclBv
c2l0aW9uQXRMYXN0TGF5b3V0KCkgPDwgIiBsYXllclBvc2l0aW9uICIgPDwgbGF5ZXJQb3NpdGlv
bik7Ci0KLSAgICBsYXllclBvc2l0aW9uIC09IG1fY29uc3RyYWludHMuYWxpZ25tZW50T2Zmc2V0
KCk7Ci0KLSAgICBBU1NFUlQobV9sYXllcik7Ci0gICAgbV9sYXllci0+dXBkYXRlU3RhdGUoCi0g
ICAgICAgIFsmbGF5ZXJQb3NpdGlvbl0oTmljb3NpYTo6Q29tcG9zaXRpb25MYXllcjo6TGF5ZXJT
dGF0ZSYgc3RhdGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRlLnBvc2l0aW9uID0gbGF5
ZXJQb3NpdGlvbjsKLSAgICAgICAgICAgIHN0YXRlLmRlbHRhLnBvc2l0aW9uQ2hhbmdlZCA9IHRy
dWU7Ci0gICAgICAgIH0pOwotfQotCi12b2lkIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpkdW1w
UHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywgT3B0aW9uU2V0PFNjcm9sbGluZ1N0YXRlVHJlZUFz
VGV4dEJlaGF2aW9yPiBiZWhhdmlvcikgY29uc3QKLXsKLSAgICB0cyA8PCAic3RpY2t5IG5vZGUi
OwotCi0gICAgU2Nyb2xsaW5nVHJlZU5vZGU6OmR1bXBQcm9wZXJ0aWVzKHRzLCBiZWhhdmlvcik7
Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJzdGlja3kgY29uc3RyYWludHMiLCBtX2NvbnN0cmFpbnRz
KTsKLQotICAgIGlmIChiZWhhdmlvciAmIFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9y
OjpJbmNsdWRlTGF5ZXJQb3NpdGlvbnMpIHsKLSAgICAgICAgRmxvYXRQb2ludCBsYXllclRvcExl
ZnQ7Ci0gICAgICAgIEFTU0VSVChtX2xheWVyKTsKLSAgICAgICAgbV9sYXllci0+YWNjZXNzQ29t
bWl0dGVkKAotICAgICAgICAgICAgW3RoaXMsICZsYXllclRvcExlZnRdKE5pY29zaWE6OkNvbXBv
c2l0aW9uTGF5ZXI6OkxheWVyU3RhdGUmIHN0YXRlKQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIGxheWVyVG9wTGVmdCA9IHN0YXRlLnBvc2l0aW9uIC0gdG9GbG9hdFNpemUoc3RhdGUu
YW5jaG9yUG9pbnQueHkoKSkgKiBzdGF0ZS5zaXplICsgbV9jb25zdHJhaW50cy5hbGlnbm1lbnRP
ZmZzZXQoKTsKLSAgICAgICAgICAgIH0pOwotCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgibGF5
ZXIgdG9wIGxlZnQiLCBsYXllclRvcExlZnQpOwotICAgIH0KLX0KLQotRmxvYXRQb2ludCBTY3Jv
bGxpbmdUcmVlU3RpY2t5Tm9kZTo6Y29tcHV0ZUxheWVyUG9zaXRpb24oKSBjb25zdAotewotICAg
IEZsb2F0U2l6ZSBvZmZzZXRGcm9tU3RpY2t5QW5jZXN0b3JzOwotICAgIGF1dG8gY29tcHV0ZUxh
eWVyUG9zaXRpb25Gb3JTY3JvbGxpbmdOb2RlID0gWyZdKFNjcm9sbGluZ1RyZWVOb2RlJiBzY3Jv
bGxpbmdOb2RlKSB7Ci0gICAgICAgIEZsb2F0UmVjdCBjb25zdHJhaW5pbmdSZWN0OwotICAgICAg
ICBpZiAoaXM8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZT4oc2Nyb2xsaW5nTm9kZSkp
IHsKLSAgICAgICAgICAgIGF1dG8mIGZyYW1lU2Nyb2xsaW5nTm9kZSA9IGRvd25jYXN0PFNjcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU+KHNjcm9sbGluZ05vZGUpOwotICAgICAgICAgICAg
Y29uc3RyYWluaW5nUmVjdCA9IGZyYW1lU2Nyb2xsaW5nTm9kZS5sYXlvdXRWaWV3cG9ydCgpOwot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYXV0byYgb3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
ID0gZG93bmNhc3Q8U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZT4oc2Nyb2xsaW5n
Tm9kZSk7Ci0gICAgICAgICAgICBjb25zdHJhaW5pbmdSZWN0ID0gbV9jb25zdHJhaW50cy5jb25z
dHJhaW5pbmdSZWN0QXRMYXN0TGF5b3V0KCk7Ci0gICAgICAgICAgICBjb25zdHJhaW5pbmdSZWN0
Lm1vdmUob3ZlcmZsb3dTY3JvbGxpbmdOb2RlLnNjcm9sbERlbHRhU2luY2VMYXN0Q29tbWl0KCkp
OwotICAgICAgICB9Ci0gICAgICAgIGNvbnN0cmFpbmluZ1JlY3QubW92ZSgtb2Zmc2V0RnJvbVN0
aWNreUFuY2VzdG9ycyk7Ci0gICAgICAgIHJldHVybiBtX2NvbnN0cmFpbnRzLmxheWVyUG9zaXRp
b25Gb3JDb25zdHJhaW5pbmdSZWN0KGNvbnN0cmFpbmluZ1JlY3QpOwotICAgIH07Ci0KLSAgICBm
b3IgKGF1dG8qIGFuY2VzdG9yID0gcGFyZW50KCk7IGFuY2VzdG9yOyBhbmNlc3RvciA9IGFuY2Vz
dG9yLT5wYXJlbnQoKSkgewotICAgICAgICBpZiAoaXM8U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Ny
b2xsUHJveHlOb2RlPigqYW5jZXN0b3IpKSB7Ci0gICAgICAgICAgICBhdXRvJiBvdmVyZmxvd1By
b3h5Tm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZT4o
KmFuY2VzdG9yKTsKLSAgICAgICAgICAgIGF1dG8gb3ZlcmZsb3dOb2RlID0gc2Nyb2xsaW5nVHJl
ZSgpLm5vZGVGb3JJRChvdmVyZmxvd1Byb3h5Tm9kZS5vdmVyZmxvd1Njcm9sbGluZ05vZGVJRCgp
KTsKLSAgICAgICAgICAgIGlmICghb3ZlcmZsb3dOb2RlKQotICAgICAgICAgICAgICAgIGJyZWFr
OwotCi0gICAgICAgICAgICByZXR1cm4gY29tcHV0ZUxheWVyUG9zaXRpb25Gb3JTY3JvbGxpbmdO
b2RlKCpvdmVyZmxvd05vZGUpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGlzPFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlPigqYW5jZXN0b3IpKQotICAgICAgICAgICAgcmV0dXJuIGNvbXB1
dGVMYXllclBvc2l0aW9uRm9yU2Nyb2xsaW5nTm9kZSgqYW5jZXN0b3IpOwotCi0gICAgICAgIGlm
IChpczxTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZT4oKmFuY2VzdG9yKSkKLSAgICAgICAgICAgIG9m
ZnNldEZyb21TdGlja3lBbmNlc3RvcnMgKz0gZG93bmNhc3Q8U2Nyb2xsaW5nVHJlZVN0aWNreU5v
ZGU+KCphbmNlc3Rvcikuc2Nyb2xsRGVsdGFTaW5jZUxhc3RDb21taXQoKTsKLQotICAgICAgICBp
ZiAoaXM8U2Nyb2xsaW5nVHJlZUZpeGVkTm9kZT4oKmFuY2VzdG9yKSkgewotICAgICAgICAgICAg
Ly8gRklYTUU6IERvIHdlIG5lZWQgc2Nyb2xsaW5nIHRyZWUgbm9kZXMgYXQgYWxsIGZvciBuZXN0
ZWQgY2FzZXM/Ci0gICAgICAgICAgICByZXR1cm4gbV9jb25zdHJhaW50cy5sYXllclBvc2l0aW9u
QXRMYXN0TGF5b3V0KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgcmV0dXJuIG1fY29uc3RyYWludHMubGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCgp
OwotfQotCi1GbG9hdFNpemUgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OnNjcm9sbERlbHRhU2lu
Y2VMYXN0Q29tbWl0KCkgY29uc3QKLXsKLSAgICBhdXRvIGxheWVyUG9zaXRpb24gPSBjb21wdXRl
TGF5ZXJQb3NpdGlvbigpOwotICAgIHJldHVybiBsYXllclBvc2l0aW9uIC0gbV9jb25zdHJhaW50
cy5sYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFVTRShOSUNPU0lBKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxp
bmdUcmVlU3RpY2t5Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3Np
YS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA5OWEzZmUzYzQ0MTY5YTNmMmI4NjU0MjAyNGM1MTM1NjBiZjFkMWFmLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaAorKysgL2Rldi9udWxsCkBA
IC0xLDY3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE5IElnYWxpYSBTLkwuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKLSAqICAgIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShB
U1lOQ19TQ1JPTExJTkcpICYmIFVTRShOSUNPU0lBKQotCi0jaW5jbHVkZSAiU2Nyb2xsaW5nQ29u
c3RyYWludHMuaCIKLSNpbmNsdWRlICJTY3JvbGxpbmdUcmVlTm9kZS5oIgotI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIE5pY29zaWEgewotY2xhc3MgQ29tcG9zaXRpb25MYXll
cjsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTY3JvbGxpbmdUcmVlU3RpY2t5
Tm9kZSBmaW5hbCA6IHB1YmxpYyBTY3JvbGxpbmdUcmVlTm9kZSB7Ci1wdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZT4gY3JlYXRlKFNjcm9sbGluZ1RyZWUmLCBT
Y3JvbGxpbmdOb2RlSUQpOwotICAgIHZpcnR1YWwgflNjcm9sbGluZ1RyZWVTdGlja3lOb2RlKCk7
Ci0KLXByaXZhdGU6Ci0gICAgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUoU2Nyb2xsaW5nVHJlZSYs
IFNjcm9sbGluZ05vZGVJRCk7Ci0KLSAgICB2b2lkIGNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4o
Y29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhcHBseUxheWVy
UG9zaXRpb25zKCkgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGR1bXBQcm9wZXJ0aWVzKFdURjo6VGV4
dFN0cmVhbSYsIE9wdGlvblNldDxTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvcj4pIGNv
bnN0IG92ZXJyaWRlOwotCi0gICAgRmxvYXRQb2ludCBjb21wdXRlTGF5ZXJQb3NpdGlvbigpIGNv
bnN0OwotICAgIEZsb2F0U2l6ZSBzY3JvbGxEZWx0YVNpbmNlTGFzdENvbW1pdCgpIGNvbnN0Owot
Ci0gICAgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzIG1fY29uc3RyYWludHM7Ci0g
ICAgUmVmUHRyPE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+IG1fbGF5ZXI7Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfU0NST0xMSU5HX05P
REUoU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUsIGlzU3RpY2t5Tm9kZSgpKQotCi0jZW5kaWYgLy8g
RU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgVVNFKE5JQ09TSUEpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2Rl
Tmljb3NpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9s
bGluZ1RyZWVTdGlja3lOb2RlTmljb3NpYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGMzMjA5MzlmZTIxYmEz
MDE4ZjExOGJhNmJmZTBlNTNlZDFkNjYyZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVOaWNvc2lh
LmNwcApAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEgUy5M
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlTmljb3NpYS5oIgorCisjaWYgRU5BQkxF
KEFTWU5DX1NDUk9MTElORykgJiYgVVNFKE5JQ09TSUEpCisKKyNpbmNsdWRlICJMb2dnaW5nLmgi
CisjaW5jbHVkZSAiTmljb3NpYVBsYXRmb3JtTGF5ZXIuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdT
dGF0ZVN0aWNreU5vZGUuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVlLmgiCisjaW5jbHVkZSAi
U2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGUuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxQcm94
eU5vZGUuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmgi
CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK1JlZjxTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZU5pY29zaWE+IFNjcm9sbGluZ1RyZWVTdGlj
a3lOb2RlTmljb3NpYTo6Y3JlYXRlKFNjcm9sbGluZ1RyZWUmIHNjcm9sbGluZ1RyZWUsIFNjcm9s
bGluZ05vZGVJRCBub2RlSUQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2Nyb2xsaW5n
VHJlZVN0aWNreU5vZGVOaWNvc2lhKHNjcm9sbGluZ1RyZWUsIG5vZGVJRCkpOworfQorCitTY3Jv
bGxpbmdUcmVlU3RpY2t5Tm9kZU5pY29zaWE6OlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlTmljb3Np
YShTY3JvbGxpbmdUcmVlJiBzY3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQor
ICAgIDogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUoc2Nyb2xsaW5nVHJlZSwgbm9kZUlEKQorewor
fQorCit2b2lkIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlTmljb3NpYTo6Y29tbWl0U3RhdGVCZWZv
cmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmIHN0YXRlTm9kZSkKK3sKKyAgICBh
dXRvJiBzdGlja3lTdGF0ZU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGU+
KHN0YXRlTm9kZSk7CisgICAgaWYgKHN0aWNreVN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHko
U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6TGF5ZXIpKSB7CisgICAgICAgIGF1dG8qIGxh
eWVyID0gc3RhdGljX2Nhc3Q8Tmljb3NpYTo6UGxhdGZvcm1MYXllcio+KHN0aWNreVN0YXRlTm9k
ZS5sYXllcigpKTsKKyAgICAgICAgbV9sYXllciA9IGRvd25jYXN0PE5pY29zaWE6OkNvbXBvc2l0
aW9uTGF5ZXI+KGxheWVyKTsKKyAgICB9CisKKyAgICBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6
Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihzdGF0ZU5vZGUpOworfQorCit2b2lkIFNjcm9sbGlu
Z1RyZWVTdGlja3lOb2RlTmljb3NpYTo6YXBwbHlMYXllclBvc2l0aW9ucygpCit7CisgICAgYXV0
byBsYXllclBvc2l0aW9uID0gY29tcHV0ZUxheWVyUG9zaXRpb24oKTsKKworICAgIExPR19XSVRI
X1NUUkVBTShTY3JvbGxpbmcsIHN0cmVhbSA8PCAiU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVOaWNv
c2lhICIgPDwgc2Nyb2xsaW5nTm9kZUlEKCkgPDwgIiBjb25zdHJhaW5pbmdSZWN0QXRMYXN0TGF5
b3V0ICIgPDwgbV9jb25zdHJhaW50cy5jb25zdHJhaW5pbmdSZWN0QXRMYXN0TGF5b3V0KCkgPDwg
IiBsYXN0IGxheWVyIHBvcyAiIDw8IG1fY29uc3RyYWludHMubGF5ZXJQb3NpdGlvbkF0TGFzdExh
eW91dCgpIDw8ICIgbGF5ZXJQb3NpdGlvbiAiIDw8IGxheWVyUG9zaXRpb24pOworCisgICAgbGF5
ZXJQb3NpdGlvbiAtPSBtX2NvbnN0cmFpbnRzLmFsaWdubWVudE9mZnNldCgpOworCisgICAgQVNT
RVJUKG1fbGF5ZXIpOworICAgIG1fbGF5ZXItPnVwZGF0ZVN0YXRlKAorICAgICAgICBbJmxheWVy
UG9zaXRpb25dKE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI6OkxheWVyU3RhdGUmIHN0YXRlKQor
ICAgICAgICB7CisgICAgICAgICAgICBzdGF0ZS5wb3NpdGlvbiA9IGxheWVyUG9zaXRpb247Cisg
ICAgICAgICAgICBzdGF0ZS5kZWx0YS5wb3NpdGlvbkNoYW5nZWQgPSB0cnVlOworICAgICAgICB9
KTsKK30KKworRmxvYXRQb2ludCBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZU5pY29zaWE6OmxheWVy
VG9wTGVmdCgpIGNvbnN0Cit7CisgICAgRmxvYXRQb2ludCBsYXllclRvcExlZnQ7CisgICAgQVNT
RVJUKG1fbGF5ZXIpOworICAgIG1fbGF5ZXItPmFjY2Vzc0NvbW1pdHRlZCgKKyAgICAgICAgW3Ro
aXMsICZsYXllclRvcExlZnRdKE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI6OkxheWVyU3RhdGUm
IHN0YXRlKQorICAgICAgICB7CisgICAgICAgICAgICBsYXllclRvcExlZnQgPSBzdGF0ZS5wb3Np
dGlvbiAtIHRvRmxvYXRTaXplKHN0YXRlLmFuY2hvclBvaW50Lnh5KCkpICogc3RhdGUuc2l6ZSAr
IG1fY29uc3RyYWludHMuYWxpZ25tZW50T2Zmc2V0KCk7CisgICAgICAgIH0pOworICAgIHJldHVy
biBsYXllclRvcExlZnQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFVTRShOSUNPU0lBKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZU5pY29zaWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xs
aW5nVHJlZVN0aWNreU5vZGVOaWNvc2lhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2U2NTc4ZDMyMjRhMGVlYzNh
YTQyODI1MGU5NDhhOGFmMWYwZjhhNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVOaWNvc2lhLmgK
QEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorICogICAgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KEFTWU5DX1NDUk9MTElORykgJiYgVVNFKE5JQ09TSUEpCisKKyNpbmNsdWRlICJTY3JvbGxpbmdD
b25zdHJhaW50cy5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLmgiCisjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgTmljb3NpYSB7CitjbGFzcyBDb21wb3Np
dGlvbkxheWVyOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcm9sbGluZ1Ry
ZWVTdGlja3lOb2RlTmljb3NpYSBmaW5hbCA6IHB1YmxpYyBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZU5pY29z
aWE+IGNyZWF0ZShTY3JvbGxpbmdUcmVlJiwgU2Nyb2xsaW5nTm9kZUlEKTsKKyAgICB2aXJ0dWFs
IH5TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZU5pY29zaWEoKSA9IGRlZmF1bHQ7CisKK3ByaXZhdGU6
CisgICAgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVOaWNvc2lhKFNjcm9sbGluZ1RyZWUmLCBTY3Jv
bGxpbmdOb2RlSUQpOworCisgICAgdm9pZCBjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0
IFNjcm9sbGluZ1N0YXRlTm9kZSYpIG92ZXJyaWRlOworICAgIHZvaWQgYXBwbHlMYXllclBvc2l0
aW9ucygpIG92ZXJyaWRlOworICAgIEZsb2F0UG9pbnQgbGF5ZXJUb3BMZWZ0KCkgY29uc3Qgb3Zl
cnJpZGU7CisKKyAgICBSZWZQdHI8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4gbV9sYXllcjsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19T
Q1JPTExJTkdfTk9ERShTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZU5pY29zaWEsIGlzU3RpY2t5Tm9k
ZSgpKQorCisjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgVVNFKE5JQ09TSUEp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UZXh0dXJlTWFwcGVyLmNtYWtl
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGV4dHVyZU1hcHBlci5jbWFrZQppbmRleCBkMmJj
ZDlhZjA4MmQyYjdlNjZhOTI2YjIxOGYyNDA4NTBiNmE5OTQ0Li41NTNiNWFlNzU2ZGJmZWFjYTg5
YzQ2MmFjNWU5MDAzOTM1MTExMzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9UZXh0dXJlTWFwcGVyLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RleHR1
cmVNYXBwZXIuY21ha2UKQEAgLTEwMCw3ICsxMDAsNyBAQCBpZiAoVVNFX0NPT1JESU5BVEVEX0dS
QVBISUNTKQogICAgICkKICAgICBsaXN0KEFQUEVORCBXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JL
X0hFQURFUlMKICAgICAgICAgcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRml4
ZWROb2RlLmgKLSAgICAgICAgcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3Rp
Y2t5Tm9kZS5oCisgICAgICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0
aWNreU5vZGVOaWNvc2lhLmgKIAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05p
Y29zaWFBbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudC5oCiAgICAgICAgIHBsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvTmljb3NpYUJ1ZmZlci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nVHJlZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nVHJlZS5jcHAK
aW5kZXggN2RkYTMzNjNlMDViM2QwZjJjNDQ0Yjk5ZDFlMmM1MzQxY2RhM2IzNy4uMzkyODI4YWVl
MzE5MDg4YmQ0YTczOWVhNWNkMzFmNjg3ZGRkZWZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ1RyZWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdU
cmVlLmNwcApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsaW5nVHJl
ZUZyYW1lSG9zdGluZ05vZGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGluZ1RyZWVPdmVy
Zmxvd1Njcm9sbFByb3h5Tm9kZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsaW5nVHJlZVBv
c2l0aW9uZWROb2RlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVDb2NvYS5oPgog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlICJTY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlUmVtb3RlSU9TLmgiCkBAIC0xMjcsNyArMTI3LDcgQEAgUmVmPFNjcm9sbGlu
Z1RyZWVOb2RlPiBSZW1vdGVTY3JvbGxpbmdUcmVlOjpjcmVhdGVTY3JvbGxpbmdUcmVlTm9kZShT
Y3JvbGxpbmdOb2QKICAgICBjYXNlIFNjcm9sbGluZ05vZGVUeXBlOjpGaXhlZDoKICAgICAgICAg
cmV0dXJuIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGU6OmNyZWF0ZSgqdGhpcywgbm9kZUlEKTsKICAg
ICBjYXNlIFNjcm9sbGluZ05vZGVUeXBlOjpTdGlja3k6Ci0gICAgICAgIHJldHVybiBTY3JvbGxp
bmdUcmVlU3RpY2t5Tm9kZTo6Y3JlYXRlKCp0aGlzLCBub2RlSUQpOworICAgICAgICByZXR1cm4g
U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVDb2NvYTo6Y3JlYXRlKCp0aGlzLCBub2RlSUQpOwogICAg
IGNhc2UgU2Nyb2xsaW5nTm9kZVR5cGU6OlBvc2l0aW9uZWQ6CiAgICAgICAgIHJldHVybiBTY3Jv
bGxpbmdUcmVlUG9zaXRpb25lZE5vZGU6OmNyZWF0ZSgqdGhpcywgbm9kZUlEKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IubW0K
aW5kZXggODRhMmZiMGY5YjI3NjJhMmMyMjg5YmI5NWU5NDMxMmY2YjBmMWFhNS4uMzQwNGRkODg3
MWIwODMwZjIwZTk1OGFiNTc3MzViMDY1MTZlMzg2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5tbQpAQCAtNDMsNyArNDMsNyBAQAog
I2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJMYXllckNvbXBvc2l0b3IuaD4KICNpbXBvcnQgPFdlYkNv
cmUvUmVuZGVyVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxpbmdUcmVlRml4ZWROb2Rl
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmg+CisjaW1wb3J0
IDxXZWJDb3JlL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlQ29jb2EuaD4KIAogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>