<?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>180217</bug_id>
          
          <creation_ts>2017-11-30 13:18:14 -0800</creation_ts>
          <short_desc>Move SWClientConnection class out of server/ folder</short_desc>
          <delta_ts>2017-11-30 15:07:24 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1376479</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-30 13:18:14 -0800</bug_when>
    <thetext>Move SWClientConnection class out of server/ folder since the client connection lives in the WebProcess, not the Storage process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376481</commentid>
    <comment_count>1</comment_count>
      <attachid>328012</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-30 13:19:28 -0800</bug_when>
    <thetext>Created attachment 328012
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376482</commentid>
    <comment_count>2</comment_count>
      <attachid>328013</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-30 13:23:53 -0800</bug_when>
    <thetext>Created attachment 328013
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376502</commentid>
    <comment_count>3</comment_count>
      <attachid>328023</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-30 14:08:50 -0800</bug_when>
    <thetext>Created attachment 328023
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376506</commentid>
    <comment_count>4</comment_count>
      <attachid>328026</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-30 14:15:23 -0800</bug_when>
    <thetext>Created attachment 328026
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376514</commentid>
    <comment_count>5</comment_count>
      <attachid>328028</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-30 14:29:42 -0800</bug_when>
    <thetext>Created attachment 328028
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376544</commentid>
    <comment_count>6</comment_count>
      <attachid>328028</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-30 15:06:39 -0800</bug_when>
    <thetext>Comment on attachment 328028
Patch

Clearing flags on attachment: 328028

Committed r225355: &lt;https://trac.webkit.org/changeset/225355&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376545</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-30 15:06:41 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376546</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-30 15:07:24 -0800</bug_when>
    <thetext>&lt;rdar://problem/35783799&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328012</attachid>
            <date>2017-11-30 13:19:28 -0800</date>
            <delta_ts>2017-11-30 13:23:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180217-20171130131927.patch</filename>
            <type>text/plain</type>
            <size>40148</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1MzM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2Q2ZjQwMDVkNWYxZDcx
MzA0YTY2NzVmZTg1ODQ0ZmI4YzlkYmJjMi4uNTlhNTdkZTA3NzYxY2QyOTJjOWMyMjVjZjEzZTRj
MTc0YWEwZTJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE3LTExLTMwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBTV0NsaWVudENvbm5l
Y3Rpb24gY2xhc3Mgb3V0IG9mIHNlcnZlci8gZm9sZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAyMTcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIFNXQ2xpZW50Q29ubmVjdGlvbiBjbGFzcyBv
dXQgb2Ygc2VydmVyLyBmb2xkZXIgc2luY2UgdGhlIGNsaWVudCBjb25uZWN0aW9uCisgICAgICAg
IGxpdmVzIGluIHRoZSBXZWJQcm9jZXNzLCBub3QgdGhlIFN0b3JhZ2UgcHJvY2Vzcy4KKworICAg
ICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmNw
cDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dD
bGllbnRDb25uZWN0aW9uLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OlNXQ2xpZW50Q29ubmVjdGlv
bjo6c2NoZWR1bGVKb2IpOgorICAgICAgICAoV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uOjpm
aW5pc2hlZEZldGNoaW5nU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OlNXQ2xpZW50Q29ubmVj
dGlvbjo6ZmFpbGVkRmV0Y2hpbmdTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6U1dDbGllbnRD
b25uZWN0aW9uOjpqb2JSZWplY3RlZEluU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNXQ2xp
ZW50Q29ubmVjdGlvbjo6cmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJblNlcnZlcik6CisgICAgICAg
IChXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb246OnVucmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJ
blNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb246OnN0YXJ0U2Ny
aXB0RmV0Y2hGb3JTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9u
Ojpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpT
V0NsaWVudENvbm5lY3Rpb246OmZvckVhY2hDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U1dDbGllbnRDb25uZWN0aW9uOjp1cGRhdGVSZWdpc3RyYXRpb25TdGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb246OnVwZGF0ZVdvcmtlclN0YXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNXQ2xpZW50Q29ubmVjdGlvbjo6ZmlyZVVwZGF0ZUZvdW5kRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uOjpub3RpZnlDbGllbnRzT2ZDb250cm9s
bGVyQ2hhbmdlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9u
Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
Q2xpZW50Q29ubmVjdGlvbi5oLgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ29udGFpbmVyLmNwcDoKKwogMjAxNy0xMS0zMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBSZWdpc3RyYXRpb25PcHRpb25zIHRvIFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25PcHRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDkxZTA0ZTE5MDkzNmNh
YjBmMDYyODUyNmE0ZjllYjViOGY5YzhkZWIuLjhhNzQ4ZDY1MzM1NzkxZjIwZTdlYzI2NzVkOTk5
NTUxNDdhMjgxZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yMTc1LDYgKzIxNzUsNyBAQCB3b3JrZXJz
L1dvcmtlclRocmVhZC5jcHAKIHdvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlRXZlbnQuY3BwCiB3
b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5jcHAKIHdvcmtlcnMvc2Vydmlj
ZS9GZXRjaEV2ZW50LmNwcAord29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5jcHAK
IHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyLmNwcAogd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDbGllbnQuY3BwCiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERh
dGEuY3BwCkBAIC0yMTk5LDcgKzIyMDAsNiBAQCB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyVGhyZWFkLmNwcAogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
clRocmVhZFByb3h5LmNwcAogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdl
ci5jcHAKIAotd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV0NsaWVudENvbm5lY3Rpb24uY3BwCiB3
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXT3JpZ2luU3RvcmUuY3BwCiB3b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyLmNwcAogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1
ZXVlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDE1NzMwNTNlODAzMTE4MTI2ZWY3NWI0YWIyYjNjYTk3OThiNmQ3YTguLjdi
M2MwOTk3ODQwMTIyOWQxYTFmYWFkMDA4MGU0YjgwNTY4ZTEzYWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExNTEsNiArMTE1
MSw3IEBACiAJCTQ2RUIzN0NDMUY5N0NDRDIwMEI2NTUyMyAvKiBKU1NlcnZpY2VXb3JrZXJDbGll
bnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkVC
MzdDNTFGOTdDQ0NCMDBCNjU1MjMgLyogSlNTZXJ2aWNlV29ya2VyQ2xpZW50cy5oICovOyB9Owog
CQk0NkVCMzdDRTFGOTdDQ0QyMDBCNjU1MjMgLyogSlNTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkVCMzdD
NzFGOTdDQ0NCMDBCNjU1MjMgLyogSlNTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50LmggKi87IH07
CiAJCTQ2RUJFQTAyMUI3RDRENjUwMEJFNDk0MSAvKiBDb2xsZWN0aW9uVHJhdmVyc2FsLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkVCRUEwMTFCN0Q0
RDVEMDBCRTQ5NDEgLyogQ29sbGVjdGlvblRyYXZlcnNhbC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2RUNCNjM4MUZEMEEzQzgwMDg4RTVBRCAv
KiBTV0NsaWVudENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2RUNCNjM3MUZEMEEzQkIwMDg4RTVBRCAvKiBTV0NsaWVudENvbm5lY3Rp
b24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
NkVGMTQyQTFGOTdCN0Q4MDBDMkE1MjQgLyogU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZFRjE0MjAxRjk3
QjdCQTAwQzJBNTI0IC8qIFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuaCAqLzsgfTsKIAkJNDZF
RjE0MkMxRjk3QjdEODAwQzJBNTI0IC8qIFNlcnZpY2VXb3JrZXJDbGllbnRzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkVGMTQyMjFGOTdCN0JBMDBD
MkE1MjQgLyogU2VydmljZVdvcmtlckNsaWVudHMuaCAqLzsgfTsKIAkJNDZFRjE0MkQxRjk3QjdE
ODAwQzJBNTI0IC8qIFNlcnZpY2VXb3JrZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RUYxNDI0MUY5N0I3QkEwMEMyQTUyNCAvKiBTZXJ2
aWNlV29ya2VyQ2xpZW50LmggKi87IH07CkBAIC0xMzQwLDcgKzEzNDEsNiBAQAogCQk1MTc0RTIw
QTEwQTFGNDRGMDBGOTVFNkYgLyogUG9wU3RhdGVFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3NEUyMDgxMEExRjQ0RjAwRjk1RTZGIC8qIFBv
cFN0YXRlRXZlbnQuaCAqLzsgfTsKIAkJNTE3NzFERkYxQkRCNDg1MDAwQ0FFOEU0IC8qIE1lbW9y
eU9iamVjdFN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTc3MURGRDFCREI0NzU2MDBDQUU4RTQgLyogTWVtb3J5T2JqZWN0U3RvcmUuaCAqLzsg
fTsKIAkJNTE3QTUyRjAxRjQ3NTM1QjAwRENEQzBBIC8qIFNXU2VydmVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdBNTJFRTFGNDc1MzU5MDBEQ0RD
MEEgLyogU1dTZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwotCQk1MTdBNTMxRDFGNEI1M0IxMDBEQ0RDMEEgLyogU1dDbGllbnRDb25uZWN0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdBNTJG
RjFGNDc4Q0NFMDBEQ0RDMEEgLyogU1dDbGllbnRDb25uZWN0aW9uLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE3QTUzMjkxRjRCOTBCOTAwRENE
QzBBIC8qIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0E1MzI2MUY0QjkwQjIwMERDREMwQSAvKiBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE3QTUzNDYxRjUwQzE3RjAwRENEQzBBIC8qIFNXU2Vy
dmVyV29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTdBNTM0MjFGNTBDMTYxMDBEQ0RDMEEgLyogU1dTZXJ2ZXJXb3JrZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTdBNTM0RjFGNTRBOEJB
MDBEQ0RDMEEgLyogU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0E1MzRDMUY1NDlENEEwMERDREMw
QSAvKiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03Mjc4LDYgKzcyNzgsOCBAQAogCQk0NkVC
MzdDNjFGOTdDQ0NCMDBCNjU1MjMgLyogSlNTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2VydmljZVdvcmtlcldpbmRv
d0NsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RUIzN0M3MUY5N0ND
Q0IwMEI2NTUyMyAvKiBKU1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RUJFQTAxMUI3RDRENUQwMEJFNDk0MSAvKiBDb2xs
ZWN0aW9uVHJhdmVyc2FsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbGxl
Y3Rpb25UcmF2ZXJzYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZFQ0I2MzYx
RkQwQTNCQjAwODhFNUFEIC8qIFNXQ2xpZW50Q29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTV0NsaWVudENvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0NkVDQjYzNzFGRDBBM0JCMDA4OEU1QUQgLyogU1dDbGllbnRD
b25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNXQ2xpZW50Q29u
bmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkVGMTQyMDFGOTdCN0JB
MDBDMkE1MjQgLyogU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ2RUYxNDIxMUY5N0I3QkEwMEMyQTUyNCAvKiBTZXJ2aWNlV29y
a2VyQ2xpZW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2
aWNlV29ya2VyQ2xpZW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RUYx
NDIyMUY5N0I3QkEwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50cy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ2xpZW50cy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNzY3OSw4ICs3NjgxLDYgQEAKIAkJNTE3NzFERkQxQkRCNDc1
NjAwQ0FFOEU0IC8qIE1lbW9yeU9iamVjdFN0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1lbW9yeU9iamVjdFN0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxN0E1MkVFMUY0NzUzNTkwMERDREMwQSAvKiBTV1NlcnZlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTV1NlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MTdBNTJFRjFGNDc1MzU5MDBEQ0RDMEEgLyogU1dTZXJ2ZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1dTZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk1MTdBNTJGRTFGNDc4Q0NFMDBEQ0RDMEEgLyogU1dDbGllbnRDb25uZWN0
aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNXQ2xpZW50Q29u
bmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxN0E1MkZGMUY0NzhD
Q0UwMERDREMwQSAvKiBTV0NsaWVudENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU1dDbGllbnRDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxN0E1MzI0MUY0QjkwNEEwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VySm9iRGF0YS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNlV29ya2VySm9i
RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0E1MzI2MUY0QjkwQjIw
MERDREMwQSAvKiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3QTUzMjcxRjRCOTBCMjAwRENEQzBBIC8qIFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xNzEzNSw4ICsxNzEzNSw2IEBACiAJCTUxN0E1MkVDMUY0NzUzMkQw
MERDREMwQSAvKiBzZXJ2ZXIgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAotCQkJCTUxN0E1MkZFMUY0NzhDQ0UwMERDREMwQSAvKiBTV0NsaWVudENvbm5lY3Rpb24u
Y3BwICovLAotCQkJCTUxN0E1MkZGMUY0NzhDQ0UwMERDREMwQSAvKiBTV0NsaWVudENvbm5lY3Rp
b24uaCAqLywKIAkJCQk0MTUxRTVCOTFGQkE0Qzc2MDBFNDdFMkQgLyogU1dPcmlnaW5TdG9yZS5j
cHAgKi8sCiAJCQkJNDE1MUU1QjcxRkJBNEM3NTAwRTQ3RTJEIC8qIFNXT3JpZ2luU3RvcmUuaCAq
LywKIAkJCQk1MTdBNTJFRjFGNDc1MzU5MDBEQ0RDMEEgLyogU1dTZXJ2ZXIuY3BwICovLApAQCAt
MTczMjksNiArMTczMjcsOCBAQAogCQkJCTQ2RUYxNDI1MUY5N0I3QkEwMEMyQTUyNCAvKiBTZXJ2
aWNlV29ya2VyV2luZG93Q2xpZW50LmNwcCAqLywKIAkJCQk0NkVGMTQyMDFGOTdCN0JBMDBDMkE1
MjQgLyogU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5oICovLAogCQkJCTQ2RUYxNDI2MUY5N0I3
QkEwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50LmlkbCAqLywKKwkJCQk0NkVD
QjYzNjFGRDBBM0JCMDA4OEU1QUQgLyogU1dDbGllbnRDb25uZWN0aW9uLmNwcCAqLywKKwkJCQk0
NkVDQjYzNzFGRDBBM0JCMDA4OEU1QUQgLyogU1dDbGllbnRDb25uZWN0aW9uLmggKi8sCiAJCQkp
OwogCQkJcGF0aCA9IHNlcnZpY2U7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjcx
OTgsNyArMjcxOTgsNiBAQAogCQkJCUI1MUEyRjNGMTdEN0QzQUUwMDcyNTE3QSAvKiBJbWFnZVF1
YWxpdHlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTI5MUU0QjEzNDE3MkM4MDBF
NzUzREUgLyogSW1hZ2VSZW5kZXJpbmdNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzE5M0JD
MTFGNUUwRUVEMDA4OEYzRTYgLyogSW1hZ2VTbW9vdGhpbmdRdWFsaXR5LmggaW4gSGVhZGVycyAq
LywKLQkJCQlCMjc1MzU3MTBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VTb3VyY2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTRCMzQ4MDk0MEVFRjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1NTUwQ0I0MjFFOTU1RTNDMDAxMTFBQTAgLyogSW1hZ2VUeXBl
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjZGNzU2QjMxQjNCNjZGNzAwMDVERDc5IC8qIEltbXV0
YWJsZU5GQS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTQxOSw3ICsyOTQxOCw3IEBACiAJCQkJODQ4
NTIyOEIxMTkwMTczQzAwNkVEQzdGIC8qIFNWR1ZLZXJuRWxlbWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQjIyMjdBRjYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1pvb21BbmRQYW4uaCBpbiBIZWFk
ZXJzICovLAogCQkJCUIyRTRFQzk4MEQwMEMyMkIwMDQzMjY0MyAvKiBTVkdab29tRXZlbnQuaCBp
biBIZWFkZXJzICovLAotCQkJCTUxN0E1MzFEMUY0QjUzQjEwMERDREMwQSAvKiBTV0NsaWVudENv
bm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2RUNCNjM4MUZEMEEzQzgwMDg4RTVBRCAv
KiBTV0NsaWVudENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2NjU4REM5MUZBMjRC
ODcwMEY3REQ1NCAvKiBTV0NvbnRleHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTUx
RTVCQjFGQkE0QzdBMDBFNDdFMkQgLyogU1dPcmlnaW5TdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTE3QTUyRjAxRjQ3NTM1QjAwRENEQzBBIC8qIFNXU2VydmVyLmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVj
dGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjUyODc1MWU3NjEzYjAyNjQ4YjY4OGQ5MDlhNzM5OGIzODg2
NDUyOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
V0NsaWVudENvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsMTkxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNXQ2xpZW50Q29ubmVjdGlvbi5oIgorCisjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRl
ICJFeGNlcHRpb25EYXRhLmgiCisjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCisjaW5jbHVkZSAi
TWljcm90YXNrcy5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDb250YWluZXIuaCIKKyNpbmNs
dWRlICJTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2Vy
Sm9iRGF0YS5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitTV0NsaWVudENvbm5lY3Rpb246OlNXQ2xpZW50Q29ubmVjdGlv
bigpID0gZGVmYXVsdDsKKworU1dDbGllbnRDb25uZWN0aW9uOjp+U1dDbGllbnRDb25uZWN0aW9u
KCkgPSBkZWZhdWx0OworCit2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6c2NoZWR1bGVKb2IoU2Vy
dmljZVdvcmtlckpvYiYgam9iKQoreworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zY2hlZHVsZWRK
b2JzLmFkZChqb2IuaWRlbnRpZmllcigpLCAmam9iKTsKKyAgICBBU1NFUlRfVU5VU0VEKGFkZFJl
c3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOworCisgICAgc2NoZWR1bGVKb2JJblNlcnZlcihq
b2IuZGF0YSgpKTsKK30KKwordm9pZCBTV0NsaWVudENvbm5lY3Rpb246OmZpbmlzaGVkRmV0Y2hp
bmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYgam9iLCBjb25zdCBTdHJpbmcmIHNjcmlwdCkKK3sK
KyAgICBBU1NFUlQobV9zY2hlZHVsZWRKb2JzLmdldChqb2IuaWRlbnRpZmllcigpKSA9PSAmam9i
KTsKKworICAgIGZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoeyBqb2IuZGF0YSgpLmlkZW50
aWZpZXIoKSwgam9iLmRhdGEoKS5yZWdpc3RyYXRpb25LZXkoKSwgc2NyaXB0LCB7IH0gfSk7Cit9
CisKK3ZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjpmYWlsZWRGZXRjaGluZ1NjcmlwdChTZXJ2aWNl
V29ya2VySm9iJiBqb2IsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQoreworICAgIEFTU0VS
VChtX3NjaGVkdWxlZEpvYnMuZ2V0KGpvYi5pZGVudGlmaWVyKCkpID09ICZqb2IpOworCisgICAg
ZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcih7IGpvYi5kYXRhKCkuaWRlbnRpZmllcigpLCBq
b2IuZGF0YSgpLnJlZ2lzdHJhdGlvbktleSgpLCB7IH0sIGVycm9yIH0pOworfQorCit2b2lkIFNX
Q2xpZW50Q29ubmVjdGlvbjo6am9iUmVqZWN0ZWRJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2Vy
Sm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBjb25zdCBFeGNlcHRpb25EYXRh
JiBleGNlcHRpb25EYXRhKQoreworICAgIGF1dG8gam9iID0gbV9zY2hlZHVsZWRKb2JzLnRha2Uo
am9iRGF0YUlkZW50aWZpZXIuam9iSWRlbnRpZmllcik7CisgICAgaWYgKCFqb2IpIHsKKyAgICAg
ICAgTE9HX0VSUk9SKCJKb2IgJXMgcmVqZWN0ZWQgZnJvbSBzZXJ2ZXIsIGJ1dCB3YXMgbm90IGZv
dW5kIiwgam9iRGF0YUlkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgam9iLT5mYWlsZWRXaXRoRXhjZXB0aW9uKGV4
Y2VwdGlvbkRhdGEudG9FeGNlcHRpb24oKSk7Cit9CisKK3ZvaWQgU1dDbGllbnRDb25uZWN0aW9u
OjpyZWdpc3RyYXRpb25Kb2JSZXNvbHZlZEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JE
YXRhSWRlbnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EYXRhJiYgcmVnaXN0cmF0aW9uRGF0YSwgU2hvdWxkTm90aWZ5V2hlblJlc29sdmVkIHNob3Vs
ZE5vdGlmeVdoZW5SZXNvbHZlZCkKK3sKKyAgICBhdXRvIGpvYiA9IG1fc2NoZWR1bGVkSm9icy50
YWtlKGpvYkRhdGFJZGVudGlmaWVyLmpvYklkZW50aWZpZXIpOworICAgIGlmICgham9iKSB7Cisg
ICAgICAgIExPR19FUlJPUigiSm9iICVzIHJlc29sdmVkIGluIHNlcnZlciwgYnV0IHdhcyBub3Qg
Zm91bmQiLCBqb2JEYXRhSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGtleSA9IHJlZ2lzdHJhdGlvbkRh
dGEua2V5OworICAgIGpvYi0+cmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKFdURk1vdmUocmVnaXN0
cmF0aW9uRGF0YSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGtleSwg
c2hvdWxkTm90aWZ5V2hlblJlc29sdmVkXSB7CisgICAgICAgIGlmIChzaG91bGROb3RpZnlXaGVu
UmVzb2x2ZWQgPT0gU2hvdWxkTm90aWZ5V2hlblJlc29sdmVkOjpZZXMpCisgICAgICAgICAgICBk
aWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShrZXkpOworICAgIH0pOworfQorCit2b2lkIFNX
Q2xpZW50Q29ubmVjdGlvbjo6dW5yZWdpc3RyYXRpb25Kb2JSZXNvbHZlZEluU2VydmVyKGNvbnN0
IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIsIGJvb2wg
dW5yZWdpc3RyYXRpb25SZXN1bHQpCit7CisgICAgYXV0byBqb2IgPSBtX3NjaGVkdWxlZEpvYnMu
dGFrZShqb2JEYXRhSWRlbnRpZmllci5qb2JJZGVudGlmaWVyKTsKKyAgICBpZiAoIWpvYikgewor
ICAgICAgICBMT0dfRVJST1IoIkpvYiAlcyByZXNvbHZlZCBpbiBzZXJ2ZXIsIGJ1dCB3YXMgbm90
IGZvdW5kIiwgam9iRGF0YUlkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgam9iLT5yZXNvbHZlZFdpdGhVbnJlZ2lz
dHJhdGlvblJlc3VsdCh1bnJlZ2lzdHJhdGlvblJlc3VsdCk7Cit9CisKK3ZvaWQgU1dDbGllbnRD
b25uZWN0aW9uOjpzdGFydFNjcmlwdEZldGNoRm9yU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJK
b2JEYXRhSWRlbnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIpCit7CisgICAgYXV0byBqb2IgPSBt
X3NjaGVkdWxlZEpvYnMuZ2V0KGpvYkRhdGFJZGVudGlmaWVyLmpvYklkZW50aWZpZXIpOworICAg
IGlmICgham9iKSB7CisgICAgICAgIExPR19FUlJPUigiSm9iICVzIGluc3RydWN0ZWQgdG8gc3Rh
cnQgZmV0Y2ggZnJvbSBzZXJ2ZXIsIGJ1dCBqb2Igd2FzIG5vdCBmb3VuZCIsIGpvYkRhdGFJZGVu
dGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKworICAgICAgICAvLyBGSVhN
RTogU2hvdWxkIG1lc3NhZ2UgYmFjayB0byB0aGUgc2VydmVyIGhlcmUgdG8gc2lnbmFsIGZhaWx1
cmUgdG8gZmV0Y2gsCisgICAgICAgIC8vIGJ1dCB3ZSBjdXJyZW50bHkgbmVlZCB0aGUgcmVnaXN0
cmF0aW9uIGtleSB0byBkbyBzbywgYW5kIGRvbid0IGhhdmUgaXQgaGVyZS4KKyAgICAgICAgLy8g
SW4gdGhlIGZ1dHVyZSB3ZSdsbCByZWZhY3RvciB0byBoYXZlIGEgZ2xvYmFsLCBjcm9zcy1wcm9j
ZXNzIGpvYiBpZGVudGlmaWVyIHRoYXQgY2FuIGJlIHVzZWQgdG8gb3ZlcmNvbWUgdGhpcy4KKwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgam9iLT5zdGFydFNjcmlwdEZldGNoKCk7Cit9
CisKK3ZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNs
aWVudChEb2N1bWVudElkZW50aWZpZXIgZGVzdGluYXRpb25Db250ZXh0SWRlbnRpZmllciwgUmVm
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBtZXNzYWdlLCBTZXJ2aWNlV29ya2VyRGF0YSYmIHNv
dXJjZURhdGEsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQoreworICAgIC8vIEZJWE1FOiBk
ZXN0aW5hdGlvbkNvbnRleHRJZGVudGlmaWVyIGNhbiBvbmx5IGlkZW50aWZ5IGEgRG9jdW1lbnQg
YXQgdGhlIG1vbWVudC4KKyAgICBhdXRvKiBkZXN0aW5hdGlvbkRvY3VtZW50ID0gRG9jdW1lbnQ6
OmFsbERvY3VtZW50c01hcCgpLmdldChkZXN0aW5hdGlvbkNvbnRleHRJZGVudGlmaWVyKTsKKyAg
ICBpZiAoIWRlc3RpbmF0aW9uRG9jdW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8q
IGNvbnRhaW5lciA9IGRlc3RpbmF0aW9uRG9jdW1lbnQtPnNlcnZpY2VXb3JrZXJDb250YWluZXIo
KTsKKyAgICBpZiAoIWNvbnRhaW5lcikKKyAgICAgICAgcmV0dXJuOworCisgICAgTWVzc2FnZUV2
ZW50U291cmNlIHNvdXJjZSA9IFJlZlB0cjxTZXJ2aWNlV29ya2VyPiB7IFNlcnZpY2VXb3JrZXI6
OmdldE9yQ3JlYXRlKCpkZXN0aW5hdGlvbkRvY3VtZW50LCBXVEZNb3ZlKHNvdXJjZURhdGEpKSB9
OworCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwYXNzIGluIHBvcnRzLgorICAgIGF1dG8gbWVz
c2FnZUV2ZW50ID0gTWVzc2FnZUV2ZW50OjpjcmVhdGUoeyB9LCBXVEZNb3ZlKG1lc3NhZ2UpLCBz
b3VyY2VPcmlnaW4sIHsgfSwgV1RGTW92ZShzb3VyY2UpKTsKKyAgICBjb250YWluZXItPmRpc3Bh
dGNoRXZlbnQobWVzc2FnZUV2ZW50KTsKK30KKwordm9pZCBTV0NsaWVudENvbm5lY3Rpb246OmZv
ckVhY2hDb250YWluZXIoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKFNlcnZpY2VXb3JrZXJDb250
YWluZXImKT4mIGFwcGx5KQoreworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaXRlcmF0ZSBvdmVy
IGFsbCBzZXJ2aWNlIHdvcmtlciBjbGllbnRzLCBub3Qgb25seSBkb2N1bWVudHMuCisgICAgZm9y
IChhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMoKSkgeworICAgICAgICBp
ZiAoYXV0byogY29udGFpbmVyID0gZG9jdW1lbnQtPnNlcnZpY2VXb3JrZXJDb250YWluZXIoKSkK
KyAgICAgICAgICAgIGFwcGx5KCpjb250YWluZXIpOworICAgIH0KK30KKwordm9pZCBTV0NsaWVu
dENvbm5lY3Rpb246OnVwZGF0ZVJlZ2lzdHJhdGlvblN0YXRlKFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25TdGF0
ZSBzdGF0ZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4mIHNlcnZpY2VX
b3JrZXJEYXRhKQoreworICAgIGZvckVhY2hDb250YWluZXIoWyZdKFNlcnZpY2VXb3JrZXJDb250
YWluZXImIGNvbnRhaW5lcikgeworICAgICAgICBjb250YWluZXIuc2NoZWR1bGVUYXNrVG9VcGRh
dGVSZWdpc3RyYXRpb25TdGF0ZShpZGVudGlmaWVyLCBzdGF0ZSwgc2VydmljZVdvcmtlckRhdGEp
OworICAgIH0pOworfQorCit2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6dXBkYXRlV29ya2VyU3Rh
dGUoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgU2VydmljZVdvcmtlclN0YXRl
IHN0YXRlKQoreworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaXRlcmF0ZSBvdmVyIGFsbCBzZXJ2
aWNlIHdvcmtlciBjbGllbnRzLCBub3Qgb25seSBkb2N1bWVudHMuCisgICAgZm9yIChhdXRvKiBk
b2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMoKSkgeworICAgICAgICBpZiAoYXV0byog
c2VydmljZVdvcmtlciA9IGRvY3VtZW50LT5zZXJ2aWNlV29ya2VyKGlkZW50aWZpZXIpKQorICAg
ICAgICAgICAgc2VydmljZVdvcmtlci0+c2NoZWR1bGVUYXNrVG9VcGRhdGVTdGF0ZShzdGF0ZSk7
CisgICAgfQorfQorCit2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6ZmlyZVVwZGF0ZUZvdW5kRXZl
bnQoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAg
ICBmb3JFYWNoQ29udGFpbmVyKFsmXShTZXJ2aWNlV29ya2VyQ29udGFpbmVyJiBjb250YWluZXIp
IHsKKyAgICAgICAgY29udGFpbmVyLnNjaGVkdWxlVGFza1RvRmlyZVVwZGF0ZUZvdW5kRXZlbnQo
aWRlbnRpZmllcik7CisgICAgfSk7Cit9CisKK3ZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjpub3Rp
ZnlDbGllbnRzT2ZDb250cm9sbGVyQ2hhbmdlKGNvbnN0IEhhc2hTZXQ8RG9jdW1lbnRJZGVudGlm
aWVyPiYgY29udGV4dElkZW50aWZpZXJzLCBTZXJ2aWNlV29ya2VyRGF0YSYmIG5ld0NvbnRyb2xs
ZXIpCit7CisgICAgQVNTRVJUKCFjb250ZXh0SWRlbnRpZmllcnMuaXNFbXB0eSgpKTsKKworICAg
IGZvciAoYXV0byYgY2xpZW50SWRlbnRpZmllciA6IGNvbnRleHRJZGVudGlmaWVycykgeworICAg
ICAgICAvLyBGSVhNRTogU3VwcG9ydCB3b3JrZXIgY29udGV4dHMuCisgICAgICAgIGF1dG8qIGNs
aWVudCA9IERvY3VtZW50OjphbGxEb2N1bWVudHNNYXAoKS5nZXQoY2xpZW50SWRlbnRpZmllcik7
CisgICAgICAgIGlmICghY2xpZW50KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAg
QVNTRVJUKGNsaWVudC0+YWN0aXZlU2VydmljZVdvcmtlcigpKTsKKyAgICAgICAgQVNTRVJUKGNs
aWVudC0+YWN0aXZlU2VydmljZVdvcmtlcigpLT5pZGVudGlmaWVyKCkgIT0gbmV3Q29udHJvbGxl
ci5pZGVudGlmaWVyKTsKKyAgICAgICAgY2xpZW50LT5zZXRBY3RpdmVTZXJ2aWNlV29ya2VyKFNl
cnZpY2VXb3JrZXI6OmdldE9yQ3JlYXRlKCpjbGllbnQsIFNlcnZpY2VXb3JrZXJEYXRhIHsgbmV3
Q29udHJvbGxlciB9KSk7CisgICAgICAgIGlmIChhdXRvKiBjb250YWluZXIgPSBjbGllbnQtPnNl
cnZpY2VXb3JrZXJDb250YWluZXIoKSkKKyAgICAgICAgICAgIGNvbnRhaW5lci0+c2NoZWR1bGVU
YXNrVG9GaXJlQ29udHJvbGxlckNoYW5nZUV2ZW50KCk7CisgICAgfQorfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZTgxZGVlY2QwYzYwOTZkMzY0ZDkyMWU4NTFhZDM5NmNmZDhmZGRiYQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5l
Y3Rpb24uaApAQCAtMCwwICsxLDEwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSAiRG9jdW1lbnRJZGVudGlmaWVy
LmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckpvYi5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3Jr
ZXJUeXBlcy5oIgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVzb3VyY2VFcnJvcjsKK2NsYXNzIFNlY3Vy
aXR5T3JpZ2luOworY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOworY2xhc3MgU2VydmljZVdv
cmtlckNvbnRhaW5lcjsKK2NsYXNzIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb247CitjbGFzcyBT
aGFyZWRCdWZmZXI7CitlbnVtIGNsYXNzIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25TdGF0ZTsK
K2VudW0gY2xhc3MgU2VydmljZVdvcmtlclN0YXRlOworZW51bSBjbGFzcyBTaG91bGROb3RpZnlX
aGVuUmVzb2x2ZWQ7CitzdHJ1Y3QgRXhjZXB0aW9uRGF0YTsKK3N0cnVjdCBTZXJ2aWNlV29ya2Vy
Q2xpZW50RGF0YTsKK3N0cnVjdCBTZXJ2aWNlV29ya2VyRGF0YTsKK3N0cnVjdCBTZXJ2aWNlV29y
a2VyRmV0Y2hSZXN1bHQ7CitzdHJ1Y3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE7CisK
K2NsYXNzIFNXQ2xpZW50Q29ubmVjdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxT
V0NsaWVudENvbm5lY3Rpb24+IHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IH5TV0NsaWVudENvbm5lY3Rpb24oKTsKKworICAgIHVzaW5nIFJlZ2lzdHJhdGlvbkNhbGxiYWNr
ID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkRhdGE+JiYpPjsKKyAgICB2aXJ0dWFsIHZvaWQgbWF0Y2hSZWdpc3RyYXRp
b24oY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkws
IFJlZ2lzdHJhdGlvbkNhbGxiYWNrJiYpID0gMDsKKworICAgIHVzaW5nIEdldFJlZ2lzdHJhdGlv
bnNDYWxsYmFjayA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRhdGE+JiYpPjsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UmVnaXN0cmF0
aW9ucyhjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVS
TCwgR2V0UmVnaXN0cmF0aW9uc0NhbGxiYWNrJiYpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBh
ZGRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIoU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbklkZW50aWZpZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkluU2VydmVyKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
KSA9IDA7CisKKyAgICB2b2lkIHNjaGVkdWxlSm9iKFNlcnZpY2VXb3JrZXJKb2ImKTsKKyAgICB2
b2lkIGZpbmlzaGVkRmV0Y2hpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYsIGNvbnN0IFN0cmlu
ZyYpOworICAgIHZvaWQgZmFpbGVkRmV0Y2hpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYsIGNv
bnN0IFJlc291cmNlRXJyb3ImKTsKKworICAgIHZpcnR1YWwgdm9pZCBkaWRSZXNvbHZlUmVnaXN0
cmF0aW9uUHJvbWlzZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JikgPSAwOwor
CisgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUo
U2VydmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRpb25JZGVudGlmaWVyLCBSZWY8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiYmLCBEb2N1bWVudElkZW50aWZpZXIgc291cmNlQ29udGV4dElkZW50
aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiYgc291cmNlKSA9IDA7CisgICAgdmlydHVh
bCBTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBtYXlIYXZlU2VydmljZVdvcmtlclJlZ2lz
dGVyZWRGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mKSBjb25zdCA9IDA7CisKKyAgICB2
aXJ0dWFsIHZvaWQgc2VydmljZVdvcmtlclN0YXJ0ZWRDb250cm9sbGluZ0NsaWVudChTZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIERv
Y3VtZW50SWRlbnRpZmllcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXJ2aWNlV29ya2VyU3Rv
cHBlZENvbnRyb2xsaW5nQ2xpZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgRG9jdW1lbnRJZGVudGlmaWVyKSA9IDA7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IFNlY3VyaXR5
T3JpZ2luJiB0b3BPcmlnaW4sIERvY3VtZW50SWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtl
ckNsaWVudERhdGEmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJTZXJ2aWNlV29y
a2VyQ2xpZW50KERvY3VtZW50SWRlbnRpZmllcikgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgV0VC
Q09SRV9FWFBPUlQgU1dDbGllbnRDb25uZWN0aW9uKCk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGpvYlJlamVjdGVkSW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlm
aWVyJiwgY29uc3QgRXhjZXB0aW9uRGF0YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVn
aXN0cmF0aW9uSm9iUmVzb2x2ZWRJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlk
ZW50aWZpZXImLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmLCBTaG91bGROb3RpZnlX
aGVuUmVzb2x2ZWQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdW5yZWdpc3RyYXRpb25Kb2JS
ZXNvbHZlZEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIGJv
b2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRT
Y3JpcHRGZXRjaEZvclNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xp
ZW50KERvY3VtZW50SWRlbnRpZmllciBkZXN0aW5hdGlvbkNvbnRleHRJZGVudGlmaWVyLCBSZWY8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIFNlcnZpY2VXb3JrZXJEYXRhJiYgc291
cmNlLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB1cGRhdGVSZWdpc3RyYXRpb25TdGF0ZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
ZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblN0YXRlLCBjb25zdCBzdGQ6Om9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJEYXRhPiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlV29y
a2VyU3RhdGUoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJTdGF0ZSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaXJlVXBkYXRlRm91bmRFdmVudChTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBub3RpZnlD
bGllbnRzT2ZDb250cm9sbGVyQ2hhbmdlKGNvbnN0IEhhc2hTZXQ8RG9jdW1lbnRJZGVudGlmaWVy
PiYgY29udGV4dElkZW50aWZpZXJzLCBTZXJ2aWNlV29ya2VyRGF0YSYmIG5ld0NvbnRyb2xsZXIp
OworCitwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUpvYkluU2VydmVyKGNvbnN0
IFNlcnZpY2VXb3JrZXJKb2JEYXRhJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hGZXRj
aGluZ1NjcmlwdEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYpID0gMDsK
KyAgICB2b2lkIGZvckVhY2hDb250YWluZXIoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKFNlcnZp
Y2VXb3JrZXJDb250YWluZXImKT4mIGFwcGx5KTsKKworICAgIEhhc2hNYXA8U2VydmljZVdvcmtl
ckpvYklkZW50aWZpZXIsIFJlZlB0cjxTZXJ2aWNlV29ya2VySm9iPj4gbV9zY2hlZHVsZWRKb2Jz
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCmluZGV4IDNmMjljNmIwMDNlOTRiZjk1MDBiMjgw
Y2M4MGUyNTEyNzBhOWE3YjkuLjhiZWIwODZmM2Q5NWE4NzcyYjY2YjM4ZDkwMzVmODlkYmI2ZmY3
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKIAorI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1l
cy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIklETFR5cGVzLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXQ2xpZW50Q29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXQ2xp
ZW50Q29ubmVjdGlvbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1Mjg3NTFl
NzYxM2IwMjY0OGI2ODhkOTA5YTczOThiMzg4NjQ1MjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV0NsaWVudENvbm5lY3Rpb24uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTkxICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU1dDbGllbnRD
b25uZWN0aW9uLmgiCi0KLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0KLSNpbmNsdWRlICJE
b2N1bWVudC5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbkRhdGEuaCIKLSNpbmNsdWRlICJNZXNzYWdl
RXZlbnQuaCIKLSNpbmNsdWRlICJNaWNyb3Rhc2tzLmgiCi0jaW5jbHVkZSAiU2VydmljZVdvcmtl
ckNvbnRhaW5lci5oIgotI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdC5oIgotI2lu
Y2x1ZGUgIlNlcnZpY2VXb3JrZXJKb2JEYXRhLmgiCi0jaW5jbHVkZSAiU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbi5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVNXQ2xpZW50Q29ubmVjdGlv
bjo6U1dDbGllbnRDb25uZWN0aW9uKCkgPSBkZWZhdWx0OwotCi1TV0NsaWVudENvbm5lY3Rpb246
On5TV0NsaWVudENvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7Ci0KLXZvaWQgU1dDbGllbnRDb25uZWN0
aW9uOjpzY2hlZHVsZUpvYihTZXJ2aWNlV29ya2VySm9iJiBqb2IpCi17Ci0gICAgYXV0byBhZGRS
ZXN1bHQgPSBtX3NjaGVkdWxlZEpvYnMuYWRkKGpvYi5pZGVudGlmaWVyKCksICZqb2IpOwotICAg
IEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0KLSAgICBz
Y2hlZHVsZUpvYkluU2VydmVyKGpvYi5kYXRhKCkpOwotfQotCi12b2lkIFNXQ2xpZW50Q29ubmVj
dGlvbjo6ZmluaXNoZWRGZXRjaGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiBqb2IsIGNvbnN0
IFN0cmluZyYgc2NyaXB0KQotewotICAgIEFTU0VSVChtX3NjaGVkdWxlZEpvYnMuZ2V0KGpvYi5p
ZGVudGlmaWVyKCkpID09ICZqb2IpOwotCi0gICAgZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZl
cih7IGpvYi5kYXRhKCkuaWRlbnRpZmllcigpLCBqb2IuZGF0YSgpLnJlZ2lzdHJhdGlvbktleSgp
LCBzY3JpcHQsIHsgfSB9KTsKLX0KLQotdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OmZhaWxlZEZl
dGNoaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgY29uc3QgUmVzb3VyY2VFcnJvciYg
ZXJyb3IpCi17Ci0gICAgQVNTRVJUKG1fc2NoZWR1bGVkSm9icy5nZXQoam9iLmlkZW50aWZpZXIo
KSkgPT0gJmpvYik7Ci0KLSAgICBmaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKHsgam9iLmRh
dGEoKS5pZGVudGlmaWVyKCksIGpvYi5kYXRhKCkucmVnaXN0cmF0aW9uS2V5KCksIHsgfSwgZXJy
b3IgfSk7Ci19Ci0KLXZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjpqb2JSZWplY3RlZEluU2VydmVy
KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIs
IGNvbnN0IEV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbkRhdGEpCi17Ci0gICAgYXV0byBqb2IgPSBt
X3NjaGVkdWxlZEpvYnMudGFrZShqb2JEYXRhSWRlbnRpZmllci5qb2JJZGVudGlmaWVyKTsKLSAg
ICBpZiAoIWpvYikgewotICAgICAgICBMT0dfRVJST1IoIkpvYiAlcyByZWplY3RlZCBmcm9tIHNl
cnZlciwgYnV0IHdhcyBub3QgZm91bmQiLCBqb2JEYXRhSWRlbnRpZmllci5sb2dnaW5nU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBqb2ItPmZh
aWxlZFdpdGhFeGNlcHRpb24oZXhjZXB0aW9uRGF0YS50b0V4Y2VwdGlvbigpKTsKLX0KLQotdm9p
ZCBTV0NsaWVudENvbm5lY3Rpb246OnJlZ2lzdHJhdGlvbkpvYlJlc29sdmVkSW5TZXJ2ZXIoY29u
c3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRpZmllciwgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJiByZWdpc3RyYXRpb25EYXRhLCBTaG91bGROb3Rp
ZnlXaGVuUmVzb2x2ZWQgc2hvdWxkTm90aWZ5V2hlblJlc29sdmVkKQotewotICAgIGF1dG8gam9i
ID0gbV9zY2hlZHVsZWRKb2JzLnRha2Uoam9iRGF0YUlkZW50aWZpZXIuam9iSWRlbnRpZmllcik7
Ci0gICAgaWYgKCFqb2IpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJKb2IgJXMgcmVzb2x2ZWQgaW4g
c2VydmVyLCBidXQgd2FzIG5vdCBmb3VuZCIsIGpvYkRhdGFJZGVudGlmaWVyLmxvZ2dpbmdTdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8g
a2V5ID0gcmVnaXN0cmF0aW9uRGF0YS5rZXk7Ci0gICAgam9iLT5yZXNvbHZlZFdpdGhSZWdpc3Ry
YXRpb24oV1RGTW92ZShyZWdpc3RyYXRpb25EYXRhKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwga2V5LCBzaG91bGROb3RpZnlXaGVuUmVzb2x2ZWRdIHsKLSAgICAgICAg
aWYgKHNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCA9PSBTaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQ6
OlllcykKLSAgICAgICAgICAgIGRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKGtleSk7Ci0g
ICAgfSk7Ci19Ci0KLXZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjp1bnJlZ2lzdHJhdGlvbkpvYlJl
c29sdmVkSW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBqb2JE
YXRhSWRlbnRpZmllciwgYm9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsdCkKLXsKLSAgICBhdXRvIGpv
YiA9IG1fc2NoZWR1bGVkSm9icy50YWtlKGpvYkRhdGFJZGVudGlmaWVyLmpvYklkZW50aWZpZXIp
OwotICAgIGlmICgham9iKSB7Ci0gICAgICAgIExPR19FUlJPUigiSm9iICVzIHJlc29sdmVkIGlu
IHNlcnZlciwgYnV0IHdhcyBub3QgZm91bmQiLCBqb2JEYXRhSWRlbnRpZmllci5sb2dnaW5nU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBqb2It
PnJlc29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0KHVucmVnaXN0cmF0aW9uUmVzdWx0KTsK
LX0KLQotdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnN0YXJ0U2NyaXB0RmV0Y2hGb3JTZXJ2ZXIo
Y29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRpZmllcikK
LXsKLSAgICBhdXRvIGpvYiA9IG1fc2NoZWR1bGVkSm9icy5nZXQoam9iRGF0YUlkZW50aWZpZXIu
am9iSWRlbnRpZmllcik7Ci0gICAgaWYgKCFqb2IpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJKb2Ig
JXMgaW5zdHJ1Y3RlZCB0byBzdGFydCBmZXRjaCBmcm9tIHNlcnZlciwgYnV0IGpvYiB3YXMgbm90
IGZvdW5kIiwgam9iRGF0YUlkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwotCi0gICAgICAgIC8vIEZJWE1FOiBTaG91bGQgbWVzc2FnZSBiYWNrIHRvIHRoZSBzZXJ2ZXIg
aGVyZSB0byBzaWduYWwgZmFpbHVyZSB0byBmZXRjaCwKLSAgICAgICAgLy8gYnV0IHdlIGN1cnJl
bnRseSBuZWVkIHRoZSByZWdpc3RyYXRpb24ga2V5IHRvIGRvIHNvLCBhbmQgZG9uJ3QgaGF2ZSBp
dCBoZXJlLgotICAgICAgICAvLyBJbiB0aGUgZnV0dXJlIHdlJ2xsIHJlZmFjdG9yIHRvIGhhdmUg
YSBnbG9iYWwsIGNyb3NzLXByb2Nlc3Mgam9iIGlkZW50aWZpZXIgdGhhdCBjYW4gYmUgdXNlZCB0
byBvdmVyY29tZSB0aGlzLgotCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBqb2ItPnN0
YXJ0U2NyaXB0RmV0Y2goKTsKLX0KLQotdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnBvc3RNZXNz
YWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KERvY3VtZW50SWRlbnRpZmllciBkZXN0aW5hdGlvbkNv
bnRleHRJZGVudGlmaWVyLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIFNl
cnZpY2VXb3JrZXJEYXRhJiYgc291cmNlRGF0YSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4p
Ci17Ci0gICAgLy8gRklYTUU6IGRlc3RpbmF0aW9uQ29udGV4dElkZW50aWZpZXIgY2FuIG9ubHkg
aWRlbnRpZnkgYSBEb2N1bWVudCBhdCB0aGUgbW9tZW50LgotICAgIGF1dG8qIGRlc3RpbmF0aW9u
RG9jdW1lbnQgPSBEb2N1bWVudDo6YWxsRG9jdW1lbnRzTWFwKCkuZ2V0KGRlc3RpbmF0aW9uQ29u
dGV4dElkZW50aWZpZXIpOwotICAgIGlmICghZGVzdGluYXRpb25Eb2N1bWVudCkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgYXV0byogY29udGFpbmVyID0gZGVzdGluYXRpb25Eb2N1bWVudC0+c2Vy
dmljZVdvcmtlckNvbnRhaW5lcigpOwotICAgIGlmICghY29udGFpbmVyKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBNZXNzYWdlRXZlbnRTb3VyY2Ugc291cmNlID0gUmVmUHRyPFNlcnZpY2VXb3Jr
ZXI+IHsgU2VydmljZVdvcmtlcjo6Z2V0T3JDcmVhdGUoKmRlc3RpbmF0aW9uRG9jdW1lbnQsIFdU
Rk1vdmUoc291cmNlRGF0YSkpIH07Ci0KLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHBhc3MgaW4g
cG9ydHMuCi0gICAgYXV0byBtZXNzYWdlRXZlbnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZSh7IH0s
IFdURk1vdmUobWVzc2FnZSksIHNvdXJjZU9yaWdpbiwgeyB9LCBXVEZNb3ZlKHNvdXJjZSkpOwot
ICAgIGNvbnRhaW5lci0+ZGlzcGF0Y2hFdmVudChtZXNzYWdlRXZlbnQpOwotfQotCi12b2lkIFNX
Q2xpZW50Q29ubmVjdGlvbjo6Zm9yRWFjaENvbnRhaW5lcihjb25zdCBXVEY6OkZ1bmN0aW9uPHZv
aWQoU2VydmljZVdvcmtlckNvbnRhaW5lciYpPiYgYXBwbHkpCi17Ci0gICAgLy8gRklYTUU6IFdl
IHNob3VsZCBpdGVyYXRlIG92ZXIgYWxsIHNlcnZpY2Ugd29ya2VyIGNsaWVudHMsIG5vdCBvbmx5
IGRvY3VtZW50cy4KLSAgICBmb3IgKGF1dG8qIGRvY3VtZW50IDogRG9jdW1lbnQ6OmFsbERvY3Vt
ZW50cygpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBjb250YWluZXIgPSBkb2N1bWVudC0+c2Vydmlj
ZVdvcmtlckNvbnRhaW5lcigpKQotICAgICAgICAgICAgYXBwbHkoKmNvbnRhaW5lcik7Ci0gICAg
fQotfQotCi12b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6dXBkYXRlUmVnaXN0cmF0aW9uU3RhdGUo
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvblN0YXRlIHN0YXRlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VX
b3JrZXJEYXRhPiYgc2VydmljZVdvcmtlckRhdGEpCi17Ci0gICAgZm9yRWFjaENvbnRhaW5lcihb
Jl0oU2VydmljZVdvcmtlckNvbnRhaW5lciYgY29udGFpbmVyKSB7Ci0gICAgICAgIGNvbnRhaW5l
ci5zY2hlZHVsZVRhc2tUb1VwZGF0ZVJlZ2lzdHJhdGlvblN0YXRlKGlkZW50aWZpZXIsIHN0YXRl
LCBzZXJ2aWNlV29ya2VyRGF0YSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU1dDbGllbnRDb25uZWN0
aW9uOjp1cGRhdGVXb3JrZXJTdGF0ZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVy
LCBTZXJ2aWNlV29ya2VyU3RhdGUgc3RhdGUpCi17Ci0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBp
dGVyYXRlIG92ZXIgYWxsIHNlcnZpY2Ugd29ya2VyIGNsaWVudHMsIG5vdCBvbmx5IGRvY3VtZW50
cy4KLSAgICBmb3IgKGF1dG8qIGRvY3VtZW50IDogRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpKSB7
Ci0gICAgICAgIGlmIChhdXRvKiBzZXJ2aWNlV29ya2VyID0gZG9jdW1lbnQtPnNlcnZpY2VXb3Jr
ZXIoaWRlbnRpZmllcikpCi0gICAgICAgICAgICBzZXJ2aWNlV29ya2VyLT5zY2hlZHVsZVRhc2tU
b1VwZGF0ZVN0YXRlKHN0YXRlKTsKLSAgICB9Ci19Ci0KLXZvaWQgU1dDbGllbnRDb25uZWN0aW9u
OjpmaXJlVXBkYXRlRm91bmRFdmVudChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
ciBpZGVudGlmaWVyKQotewotICAgIGZvckVhY2hDb250YWluZXIoWyZdKFNlcnZpY2VXb3JrZXJD
b250YWluZXImIGNvbnRhaW5lcikgewotICAgICAgICBjb250YWluZXIuc2NoZWR1bGVUYXNrVG9G
aXJlVXBkYXRlRm91bmRFdmVudChpZGVudGlmaWVyKTsKLSAgICB9KTsKLX0KLQotdm9pZCBTV0Ns
aWVudENvbm5lY3Rpb246Om5vdGlmeUNsaWVudHNPZkNvbnRyb2xsZXJDaGFuZ2UoY29uc3QgSGFz
aFNldDxEb2N1bWVudElkZW50aWZpZXI+JiBjb250ZXh0SWRlbnRpZmllcnMsIFNlcnZpY2VXb3Jr
ZXJEYXRhJiYgbmV3Q29udHJvbGxlcikKLXsKLSAgICBBU1NFUlQoIWNvbnRleHRJZGVudGlmaWVy
cy5pc0VtcHR5KCkpOwotCi0gICAgZm9yIChhdXRvJiBjbGllbnRJZGVudGlmaWVyIDogY29udGV4
dElkZW50aWZpZXJzKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IHdvcmtlciBjb250ZXh0
cy4KLSAgICAgICAgYXV0byogY2xpZW50ID0gRG9jdW1lbnQ6OmFsbERvY3VtZW50c01hcCgpLmdl
dChjbGllbnRJZGVudGlmaWVyKTsKLSAgICAgICAgaWYgKCFjbGllbnQpCi0gICAgICAgICAgICBj
b250aW51ZTsKLQotICAgICAgICBBU1NFUlQoY2xpZW50LT5hY3RpdmVTZXJ2aWNlV29ya2VyKCkp
OwotICAgICAgICBBU1NFUlQoY2xpZW50LT5hY3RpdmVTZXJ2aWNlV29ya2VyKCktPmlkZW50aWZp
ZXIoKSAhPSBuZXdDb250cm9sbGVyLmlkZW50aWZpZXIpOwotICAgICAgICBjbGllbnQtPnNldEFj
dGl2ZVNlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlcjo6Z2V0T3JDcmVhdGUoKmNsaWVudCwgU2Vy
dmljZVdvcmtlckRhdGEgeyBuZXdDb250cm9sbGVyIH0pKTsKLSAgICAgICAgaWYgKGF1dG8qIGNv
bnRhaW5lciA9IGNsaWVudC0+c2VydmljZVdvcmtlckNvbnRhaW5lcigpKQotICAgICAgICAgICAg
Y29udGFpbmVyLT5zY2hlZHVsZVRhc2tUb0ZpcmVDb250cm9sbGVyQ2hhbmdlRXZlbnQoKTsKLSAg
ICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dDbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXQ2xpZW50Q29ubmVjdGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA3NDRjOTgxODc2NjRhODU3OGY5NjFmZTZhNTQ1ZmRlZjJlMjZiMTYyLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dDbGllbnRDb25uZWN0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAt
MSwxMDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQotCi0jaW5jbHVkZSAiRG9jdW1lbnRJZGVudGlmaWVyLmgiCi0jaW5jbHVk
ZSAiU2VydmljZVdvcmtlckpvYi5oIgotI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUeXBlcy5oIgot
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3Vu
dGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgUmVzb3VyY2VFcnJvcjsKLWNs
YXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwotY2xhc3Mg
U2VydmljZVdvcmtlckNvbnRhaW5lcjsKLWNsYXNzIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb247
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Ci1lbnVtIGNsYXNzIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25TdGF0ZTsKLWVudW0gY2xhc3MgU2VydmljZVdvcmtlclN0YXRlOwotZW51bSBjbGFzcyBTaG91
bGROb3RpZnlXaGVuUmVzb2x2ZWQ7Ci1zdHJ1Y3QgRXhjZXB0aW9uRGF0YTsKLXN0cnVjdCBTZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YTsKLXN0cnVjdCBTZXJ2aWNlV29ya2VyRGF0YTsKLXN0cnVjdCBT
ZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQ7Ci1zdHJ1Y3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRhdGE7Ci0KLWNsYXNzIFNXQ2xpZW50Q29ubmVjdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxTV0NsaWVudENvbm5lY3Rpb24+IHsKLXB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIH5TV0NsaWVudENvbm5lY3Rpb24oKTsKLQotICAgIHVzaW5nIFJlZ2lzdHJhdGlv
bkNhbGxiYWNrID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+JiYpPjsKLSAgICB2aXJ0dWFsIHZvaWQgbWF0Y2hS
ZWdpc3RyYXRpb24oY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBj
bGllbnRVUkwsIFJlZ2lzdHJhdGlvbkNhbGxiYWNrJiYpID0gMDsKLQotICAgIHVzaW5nIEdldFJl
Z2lzdHJhdGlvbnNDYWxsYmFjayA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+JiYpPjsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
UmVnaXN0cmF0aW9ucyhjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBjb25zdCBVUkwm
IGNsaWVudFVSTCwgR2V0UmVnaXN0cmF0aW9uc0NhbGxiYWNrJiYpID0gMDsKLQotICAgIHZpcnR1
YWwgdm9pZCBhZGRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIoU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXIpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVyKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyKSA9IDA7Ci0KLSAgICB2b2lkIHNjaGVkdWxlSm9iKFNlcnZpY2VXb3JrZXJKb2Im
KTsKLSAgICB2b2lkIGZpbmlzaGVkRmV0Y2hpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYsIGNv
bnN0IFN0cmluZyYpOwotICAgIHZvaWQgZmFpbGVkRmV0Y2hpbmdTY3JpcHQoU2VydmljZVdvcmtl
ckpvYiYsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKLQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZXNv
bHZlUmVnaXN0cmF0aW9uUHJvbWlzZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
JikgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUoU2VydmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRpb25JZGVudGlmaWVyLCBS
ZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBEb2N1bWVudElkZW50aWZpZXIgc291cmNlQ29u
dGV4dElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiYgc291cmNlKSA9IDA7Ci0g
ICAgdmlydHVhbCBTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBtYXlIYXZlU2VydmljZVdv
cmtlclJlZ2lzdGVyZWRGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mKSBjb25zdCA9IDA7
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2VydmljZVdvcmtlclN0YXJ0ZWRDb250cm9sbGluZ0NsaWVu
dChTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50
aWZpZXIsIERvY3VtZW50SWRlbnRpZmllcikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXJ2aWNl
V29ya2VyU3RvcHBlZENvbnRyb2xsaW5nQ2xpZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgRG9jdW1lbnRJZGVudGlmaWVyKSA9
IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0
IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIERvY3VtZW50SWRlbnRpZmllciwgY29uc3QgU2Vy
dmljZVdvcmtlckNsaWVudERhdGEmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJT
ZXJ2aWNlV29ya2VyQ2xpZW50KERvY3VtZW50SWRlbnRpZmllcikgPSAwOwotCi1wcm90ZWN0ZWQ6
Ci0gICAgV0VCQ09SRV9FWFBPUlQgU1dDbGllbnRDb25uZWN0aW9uKCk7Ci0KLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGpvYlJlamVjdGVkSW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRh
dGFJZGVudGlmaWVyJiwgY29uc3QgRXhjZXB0aW9uRGF0YSYpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2Vy
Sm9iRGF0YUlkZW50aWZpZXImLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmLCBTaG91
bGROb3RpZnlXaGVuUmVzb2x2ZWQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdW5yZWdpc3Ry
YXRpb25Kb2JSZXNvbHZlZEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRp
ZmllciYsIGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc3RhcnRTY3JpcHRGZXRjaEZvclNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlk
ZW50aWZpZXImKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNl
V29ya2VyQ2xpZW50KERvY3VtZW50SWRlbnRpZmllciBkZXN0aW5hdGlvbkNvbnRleHRJZGVudGlm
aWVyLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIFNlcnZpY2VXb3JrZXJE
YXRhJiYgc291cmNlLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCB1cGRhdGVSZWdpc3RyYXRpb25TdGF0ZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uSWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblN0YXRlLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJEYXRhPiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
dXBkYXRlV29ya2VyU3RhdGUoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJT
dGF0ZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaXJlVXBkYXRlRm91bmRFdmVudChTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBub3RpZnlDbGllbnRzT2ZDb250cm9sbGVyQ2hhbmdlKGNvbnN0IEhhc2hTZXQ8RG9jdW1lbnRJ
ZGVudGlmaWVyPiYgY29udGV4dElkZW50aWZpZXJzLCBTZXJ2aWNlV29ya2VyRGF0YSYmIG5ld0Nv
bnRyb2xsZXIpOwotCi1wcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUpvYkluU2Vy
dmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBm
aW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3Vs
dCYpID0gMDsKLSAgICB2b2lkIGZvckVhY2hDb250YWluZXIoY29uc3QgV1RGOjpGdW5jdGlvbjx2
b2lkKFNlcnZpY2VXb3JrZXJDb250YWluZXImKT4mIGFwcGx5KTsKLQotICAgIEhhc2hNYXA8U2Vy
dmljZVdvcmtlckpvYklkZW50aWZpZXIsIFJlZlB0cjxTZXJ2aWNlV29ya2VySm9iPj4gbV9zY2hl
ZHVsZWRKb2JzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328013</attachid>
            <date>2017-11-30 13:23:53 -0800</date>
            <delta_ts>2017-11-30 14:08:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180217-20171130132352.patch</filename>
            <type>text/plain</type>
            <size>41961</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1MzQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTc4ODU4M2JjZjY1OGI1
MWU0MmMzZGYyMzhjMzM1NjZkY2RmMDAwOS4uOWNjOWU0NzI0ZjY2MmQ2OGJmNzQwZWFkYWY1NmVi
ZDVmZTY4Zjk0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE3LTExLTMwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBTV0NsaWVudENvbm5l
Y3Rpb24gY2xhc3Mgb3V0IG9mIHNlcnZlci8gZm9sZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAyMTcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIFNXQ2xpZW50Q29ubmVjdGlvbiBjbGFzcyBv
dXQgb2Ygc2VydmVyLyBmb2xkZXIgc2luY2UgdGhlIGNsaWVudCBjb25uZWN0aW9uCisgICAgICAg
IGxpdmVzIGluIHRoZSBXZWJQcm9jZXNzLCBub3QgdGhlIFN0b3JhZ2UgcHJvY2Vzcy4KKworICAg
ICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmNw
cDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dD
bGllbnRDb25uZWN0aW9uLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OlNXQ2xpZW50Q29ubmVjdGlv
bjo6c2NoZWR1bGVKb2IpOgorICAgICAgICAoV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uOjpm
aW5pc2hlZEZldGNoaW5nU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OlNXQ2xpZW50Q29ubmVj
dGlvbjo6ZmFpbGVkRmV0Y2hpbmdTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6U1dDbGllbnRD
b25uZWN0aW9uOjpqb2JSZWplY3RlZEluU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNXQ2xp
ZW50Q29ubmVjdGlvbjo6cmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJblNlcnZlcik6CisgICAgICAg
IChXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb246OnVucmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJ
blNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb246OnN0YXJ0U2Ny
aXB0RmV0Y2hGb3JTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9u
Ojpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpT
V0NsaWVudENvbm5lY3Rpb246OmZvckVhY2hDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U1dDbGllbnRDb25uZWN0aW9uOjp1cGRhdGVSZWdpc3RyYXRpb25TdGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb246OnVwZGF0ZVdvcmtlclN0YXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNXQ2xpZW50Q29ubmVjdGlvbjo6ZmlyZVVwZGF0ZUZvdW5kRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uOjpub3RpZnlDbGllbnRzT2ZDb250cm9s
bGVyQ2hhbmdlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9u
Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
Q2xpZW50Q29ubmVjdGlvbi5oLgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ29udGFpbmVyLmNwcDoKKwogMjAxNy0xMS0zMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIE1hcmsgYSBmZXcgaGVhcC1hbGxvY2F0ZWQgc2VydmljZSB3b3Jr
ZXIgdHlwZXMgYXMgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggOTFl
MDRlMTkwOTM2Y2FiMGYwNjI4NTI2YTRmOWViNWI4ZjljOGRlYi4uOGE3NDhkNjUzMzU3OTFmMjBl
N2VjMjY3NWQ5OTk1NTE0N2EyODFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTIxNzUsNiArMjE3NSw3
IEBAIHdvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAogd29ya2Vycy9zZXJ2aWNlL0V4dGVuZGFibGVF
dmVudC5jcHAKIHdvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmNwcAogd29y
a2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuY3BwCit3b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25u
ZWN0aW9uLmNwcAogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuY3BwCiB3b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5jcHAKIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YS5jcHAKQEAgLTIxOTksNyArMjIwMCw2IEBAIHdvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0Nv
bnRleHRNYW5hZ2VyLmNwcAogCi13b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXQ2xpZW50Q29ubmVj
dGlvbi5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5jcHAKIHdvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVySm9iUXVldWUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTU3MzA1M2U4MDMxMTgxMjZlZjc1YjRhYjJiM2NhOTc5
OGI2ZDdhOC4uN2IzYzA5OTc4NDAxMjI5ZDFhMWZhYWQwMDgwZTRiODA1NjhlMTNhZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MTE1MSw2ICsxMTUxLDcgQEAKIAkJNDZFQjM3Q0MxRjk3Q0NEMjAwQjY1NTIzIC8qIEpTU2Vydmlj
ZVdvcmtlckNsaWVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2RUIzN0M1MUY5N0NDQ0IwMEI2NTUyMyAvKiBKU1NlcnZpY2VXb3JrZXJDbGllbnRz
LmggKi87IH07CiAJCTQ2RUIzN0NFMUY5N0NDRDIwMEI2NTUyMyAvKiBKU1NlcnZpY2VXb3JrZXJX
aW5kb3dDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2RUIzN0M3MUY5N0NDQ0IwMEI2NTUyMyAvKiBKU1NlcnZpY2VXb3JrZXJXaW5kb3dDbGll
bnQuaCAqLzsgfTsKIAkJNDZFQkVBMDIxQjdENEQ2NTAwQkU0OTQxIC8qIENvbGxlY3Rpb25UcmF2
ZXJzYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
RUJFQTAxMUI3RDRENUQwMEJFNDk0MSAvKiBDb2xsZWN0aW9uVHJhdmVyc2FsLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDZFQ0I2MzgxRkQwQTND
ODAwODhFNUFEIC8qIFNXQ2xpZW50Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZFQ0I2MzcxRkQwQTNCQjAwODhFNUFEIC8qIFNXQ2xp
ZW50Q29ubmVjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTQ2RUYxNDJBMUY5N0I3RDgwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2VyV2luZG93
Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NkVGMTQyMDFGOTdCN0JBMDBDMkE1MjQgLyogU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5oICov
OyB9OwogCQk0NkVGMTQyQzFGOTdCN0Q4MDBDMkE1MjQgLyogU2VydmljZVdvcmtlckNsaWVudHMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RUYxNDIy
MUY5N0I3QkEwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50cy5oICovOyB9OwogCQk0NkVG
MTQyRDFGOTdCN0Q4MDBDMkE1MjQgLyogU2VydmljZVdvcmtlckNsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZFRjE0MjQxRjk3QjdCQTAwQzJB
NTI0IC8qIFNlcnZpY2VXb3JrZXJDbGllbnQuaCAqLzsgfTsKQEAgLTEzNDAsNyArMTM0MSw2IEBA
CiAJCTUxNzRFMjBBMTBBMUY0NEYwMEY5NUU2RiAvKiBQb3BTdGF0ZUV2ZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTc0RTIwODEwQTFGNDRGMDBG
OTVFNkYgLyogUG9wU3RhdGVFdmVudC5oICovOyB9OwogCQk1MTc3MURGRjFCREI0ODUwMDBDQUU4
RTQgLyogTWVtb3J5T2JqZWN0U3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxNzcxREZEMUJEQjQ3NTYwMENBRThFNCAvKiBNZW1vcnlPYmplY3RT
dG9yZS5oICovOyB9OwogCQk1MTdBNTJGMDFGNDc1MzVCMDBEQ0RDMEEgLyogU1dTZXJ2ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0E1MkVFMUY0
NzUzNTkwMERDREMwQSAvKiBTV1NlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07Ci0JCTUxN0E1MzFEMUY0QjUzQjEwMERDREMwQSAvKiBTV0NsaWVu
dENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxN0E1MkZGMUY0NzhDQ0UwMERDREMwQSAvKiBTV0NsaWVudENvbm5lY3Rpb24uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTdBNTMyOTFG
NEI5MEI5MDBEQ0RDMEEgLyogU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3QTUzMjYxRjRCOTBCMjAw
RENEQzBBIC8qIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTdBNTM0NjFGNTBDMTdGMDBEQ0RD
MEEgLyogU1dTZXJ2ZXJXb3JrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxN0E1MzQyMUY1MEMxNjEwMERDREMwQSAvKiBTV1NlcnZlcldvcmtlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxN0E1
MzRGMUY1NEE4QkEwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3QTUzNEMxRjU0
OUQ0QTAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTcyNzgsNiArNzI3OCw4
IEBACiAJCTQ2RUIzN0M2MUY5N0NDQ0IwMEI2NTUyMyAvKiBKU1NlcnZpY2VXb3JrZXJXaW5kb3dD
bGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTZXJ2aWNl
V29ya2VyV2luZG93Q2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZF
QjM3QzcxRjk3Q0NDQjAwQjY1NTIzIC8qIEpTU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NlcnZpY2VXb3JrZXJXaW5kb3dDbGll
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZFQkVBMDExQjdENEQ1RDAwQkU0
OTQxIC8qIENvbGxlY3Rpb25UcmF2ZXJzYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ29sbGVjdGlvblRyYXZlcnNhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0NkVDQjYzNjFGRDBBM0JCMDA4OEU1QUQgLyogU1dDbGllbnRDb25uZWN0aW9uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNXQ2xpZW50Q29ubmVjdGlvbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2RUNCNjM3MUZEMEEzQkIwMDg4RTVBRCAv
KiBTV0NsaWVudENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U1dDbGllbnRDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RUYx
NDIwMUY5N0I3QkEwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZFRjE0MjExRjk3QjdCQTAwQzJBNTI0IC8q
IFNlcnZpY2VXb3JrZXJDbGllbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNlcnZpY2VXb3JrZXJDbGllbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDZFRjE0MjIxRjk3QjdCQTAwQzJBNTI0IC8qIFNlcnZpY2VXb3JrZXJDbGllbnRzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJDbGllbnRzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03Njc5LDggKzc2ODEsNiBAQAogCQk1MTc3
MURGRDFCREI0NzU2MDBDQUU4RTQgLyogTWVtb3J5T2JqZWN0U3RvcmUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTWVtb3J5T2JqZWN0U3RvcmUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTE3QTUyRUUxRjQ3NTM1OTAwRENEQzBBIC8qIFNXU2VydmVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNXU2VydmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxN0E1MkVGMUY0NzUzNTkwMERDREMwQSAvKiBTV1NlcnZlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTV1NlcnZlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxN0E1MkZFMUY0NzhDQ0UwMERDREMwQSAvKiBTV0Ns
aWVudENvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U1dDbGllbnRDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE3
QTUyRkYxRjQ3OENDRTAwRENEQzBBIC8qIFNXQ2xpZW50Q29ubmVjdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTV0NsaWVudENvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTE3QTUzMjQxRjRCOTA0QTAwRENEQzBBIC8qIFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZp
Y2VXb3JrZXJKb2JEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3QTUz
MjYxRjRCOTBCMjAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdBNTMyNzFGNEI5MEIyMDBEQ0RD
MEEgLyogU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MTM1LDggKzE3MTM1LDYgQEAKIAkJNTE3QTUy
RUMxRjQ3NTMyRDAwRENEQzBBIC8qIHNlcnZlciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCi0JCQkJNTE3QTUyRkUxRjQ3OENDRTAwRENEQzBBIC8qIFNXQ2xpZW50
Q29ubmVjdGlvbi5jcHAgKi8sCi0JCQkJNTE3QTUyRkYxRjQ3OENDRTAwRENEQzBBIC8qIFNXQ2xp
ZW50Q29ubmVjdGlvbi5oICovLAogCQkJCTQxNTFFNUI5MUZCQTRDNzYwMEU0N0UyRCAvKiBTV09y
aWdpblN0b3JlLmNwcCAqLywKIAkJCQk0MTUxRTVCNzFGQkE0Qzc1MDBFNDdFMkQgLyogU1dPcmln
aW5TdG9yZS5oICovLAogCQkJCTUxN0E1MkVGMUY0NzUzNTkwMERDREMwQSAvKiBTV1NlcnZlci5j
cHAgKi8sCkBAIC0xNzMyOSw2ICsxNzMyNyw4IEBACiAJCQkJNDZFRjE0MjUxRjk3QjdCQTAwQzJB
NTI0IC8qIFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuY3BwICovLAogCQkJCTQ2RUYxNDIwMUY5
N0I3QkEwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50LmggKi8sCiAJCQkJNDZF
RjE0MjYxRjk3QjdCQTAwQzJBNTI0IC8qIFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuaWRsICov
LAorCQkJCTQ2RUNCNjM2MUZEMEEzQkIwMDg4RTVBRCAvKiBTV0NsaWVudENvbm5lY3Rpb24uY3Bw
ICovLAorCQkJCTQ2RUNCNjM3MUZEMEEzQkIwMDg4RTVBRCAvKiBTV0NsaWVudENvbm5lY3Rpb24u
aCAqLywKIAkJCSk7CiAJCQlwYXRoID0gc2VydmljZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CkBAIC0yNzE5OCw3ICsyNzE5OCw2IEBACiAJCQkJQjUxQTJGM0YxN0Q3RDNBRTAwNzI1MTdB
IC8qIEltYWdlUXVhbGl0eUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5MjkxRTRC
MTM0MTcyQzgwMEU3NTNERSAvKiBJbWFnZVJlbmRlcmluZ01vZGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTdDMTkzQkMxMUY1RTBFRUQwMDg4RjNFNiAvKiBJbWFnZVNtb290aGluZ1F1YWxpdHkuaCBp
biBIZWFkZXJzICovLAotCQkJCUIyNzUzNTcxMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZVNvdXJj
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEIzNDgwOTQwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdl
U291cmNlQ0cuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1NTBDQjQyMUU5NTVFM0MwMDExMUFBMCAv
KiBJbWFnZVR5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkyNkY3NTZCMzFCM0I2NkY3MDAwNURE
NzkgLyogSW1tdXRhYmxlTkZBLmggaW4gSGVhZGVycyAqLywKQEAgLTI5NDE5LDcgKzI5NDE4LDcg
QEAKIAkJCQk4NDg1MjI4QjExOTAxNzNDMDA2RURDN0YgLyogU1ZHVktlcm5FbGVtZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlCMjIyN0FGNjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHWm9vbUFuZFBh
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJFNEVDOTgwRDAwQzIyQjAwNDMyNjQzIC8qIFNWR1pv
b21FdmVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE3QTUzMUQxRjRCNTNCMTAwRENEQzBBIC8q
IFNXQ2xpZW50Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZFQ0I2MzgxRkQwQTND
ODAwODhFNUFEIC8qIFNXQ2xpZW50Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY2
NThEQzkxRkEyNEI4NzAwRjdERDU0IC8qIFNXQ29udGV4dE1hbmFnZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQxNTFFNUJCMUZCQTRDN0EwMEU0N0UyRCAvKiBTV09yaWdpblN0b3JlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTdBNTJGMDFGNDc1MzVCMDBEQ0RDMEEgLyogU1dTZXJ2ZXIuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NX
Q2xpZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dD
bGllbnRDb25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDJhZWZlYzQyMmQyMTdmODFhZjRhODU3
MjRhOTM3ZWM1ZGU3OTNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSwyMDYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU1dDbGllbnRDb25uZWN0aW9u
LmgiCisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKKyNpbmNsdWRlICJEb2N1bWVudC5o
IgorI2luY2x1ZGUgIkV4Y2VwdGlvbkRhdGEuaCIKKyNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIK
KyNpbmNsdWRlICJNaWNyb3Rhc2tzLmgiCisjaW5jbHVkZSAiU1dDb250ZXh0TWFuYWdlci5oIgor
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDb250YWluZXIuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29y
a2VyRmV0Y2hSZXN1bHQuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VySm9iRGF0YS5oIgorI2lu
Y2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaCIKKyNpbmNsdWRlIDx3dGYvQ3Jvc3NU
aHJlYWRDb3BpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTV0NsaWVudENvbm5lY3Rp
b246OlNXQ2xpZW50Q29ubmVjdGlvbigpID0gZGVmYXVsdDsKKworU1dDbGllbnRDb25uZWN0aW9u
Ojp+U1dDbGllbnRDb25uZWN0aW9uKCkgPSBkZWZhdWx0OworCit2b2lkIFNXQ2xpZW50Q29ubmVj
dGlvbjo6c2NoZWR1bGVKb2IoU2VydmljZVdvcmtlckpvYiYgam9iKQoreworICAgIGF1dG8gYWRk
UmVzdWx0ID0gbV9zY2hlZHVsZWRKb2JzLmFkZChqb2IuaWRlbnRpZmllcigpLCAmam9iKTsKKyAg
ICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOworCisgICAg
c2NoZWR1bGVKb2JJblNlcnZlcihqb2IuZGF0YSgpKTsKK30KKwordm9pZCBTV0NsaWVudENvbm5l
Y3Rpb246OmZpbmlzaGVkRmV0Y2hpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYgam9iLCBjb25z
dCBTdHJpbmcmIHNjcmlwdCkKK3sKKyAgICBBU1NFUlQobV9zY2hlZHVsZWRKb2JzLmdldChqb2Iu
aWRlbnRpZmllcigpKSA9PSAmam9iKTsKKworICAgIGZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2
ZXIoeyBqb2IuZGF0YSgpLmlkZW50aWZpZXIoKSwgam9iLmRhdGEoKS5yZWdpc3RyYXRpb25LZXko
KSwgc2NyaXB0LCB7IH0gfSk7Cit9CisKK3ZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjpmYWlsZWRG
ZXRjaGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiBqb2IsIGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yKQoreworICAgIEFTU0VSVChtX3NjaGVkdWxlZEpvYnMuZ2V0KGpvYi5pZGVudGlmaWVy
KCkpID09ICZqb2IpOworCisgICAgZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcih7IGpvYi5k
YXRhKCkuaWRlbnRpZmllcigpLCBqb2IuZGF0YSgpLnJlZ2lzdHJhdGlvbktleSgpLCB7IH0sIGVy
cm9yIH0pOworfQorCit2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6am9iUmVqZWN0ZWRJblNlcnZl
cihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVy
LCBjb25zdCBFeGNlcHRpb25EYXRhJiBleGNlcHRpb25EYXRhKQoreworICAgIGF1dG8gam9iID0g
bV9zY2hlZHVsZWRKb2JzLnRha2Uoam9iRGF0YUlkZW50aWZpZXIuam9iSWRlbnRpZmllcik7Cisg
ICAgaWYgKCFqb2IpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJKb2IgJXMgcmVqZWN0ZWQgZnJvbSBz
ZXJ2ZXIsIGJ1dCB3YXMgbm90IGZvdW5kIiwgam9iRGF0YUlkZW50aWZpZXIubG9nZ2luZ1N0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgam9iLT5m
YWlsZWRXaXRoRXhjZXB0aW9uKGV4Y2VwdGlvbkRhdGEudG9FeGNlcHRpb24oKSk7Cit9CisKK3Zv
aWQgU1dDbGllbnRDb25uZWN0aW9uOjpyZWdpc3RyYXRpb25Kb2JSZXNvbHZlZEluU2VydmVyKGNv
bnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIsIFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYgcmVnaXN0cmF0aW9uRGF0YSwgU2hvdWxkTm90
aWZ5V2hlblJlc29sdmVkIHNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCkKK3sKKyAgICBhdXRvIGpv
YiA9IG1fc2NoZWR1bGVkSm9icy50YWtlKGpvYkRhdGFJZGVudGlmaWVyLmpvYklkZW50aWZpZXIp
OworICAgIGlmICgham9iKSB7CisgICAgICAgIExPR19FUlJPUigiSm9iICVzIHJlc29sdmVkIGlu
IHNlcnZlciwgYnV0IHdhcyBub3QgZm91bmQiLCBqb2JEYXRhSWRlbnRpZmllci5sb2dnaW5nU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRv
IGtleSA9IHJlZ2lzdHJhdGlvbkRhdGEua2V5OworICAgIGpvYi0+cmVzb2x2ZWRXaXRoUmVnaXN0
cmF0aW9uKFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGtleSwgc2hvdWxkTm90aWZ5V2hlblJlc29sdmVkXSB7CisgICAgICAg
IGlmIChzaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQgPT0gU2hvdWxkTm90aWZ5V2hlblJlc29sdmVk
OjpZZXMpCisgICAgICAgICAgICBkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShrZXkpOwor
ICAgIH0pOworfQorCit2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6dW5yZWdpc3RyYXRpb25Kb2JS
ZXNvbHZlZEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYgam9i
RGF0YUlkZW50aWZpZXIsIGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpCit7CisgICAgYXV0byBq
b2IgPSBtX3NjaGVkdWxlZEpvYnMudGFrZShqb2JEYXRhSWRlbnRpZmllci5qb2JJZGVudGlmaWVy
KTsKKyAgICBpZiAoIWpvYikgeworICAgICAgICBMT0dfRVJST1IoIkpvYiAlcyByZXNvbHZlZCBp
biBzZXJ2ZXIsIGJ1dCB3YXMgbm90IGZvdW5kIiwgam9iRGF0YUlkZW50aWZpZXIubG9nZ2luZ1N0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgam9i
LT5yZXNvbHZlZFdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdCh1bnJlZ2lzdHJhdGlvblJlc3VsdCk7
Cit9CisKK3ZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjpzdGFydFNjcmlwdEZldGNoRm9yU2VydmVy
KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIp
Cit7CisgICAgYXV0byBqb2IgPSBtX3NjaGVkdWxlZEpvYnMuZ2V0KGpvYkRhdGFJZGVudGlmaWVy
LmpvYklkZW50aWZpZXIpOworICAgIGlmICgham9iKSB7CisgICAgICAgIExPR19FUlJPUigiSm9i
ICVzIGluc3RydWN0ZWQgdG8gc3RhcnQgZmV0Y2ggZnJvbSBzZXJ2ZXIsIGJ1dCBqb2Igd2FzIG5v
dCBmb3VuZCIsIGpvYkRhdGFJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKKworICAgICAgICAvLyBGSVhNRTogU2hvdWxkIG1lc3NhZ2UgYmFjayB0byB0aGUgc2VydmVy
IGhlcmUgdG8gc2lnbmFsIGZhaWx1cmUgdG8gZmV0Y2gsCisgICAgICAgIC8vIGJ1dCB3ZSBjdXJy
ZW50bHkgbmVlZCB0aGUgcmVnaXN0cmF0aW9uIGtleSB0byBkbyBzbywgYW5kIGRvbid0IGhhdmUg
aXQgaGVyZS4KKyAgICAgICAgLy8gSW4gdGhlIGZ1dHVyZSB3ZSdsbCByZWZhY3RvciB0byBoYXZl
IGEgZ2xvYmFsLCBjcm9zcy1wcm9jZXNzIGpvYiBpZGVudGlmaWVyIHRoYXQgY2FuIGJlIHVzZWQg
dG8gb3ZlcmNvbWUgdGhpcy4KKworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgam9iLT5z
dGFydFNjcmlwdEZldGNoKCk7Cit9CisKK3ZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjpwb3N0TWVz
c2FnZVRvU2VydmljZVdvcmtlckNsaWVudChEb2N1bWVudElkZW50aWZpZXIgZGVzdGluYXRpb25D
b250ZXh0SWRlbnRpZmllciwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBtZXNzYWdlLCBT
ZXJ2aWNlV29ya2VyRGF0YSYmIHNvdXJjZURhdGEsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2lu
KQoreworICAgIC8vIEZJWE1FOiBkZXN0aW5hdGlvbkNvbnRleHRJZGVudGlmaWVyIGNhbiBvbmx5
IGlkZW50aWZ5IGEgRG9jdW1lbnQgYXQgdGhlIG1vbWVudC4KKyAgICBhdXRvKiBkZXN0aW5hdGlv
bkRvY3VtZW50ID0gRG9jdW1lbnQ6OmFsbERvY3VtZW50c01hcCgpLmdldChkZXN0aW5hdGlvbkNv
bnRleHRJZGVudGlmaWVyKTsKKyAgICBpZiAoIWRlc3RpbmF0aW9uRG9jdW1lbnQpCisgICAgICAg
IHJldHVybjsKKworICAgIGF1dG8qIGNvbnRhaW5lciA9IGRlc3RpbmF0aW9uRG9jdW1lbnQtPnNl
cnZpY2VXb3JrZXJDb250YWluZXIoKTsKKyAgICBpZiAoIWNvbnRhaW5lcikKKyAgICAgICAgcmV0
dXJuOworCisgICAgTWVzc2FnZUV2ZW50U291cmNlIHNvdXJjZSA9IFJlZlB0cjxTZXJ2aWNlV29y
a2VyPiB7IFNlcnZpY2VXb3JrZXI6OmdldE9yQ3JlYXRlKCpkZXN0aW5hdGlvbkRvY3VtZW50LCBX
VEZNb3ZlKHNvdXJjZURhdGEpKSB9OworCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwYXNzIGlu
IHBvcnRzLgorICAgIGF1dG8gbWVzc2FnZUV2ZW50ID0gTWVzc2FnZUV2ZW50OjpjcmVhdGUoeyB9
LCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VPcmlnaW4sIHsgfSwgV1RGTW92ZShzb3VyY2UpKTsK
KyAgICBjb250YWluZXItPmRpc3BhdGNoRXZlbnQobWVzc2FnZUV2ZW50KTsKK30KKwordm9pZCBT
V0NsaWVudENvbm5lY3Rpb246OnVwZGF0ZVJlZ2lzdHJhdGlvblN0YXRlKFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25TdGF0ZSBzdGF0ZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4mIHNl
cnZpY2VXb3JrZXJEYXRhKQoreworICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmZv
ckVhY2hTZXJ2aWNlV29ya2VyVGhyZWFkKFtpZGVudGlmaWVyLCBzdGF0ZSwgJnNlcnZpY2VXb3Jr
ZXJEYXRhXSAoYXV0byYgd29ya2VyVGhyZWFkKSB7CisgICAgICAgIHdvcmtlclRocmVhZC50aHJl
YWQoKS5ydW5Mb29wKCkucG9zdFRhc2soW2lkZW50aWZpZXIsIHN0YXRlLCBzZXJ2aWNlV29ya2Vy
RGF0YSA9IGNyb3NzVGhyZWFkQ29weShzZXJ2aWNlV29ya2VyRGF0YSldKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKGF1dG8qIGNvbnRh
aW5lciA9IGNvbnRleHQuc2VydmljZVdvcmtlckNvbnRhaW5lcigpKQorICAgICAgICAgICAgICAg
IGNvbnRhaW5lci0+c2NoZWR1bGVUYXNrVG9VcGRhdGVSZWdpc3RyYXRpb25TdGF0ZShpZGVudGlm
aWVyLCBzdGF0ZSwgV1RGTW92ZShzZXJ2aWNlV29ya2VyRGF0YSkpOworICAgICAgICB9KTsKKyAg
ICB9KTsKKworICAgIGZvciAoYXV0byogZG9jdW1lbnQgOiBEb2N1bWVudDo6YWxsRG9jdW1lbnRz
KCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGNvbnRhaW5lciA9IGRvY3VtZW50LT5zZXJ2aWNlV29y
a2VyQ29udGFpbmVyKCkpCisgICAgICAgICAgICBjb250YWluZXItPnNjaGVkdWxlVGFza1RvVXBk
YXRlUmVnaXN0cmF0aW9uU3RhdGUoaWRlbnRpZmllciwgc3RhdGUsIHNlcnZpY2VXb3JrZXJEYXRh
KTsKKyAgICB9Cit9CisKK3ZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjp1cGRhdGVXb3JrZXJTdGF0
ZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyU3RhdGUg
c3RhdGUpCit7CisgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuZm9yRWFjaFNlcnZp
Y2VXb3JrZXJUaHJlYWQoW2lkZW50aWZpZXIsIHN0YXRlXSAoYXV0byYgd29ya2VyVGhyZWFkKSB7
CisgICAgICAgIHdvcmtlclRocmVhZC50aHJlYWQoKS5ydW5Mb29wKCkucG9zdFRhc2soW2lkZW50
aWZpZXIsIHN0YXRlXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAg
ICAgICBpZiAoYXV0byogc2VydmljZVdvcmtlciA9IGNvbnRleHQuc2VydmljZVdvcmtlcihpZGVu
dGlmaWVyKSkKKyAgICAgICAgICAgICAgICBzZXJ2aWNlV29ya2VyLT5zY2hlZHVsZVRhc2tUb1Vw
ZGF0ZVN0YXRlKHN0YXRlKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBmb3IgKGF1dG8q
IGRvY3VtZW50IDogRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpKSB7CisgICAgICAgIGlmIChhdXRv
KiBzZXJ2aWNlV29ya2VyID0gZG9jdW1lbnQtPnNlcnZpY2VXb3JrZXIoaWRlbnRpZmllcikpCisg
ICAgICAgICAgICBzZXJ2aWNlV29ya2VyLT5zY2hlZHVsZVRhc2tUb1VwZGF0ZVN0YXRlKHN0YXRl
KTsKKyAgICB9Cit9CisKK3ZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjpmaXJlVXBkYXRlRm91bmRF
dmVudChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQorewor
ICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmZvckVhY2hTZXJ2aWNlV29ya2VyVGhy
ZWFkKFtpZGVudGlmaWVyXSAoYXV0byYgd29ya2VyVGhyZWFkKSB7CisgICAgICAgIHdvcmtlclRo
cmVhZC50aHJlYWQoKS5ydW5Mb29wKCkucG9zdFRhc2soW2lkZW50aWZpZXJdKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBjb250YWluZXIg
PSBjb250ZXh0LnNlcnZpY2VXb3JrZXJDb250YWluZXIoKSkKKyAgICAgICAgICAgICAgICBjb250
YWluZXItPnNjaGVkdWxlVGFza1RvRmlyZVVwZGF0ZUZvdW5kRXZlbnQoaWRlbnRpZmllcik7Cisg
ICAgICAgIH0pOworICAgIH0pOworCisgICAgZm9yIChhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50
OjphbGxEb2N1bWVudHMoKSkgeworICAgICAgICBpZiAoYXV0byogY29udGFpbmVyID0gZG9jdW1l
bnQtPnNlcnZpY2VXb3JrZXJDb250YWluZXIoKSkKKyAgICAgICAgICAgIGNvbnRhaW5lci0+c2No
ZWR1bGVUYXNrVG9GaXJlVXBkYXRlRm91bmRFdmVudChpZGVudGlmaWVyKTsKKyAgICB9Cit9CisK
K3ZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjpub3RpZnlDbGllbnRzT2ZDb250cm9sbGVyQ2hhbmdl
KGNvbnN0IEhhc2hTZXQ8RG9jdW1lbnRJZGVudGlmaWVyPiYgY29udGV4dElkZW50aWZpZXJzLCBT
ZXJ2aWNlV29ya2VyRGF0YSYmIG5ld0NvbnRyb2xsZXIpCit7CisgICAgQVNTRVJUKCFjb250ZXh0
SWRlbnRpZmllcnMuaXNFbXB0eSgpKTsKKworICAgIGZvciAoYXV0byYgY2xpZW50SWRlbnRpZmll
ciA6IGNvbnRleHRJZGVudGlmaWVycykgeworICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCB3b3Jr
ZXIgY29udGV4dHMuCisgICAgICAgIGF1dG8qIGNsaWVudCA9IERvY3VtZW50OjphbGxEb2N1bWVu
dHNNYXAoKS5nZXQoY2xpZW50SWRlbnRpZmllcik7CisgICAgICAgIGlmICghY2xpZW50KQorICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgQVNTRVJUKGNsaWVudC0+YWN0aXZlU2Vydmlj
ZVdvcmtlcigpKTsKKyAgICAgICAgQVNTRVJUKGNsaWVudC0+YWN0aXZlU2VydmljZVdvcmtlcigp
LT5pZGVudGlmaWVyKCkgIT0gbmV3Q29udHJvbGxlci5pZGVudGlmaWVyKTsKKyAgICAgICAgY2xp
ZW50LT5zZXRBY3RpdmVTZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXI6OmdldE9yQ3JlYXRlKCpj
bGllbnQsIFNlcnZpY2VXb3JrZXJEYXRhIHsgbmV3Q29udHJvbGxlciB9KSk7CisgICAgICAgIGlm
IChhdXRvKiBjb250YWluZXIgPSBjbGllbnQtPnNlcnZpY2VXb3JrZXJDb250YWluZXIoKSkKKyAg
ICAgICAgICAgIGNvbnRhaW5lci0+c2NoZWR1bGVUYXNrVG9GaXJlQ29udHJvbGxlckNoYW5nZUV2
ZW50KCk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjJhMTcyMWVjOWQyOTlmOTJk
NjI1YTdhMTc3ZmI2MDczOGUxYWI4NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uaApAQCAtMCwwICsxLDEwNSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQor
CisjaW5jbHVkZSAiRG9jdW1lbnRJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtl
ckpvYi5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUeXBlcy5oIgorI2luY2x1ZGUgPHd0Zi9D
b21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8
d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgUmVzb3VyY2VFcnJvcjsKK2NsYXNzIFNlY3VyaXR5T3JpZ2luOworY2xhc3MgU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOworY2xhc3MgU2VydmljZVdvcmtlckNvbnRhaW5lcjsKK2NsYXNzIFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb247CitjbGFzcyBTaGFyZWRCdWZmZXI7CitlbnVtIGNsYXNzIFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25TdGF0ZTsKK2VudW0gY2xhc3MgU2VydmljZVdvcmtlclN0
YXRlOworZW51bSBjbGFzcyBTaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQ7CitzdHJ1Y3QgRXhjZXB0
aW9uRGF0YTsKK3N0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTsKK3N0cnVjdCBTZXJ2aWNl
V29ya2VyRGF0YTsKK3N0cnVjdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQ7CitzdHJ1Y3QgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE7CisKK2NsYXNzIFNXQ2xpZW50Q29ubmVjdGlvbiA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTV0NsaWVudENvbm5lY3Rpb24+IHsKK3B1Ymxp
YzoKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5TV0NsaWVudENvbm5lY3Rpb24oKTsKKwor
ICAgIHVzaW5nIFJlZ2lzdHJhdGlvbkNhbGxiYWNrID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+JiYpPjsKKyAg
ICB2aXJ0dWFsIHZvaWQgbWF0Y2hSZWdpc3RyYXRpb24oY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRv
cE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwsIFJlZ2lzdHJhdGlvbkNhbGxiYWNrJiYpID0g
MDsKKworICAgIHVzaW5nIEdldFJlZ2lzdHJhdGlvbnNDYWxsYmFjayA9IFdURjo6Q29tcGxldGlv
bkhhbmRsZXI8dm9pZChWZWN0b3I8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+JiYpPjsK
KyAgICB2aXJ0dWFsIHZvaWQgZ2V0UmVnaXN0cmF0aW9ucyhjb25zdCBTZWN1cml0eU9yaWdpbiYg
dG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCwgR2V0UmVnaXN0cmF0aW9uc0NhbGxiYWNr
JiYpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBhZGRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SW5TZXJ2ZXIoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVyKFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKSA9IDA7CisKKyAgICB2b2lkIHNjaGVkdWxl
Sm9iKFNlcnZpY2VXb3JrZXJKb2ImKTsKKyAgICB2b2lkIGZpbmlzaGVkRmV0Y2hpbmdTY3JpcHQo
U2VydmljZVdvcmtlckpvYiYsIGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgZmFpbGVkRmV0Y2hp
bmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKworICAg
IHZpcnR1YWwgdm9pZCBkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShjb25zdCBTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5JikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNz
YWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoU2VydmljZVdvcmtlcklkZW50aWZpZXIgZGVz
dGluYXRpb25JZGVudGlmaWVyLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBEb2N1bWVu
dElkZW50aWZpZXIgc291cmNlQ29udGV4dElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGllbnRE
YXRhJiYgc291cmNlKSA9IDA7CisgICAgdmlydHVhbCBTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBtYXlIYXZlU2VydmljZVdvcmtlclJlZ2lzdGVyZWRGb3JPcmlnaW4oY29uc3QgU2VjdXJp
dHlPcmlnaW4mKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2VydmljZVdvcmtlclN0
YXJ0ZWRDb250cm9sbGluZ0NsaWVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIERvY3VtZW50SWRlbnRpZmllcikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBzZXJ2aWNlV29ya2VyU3RvcHBlZENvbnRyb2xsaW5nQ2xpZW50KFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwg
RG9jdW1lbnRJZGVudGlmaWVyKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIERvY3VtZW50
SWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudERhdGEmKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KERvY3VtZW50SWRlbnRpZmll
cikgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgV0VCQ09SRV9FWFBPUlQgU1dDbGllbnRDb25uZWN0
aW9uKCk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGpvYlJlamVjdGVkSW5TZXJ2ZXIoY29u
c3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgY29uc3QgRXhjZXB0aW9uRGF0YSYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJblNlcnZl
cihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGF0YSYmLCBTaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgdW5yZWdpc3RyYXRpb25Kb2JSZXNvbHZlZEluU2VydmVyKGNvbnN0IFNlcnZp
Y2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRTY3JpcHRGZXRjaEZvclNlcnZlcihjb25zdCBT
ZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KERvY3VtZW50SWRlbnRpZmllciBkZXN0
aW5hdGlvbkNvbnRleHRJZGVudGlmaWVyLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1l
c3NhZ2UsIFNlcnZpY2VXb3JrZXJEYXRhJiYgc291cmNlLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9y
aWdpbik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVSZWdpc3RyYXRpb25TdGF0ZShT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvblN0YXRlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJEYXRhPiYpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlV29ya2VyU3RhdGUoU2VydmljZVdvcmtlcklkZW50
aWZpZXIsIFNlcnZpY2VXb3JrZXJTdGF0ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaXJl
VXBkYXRlRm91bmRFdmVudChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBub3RpZnlDbGllbnRzT2ZDb250cm9sbGVyQ2hhbmdlKGNv
bnN0IEhhc2hTZXQ8RG9jdW1lbnRJZGVudGlmaWVyPiYgY29udGV4dElkZW50aWZpZXJzLCBTZXJ2
aWNlV29ya2VyRGF0YSYmIG5ld0NvbnRyb2xsZXIpOworCitwcml2YXRlOgorICAgIHZpcnR1YWwg
dm9pZCBzY2hlZHVsZUpvYkluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKGNvbnN0IFNl
cnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYpID0gMDsKKworICAgIEhhc2hNYXA8U2VydmljZVdvcmtl
ckpvYklkZW50aWZpZXIsIFJlZlB0cjxTZXJ2aWNlV29ya2VySm9iPj4gbV9zY2hlZHVsZWRKb2Jz
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCmluZGV4IDNmMjljNmIwMDNlOTRiZjk1MDBiMjgw
Y2M4MGUyNTEyNzBhOWE3YjkuLjhiZWIwODZmM2Q5NWE4NzcyYjY2YjM4ZDkwMzVmODlkYmI2ZmY3
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKIAorI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1l
cy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIklETFR5cGVzLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXQ2xpZW50Q29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXQ2xp
ZW50Q29ubmVjdGlvbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwMmFlZmVj
NDIyZDIxN2Y4MWFmNGE4NTcyNGE5MzdlYzVkZTc5M2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV0NsaWVudENvbm5lY3Rpb24uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjA2ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU1dDbGllbnRD
b25uZWN0aW9uLmgiCi0KLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0KLSNpbmNsdWRlICJE
b2N1bWVudC5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbkRhdGEuaCIKLSNpbmNsdWRlICJNZXNzYWdl
RXZlbnQuaCIKLSNpbmNsdWRlICJNaWNyb3Rhc2tzLmgiCi0jaW5jbHVkZSAiU1dDb250ZXh0TWFu
YWdlci5oIgotI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDb250YWluZXIuaCIKLSNpbmNsdWRlICJT
ZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQuaCIKLSNpbmNsdWRlICJTZXJ2aWNlV29ya2VySm9iRGF0
YS5oIgotI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaCIKLSNpbmNsdWRlIDx3
dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1TV0NsaWVu
dENvbm5lY3Rpb246OlNXQ2xpZW50Q29ubmVjdGlvbigpID0gZGVmYXVsdDsKLQotU1dDbGllbnRD
b25uZWN0aW9uOjp+U1dDbGllbnRDb25uZWN0aW9uKCkgPSBkZWZhdWx0OwotCi12b2lkIFNXQ2xp
ZW50Q29ubmVjdGlvbjo6c2NoZWR1bGVKb2IoU2VydmljZVdvcmtlckpvYiYgam9iKQotewotICAg
IGF1dG8gYWRkUmVzdWx0ID0gbV9zY2hlZHVsZWRKb2JzLmFkZChqb2IuaWRlbnRpZmllcigpLCAm
am9iKTsKLSAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkp
OwotCi0gICAgc2NoZWR1bGVKb2JJblNlcnZlcihqb2IuZGF0YSgpKTsKLX0KLQotdm9pZCBTV0Ns
aWVudENvbm5lY3Rpb246OmZpbmlzaGVkRmV0Y2hpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYg
am9iLCBjb25zdCBTdHJpbmcmIHNjcmlwdCkKLXsKLSAgICBBU1NFUlQobV9zY2hlZHVsZWRKb2Jz
LmdldChqb2IuaWRlbnRpZmllcigpKSA9PSAmam9iKTsKLQotICAgIGZpbmlzaEZldGNoaW5nU2Ny
aXB0SW5TZXJ2ZXIoeyBqb2IuZGF0YSgpLmlkZW50aWZpZXIoKSwgam9iLmRhdGEoKS5yZWdpc3Ry
YXRpb25LZXkoKSwgc2NyaXB0LCB7IH0gfSk7Ci19Ci0KLXZvaWQgU1dDbGllbnRDb25uZWN0aW9u
OjpmYWlsZWRGZXRjaGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiBqb2IsIGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKQotewotICAgIEFTU0VSVChtX3NjaGVkdWxlZEpvYnMuZ2V0KGpvYi5p
ZGVudGlmaWVyKCkpID09ICZqb2IpOwotCi0gICAgZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZl
cih7IGpvYi5kYXRhKCkuaWRlbnRpZmllcigpLCBqb2IuZGF0YSgpLnJlZ2lzdHJhdGlvbktleSgp
LCB7IH0sIGVycm9yIH0pOwotfQotCi12b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6am9iUmVqZWN0
ZWRJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJ
ZGVudGlmaWVyLCBjb25zdCBFeGNlcHRpb25EYXRhJiBleGNlcHRpb25EYXRhKQotewotICAgIGF1
dG8gam9iID0gbV9zY2hlZHVsZWRKb2JzLnRha2Uoam9iRGF0YUlkZW50aWZpZXIuam9iSWRlbnRp
Zmllcik7Ci0gICAgaWYgKCFqb2IpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJKb2IgJXMgcmVqZWN0
ZWQgZnJvbSBzZXJ2ZXIsIGJ1dCB3YXMgbm90IGZvdW5kIiwgam9iRGF0YUlkZW50aWZpZXIubG9n
Z2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgam9iLT5mYWlsZWRXaXRoRXhjZXB0aW9uKGV4Y2VwdGlvbkRhdGEudG9FeGNlcHRpb24oKSk7
Ci19Ci0KLXZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjpyZWdpc3RyYXRpb25Kb2JSZXNvbHZlZElu
U2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYgam9iRGF0YUlkZW50
aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYgcmVnaXN0cmF0aW9uRGF0YSwg
U2hvdWxkTm90aWZ5V2hlblJlc29sdmVkIHNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCkKLXsKLSAg
ICBhdXRvIGpvYiA9IG1fc2NoZWR1bGVkSm9icy50YWtlKGpvYkRhdGFJZGVudGlmaWVyLmpvYklk
ZW50aWZpZXIpOwotICAgIGlmICgham9iKSB7Ci0gICAgICAgIExPR19FUlJPUigiSm9iICVzIHJl
c29sdmVkIGluIHNlcnZlciwgYnV0IHdhcyBub3QgZm91bmQiLCBqb2JEYXRhSWRlbnRpZmllci5s
b2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBhdXRvIGtleSA9IHJlZ2lzdHJhdGlvbkRhdGEua2V5OwotICAgIGpvYi0+cmVzb2x2ZWRX
aXRoUmVnaXN0cmF0aW9uKFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSksIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGtleSwgc2hvdWxkTm90aWZ5V2hlblJlc29sdmVkXSB7
Ci0gICAgICAgIGlmIChzaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQgPT0gU2hvdWxkTm90aWZ5V2hl
blJlc29sdmVkOjpZZXMpCi0gICAgICAgICAgICBkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlz
ZShrZXkpOwotICAgIH0pOwotfQotCi12b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6dW5yZWdpc3Ry
YXRpb25Kb2JSZXNvbHZlZEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRp
ZmllciYgam9iRGF0YUlkZW50aWZpZXIsIGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpCi17Ci0g
ICAgYXV0byBqb2IgPSBtX3NjaGVkdWxlZEpvYnMudGFrZShqb2JEYXRhSWRlbnRpZmllci5qb2JJ
ZGVudGlmaWVyKTsKLSAgICBpZiAoIWpvYikgewotICAgICAgICBMT0dfRVJST1IoIkpvYiAlcyBy
ZXNvbHZlZCBpbiBzZXJ2ZXIsIGJ1dCB3YXMgbm90IGZvdW5kIiwgam9iRGF0YUlkZW50aWZpZXIu
bG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgam9iLT5yZXNvbHZlZFdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdCh1bnJlZ2lzdHJhdGlv
blJlc3VsdCk7Ci19Ci0KLXZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjpzdGFydFNjcmlwdEZldGNo
Rm9yU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYgam9iRGF0YUlk
ZW50aWZpZXIpCi17Ci0gICAgYXV0byBqb2IgPSBtX3NjaGVkdWxlZEpvYnMuZ2V0KGpvYkRhdGFJ
ZGVudGlmaWVyLmpvYklkZW50aWZpZXIpOwotICAgIGlmICgham9iKSB7Ci0gICAgICAgIExPR19F
UlJPUigiSm9iICVzIGluc3RydWN0ZWQgdG8gc3RhcnQgZmV0Y2ggZnJvbSBzZXJ2ZXIsIGJ1dCBq
b2Igd2FzIG5vdCBmb3VuZCIsIGpvYkRhdGFJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKLQotICAgICAgICAvLyBGSVhNRTogU2hvdWxkIG1lc3NhZ2UgYmFjayB0byB0
aGUgc2VydmVyIGhlcmUgdG8gc2lnbmFsIGZhaWx1cmUgdG8gZmV0Y2gsCi0gICAgICAgIC8vIGJ1
dCB3ZSBjdXJyZW50bHkgbmVlZCB0aGUgcmVnaXN0cmF0aW9uIGtleSB0byBkbyBzbywgYW5kIGRv
bid0IGhhdmUgaXQgaGVyZS4KLSAgICAgICAgLy8gSW4gdGhlIGZ1dHVyZSB3ZSdsbCByZWZhY3Rv
ciB0byBoYXZlIGEgZ2xvYmFsLCBjcm9zcy1wcm9jZXNzIGpvYiBpZGVudGlmaWVyIHRoYXQgY2Fu
IGJlIHVzZWQgdG8gb3ZlcmNvbWUgdGhpcy4KLQotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgam9iLT5zdGFydFNjcmlwdEZldGNoKCk7Ci19Ci0KLXZvaWQgU1dDbGllbnRDb25uZWN0aW9u
Ojpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChEb2N1bWVudElkZW50aWZpZXIgZGVz
dGluYXRpb25Db250ZXh0SWRlbnRpZmllciwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBt
ZXNzYWdlLCBTZXJ2aWNlV29ya2VyRGF0YSYmIHNvdXJjZURhdGEsIGNvbnN0IFN0cmluZyYgc291
cmNlT3JpZ2luKQotewotICAgIC8vIEZJWE1FOiBkZXN0aW5hdGlvbkNvbnRleHRJZGVudGlmaWVy
IGNhbiBvbmx5IGlkZW50aWZ5IGEgRG9jdW1lbnQgYXQgdGhlIG1vbWVudC4KLSAgICBhdXRvKiBk
ZXN0aW5hdGlvbkRvY3VtZW50ID0gRG9jdW1lbnQ6OmFsbERvY3VtZW50c01hcCgpLmdldChkZXN0
aW5hdGlvbkNvbnRleHRJZGVudGlmaWVyKTsKLSAgICBpZiAoIWRlc3RpbmF0aW9uRG9jdW1lbnQp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8qIGNvbnRhaW5lciA9IGRlc3RpbmF0aW9uRG9j
dW1lbnQtPnNlcnZpY2VXb3JrZXJDb250YWluZXIoKTsKLSAgICBpZiAoIWNvbnRhaW5lcikKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgTWVzc2FnZUV2ZW50U291cmNlIHNvdXJjZSA9IFJlZlB0cjxT
ZXJ2aWNlV29ya2VyPiB7IFNlcnZpY2VXb3JrZXI6OmdldE9yQ3JlYXRlKCpkZXN0aW5hdGlvbkRv
Y3VtZW50LCBXVEZNb3ZlKHNvdXJjZURhdGEpKSB9OwotCi0gICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCBwYXNzIGluIHBvcnRzLgotICAgIGF1dG8gbWVzc2FnZUV2ZW50ID0gTWVzc2FnZUV2ZW50Ojpj
cmVhdGUoeyB9LCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VPcmlnaW4sIHsgfSwgV1RGTW92ZShz
b3VyY2UpKTsKLSAgICBjb250YWluZXItPmRpc3BhdGNoRXZlbnQobWVzc2FnZUV2ZW50KTsKLX0K
LQotdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnVwZGF0ZVJlZ2lzdHJhdGlvblN0YXRlKFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25TdGF0ZSBzdGF0ZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2Vy
RGF0YT4mIHNlcnZpY2VXb3JrZXJEYXRhKQotewotICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmds
ZXRvbigpLmZvckVhY2hTZXJ2aWNlV29ya2VyVGhyZWFkKFtpZGVudGlmaWVyLCBzdGF0ZSwgJnNl
cnZpY2VXb3JrZXJEYXRhXSAoYXV0byYgd29ya2VyVGhyZWFkKSB7Ci0gICAgICAgIHdvcmtlclRo
cmVhZC50aHJlYWQoKS5ydW5Mb29wKCkucG9zdFRhc2soW2lkZW50aWZpZXIsIHN0YXRlLCBzZXJ2
aWNlV29ya2VyRGF0YSA9IGNyb3NzVGhyZWFkQ29weShzZXJ2aWNlV29ya2VyRGF0YSldKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewotICAgICAgICAgICAgaWYgKGF1
dG8qIGNvbnRhaW5lciA9IGNvbnRleHQuc2VydmljZVdvcmtlckNvbnRhaW5lcigpKQotICAgICAg
ICAgICAgICAgIGNvbnRhaW5lci0+c2NoZWR1bGVUYXNrVG9VcGRhdGVSZWdpc3RyYXRpb25TdGF0
ZShpZGVudGlmaWVyLCBzdGF0ZSwgV1RGTW92ZShzZXJ2aWNlV29ya2VyRGF0YSkpOwotICAgICAg
ICB9KTsKLSAgICB9KTsKLQotICAgIGZvciAoYXV0byogZG9jdW1lbnQgOiBEb2N1bWVudDo6YWxs
RG9jdW1lbnRzKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIGNvbnRhaW5lciA9IGRvY3VtZW50LT5z
ZXJ2aWNlV29ya2VyQ29udGFpbmVyKCkpCi0gICAgICAgICAgICBjb250YWluZXItPnNjaGVkdWxl
VGFza1RvVXBkYXRlUmVnaXN0cmF0aW9uU3RhdGUoaWRlbnRpZmllciwgc3RhdGUsIHNlcnZpY2VX
b3JrZXJEYXRhKTsKLSAgICB9Ci19Ci0KLXZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjp1cGRhdGVX
b3JrZXJTdGF0ZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBTZXJ2aWNlV29y
a2VyU3RhdGUgc3RhdGUpCi17Ci0gICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuZm9y
RWFjaFNlcnZpY2VXb3JrZXJUaHJlYWQoW2lkZW50aWZpZXIsIHN0YXRlXSAoYXV0byYgd29ya2Vy
VGhyZWFkKSB7Ci0gICAgICAgIHdvcmtlclRocmVhZC50aHJlYWQoKS5ydW5Mb29wKCkucG9zdFRh
c2soW2lkZW50aWZpZXIsIHN0YXRlXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7
Ci0gICAgICAgICAgICBpZiAoYXV0byogc2VydmljZVdvcmtlciA9IGNvbnRleHQuc2VydmljZVdv
cmtlcihpZGVudGlmaWVyKSkKLSAgICAgICAgICAgICAgICBzZXJ2aWNlV29ya2VyLT5zY2hlZHVs
ZVRhc2tUb1VwZGF0ZVN0YXRlKHN0YXRlKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci0KLSAgICBm
b3IgKGF1dG8qIGRvY3VtZW50IDogRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpKSB7Ci0gICAgICAg
IGlmIChhdXRvKiBzZXJ2aWNlV29ya2VyID0gZG9jdW1lbnQtPnNlcnZpY2VXb3JrZXIoaWRlbnRp
ZmllcikpCi0gICAgICAgICAgICBzZXJ2aWNlV29ya2VyLT5zY2hlZHVsZVRhc2tUb1VwZGF0ZVN0
YXRlKHN0YXRlKTsKLSAgICB9Ci19Ci0KLXZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjpmaXJlVXBk
YXRlRm91bmRFdmVudChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlm
aWVyKQotewotICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmZvckVhY2hTZXJ2aWNl
V29ya2VyVGhyZWFkKFtpZGVudGlmaWVyXSAoYXV0byYgd29ya2VyVGhyZWFkKSB7Ci0gICAgICAg
IHdvcmtlclRocmVhZC50aHJlYWQoKS5ydW5Mb29wKCkucG9zdFRhc2soW2lkZW50aWZpZXJdKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiBj
b250YWluZXIgPSBjb250ZXh0LnNlcnZpY2VXb3JrZXJDb250YWluZXIoKSkKLSAgICAgICAgICAg
ICAgICBjb250YWluZXItPnNjaGVkdWxlVGFza1RvRmlyZVVwZGF0ZUZvdW5kRXZlbnQoaWRlbnRp
Zmllcik7Ci0gICAgICAgIH0pOwotICAgIH0pOwotCi0gICAgZm9yIChhdXRvKiBkb2N1bWVudCA6
IERvY3VtZW50OjphbGxEb2N1bWVudHMoKSkgewotICAgICAgICBpZiAoYXV0byogY29udGFpbmVy
ID0gZG9jdW1lbnQtPnNlcnZpY2VXb3JrZXJDb250YWluZXIoKSkKLSAgICAgICAgICAgIGNvbnRh
aW5lci0+c2NoZWR1bGVUYXNrVG9GaXJlVXBkYXRlRm91bmRFdmVudChpZGVudGlmaWVyKTsKLSAg
ICB9Ci19Ci0KLXZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjpub3RpZnlDbGllbnRzT2ZDb250cm9s
bGVyQ2hhbmdlKGNvbnN0IEhhc2hTZXQ8RG9jdW1lbnRJZGVudGlmaWVyPiYgY29udGV4dElkZW50
aWZpZXJzLCBTZXJ2aWNlV29ya2VyRGF0YSYmIG5ld0NvbnRyb2xsZXIpCi17Ci0gICAgQVNTRVJU
KCFjb250ZXh0SWRlbnRpZmllcnMuaXNFbXB0eSgpKTsKLQotICAgIGZvciAoYXV0byYgY2xpZW50
SWRlbnRpZmllciA6IGNvbnRleHRJZGVudGlmaWVycykgewotICAgICAgICAvLyBGSVhNRTogU3Vw
cG9ydCB3b3JrZXIgY29udGV4dHMuCi0gICAgICAgIGF1dG8qIGNsaWVudCA9IERvY3VtZW50Ojph
bGxEb2N1bWVudHNNYXAoKS5nZXQoY2xpZW50SWRlbnRpZmllcik7Ci0gICAgICAgIGlmICghY2xp
ZW50KQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgQVNTRVJUKGNsaWVudC0+YWN0
aXZlU2VydmljZVdvcmtlcigpKTsKLSAgICAgICAgQVNTRVJUKGNsaWVudC0+YWN0aXZlU2Vydmlj
ZVdvcmtlcigpLT5pZGVudGlmaWVyKCkgIT0gbmV3Q29udHJvbGxlci5pZGVudGlmaWVyKTsKLSAg
ICAgICAgY2xpZW50LT5zZXRBY3RpdmVTZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXI6OmdldE9y
Q3JlYXRlKCpjbGllbnQsIFNlcnZpY2VXb3JrZXJEYXRhIHsgbmV3Q29udHJvbGxlciB9KSk7Ci0g
ICAgICAgIGlmIChhdXRvKiBjb250YWluZXIgPSBjbGllbnQtPnNlcnZpY2VXb3JrZXJDb250YWlu
ZXIoKSkKLSAgICAgICAgICAgIGNvbnRhaW5lci0+c2NoZWR1bGVUYXNrVG9GaXJlQ29udHJvbGxl
ckNoYW5nZUV2ZW50KCk7Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV0NsaWVudENvbm5lY3Rpb24uaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzEwNjdiNDY5MTY2YjFiNWFjMTZmNWI4NTM2YTExMGIx
NjRjYjljNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXQ2xpZW50Q29ubmVjdGlvbi5o
CisrKyAvZGV2L251bGwKQEAgLTEsMTA0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLQotI2luY2x1ZGUgIkRvY3VtZW50SWRl
bnRpZmllci5oIgotI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJKb2IuaCIKLSNpbmNsdWRlICJTZXJ2
aWNlV29ya2VyVHlwZXMuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0
Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IFJlc291cmNlRXJyb3I7Ci1jbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTsKLWNsYXNzIFNlcnZpY2VXb3JrZXJDb250YWluZXI7Ci1jbGFzcyBTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uOwotY2xhc3MgU2hhcmVkQnVmZmVyOwotZW51bSBjbGFzcyBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uU3RhdGU7Ci1lbnVtIGNsYXNzIFNlcnZpY2VXb3JrZXJTdGF0
ZTsKLWVudW0gY2xhc3MgU2hvdWxkTm90aWZ5V2hlblJlc29sdmVkOwotc3RydWN0IEV4Y2VwdGlv
bkRhdGE7Ci1zdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudERhdGE7Ci1zdHJ1Y3QgU2VydmljZVdv
cmtlckRhdGE7Ci1zdHJ1Y3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0Owotc3RydWN0IFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhOwotCi1jbGFzcyBTV0NsaWVudENvbm5lY3Rpb24gOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U1dDbGllbnRDb25uZWN0aW9uPiB7Ci1wdWJsaWM6
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+U1dDbGllbnRDb25uZWN0aW9uKCk7Ci0KLSAg
ICB1c2luZyBSZWdpc3RyYXRpb25DYWxsYmFjayA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9p
ZChzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhPiYmKT47Ci0gICAg
dmlydHVhbCB2b2lkIG1hdGNoUmVnaXN0cmF0aW9uKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BP
cmlnaW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMLCBSZWdpc3RyYXRpb25DYWxsYmFjayYmKSA9IDA7
Ci0KLSAgICB1c2luZyBHZXRSZWdpc3RyYXRpb25zQ2FsbGJhY2sgPSBXVEY6OkNvbXBsZXRpb25I
YW5kbGVyPHZvaWQoVmVjdG9yPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhPiYmKT47Ci0g
ICAgdmlydHVhbCB2b2lkIGdldFJlZ2lzdHJhdGlvbnMoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRv
cE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwsIEdldFJlZ2lzdHJhdGlvbnNDYWxsYmFjayYm
KSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgYWRkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklu
U2VydmVyKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIHJlbW92ZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcihTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcikgPSAwOwotCi0gICAgdm9pZCBzY2hlZHVsZUpv
YihTZXJ2aWNlV29ya2VySm9iJik7Ci0gICAgdm9pZCBmaW5pc2hlZEZldGNoaW5nU2NyaXB0KFNl
cnZpY2VXb3JrZXJKb2ImLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGZhaWxlZEZldGNoaW5n
U2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImLCBjb25zdCBSZXNvdXJjZUVycm9yJik7Ci0KLSAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoY29uc3QgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleSYpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2Fn
ZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3Rp
bmF0aW9uSWRlbnRpZmllciwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgRG9jdW1lbnRJ
ZGVudGlmaWVyIHNvdXJjZUNvbnRleHRJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0
YSYmIHNvdXJjZSkgPSAwOwotICAgIHZpcnR1YWwgU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJv
b2wgbWF5SGF2ZVNlcnZpY2VXb3JrZXJSZWdpc3RlcmVkRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5
T3JpZ2luJikgY29uc3QgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIHNlcnZpY2VXb3JrZXJTdGFy
dGVkQ29udHJvbGxpbmdDbGllbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBEb2N1bWVudElkZW50aWZpZXIpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgc2VydmljZVdvcmtlclN0b3BwZWRDb250cm9sbGluZ0NsaWVudChTZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIERv
Y3VtZW50SWRlbnRpZmllcikgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyU2Vydmlj
ZVdvcmtlckNsaWVudChjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBEb2N1bWVudElk
ZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhJikgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCB1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChEb2N1bWVudElkZW50aWZpZXIp
ID0gMDsKLQotcHJvdGVjdGVkOgotICAgIFdFQkNPUkVfRVhQT1JUIFNXQ2xpZW50Q29ubmVjdGlv
bigpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBqb2JSZWplY3RlZEluU2VydmVyKGNvbnN0
IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIGNvbnN0IEV4Y2VwdGlvbkRhdGEmKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlZ2lzdHJhdGlvbkpvYlJlc29sdmVkSW5TZXJ2ZXIo
Y29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRhdGEmJiwgU2hvdWxkTm90aWZ5V2hlblJlc29sdmVkKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHVucmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJblNlcnZlcihjb25zdCBTZXJ2aWNl
V29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0KTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2hGb3JTZXJ2ZXIoY29uc3QgU2Vy
dmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBw
b3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChEb2N1bWVudElkZW50aWZpZXIgZGVzdGlu
YXRpb25Db250ZXh0SWRlbnRpZmllciwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBtZXNz
YWdlLCBTZXJ2aWNlV29ya2VyRGF0YSYmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmln
aW4pOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlUmVnaXN0cmF0aW9uU3RhdGUoU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25TdGF0ZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4mKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVdvcmtlclN0YXRlKFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBTZXJ2aWNlV29ya2VyU3RhdGUpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlyZVVw
ZGF0ZUZvdW5kRXZlbnQoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgbm90aWZ5Q2xpZW50c09mQ29udHJvbGxlckNoYW5nZShjb25z
dCBIYXNoU2V0PERvY3VtZW50SWRlbnRpZmllcj4mIGNvbnRleHRJZGVudGlmaWVycywgU2Vydmlj
ZVdvcmtlckRhdGEmJiBuZXdDb250cm9sbGVyKTsKLQotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZv
aWQgc2NoZWR1bGVKb2JJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihjb25zdCBTZXJ2
aWNlV29ya2VyRmV0Y2hSZXN1bHQmKSA9IDA7Ci0KLSAgICBIYXNoTWFwPFNlcnZpY2VXb3JrZXJK
b2JJZGVudGlmaWVyLCBSZWZQdHI8U2VydmljZVdvcmtlckpvYj4+IG1fc2NoZWR1bGVkSm9iczsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNF
X1dPUktFUikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328023</attachid>
            <date>2017-11-30 14:08:50 -0800</date>
            <delta_ts>2017-11-30 14:15:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180217-20171130140850.patch</filename>
            <type>text/plain</type>
            <size>43171</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1MzQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjQ4NzRjY2ZiYjM1YmYy
OWQ5OTEzMmNkMTcyNzA0NWE4YTQxODRhNy4uOWQ3MGZiY2RiYzc2YWQzNjJjMTE1NjU0NDVjN2Vh
OGUyNWViMWNkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE3LTExLTMwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBTV0NsaWVudENvbm5l
Y3Rpb24gY2xhc3Mgb3V0IG9mIHNlcnZlci8gZm9sZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAyMTcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIFNXQ2xpZW50Q29ubmVjdGlvbiBjbGFzcyBv
dXQgb2Ygc2VydmVyLyBmb2xkZXIgc2luY2UgdGhlIGNsaWVudCBjb25uZWN0aW9uCisgICAgICAg
IGxpdmVzIGluIHRoZSBXZWJQcm9jZXNzLCBub3QgdGhlIFN0b3JhZ2UgcHJvY2Vzcy4KKworICAg
ICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmNw
cDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dD
bGllbnRDb25uZWN0aW9uLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OlNXQ2xpZW50Q29ubmVjdGlv
bjo6c2NoZWR1bGVKb2IpOgorICAgICAgICAoV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uOjpm
aW5pc2hlZEZldGNoaW5nU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OlNXQ2xpZW50Q29ubmVj
dGlvbjo6ZmFpbGVkRmV0Y2hpbmdTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6U1dDbGllbnRD
b25uZWN0aW9uOjpqb2JSZWplY3RlZEluU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNXQ2xp
ZW50Q29ubmVjdGlvbjo6cmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJblNlcnZlcik6CisgICAgICAg
IChXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb246OnVucmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJ
blNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb246OnN0YXJ0U2Ny
aXB0RmV0Y2hGb3JTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9u
Ojpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpT
V0NsaWVudENvbm5lY3Rpb246OmZvckVhY2hDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U1dDbGllbnRDb25uZWN0aW9uOjp1cGRhdGVSZWdpc3RyYXRpb25TdGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb246OnVwZGF0ZVdvcmtlclN0YXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNXQ2xpZW50Q29ubmVjdGlvbjo6ZmlyZVVwZGF0ZUZvdW5kRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uOjpub3RpZnlDbGllbnRzT2ZDb250cm9s
bGVyQ2hhbmdlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9u
Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
Q2xpZW50Q29ubmVjdGlvbi5oLgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ29udGFpbmVyLmNwcDoKKwogMjAxNy0xMS0zMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiAvIFNXU2VydmVy
V29ya2VyIGRvIG5vdCBuZWVkIHRvIGJlIFRocmVhZFNhZmVSZWZDb3VudGVkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CmluZGV4IDkxZTA0ZTE5MDkzNmNhYjBmMDYyODUyNmE0ZjllYjViOGY5YzhkZWIuLjhhNzQ4ZDY1
MzM1NzkxZjIwZTdlYzI2NzVkOTk5NTUxNDdhMjgxZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yMTc1
LDYgKzIxNzUsNyBAQCB3b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKIHdvcmtlcnMvc2VydmljZS9F
eHRlbmRhYmxlRXZlbnQuY3BwCiB3b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZU1lc3NhZ2VFdmVu
dC5jcHAKIHdvcmtlcnMvc2VydmljZS9GZXRjaEV2ZW50LmNwcAord29ya2Vycy9zZXJ2aWNlL1NX
Q2xpZW50Q29ubmVjdGlvbi5jcHAKIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyLmNwcAog
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuY3BwCiB3b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudERhdGEuY3BwCkBAIC0yMTk5LDcgKzIyMDAsNiBAQCB3b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAogd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAogd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKIAotd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV0Ns
aWVudENvbm5lY3Rpb24uY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXT3JpZ2luU3RvcmUu
Y3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAogd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDE1NzMwNTNlODAzMTE4MTI2ZWY3NWI0
YWIyYjNjYTk3OThiNmQ3YTguLjdiM2MwOTk3ODQwMTIyOWQxYTFmYWFkMDA4MGU0YjgwNTY4ZTEz
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTExNTEsNiArMTE1MSw3IEBACiAJCTQ2RUIzN0NDMUY5N0NDRDIwMEI2NTUyMyAv
KiBKU1NlcnZpY2VXb3JrZXJDbGllbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NkVCMzdDNTFGOTdDQ0NCMDBCNjU1MjMgLyogSlNTZXJ2aWNlV29y
a2VyQ2xpZW50cy5oICovOyB9OwogCQk0NkVCMzdDRTFGOTdDQ0QyMDBCNjU1MjMgLyogSlNTZXJ2
aWNlV29ya2VyV2luZG93Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NkVCMzdDNzFGOTdDQ0NCMDBCNjU1MjMgLyogSlNTZXJ2aWNlV29ya2Vy
V2luZG93Q2xpZW50LmggKi87IH07CiAJCTQ2RUJFQTAyMUI3RDRENjUwMEJFNDk0MSAvKiBDb2xs
ZWN0aW9uVHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NkVCRUEwMTFCN0Q0RDVEMDBCRTQ5NDEgLyogQ29sbGVjdGlvblRyYXZlcnNhbC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2RUNC
NjM4MUZEMEEzQzgwMDg4RTVBRCAvKiBTV0NsaWVudENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RUNCNjM3MUZEMEEzQkIwMDg4RTVB
RCAvKiBTV0NsaWVudENvbm5lY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk0NkVGMTQyQTFGOTdCN0Q4MDBDMkE1MjQgLyogU2VydmljZVdv
cmtlcldpbmRvd0NsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDZFRjE0MjAxRjk3QjdCQTAwQzJBNTI0IC8qIFNlcnZpY2VXb3JrZXJXaW5kb3dD
bGllbnQuaCAqLzsgfTsKIAkJNDZFRjE0MkMxRjk3QjdEODAwQzJBNTI0IC8qIFNlcnZpY2VXb3Jr
ZXJDbGllbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NkVGMTQyMjFGOTdCN0JBMDBDMkE1MjQgLyogU2VydmljZVdvcmtlckNsaWVudHMuaCAqLzsg
fTsKIAkJNDZFRjE0MkQxRjk3QjdEODAwQzJBNTI0IC8qIFNlcnZpY2VXb3JrZXJDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RUYxNDI0MUY5
N0I3QkEwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50LmggKi87IH07CkBAIC0xMzQwLDcg
KzEzNDEsNiBAQAogCQk1MTc0RTIwQTEwQTFGNDRGMDBGOTVFNkYgLyogUG9wU3RhdGVFdmVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3NEUyMDgx
MEExRjQ0RjAwRjk1RTZGIC8qIFBvcFN0YXRlRXZlbnQuaCAqLzsgfTsKIAkJNTE3NzFERkYxQkRC
NDg1MDAwQ0FFOEU0IC8qIE1lbW9yeU9iamVjdFN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTc3MURGRDFCREI0NzU2MDBDQUU4RTQgLyogTWVt
b3J5T2JqZWN0U3RvcmUuaCAqLzsgfTsKIAkJNTE3QTUyRjAxRjQ3NTM1QjAwRENEQzBBIC8qIFNX
U2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTdBNTJFRTFGNDc1MzU5MDBEQ0RDMEEgLyogU1dTZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MTdBNTMxRDFGNEI1M0IxMDBEQ0RDMEEg
LyogU1dDbGllbnRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTdBNTJGRjFGNDc4Q0NFMDBEQ0RDMEEgLyogU1dDbGllbnRDb25uZWN0
aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NTE3QTUzMjkxRjRCOTBCOTAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0E1MzI2
MUY0QjkwQjIwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE3QTUzNDYxRjUw
QzE3RjAwRENEQzBBIC8qIFNXU2VydmVyV29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdBNTM0MjFGNTBDMTYxMDBEQ0RDMEEgLyogU1dTZXJ2
ZXJXb3JrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1MTdBNTM0RjFGNTRBOEJBMDBEQ0RDMEEgLyogU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
N0E1MzRDMUY1NDlENEEwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03Mjc4
LDYgKzcyNzgsOCBAQAogCQk0NkVCMzdDNjFGOTdDQ0NCMDBCNjU1MjMgLyogSlNTZXJ2aWNlV29y
a2VyV2luZG93Q2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ2RUIzN0M3MUY5N0NDQ0IwMEI2NTUyMyAvKiBKU1NlcnZpY2VXb3JrZXJXaW5kb3dD
bGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTZXJ2aWNlV29ya2Vy
V2luZG93Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RUJFQTAxMUI3
RDRENUQwMEJFNDk0MSAvKiBDb2xsZWN0aW9uVHJhdmVyc2FsLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENvbGxlY3Rpb25UcmF2ZXJzYWwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDZFQ0I2MzYxRkQwQTNCQjAwODhFNUFEIC8qIFNXQ2xpZW50Q29ubmVjdGlv
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTV0NsaWVudENvbm5l
Y3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkVDQjYzNzFGRDBBM0JC
MDA4OEU1QUQgLyogU1dDbGllbnRDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNXQ2xpZW50Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NkVGMTQyMDFGOTdCN0JBMDBDMkE1MjQgLyogU2VydmljZVdvcmtlcldpbmRvd0NsaWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VyV2luZG93
Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RUYxNDIxMUY5N0I3QkEw
MEMyQTUyNCAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ2xpZW50cy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2RUYxNDIyMUY5N0I3QkEwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2Vy
Q2xpZW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2Vy
Q2xpZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzY3OSw4ICs3NjgxLDYg
QEAKIAkJNTE3NzFERkQxQkRCNDc1NjAwQ0FFOEU0IC8qIE1lbW9yeU9iamVjdFN0b3JlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeU9iamVjdFN0b3JlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0E1MkVFMUY0NzUzNTkwMERDREMwQSAvKiBTV1Nl
cnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTV1NlcnZlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdBNTJFRjFGNDc1MzU5MDBEQ0RDMEEgLyogU1dT
ZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1dTZXJ2ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTdBNTJGRTFGNDc4Q0NFMDBEQ0RD
MEEgLyogU1dDbGllbnRDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNXQ2xpZW50Q29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTUxN0E1MkZGMUY0NzhDQ0UwMERDREMwQSAvKiBTV0NsaWVudENvbm5lY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1dDbGllbnRDb25uZWN0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0E1MzI0MUY0QjkwNEEwMERDREMwQSAvKiBT
ZXJ2aWNlV29ya2VySm9iRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTZXJ2aWNlV29ya2VySm9iRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxN0E1MzI2MUY0QjkwQjIwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3QTUzMjcxRjRC
OTBCMjAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzEzNSw4ICsxNzEzNSw2IEBA
CiAJCTUxN0E1MkVDMUY0NzUzMkQwMERDREMwQSAvKiBzZXJ2ZXIgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTUxN0E1MkZFMUY0NzhDQ0UwMERDREMwQSAv
KiBTV0NsaWVudENvbm5lY3Rpb24uY3BwICovLAotCQkJCTUxN0E1MkZGMUY0NzhDQ0UwMERDREMw
QSAvKiBTV0NsaWVudENvbm5lY3Rpb24uaCAqLywKIAkJCQk0MTUxRTVCOTFGQkE0Qzc2MDBFNDdF
MkQgLyogU1dPcmlnaW5TdG9yZS5jcHAgKi8sCiAJCQkJNDE1MUU1QjcxRkJBNEM3NTAwRTQ3RTJE
IC8qIFNXT3JpZ2luU3RvcmUuaCAqLywKIAkJCQk1MTdBNTJFRjFGNDc1MzU5MDBEQ0RDMEEgLyog
U1dTZXJ2ZXIuY3BwICovLApAQCAtMTczMjksNiArMTczMjcsOCBAQAogCQkJCTQ2RUYxNDI1MUY5
N0I3QkEwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50LmNwcCAqLywKIAkJCQk0
NkVGMTQyMDFGOTdCN0JBMDBDMkE1MjQgLyogU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5oICov
LAogCQkJCTQ2RUYxNDI2MUY5N0I3QkEwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2VyV2luZG93Q2xp
ZW50LmlkbCAqLywKKwkJCQk0NkVDQjYzNjFGRDBBM0JCMDA4OEU1QUQgLyogU1dDbGllbnRDb25u
ZWN0aW9uLmNwcCAqLywKKwkJCQk0NkVDQjYzNzFGRDBBM0JCMDA4OEU1QUQgLyogU1dDbGllbnRD
b25uZWN0aW9uLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHNlcnZpY2U7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwpAQCAtMjcxOTgsNyArMjcxOTgsNiBAQAogCQkJCUI1MUEyRjNGMTdEN0Qz
QUUwMDcyNTE3QSAvKiBJbWFnZVF1YWxpdHlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0OTI5MUU0QjEzNDE3MkM4MDBFNzUzREUgLyogSW1hZ2VSZW5kZXJpbmdNb2RlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3QzE5M0JDMTFGNUUwRUVEMDA4OEYzRTYgLyogSW1hZ2VTbW9vdGhpbmdR
dWFsaXR5LmggaW4gSGVhZGVycyAqLywKLQkJCQlCMjc1MzU3MTBCMDUzODE0MDAyQ0U2NEYgLyog
SW1hZ2VTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTRCMzQ4MDk0MEVFRjUwRDQwMEFDMUI0
MSAvKiBJbWFnZVNvdXJjZUNHLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NTUwQ0I0MjFFOTU1RTND
MDAxMTFBQTAgLyogSW1hZ2VUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjZGNzU2QjMxQjNC
NjZGNzAwMDVERDc5IC8qIEltbXV0YWJsZU5GQS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTQxOSw3
ICsyOTQxOCw3IEBACiAJCQkJODQ4NTIyOEIxMTkwMTczQzAwNkVEQzdGIC8qIFNWR1ZLZXJuRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBRjYwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R1pvb21BbmRQYW4uaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRTRFQzk4MEQwMEMyMkIwMDQzMjY0
MyAvKiBTVkdab29tRXZlbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxN0E1MzFEMUY0QjUzQjEw
MERDREMwQSAvKiBTV0NsaWVudENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2RUNC
NjM4MUZEMEEzQzgwMDg4RTVBRCAvKiBTV0NsaWVudENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTQ2NjU4REM5MUZBMjRCODcwMEY3REQ1NCAvKiBTV0NvbnRleHRNYW5hZ2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MTUxRTVCQjFGQkE0QzdBMDBFNDdFMkQgLyogU1dPcmlnaW5TdG9y
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3QTUyRjAxRjQ3NTM1QjAwRENEQzBBIC8qIFNXU2Vy
dmVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTAyYWVmZWM0MjJkMjE3
ZjgxYWY0YTg1NzI0YTkzN2VjNWRlNzkzYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsMjA2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNXQ2xpZW50
Q29ubmVjdGlvbi5oIgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25EYXRhLmgiCisjaW5jbHVkZSAiTWVzc2Fn
ZUV2ZW50LmgiCisjaW5jbHVkZSAiTWljcm90YXNrcy5oIgorI2luY2x1ZGUgIlNXQ29udGV4dE1h
bmFnZXIuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgiCisjaW5jbHVkZSAi
U2VydmljZVdvcmtlckZldGNoUmVzdWx0LmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckpvYkRh
dGEuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmgiCisjaW5jbHVkZSA8
d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU1dDbGll
bnRDb25uZWN0aW9uOjpTV0NsaWVudENvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7CisKK1NXQ2xpZW50
Q29ubmVjdGlvbjo6flNXQ2xpZW50Q29ubmVjdGlvbigpID0gZGVmYXVsdDsKKwordm9pZCBTV0Ns
aWVudENvbm5lY3Rpb246OnNjaGVkdWxlSm9iKFNlcnZpY2VXb3JrZXJKb2ImIGpvYikKK3sKKyAg
ICBhdXRvIGFkZFJlc3VsdCA9IG1fc2NoZWR1bGVkSm9icy5hZGQoam9iLmlkZW50aWZpZXIoKSwg
JmpvYik7CisgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5
KTsKKworICAgIHNjaGVkdWxlSm9iSW5TZXJ2ZXIoam9iLmRhdGEoKSk7Cit9CisKK3ZvaWQgU1dD
bGllbnRDb25uZWN0aW9uOjpmaW5pc2hlZEZldGNoaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2Im
IGpvYiwgY29uc3QgU3RyaW5nJiBzY3JpcHQpCit7CisgICAgQVNTRVJUKG1fc2NoZWR1bGVkSm9i
cy5nZXQoam9iLmlkZW50aWZpZXIoKSkgPT0gJmpvYik7CisKKyAgICBmaW5pc2hGZXRjaGluZ1Nj
cmlwdEluU2VydmVyKHsgam9iLmRhdGEoKS5pZGVudGlmaWVyKCksIGpvYi5kYXRhKCkucmVnaXN0
cmF0aW9uS2V5KCksIHNjcmlwdCwgeyB9IH0pOworfQorCit2b2lkIFNXQ2xpZW50Q29ubmVjdGlv
bjo6ZmFpbGVkRmV0Y2hpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYgam9iLCBjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBBU1NFUlQobV9zY2hlZHVsZWRKb2JzLmdldChqb2Iu
aWRlbnRpZmllcigpKSA9PSAmam9iKTsKKworICAgIGZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2
ZXIoeyBqb2IuZGF0YSgpLmlkZW50aWZpZXIoKSwgam9iLmRhdGEoKS5yZWdpc3RyYXRpb25LZXko
KSwgeyB9LCBlcnJvciB9KTsKK30KKwordm9pZCBTV0NsaWVudENvbm5lY3Rpb246OmpvYlJlamVj
dGVkSW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBqb2JEYXRh
SWRlbnRpZmllciwgY29uc3QgRXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uRGF0YSkKK3sKKyAgICBh
dXRvIGpvYiA9IG1fc2NoZWR1bGVkSm9icy50YWtlKGpvYkRhdGFJZGVudGlmaWVyLmpvYklkZW50
aWZpZXIpOworICAgIGlmICgham9iKSB7CisgICAgICAgIExPR19FUlJPUigiSm9iICVzIHJlamVj
dGVkIGZyb20gc2VydmVyLCBidXQgd2FzIG5vdCBmb3VuZCIsIGpvYkRhdGFJZGVudGlmaWVyLmxv
Z2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGpvYi0+ZmFpbGVkV2l0aEV4Y2VwdGlvbihleGNlcHRpb25EYXRhLnRvRXhjZXB0aW9uKCkp
OworfQorCit2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6cmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJ
blNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVu
dGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmIHJlZ2lzdHJhdGlvbkRhdGEs
IFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCBzaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQpCit7Cisg
ICAgYXV0byBqb2IgPSBtX3NjaGVkdWxlZEpvYnMudGFrZShqb2JEYXRhSWRlbnRpZmllci5qb2JJ
ZGVudGlmaWVyKTsKKyAgICBpZiAoIWpvYikgeworICAgICAgICBMT0dfRVJST1IoIkpvYiAlcyBy
ZXNvbHZlZCBpbiBzZXJ2ZXIsIGJ1dCB3YXMgbm90IGZvdW5kIiwgam9iRGF0YUlkZW50aWZpZXIu
bG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgYXV0byBrZXkgPSByZWdpc3RyYXRpb25EYXRhLmtleTsKKyAgICBqb2ItPnJlc29sdmVk
V2l0aFJlZ2lzdHJhdGlvbihXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGEpLCBbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBrZXksIHNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZF0g
eworICAgICAgICBpZiAoc2hvdWxkTm90aWZ5V2hlblJlc29sdmVkID09IFNob3VsZE5vdGlmeVdo
ZW5SZXNvbHZlZDo6WWVzKQorICAgICAgICAgICAgZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21p
c2Uoa2V5KTsKKyAgICB9KTsKK30KKwordm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnVucmVnaXN0
cmF0aW9uSm9iUmVzb2x2ZWRJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50
aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0KQorewor
ICAgIGF1dG8gam9iID0gbV9zY2hlZHVsZWRKb2JzLnRha2Uoam9iRGF0YUlkZW50aWZpZXIuam9i
SWRlbnRpZmllcik7CisgICAgaWYgKCFqb2IpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJKb2IgJXMg
cmVzb2x2ZWQgaW4gc2VydmVyLCBidXQgd2FzIG5vdCBmb3VuZCIsIGpvYkRhdGFJZGVudGlmaWVy
LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGpvYi0+cmVzb2x2ZWRXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHQodW5yZWdpc3RyYXRp
b25SZXN1bHQpOworfQorCit2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6c3RhcnRTY3JpcHRGZXRj
aEZvclNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJ
ZGVudGlmaWVyKQoreworICAgIGF1dG8gam9iID0gbV9zY2hlZHVsZWRKb2JzLmdldChqb2JEYXRh
SWRlbnRpZmllci5qb2JJZGVudGlmaWVyKTsKKyAgICBpZiAoIWpvYikgeworICAgICAgICBMT0df
RVJST1IoIkpvYiAlcyBpbnN0cnVjdGVkIHRvIHN0YXJ0IGZldGNoIGZyb20gc2VydmVyLCBidXQg
am9iIHdhcyBub3QgZm91bmQiLCBqb2JEYXRhSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CisKKyAgICAgICAgLy8gRklYTUU6IFNob3VsZCBtZXNzYWdlIGJhY2sgdG8g
dGhlIHNlcnZlciBoZXJlIHRvIHNpZ25hbCBmYWlsdXJlIHRvIGZldGNoLAorICAgICAgICAvLyBi
dXQgd2UgY3VycmVudGx5IG5lZWQgdGhlIHJlZ2lzdHJhdGlvbiBrZXkgdG8gZG8gc28sIGFuZCBk
b24ndCBoYXZlIGl0IGhlcmUuCisgICAgICAgIC8vIEluIHRoZSBmdXR1cmUgd2UnbGwgcmVmYWN0
b3IgdG8gaGF2ZSBhIGdsb2JhbCwgY3Jvc3MtcHJvY2VzcyBqb2IgaWRlbnRpZmllciB0aGF0IGNh
biBiZSB1c2VkIHRvIG92ZXJjb21lIHRoaXMuCisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGpvYi0+c3RhcnRTY3JpcHRGZXRjaCgpOworfQorCit2b2lkIFNXQ2xpZW50Q29ubmVjdGlv
bjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoRG9jdW1lbnRJZGVudGlmaWVyIGRl
c3RpbmF0aW9uQ29udGV4dElkZW50aWZpZXIsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYg
bWVzc2FnZSwgU2VydmljZVdvcmtlckRhdGEmJiBzb3VyY2VEYXRhLCBjb25zdCBTdHJpbmcmIHNv
dXJjZU9yaWdpbikKK3sKKyAgICAvLyBGSVhNRTogZGVzdGluYXRpb25Db250ZXh0SWRlbnRpZmll
ciBjYW4gb25seSBpZGVudGlmeSBhIERvY3VtZW50IGF0IHRoZSBtb21lbnQuCisgICAgYXV0byog
ZGVzdGluYXRpb25Eb2N1bWVudCA9IERvY3VtZW50OjphbGxEb2N1bWVudHNNYXAoKS5nZXQoZGVz
dGluYXRpb25Db250ZXh0SWRlbnRpZmllcik7CisgICAgaWYgKCFkZXN0aW5hdGlvbkRvY3VtZW50
KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBjb250YWluZXIgPSBkZXN0aW5hdGlvbkRv
Y3VtZW50LT5zZXJ2aWNlV29ya2VyQ29udGFpbmVyKCk7CisgICAgaWYgKCFjb250YWluZXIpCisg
ICAgICAgIHJldHVybjsKKworICAgIE1lc3NhZ2VFdmVudFNvdXJjZSBzb3VyY2UgPSBSZWZQdHI8
U2VydmljZVdvcmtlcj4geyBTZXJ2aWNlV29ya2VyOjpnZXRPckNyZWF0ZSgqZGVzdGluYXRpb25E
b2N1bWVudCwgV1RGTW92ZShzb3VyY2VEYXRhKSkgfTsKKworICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgcGFzcyBpbiBwb3J0cy4KKyAgICBhdXRvIG1lc3NhZ2VFdmVudCA9IE1lc3NhZ2VFdmVudDo6
Y3JlYXRlKHsgfSwgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlT3JpZ2luLCB7IH0sIFdURk1vdmUo
c291cmNlKSk7CisgICAgY29udGFpbmVyLT5kaXNwYXRjaEV2ZW50KG1lc3NhZ2VFdmVudCk7Cit9
CisKK3ZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjp1cGRhdGVSZWdpc3RyYXRpb25TdGF0ZShTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uU3RhdGUgc3RhdGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtl
ckRhdGE+JiBzZXJ2aWNlV29ya2VyRGF0YSkKK3sKKyAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5n
bGV0b24oKS5mb3JFYWNoU2VydmljZVdvcmtlclRocmVhZChbaWRlbnRpZmllciwgc3RhdGUsICZz
ZXJ2aWNlV29ya2VyRGF0YV0gKGF1dG8mIHdvcmtlclRocmVhZCkgeworICAgICAgICB3b3JrZXJU
aHJlYWQudGhyZWFkKCkucnVuTG9vcCgpLnBvc3RUYXNrKFtpZGVudGlmaWVyLCBzdGF0ZSwgc2Vy
dmljZVdvcmtlckRhdGEgPSBjcm9zc1RocmVhZENvcHkoc2VydmljZVdvcmtlckRhdGEpXShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmIChh
dXRvKiBjb250YWluZXIgPSBjb250ZXh0LnNlcnZpY2VXb3JrZXJDb250YWluZXIoKSkKKyAgICAg
ICAgICAgICAgICBjb250YWluZXItPnNjaGVkdWxlVGFza1RvVXBkYXRlUmVnaXN0cmF0aW9uU3Rh
dGUoaWRlbnRpZmllciwgc3RhdGUsIFdURk1vdmUoc2VydmljZVdvcmtlckRhdGEpKTsKKyAgICAg
ICAgfSk7CisgICAgfSk7CisKKyAgICBmb3IgKGF1dG8qIGRvY3VtZW50IDogRG9jdW1lbnQ6OmFs
bERvY3VtZW50cygpKSB7CisgICAgICAgIGlmIChhdXRvKiBjb250YWluZXIgPSBkb2N1bWVudC0+
c2VydmljZVdvcmtlckNvbnRhaW5lcigpKQorICAgICAgICAgICAgY29udGFpbmVyLT5zY2hlZHVs
ZVRhc2tUb1VwZGF0ZVJlZ2lzdHJhdGlvblN0YXRlKGlkZW50aWZpZXIsIHN0YXRlLCBzZXJ2aWNl
V29ya2VyRGF0YSk7CisgICAgfQorfQorCit2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6dXBkYXRl
V29ya2VyU3RhdGUoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgU2VydmljZVdv
cmtlclN0YXRlIHN0YXRlKQoreworICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmZv
ckVhY2hTZXJ2aWNlV29ya2VyVGhyZWFkKFtpZGVudGlmaWVyLCBzdGF0ZV0gKGF1dG8mIHdvcmtl
clRocmVhZCkgeworICAgICAgICB3b3JrZXJUaHJlYWQudGhyZWFkKCkucnVuTG9vcCgpLnBvc3RU
YXNrKFtpZGVudGlmaWVyLCBzdGF0ZV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkg
eworICAgICAgICAgICAgaWYgKGF1dG8qIHNlcnZpY2VXb3JrZXIgPSBjb250ZXh0LnNlcnZpY2VX
b3JrZXIoaWRlbnRpZmllcikpCisgICAgICAgICAgICAgICAgc2VydmljZVdvcmtlci0+c2NoZWR1
bGVUYXNrVG9VcGRhdGVTdGF0ZShzdGF0ZSk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAg
Zm9yIChhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMoKSkgeworICAgICAg
ICBpZiAoYXV0byogc2VydmljZVdvcmtlciA9IGRvY3VtZW50LT5zZXJ2aWNlV29ya2VyKGlkZW50
aWZpZXIpKQorICAgICAgICAgICAgc2VydmljZVdvcmtlci0+c2NoZWR1bGVUYXNrVG9VcGRhdGVT
dGF0ZShzdGF0ZSk7CisgICAgfQorfQorCit2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6ZmlyZVVw
ZGF0ZUZvdW5kRXZlbnQoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgaWRlbnRp
ZmllcikKK3sKKyAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5mb3JFYWNoU2Vydmlj
ZVdvcmtlclRocmVhZChbaWRlbnRpZmllcl0gKGF1dG8mIHdvcmtlclRocmVhZCkgeworICAgICAg
ICB3b3JrZXJUaHJlYWQudGhyZWFkKCkucnVuTG9vcCgpLnBvc3RUYXNrKFtpZGVudGlmaWVyXShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICBpZiAoYXV0byog
Y29udGFpbmVyID0gY29udGV4dC5zZXJ2aWNlV29ya2VyQ29udGFpbmVyKCkpCisgICAgICAgICAg
ICAgICAgY29udGFpbmVyLT5zY2hlZHVsZVRhc2tUb0ZpcmVVcGRhdGVGb3VuZEV2ZW50KGlkZW50
aWZpZXIpOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGZvciAoYXV0byogZG9jdW1lbnQg
OiBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGNvbnRhaW5l
ciA9IGRvY3VtZW50LT5zZXJ2aWNlV29ya2VyQ29udGFpbmVyKCkpCisgICAgICAgICAgICBjb250
YWluZXItPnNjaGVkdWxlVGFza1RvRmlyZVVwZGF0ZUZvdW5kRXZlbnQoaWRlbnRpZmllcik7Cisg
ICAgfQorfQorCit2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6bm90aWZ5Q2xpZW50c09mQ29udHJv
bGxlckNoYW5nZShjb25zdCBIYXNoU2V0PERvY3VtZW50SWRlbnRpZmllcj4mIGNvbnRleHRJZGVu
dGlmaWVycywgU2VydmljZVdvcmtlckRhdGEmJiBuZXdDb250cm9sbGVyKQoreworICAgIEFTU0VS
VCghY29udGV4dElkZW50aWZpZXJzLmlzRW1wdHkoKSk7CisKKyAgICBmb3IgKGF1dG8mIGNsaWVu
dElkZW50aWZpZXIgOiBjb250ZXh0SWRlbnRpZmllcnMpIHsKKyAgICAgICAgLy8gRklYTUU6IFN1
cHBvcnQgd29ya2VyIGNvbnRleHRzLgorICAgICAgICBhdXRvKiBjbGllbnQgPSBEb2N1bWVudDo6
YWxsRG9jdW1lbnRzTWFwKCkuZ2V0KGNsaWVudElkZW50aWZpZXIpOworICAgICAgICBpZiAoIWNs
aWVudCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIEFTU0VSVChjbGllbnQtPmFj
dGl2ZVNlcnZpY2VXb3JrZXIoKSk7CisgICAgICAgIEFTU0VSVChjbGllbnQtPmFjdGl2ZVNlcnZp
Y2VXb3JrZXIoKS0+aWRlbnRpZmllcigpICE9IG5ld0NvbnRyb2xsZXIuaWRlbnRpZmllcik7Cisg
ICAgICAgIGNsaWVudC0+c2V0QWN0aXZlU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VyOjpnZXRP
ckNyZWF0ZSgqY2xpZW50LCBTZXJ2aWNlV29ya2VyRGF0YSB7IG5ld0NvbnRyb2xsZXIgfSkpOwor
ICAgICAgICBpZiAoYXV0byogY29udGFpbmVyID0gY2xpZW50LT5zZXJ2aWNlV29ya2VyQ29udGFp
bmVyKCkpCisgICAgICAgICAgICBjb250YWluZXItPnNjaGVkdWxlVGFza1RvRmlyZUNvbnRyb2xs
ZXJDaGFuZ2VFdmVudCgpOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyYTE3MjFl
YzlkMjk5ZjkyZDYyNWE3YTE3N2ZiNjA3MzhlMWFiODcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmgKQEAgLTAsMCAr
MSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKKworI2luY2x1ZGUgIkRvY3VtZW50SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlNl
cnZpY2VXb3JrZXJKb2IuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyVHlwZXMuaCIKKyNpbmNs
dWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgor
I2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIFJlc291cmNlRXJyb3I7CitjbGFzcyBTZWN1cml0eU9yaWdpbjsKK2NsYXNz
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKK2NsYXNzIFNlcnZpY2VXb3JrZXJDb250YWluZXI7Citj
bGFzcyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOworY2xhc3MgU2hhcmVkQnVmZmVyOworZW51
bSBjbGFzcyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uU3RhdGU7CitlbnVtIGNsYXNzIFNlcnZp
Y2VXb3JrZXJTdGF0ZTsKK2VudW0gY2xhc3MgU2hvdWxkTm90aWZ5V2hlblJlc29sdmVkOworc3Ry
dWN0IEV4Y2VwdGlvbkRhdGE7CitzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudERhdGE7CitzdHJ1
Y3QgU2VydmljZVdvcmtlckRhdGE7CitzdHJ1Y3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0Owor
c3RydWN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhOworCitjbGFzcyBTV0NsaWVudENv
bm5lY3Rpb24gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U1dDbGllbnRDb25uZWN0aW9u
PiB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+U1dDbGllbnRDb25uZWN0
aW9uKCk7CisKKyAgICB1c2luZyBSZWdpc3RyYXRpb25DYWxsYmFjayA9IFdURjo6Q29tcGxldGlv
bkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRh
PiYmKT47CisgICAgdmlydHVhbCB2b2lkIG1hdGNoUmVnaXN0cmF0aW9uKGNvbnN0IFNlY3VyaXR5
T3JpZ2luJiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMLCBSZWdpc3RyYXRpb25DYWxs
YmFjayYmKSA9IDA7CisKKyAgICB1c2luZyBHZXRSZWdpc3RyYXRpb25zQ2FsbGJhY2sgPSBXVEY6
OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
YXRhPiYmKT47CisgICAgdmlydHVhbCB2b2lkIGdldFJlZ2lzdHJhdGlvbnMoY29uc3QgU2VjdXJp
dHlPcmlnaW4mIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwsIEdldFJlZ2lzdHJhdGlv
bnNDYWxsYmFjayYmKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgYWRkU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkluU2VydmVyKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNl
cnZlcihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcikgPSAwOworCisgICAgdm9p
ZCBzY2hlZHVsZUpvYihTZXJ2aWNlV29ya2VySm9iJik7CisgICAgdm9pZCBmaW5pc2hlZEZldGNo
aW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGZh
aWxlZEZldGNoaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImLCBjb25zdCBSZXNvdXJjZUVycm9y
Jik7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoY29u
c3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYpID0gMDsKKworICAgIHZpcnR1YWwgdm9p
ZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4m
JiwgRG9jdW1lbnRJZGVudGlmaWVyIHNvdXJjZUNvbnRleHRJZGVudGlmaWVyLCBTZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YSYmIHNvdXJjZSkgPSAwOworICAgIHZpcnR1YWwgU1dTZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgbWF5SGF2ZVNlcnZpY2VXb3JrZXJSZWdpc3RlcmVkRm9yT3JpZ2luKGNv
bnN0IFNlY3VyaXR5T3JpZ2luJikgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNlcnZp
Y2VXb3JrZXJTdGFydGVkQ29udHJvbGxpbmdDbGllbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIs
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBEb2N1bWVudElkZW50aWZpZXIp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2VydmljZVdvcmtlclN0b3BwZWRDb250cm9sbGluZ0Ns
aWVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIsIERvY3VtZW50SWRlbnRpZmllcikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHJl
Z2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2lu
LCBEb2N1bWVudElkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChEb2N1bWVu
dElkZW50aWZpZXIpID0gMDsKKworcHJvdGVjdGVkOgorICAgIFdFQkNPUkVfRVhQT1JUIFNXQ2xp
ZW50Q29ubmVjdGlvbigpOworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBqb2JSZWplY3RlZElu
U2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIGNvbnN0IEV4Y2Vw
dGlvbkRhdGEmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlZ2lzdHJhdGlvbkpvYlJlc29s
dmVkSW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJiwgU2hvdWxkTm90aWZ5V2hlblJlc29sdmVkKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVucmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJblNlcnZlcihj
b25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBib29sIHVucmVnaXN0cmF0aW9u
UmVzdWx0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2hGb3JTZXJ2
ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChEb2N1bWVudElkZW50
aWZpZXIgZGVzdGluYXRpb25Db250ZXh0SWRlbnRpZmllciwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4mJiBtZXNzYWdlLCBTZXJ2aWNlV29ya2VyRGF0YSYmIHNvdXJjZSwgY29uc3QgU3RyaW5n
JiBzb3VyY2VPcmlnaW4pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlUmVnaXN0cmF0
aW9uU3RhdGUoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25TdGF0ZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0
YT4mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVdvcmtlclN0YXRlKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyU3RhdGUpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZmlyZVVwZGF0ZUZvdW5kRXZlbnQoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50
aWZpZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbm90aWZ5Q2xpZW50c09mQ29udHJvbGxl
ckNoYW5nZShjb25zdCBIYXNoU2V0PERvY3VtZW50SWRlbnRpZmllcj4mIGNvbnRleHRJZGVudGlm
aWVycywgU2VydmljZVdvcmtlckRhdGEmJiBuZXdDb250cm9sbGVyKTsKKworcHJpdmF0ZToKKyAg
ICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVKb2JJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9i
RGF0YSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZl
cihjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmKSA9IDA7CisKKyAgICBIYXNoTWFwPFNl
cnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyLCBSZWZQdHI8U2VydmljZVdvcmtlckpvYj4+IG1fc2No
ZWR1bGVkSm9iczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAppbmRleCAzZjI5YzZiMDAzZTk0
YmY5NTAwYjI4MGNjODBlMjUxMjcwYTlhN2I5Li44YmViMDg2ZjNkOTVhODc3MmI2NmIzOGQ5MDM1
Zjg5ZGJiNmZmNzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKKyNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUg
IkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRlICJJRExUeXBl
cy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV0NsaWVudENvbm5lY3Rpb24uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAxMDJhZWZlYzQyMmQyMTdmODFhZjRhODU3MjRhOTM3ZWM1ZGU3OTNjLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dDbGllbnRDb25uZWN0aW9uLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDIwNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IlNXQ2xpZW50Q29ubmVjdGlvbi5oIgotCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotCi0j
aW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFeGNlcHRpb25EYXRhLmgiCi0jaW5jbHVk
ZSAiTWVzc2FnZUV2ZW50LmgiCi0jaW5jbHVkZSAiTWljcm90YXNrcy5oIgotI2luY2x1ZGUgIlNX
Q29udGV4dE1hbmFnZXIuaCIKLSNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgiCi0j
aW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoUmVzdWx0LmgiCi0jaW5jbHVkZSAiU2VydmljZVdv
cmtlckpvYkRhdGEuaCIKLSNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmgiCi0j
aW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotU1dDbGllbnRDb25uZWN0aW9uOjpTV0NsaWVudENvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7Ci0K
LVNXQ2xpZW50Q29ubmVjdGlvbjo6flNXQ2xpZW50Q29ubmVjdGlvbigpID0gZGVmYXVsdDsKLQot
dm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnNjaGVkdWxlSm9iKFNlcnZpY2VXb3JrZXJKb2ImIGpv
YikKLXsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fc2NoZWR1bGVkSm9icy5hZGQoam9iLmlkZW50
aWZpZXIoKSwgJmpvYik7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5p
c05ld0VudHJ5KTsKLQotICAgIHNjaGVkdWxlSm9iSW5TZXJ2ZXIoam9iLmRhdGEoKSk7Ci19Ci0K
LXZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjpmaW5pc2hlZEZldGNoaW5nU2NyaXB0KFNlcnZpY2VX
b3JrZXJKb2ImIGpvYiwgY29uc3QgU3RyaW5nJiBzY3JpcHQpCi17Ci0gICAgQVNTRVJUKG1fc2No
ZWR1bGVkSm9icy5nZXQoam9iLmlkZW50aWZpZXIoKSkgPT0gJmpvYik7Ci0KLSAgICBmaW5pc2hG
ZXRjaGluZ1NjcmlwdEluU2VydmVyKHsgam9iLmRhdGEoKS5pZGVudGlmaWVyKCksIGpvYi5kYXRh
KCkucmVnaXN0cmF0aW9uS2V5KCksIHNjcmlwdCwgeyB9IH0pOwotfQotCi12b2lkIFNXQ2xpZW50
Q29ubmVjdGlvbjo6ZmFpbGVkRmV0Y2hpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYgam9iLCBj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKLXsKLSAgICBBU1NFUlQobV9zY2hlZHVsZWRKb2Jz
LmdldChqb2IuaWRlbnRpZmllcigpKSA9PSAmam9iKTsKLQotICAgIGZpbmlzaEZldGNoaW5nU2Ny
aXB0SW5TZXJ2ZXIoeyBqb2IuZGF0YSgpLmlkZW50aWZpZXIoKSwgam9iLmRhdGEoKS5yZWdpc3Ry
YXRpb25LZXkoKSwgeyB9LCBlcnJvciB9KTsKLX0KLQotdm9pZCBTV0NsaWVudENvbm5lY3Rpb246
OmpvYlJlamVjdGVkSW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVy
JiBqb2JEYXRhSWRlbnRpZmllciwgY29uc3QgRXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uRGF0YSkK
LXsKLSAgICBhdXRvIGpvYiA9IG1fc2NoZWR1bGVkSm9icy50YWtlKGpvYkRhdGFJZGVudGlmaWVy
LmpvYklkZW50aWZpZXIpOwotICAgIGlmICgham9iKSB7Ci0gICAgICAgIExPR19FUlJPUigiSm9i
ICVzIHJlamVjdGVkIGZyb20gc2VydmVyLCBidXQgd2FzIG5vdCBmb3VuZCIsIGpvYkRhdGFJZGVu
dGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGpvYi0+ZmFpbGVkV2l0aEV4Y2VwdGlvbihleGNlcHRpb25EYXRhLnRvRXhj
ZXB0aW9uKCkpOwotfQotCi12b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6cmVnaXN0cmF0aW9uSm9i
UmVzb2x2ZWRJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpv
YkRhdGFJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmIHJlZ2lzdHJh
dGlvbkRhdGEsIFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCBzaG91bGROb3RpZnlXaGVuUmVzb2x2
ZWQpCi17Ci0gICAgYXV0byBqb2IgPSBtX3NjaGVkdWxlZEpvYnMudGFrZShqb2JEYXRhSWRlbnRp
Zmllci5qb2JJZGVudGlmaWVyKTsKLSAgICBpZiAoIWpvYikgewotICAgICAgICBMT0dfRVJST1Io
IkpvYiAlcyByZXNvbHZlZCBpbiBzZXJ2ZXIsIGJ1dCB3YXMgbm90IGZvdW5kIiwgam9iRGF0YUlk
ZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgYXV0byBrZXkgPSByZWdpc3RyYXRpb25EYXRhLmtleTsKLSAgICBqb2It
PnJlc29sdmVkV2l0aFJlZ2lzdHJhdGlvbihXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGEpLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBrZXksIHNob3VsZE5vdGlmeVdoZW5S
ZXNvbHZlZF0gewotICAgICAgICBpZiAoc2hvdWxkTm90aWZ5V2hlblJlc29sdmVkID09IFNob3Vs
ZE5vdGlmeVdoZW5SZXNvbHZlZDo6WWVzKQotICAgICAgICAgICAgZGlkUmVzb2x2ZVJlZ2lzdHJh
dGlvblByb21pc2Uoa2V5KTsKLSAgICB9KTsKLX0KLQotdm9pZCBTV0NsaWVudENvbm5lY3Rpb246
OnVucmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9i
RGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBib29sIHVucmVnaXN0cmF0aW9uUmVz
dWx0KQotewotICAgIGF1dG8gam9iID0gbV9zY2hlZHVsZWRKb2JzLnRha2Uoam9iRGF0YUlkZW50
aWZpZXIuam9iSWRlbnRpZmllcik7Ci0gICAgaWYgKCFqb2IpIHsKLSAgICAgICAgTE9HX0VSUk9S
KCJKb2IgJXMgcmVzb2x2ZWQgaW4gc2VydmVyLCBidXQgd2FzIG5vdCBmb3VuZCIsIGpvYkRhdGFJ
ZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGpvYi0+cmVzb2x2ZWRXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHQodW5y
ZWdpc3RyYXRpb25SZXN1bHQpOwotfQotCi12b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6c3RhcnRT
Y3JpcHRGZXRjaEZvclNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIm
IGpvYkRhdGFJZGVudGlmaWVyKQotewotICAgIGF1dG8gam9iID0gbV9zY2hlZHVsZWRKb2JzLmdl
dChqb2JEYXRhSWRlbnRpZmllci5qb2JJZGVudGlmaWVyKTsKLSAgICBpZiAoIWpvYikgewotICAg
ICAgICBMT0dfRVJST1IoIkpvYiAlcyBpbnN0cnVjdGVkIHRvIHN0YXJ0IGZldGNoIGZyb20gc2Vy
dmVyLCBidXQgam9iIHdhcyBub3QgZm91bmQiLCBqb2JEYXRhSWRlbnRpZmllci5sb2dnaW5nU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0KLSAgICAgICAgLy8gRklYTUU6IFNob3VsZCBtZXNzYWdl
IGJhY2sgdG8gdGhlIHNlcnZlciBoZXJlIHRvIHNpZ25hbCBmYWlsdXJlIHRvIGZldGNoLAotICAg
ICAgICAvLyBidXQgd2UgY3VycmVudGx5IG5lZWQgdGhlIHJlZ2lzdHJhdGlvbiBrZXkgdG8gZG8g
c28sIGFuZCBkb24ndCBoYXZlIGl0IGhlcmUuCi0gICAgICAgIC8vIEluIHRoZSBmdXR1cmUgd2Un
bGwgcmVmYWN0b3IgdG8gaGF2ZSBhIGdsb2JhbCwgY3Jvc3MtcHJvY2VzcyBqb2IgaWRlbnRpZmll
ciB0aGF0IGNhbiBiZSB1c2VkIHRvIG92ZXJjb21lIHRoaXMuCi0KLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGpvYi0+c3RhcnRTY3JpcHRGZXRjaCgpOwotfQotCi12b2lkIFNXQ2xpZW50
Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoRG9jdW1lbnRJZGVu
dGlmaWVyIGRlc3RpbmF0aW9uQ29udGV4dElkZW50aWZpZXIsIFJlZjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+JiYgbWVzc2FnZSwgU2VydmljZVdvcmtlckRhdGEmJiBzb3VyY2VEYXRhLCBjb25zdCBT
dHJpbmcmIHNvdXJjZU9yaWdpbikKLXsKLSAgICAvLyBGSVhNRTogZGVzdGluYXRpb25Db250ZXh0
SWRlbnRpZmllciBjYW4gb25seSBpZGVudGlmeSBhIERvY3VtZW50IGF0IHRoZSBtb21lbnQuCi0g
ICAgYXV0byogZGVzdGluYXRpb25Eb2N1bWVudCA9IERvY3VtZW50OjphbGxEb2N1bWVudHNNYXAo
KS5nZXQoZGVzdGluYXRpb25Db250ZXh0SWRlbnRpZmllcik7Ci0gICAgaWYgKCFkZXN0aW5hdGlv
bkRvY3VtZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvKiBjb250YWluZXIgPSBkZXN0
aW5hdGlvbkRvY3VtZW50LT5zZXJ2aWNlV29ya2VyQ29udGFpbmVyKCk7Ci0gICAgaWYgKCFjb250
YWluZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIE1lc3NhZ2VFdmVudFNvdXJjZSBzb3VyY2Ug
PSBSZWZQdHI8U2VydmljZVdvcmtlcj4geyBTZXJ2aWNlV29ya2VyOjpnZXRPckNyZWF0ZSgqZGVz
dGluYXRpb25Eb2N1bWVudCwgV1RGTW92ZShzb3VyY2VEYXRhKSkgfTsKLQotICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgcGFzcyBpbiBwb3J0cy4KLSAgICBhdXRvIG1lc3NhZ2VFdmVudCA9IE1lc3Nh
Z2VFdmVudDo6Y3JlYXRlKHsgfSwgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlT3JpZ2luLCB7IH0s
IFdURk1vdmUoc291cmNlKSk7Ci0gICAgY29udGFpbmVyLT5kaXNwYXRjaEV2ZW50KG1lc3NhZ2VF
dmVudCk7Ci19Ci0KLXZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjp1cGRhdGVSZWdpc3RyYXRpb25T
dGF0ZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uU3RhdGUgc3RhdGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2Vy
dmljZVdvcmtlckRhdGE+JiBzZXJ2aWNlV29ya2VyRGF0YSkKLXsKLSAgICBTV0NvbnRleHRNYW5h
Z2VyOjpzaW5nbGV0b24oKS5mb3JFYWNoU2VydmljZVdvcmtlclRocmVhZChbaWRlbnRpZmllciwg
c3RhdGUsICZzZXJ2aWNlV29ya2VyRGF0YV0gKGF1dG8mIHdvcmtlclRocmVhZCkgewotICAgICAg
ICB3b3JrZXJUaHJlYWQudGhyZWFkKCkucnVuTG9vcCgpLnBvc3RUYXNrKFtpZGVudGlmaWVyLCBz
dGF0ZSwgc2VydmljZVdvcmtlckRhdGEgPSBjcm9zc1RocmVhZENvcHkoc2VydmljZVdvcmtlckRh
dGEpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAg
ICAgIGlmIChhdXRvKiBjb250YWluZXIgPSBjb250ZXh0LnNlcnZpY2VXb3JrZXJDb250YWluZXIo
KSkKLSAgICAgICAgICAgICAgICBjb250YWluZXItPnNjaGVkdWxlVGFza1RvVXBkYXRlUmVnaXN0
cmF0aW9uU3RhdGUoaWRlbnRpZmllciwgc3RhdGUsIFdURk1vdmUoc2VydmljZVdvcmtlckRhdGEp
KTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci0KLSAgICBmb3IgKGF1dG8qIGRvY3VtZW50IDogRG9j
dW1lbnQ6OmFsbERvY3VtZW50cygpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBjb250YWluZXIgPSBk
b2N1bWVudC0+c2VydmljZVdvcmtlckNvbnRhaW5lcigpKQotICAgICAgICAgICAgY29udGFpbmVy
LT5zY2hlZHVsZVRhc2tUb1VwZGF0ZVJlZ2lzdHJhdGlvblN0YXRlKGlkZW50aWZpZXIsIHN0YXRl
LCBzZXJ2aWNlV29ya2VyRGF0YSk7Ci0gICAgfQotfQotCi12b2lkIFNXQ2xpZW50Q29ubmVjdGlv
bjo6dXBkYXRlV29ya2VyU3RhdGUoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwg
U2VydmljZVdvcmtlclN0YXRlIHN0YXRlKQotewotICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmds
ZXRvbigpLmZvckVhY2hTZXJ2aWNlV29ya2VyVGhyZWFkKFtpZGVudGlmaWVyLCBzdGF0ZV0gKGF1
dG8mIHdvcmtlclRocmVhZCkgewotICAgICAgICB3b3JrZXJUaHJlYWQudGhyZWFkKCkucnVuTG9v
cCgpLnBvc3RUYXNrKFtpZGVudGlmaWVyLCBzdGF0ZV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkgewotICAgICAgICAgICAgaWYgKGF1dG8qIHNlcnZpY2VXb3JrZXIgPSBjb250ZXh0
LnNlcnZpY2VXb3JrZXIoaWRlbnRpZmllcikpCi0gICAgICAgICAgICAgICAgc2VydmljZVdvcmtl
ci0+c2NoZWR1bGVUYXNrVG9VcGRhdGVTdGF0ZShzdGF0ZSk7Ci0gICAgICAgIH0pOwotICAgIH0p
OwotCi0gICAgZm9yIChhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMoKSkg
ewotICAgICAgICBpZiAoYXV0byogc2VydmljZVdvcmtlciA9IGRvY3VtZW50LT5zZXJ2aWNlV29y
a2VyKGlkZW50aWZpZXIpKQotICAgICAgICAgICAgc2VydmljZVdvcmtlci0+c2NoZWR1bGVUYXNr
VG9VcGRhdGVTdGF0ZShzdGF0ZSk7Ci0gICAgfQotfQotCi12b2lkIFNXQ2xpZW50Q29ubmVjdGlv
bjo6ZmlyZVVwZGF0ZUZvdW5kRXZlbnQoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIgaWRlbnRpZmllcikKLXsKLSAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5mb3JF
YWNoU2VydmljZVdvcmtlclRocmVhZChbaWRlbnRpZmllcl0gKGF1dG8mIHdvcmtlclRocmVhZCkg
ewotICAgICAgICB3b3JrZXJUaHJlYWQudGhyZWFkKCkucnVuTG9vcCgpLnBvc3RUYXNrKFtpZGVu
dGlmaWVyXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBp
ZiAoYXV0byogY29udGFpbmVyID0gY29udGV4dC5zZXJ2aWNlV29ya2VyQ29udGFpbmVyKCkpCi0g
ICAgICAgICAgICAgICAgY29udGFpbmVyLT5zY2hlZHVsZVRhc2tUb0ZpcmVVcGRhdGVGb3VuZEV2
ZW50KGlkZW50aWZpZXIpOwotICAgICAgICB9KTsKLSAgICB9KTsKLQotICAgIGZvciAoYXV0byog
ZG9jdW1lbnQgOiBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkpIHsKLSAgICAgICAgaWYgKGF1dG8q
IGNvbnRhaW5lciA9IGRvY3VtZW50LT5zZXJ2aWNlV29ya2VyQ29udGFpbmVyKCkpCi0gICAgICAg
ICAgICBjb250YWluZXItPnNjaGVkdWxlVGFza1RvRmlyZVVwZGF0ZUZvdW5kRXZlbnQoaWRlbnRp
Zmllcik7Ci0gICAgfQotfQotCi12b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6bm90aWZ5Q2xpZW50
c09mQ29udHJvbGxlckNoYW5nZShjb25zdCBIYXNoU2V0PERvY3VtZW50SWRlbnRpZmllcj4mIGNv
bnRleHRJZGVudGlmaWVycywgU2VydmljZVdvcmtlckRhdGEmJiBuZXdDb250cm9sbGVyKQotewot
ICAgIEFTU0VSVCghY29udGV4dElkZW50aWZpZXJzLmlzRW1wdHkoKSk7Ci0KLSAgICBmb3IgKGF1
dG8mIGNsaWVudElkZW50aWZpZXIgOiBjb250ZXh0SWRlbnRpZmllcnMpIHsKLSAgICAgICAgLy8g
RklYTUU6IFN1cHBvcnQgd29ya2VyIGNvbnRleHRzLgotICAgICAgICBhdXRvKiBjbGllbnQgPSBE
b2N1bWVudDo6YWxsRG9jdW1lbnRzTWFwKCkuZ2V0KGNsaWVudElkZW50aWZpZXIpOwotICAgICAg
ICBpZiAoIWNsaWVudCkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIEFTU0VSVChj
bGllbnQtPmFjdGl2ZVNlcnZpY2VXb3JrZXIoKSk7Ci0gICAgICAgIEFTU0VSVChjbGllbnQtPmFj
dGl2ZVNlcnZpY2VXb3JrZXIoKS0+aWRlbnRpZmllcigpICE9IG5ld0NvbnRyb2xsZXIuaWRlbnRp
Zmllcik7Ci0gICAgICAgIGNsaWVudC0+c2V0QWN0aXZlU2VydmljZVdvcmtlcihTZXJ2aWNlV29y
a2VyOjpnZXRPckNyZWF0ZSgqY2xpZW50LCBTZXJ2aWNlV29ya2VyRGF0YSB7IG5ld0NvbnRyb2xs
ZXIgfSkpOwotICAgICAgICBpZiAoYXV0byogY29udGFpbmVyID0gY2xpZW50LT5zZXJ2aWNlV29y
a2VyQ29udGFpbmVyKCkpCi0gICAgICAgICAgICBjb250YWluZXItPnNjaGVkdWxlVGFza1RvRmly
ZUNvbnRyb2xsZXJDaGFuZ2VFdmVudCgpOwotICAgIH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV0NsaWVudENvbm5lY3Rpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dDbGllbnRDb25uZWN0aW9u
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxMDY3YjQ2OTE2NmIxYjVhYzE2ZjVi
ODUzNmExMTBiMTY0Y2I5YzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV0NsaWVudENv
bm5lY3Rpb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDEwNCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0KLSNpbmNsdWRlICJE
b2N1bWVudElkZW50aWZpZXIuaCIKLSNpbmNsdWRlICJTZXJ2aWNlV29ya2VySm9iLmgiCi0jaW5j
bHVkZSAiU2VydmljZVdvcmtlclR5cGVzLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNp
bmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jbGFzcyBSZXNvdXJjZUVycm9yOwotY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU7Ci1jbGFzcyBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOwotY2xh
c3MgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKLWVudW0g
Y2xhc3MgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblN0YXRlOwotZW51bSBjbGFzcyBTZXJ2aWNl
V29ya2VyU3RhdGU7Ci1lbnVtIGNsYXNzIFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZDsKLXN0cnVj
dCBFeGNlcHRpb25EYXRhOwotc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOwotc3RydWN0
IFNlcnZpY2VXb3JrZXJEYXRhOwotc3RydWN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdDsKLXN0
cnVjdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YTsKLQotY2xhc3MgU1dDbGllbnRDb25u
ZWN0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNXQ2xpZW50Q29ubmVjdGlvbj4g
ewotcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflNXQ2xpZW50Q29ubmVjdGlv
bigpOwotCi0gICAgdXNpbmcgUmVnaXN0cmF0aW9uQ2FsbGJhY2sgPSBXVEY6OkNvbXBsZXRpb25I
YW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YT4m
Jik+OwotICAgIHZpcnR1YWwgdm9pZCBtYXRjaFJlZ2lzdHJhdGlvbihjb25zdCBTZWN1cml0eU9y
aWdpbiYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCwgUmVnaXN0cmF0aW9uQ2FsbGJh
Y2smJikgPSAwOwotCi0gICAgdXNpbmcgR2V0UmVnaXN0cmF0aW9uc0NhbGxiYWNrID0gV1RGOjpD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0
YT4mJik+OwotICAgIHZpcnR1YWwgdm9pZCBnZXRSZWdpc3RyYXRpb25zKGNvbnN0IFNlY3VyaXR5
T3JpZ2luJiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMLCBHZXRSZWdpc3RyYXRpb25z
Q2FsbGJhY2smJikgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIGFkZFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JblNlcnZlcihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcikgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2
ZXIoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpID0gMDsKLQotICAgIHZvaWQg
c2NoZWR1bGVKb2IoU2VydmljZVdvcmtlckpvYiYpOwotICAgIHZvaWQgZmluaXNoZWRGZXRjaGlu
Z1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiwgY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBmYWls
ZWRGZXRjaGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiwgY29uc3QgUmVzb3VyY2VFcnJvciYp
OwotCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKGNvbnN0
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQg
cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBkZXN0aW5hdGlvbklkZW50aWZpZXIsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYs
IERvY3VtZW50SWRlbnRpZmllciBzb3VyY2VDb250ZXh0SWRlbnRpZmllciwgU2VydmljZVdvcmtl
ckNsaWVudERhdGEmJiBzb3VyY2UpID0gMDsKLSAgICB2aXJ0dWFsIFNXU2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdCA9IDA7Ci0gICAg
dmlydHVhbCBib29sIG1heUhhdmVTZXJ2aWNlV29ya2VyUmVnaXN0ZXJlZEZvck9yaWdpbihjb25z
dCBTZWN1cml0eU9yaWdpbiYpIGNvbnN0ID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBzZXJ2aWNl
V29ya2VyU3RhcnRlZENvbnRyb2xsaW5nQ2xpZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgRG9jdW1lbnRJZGVudGlmaWVyKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNlcnZpY2VXb3JrZXJTdG9wcGVkQ29udHJvbGxpbmdDbGll
bnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVu
dGlmaWVyLCBEb2N1bWVudElkZW50aWZpZXIpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwg
RG9jdW1lbnRJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoRG9jdW1lbnRJ
ZGVudGlmaWVyKSA9IDA7Ci0KLXByb3RlY3RlZDoKLSAgICBXRUJDT1JFX0VYUE9SVCBTV0NsaWVu
dENvbm5lY3Rpb24oKTsKLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgam9iUmVqZWN0ZWRJblNl
cnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBjb25zdCBFeGNlcHRp
b25EYXRhJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWdpc3RyYXRpb25Kb2JSZXNvbHZl
ZEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EYXRhJiYsIFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCk7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCB1bnJlZ2lzdHJhdGlvbkpvYlJlc29sdmVkSW5TZXJ2ZXIoY29u
c3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgYm9vbCB1bnJlZ2lzdHJhdGlvblJl
c3VsdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydFNjcmlwdEZldGNoRm9yU2VydmVy
KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoRG9jdW1lbnRJZGVudGlm
aWVyIGRlc3RpbmF0aW9uQ29udGV4dElkZW50aWZpZXIsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+JiYgbWVzc2FnZSwgU2VydmljZVdvcmtlckRhdGEmJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYg
c291cmNlT3JpZ2luKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVJlZ2lzdHJhdGlv
blN0YXRlKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uU3RhdGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+
Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVXb3JrZXJTdGF0ZShTZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgU2VydmljZVdvcmtlclN0YXRlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGZpcmVVcGRhdGVGb3VuZEV2ZW50KFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlm
aWVyKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG5vdGlmeUNsaWVudHNPZkNvbnRyb2xsZXJD
aGFuZ2UoY29uc3QgSGFzaFNldDxEb2N1bWVudElkZW50aWZpZXI+JiBjb250ZXh0SWRlbnRpZmll
cnMsIFNlcnZpY2VXb3JrZXJEYXRhJiYgbmV3Q29udHJvbGxlcik7Ci0KLXByaXZhdGU6Ci0gICAg
dmlydHVhbCB2b2lkIHNjaGVkdWxlSm9iSW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRh
dGEmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIo
Y29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0JikgPSAwOwotCi0gICAgSGFzaE1hcDxTZXJ2
aWNlV29ya2VySm9iSWRlbnRpZmllciwgUmVmUHRyPFNlcnZpY2VXb3JrZXJKb2I+PiBtX3NjaGVk
dWxlZEpvYnM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXT3JpZ2luU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV09yaWdpblN0b3JlLmNwcAppbmRleCAwNWFlOTk1NTA4YWY1MjNiNjZh
M2ZmNWQxMWFhMzA5ZjdmMmUzNzkzLi4xMjljNjU3NjYyODUxMTMxODZiMTc2ODEyODA2MmUxYzlj
OTE0MDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXT3JpZ2luU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dPcmlnaW5TdG9yZS5jcHAKQEAgLTMzLDYgKzMzLDE0IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorU1dPcmlnaW5TdG9yZTo6U1dPcmlnaW5TdG9yZSgpCit7Cit9CisKK1NXT3Jp
Z2luU3RvcmU6On5TV09yaWdpblN0b3JlKCkKK3sKK30KKwogdm9pZCBTV09yaWdpblN0b3JlOjph
ZGQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKIHsKICAgICArK21fb3JpZ2luQ291bnRz
LmVuc3VyZShvcmlnaW4udG9TdHJpbmcoKSwgWyZdIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV09yaWdpblN0b3JlLmgKaW5kZXggYTkzYWEzZmJh
YjI5YWRlN2NiZjFlZWE4ZTczOWViMjE1NjI4ZWI5Yi4uMTY4MDMzNGQ2ODFlOGZlODQ2ZWUxODY2
MWMxMzg1ZjZlMGQzNzk0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV09yaWdpblN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV09yaWdpblN0b3JlLmgKQEAgLTM2LDcgKzM2LDggQEAgY2xhc3MgU2Vj
dXJpdHlPcmlnaW47CiBjbGFzcyBTV09yaWdpblN0b3JlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5TV09yaWdpblN0b3JlKCkgPSBkZWZhdWx0
OworICAgIFNXT3JpZ2luU3RvcmUoKTsKKyAgICB2aXJ0dWFsIH5TV09yaWdpblN0b3JlKCk7CiAK
ICAgICB2b2lkIGFkZChjb25zdCBTZWN1cml0eU9yaWdpbiYpOwogICAgIHZvaWQgcmVtb3ZlKGNv
bnN0IFNlY3VyaXR5T3JpZ2luJik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328026</attachid>
            <date>2017-11-30 14:15:23 -0800</date>
            <delta_ts>2017-11-30 14:29:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180217-20171130141522.patch</filename>
            <type>text/plain</type>
            <size>42956</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1MzQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjQ4NzRjY2ZiYjM1YmYy
OWQ5OTEzMmNkMTcyNzA0NWE4YTQxODRhNy4uOWQ3MGZiY2RiYzc2YWQzNjJjMTE1NjU0NDVjN2Vh
OGUyNWViMWNkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE3LTExLTMwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBTV0NsaWVudENvbm5l
Y3Rpb24gY2xhc3Mgb3V0IG9mIHNlcnZlci8gZm9sZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAyMTcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIFNXQ2xpZW50Q29ubmVjdGlvbiBjbGFzcyBv
dXQgb2Ygc2VydmVyLyBmb2xkZXIgc2luY2UgdGhlIGNsaWVudCBjb25uZWN0aW9uCisgICAgICAg
IGxpdmVzIGluIHRoZSBXZWJQcm9jZXNzLCBub3QgdGhlIFN0b3JhZ2UgcHJvY2Vzcy4KKworICAg
ICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmNw
cDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dD
bGllbnRDb25uZWN0aW9uLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OlNXQ2xpZW50Q29ubmVjdGlv
bjo6c2NoZWR1bGVKb2IpOgorICAgICAgICAoV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uOjpm
aW5pc2hlZEZldGNoaW5nU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OlNXQ2xpZW50Q29ubmVj
dGlvbjo6ZmFpbGVkRmV0Y2hpbmdTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6U1dDbGllbnRD
b25uZWN0aW9uOjpqb2JSZWplY3RlZEluU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNXQ2xp
ZW50Q29ubmVjdGlvbjo6cmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJblNlcnZlcik6CisgICAgICAg
IChXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb246OnVucmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJ
blNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb246OnN0YXJ0U2Ny
aXB0RmV0Y2hGb3JTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9u
Ojpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpT
V0NsaWVudENvbm5lY3Rpb246OmZvckVhY2hDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U1dDbGllbnRDb25uZWN0aW9uOjp1cGRhdGVSZWdpc3RyYXRpb25TdGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb246OnVwZGF0ZVdvcmtlclN0YXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNXQ2xpZW50Q29ubmVjdGlvbjo6ZmlyZVVwZGF0ZUZvdW5kRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uOjpub3RpZnlDbGllbnRzT2ZDb250cm9s
bGVyQ2hhbmdlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9u
Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
Q2xpZW50Q29ubmVjdGlvbi5oLgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ29udGFpbmVyLmNwcDoKKwogMjAxNy0xMS0zMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiAvIFNXU2VydmVy
V29ya2VyIGRvIG5vdCBuZWVkIHRvIGJlIFRocmVhZFNhZmVSZWZDb3VudGVkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CmluZGV4IDkxZTA0ZTE5MDkzNmNhYjBmMDYyODUyNmE0ZjllYjViOGY5YzhkZWIuLjhhNzQ4ZDY1
MzM1NzkxZjIwZTdlYzI2NzVkOTk5NTUxNDdhMjgxZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yMTc1
LDYgKzIxNzUsNyBAQCB3b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKIHdvcmtlcnMvc2VydmljZS9F
eHRlbmRhYmxlRXZlbnQuY3BwCiB3b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZU1lc3NhZ2VFdmVu
dC5jcHAKIHdvcmtlcnMvc2VydmljZS9GZXRjaEV2ZW50LmNwcAord29ya2Vycy9zZXJ2aWNlL1NX
Q2xpZW50Q29ubmVjdGlvbi5jcHAKIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyLmNwcAog
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuY3BwCiB3b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudERhdGEuY3BwCkBAIC0yMTk5LDcgKzIyMDAsNiBAQCB3b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAogd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAogd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKIAotd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV0Ns
aWVudENvbm5lY3Rpb24uY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXT3JpZ2luU3RvcmUu
Y3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAogd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDE1NzMwNTNlODAzMTE4MTI2ZWY3NWI0
YWIyYjNjYTk3OThiNmQ3YTguLjdiM2MwOTk3ODQwMTIyOWQxYTFmYWFkMDA4MGU0YjgwNTY4ZTEz
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTExNTEsNiArMTE1MSw3IEBACiAJCTQ2RUIzN0NDMUY5N0NDRDIwMEI2NTUyMyAv
KiBKU1NlcnZpY2VXb3JrZXJDbGllbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NkVCMzdDNTFGOTdDQ0NCMDBCNjU1MjMgLyogSlNTZXJ2aWNlV29y
a2VyQ2xpZW50cy5oICovOyB9OwogCQk0NkVCMzdDRTFGOTdDQ0QyMDBCNjU1MjMgLyogSlNTZXJ2
aWNlV29ya2VyV2luZG93Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NkVCMzdDNzFGOTdDQ0NCMDBCNjU1MjMgLyogSlNTZXJ2aWNlV29ya2Vy
V2luZG93Q2xpZW50LmggKi87IH07CiAJCTQ2RUJFQTAyMUI3RDRENjUwMEJFNDk0MSAvKiBDb2xs
ZWN0aW9uVHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NkVCRUEwMTFCN0Q0RDVEMDBCRTQ5NDEgLyogQ29sbGVjdGlvblRyYXZlcnNhbC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2RUNC
NjM4MUZEMEEzQzgwMDg4RTVBRCAvKiBTV0NsaWVudENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RUNCNjM3MUZEMEEzQkIwMDg4RTVB
RCAvKiBTV0NsaWVudENvbm5lY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk0NkVGMTQyQTFGOTdCN0Q4MDBDMkE1MjQgLyogU2VydmljZVdv
cmtlcldpbmRvd0NsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDZFRjE0MjAxRjk3QjdCQTAwQzJBNTI0IC8qIFNlcnZpY2VXb3JrZXJXaW5kb3dD
bGllbnQuaCAqLzsgfTsKIAkJNDZFRjE0MkMxRjk3QjdEODAwQzJBNTI0IC8qIFNlcnZpY2VXb3Jr
ZXJDbGllbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NkVGMTQyMjFGOTdCN0JBMDBDMkE1MjQgLyogU2VydmljZVdvcmtlckNsaWVudHMuaCAqLzsg
fTsKIAkJNDZFRjE0MkQxRjk3QjdEODAwQzJBNTI0IC8qIFNlcnZpY2VXb3JrZXJDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RUYxNDI0MUY5
N0I3QkEwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50LmggKi87IH07CkBAIC0xMzQwLDcg
KzEzNDEsNiBAQAogCQk1MTc0RTIwQTEwQTFGNDRGMDBGOTVFNkYgLyogUG9wU3RhdGVFdmVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3NEUyMDgx
MEExRjQ0RjAwRjk1RTZGIC8qIFBvcFN0YXRlRXZlbnQuaCAqLzsgfTsKIAkJNTE3NzFERkYxQkRC
NDg1MDAwQ0FFOEU0IC8qIE1lbW9yeU9iamVjdFN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTc3MURGRDFCREI0NzU2MDBDQUU4RTQgLyogTWVt
b3J5T2JqZWN0U3RvcmUuaCAqLzsgfTsKIAkJNTE3QTUyRjAxRjQ3NTM1QjAwRENEQzBBIC8qIFNX
U2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTdBNTJFRTFGNDc1MzU5MDBEQ0RDMEEgLyogU1dTZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MTdBNTMxRDFGNEI1M0IxMDBEQ0RDMEEg
LyogU1dDbGllbnRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTdBNTJGRjFGNDc4Q0NFMDBEQ0RDMEEgLyogU1dDbGllbnRDb25uZWN0
aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NTE3QTUzMjkxRjRCOTBCOTAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0E1MzI2
MUY0QjkwQjIwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE3QTUzNDYxRjUw
QzE3RjAwRENEQzBBIC8qIFNXU2VydmVyV29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdBNTM0MjFGNTBDMTYxMDBEQ0RDMEEgLyogU1dTZXJ2
ZXJXb3JrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1MTdBNTM0RjFGNTRBOEJBMDBEQ0RDMEEgLyogU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
N0E1MzRDMUY1NDlENEEwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03Mjc4
LDYgKzcyNzgsOCBAQAogCQk0NkVCMzdDNjFGOTdDQ0NCMDBCNjU1MjMgLyogSlNTZXJ2aWNlV29y
a2VyV2luZG93Q2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ2RUIzN0M3MUY5N0NDQ0IwMEI2NTUyMyAvKiBKU1NlcnZpY2VXb3JrZXJXaW5kb3dD
bGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTZXJ2aWNlV29ya2Vy
V2luZG93Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RUJFQTAxMUI3
RDRENUQwMEJFNDk0MSAvKiBDb2xsZWN0aW9uVHJhdmVyc2FsLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENvbGxlY3Rpb25UcmF2ZXJzYWwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDZFQ0I2MzYxRkQwQTNCQjAwODhFNUFEIC8qIFNXQ2xpZW50Q29ubmVjdGlv
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTV0NsaWVudENvbm5l
Y3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkVDQjYzNzFGRDBBM0JC
MDA4OEU1QUQgLyogU1dDbGllbnRDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNXQ2xpZW50Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NkVGMTQyMDFGOTdCN0JBMDBDMkE1MjQgLyogU2VydmljZVdvcmtlcldpbmRvd0NsaWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VyV2luZG93
Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RUYxNDIxMUY5N0I3QkEw
MEMyQTUyNCAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ2xpZW50cy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2RUYxNDIyMUY5N0I3QkEwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2Vy
Q2xpZW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2Vy
Q2xpZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzY3OSw4ICs3NjgxLDYg
QEAKIAkJNTE3NzFERkQxQkRCNDc1NjAwQ0FFOEU0IC8qIE1lbW9yeU9iamVjdFN0b3JlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeU9iamVjdFN0b3JlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0E1MkVFMUY0NzUzNTkwMERDREMwQSAvKiBTV1Nl
cnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTV1NlcnZlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdBNTJFRjFGNDc1MzU5MDBEQ0RDMEEgLyogU1dT
ZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1dTZXJ2ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTdBNTJGRTFGNDc4Q0NFMDBEQ0RD
MEEgLyogU1dDbGllbnRDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNXQ2xpZW50Q29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTUxN0E1MkZGMUY0NzhDQ0UwMERDREMwQSAvKiBTV0NsaWVudENvbm5lY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1dDbGllbnRDb25uZWN0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0E1MzI0MUY0QjkwNEEwMERDREMwQSAvKiBT
ZXJ2aWNlV29ya2VySm9iRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTZXJ2aWNlV29ya2VySm9iRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxN0E1MzI2MUY0QjkwQjIwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3QTUzMjcxRjRC
OTBCMjAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzEzNSw4ICsxNzEzNSw2IEBA
CiAJCTUxN0E1MkVDMUY0NzUzMkQwMERDREMwQSAvKiBzZXJ2ZXIgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTUxN0E1MkZFMUY0NzhDQ0UwMERDREMwQSAv
KiBTV0NsaWVudENvbm5lY3Rpb24uY3BwICovLAotCQkJCTUxN0E1MkZGMUY0NzhDQ0UwMERDREMw
QSAvKiBTV0NsaWVudENvbm5lY3Rpb24uaCAqLywKIAkJCQk0MTUxRTVCOTFGQkE0Qzc2MDBFNDdF
MkQgLyogU1dPcmlnaW5TdG9yZS5jcHAgKi8sCiAJCQkJNDE1MUU1QjcxRkJBNEM3NTAwRTQ3RTJE
IC8qIFNXT3JpZ2luU3RvcmUuaCAqLywKIAkJCQk1MTdBNTJFRjFGNDc1MzU5MDBEQ0RDMEEgLyog
U1dTZXJ2ZXIuY3BwICovLApAQCAtMTczMjksNiArMTczMjcsOCBAQAogCQkJCTQ2RUYxNDI1MUY5
N0I3QkEwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50LmNwcCAqLywKIAkJCQk0
NkVGMTQyMDFGOTdCN0JBMDBDMkE1MjQgLyogU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5oICov
LAogCQkJCTQ2RUYxNDI2MUY5N0I3QkEwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2VyV2luZG93Q2xp
ZW50LmlkbCAqLywKKwkJCQk0NkVDQjYzNjFGRDBBM0JCMDA4OEU1QUQgLyogU1dDbGllbnRDb25u
ZWN0aW9uLmNwcCAqLywKKwkJCQk0NkVDQjYzNzFGRDBBM0JCMDA4OEU1QUQgLyogU1dDbGllbnRD
b25uZWN0aW9uLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHNlcnZpY2U7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwpAQCAtMjcxOTgsNyArMjcxOTgsNiBAQAogCQkJCUI1MUEyRjNGMTdEN0Qz
QUUwMDcyNTE3QSAvKiBJbWFnZVF1YWxpdHlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0OTI5MUU0QjEzNDE3MkM4MDBFNzUzREUgLyogSW1hZ2VSZW5kZXJpbmdNb2RlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3QzE5M0JDMTFGNUUwRUVEMDA4OEYzRTYgLyogSW1hZ2VTbW9vdGhpbmdR
dWFsaXR5LmggaW4gSGVhZGVycyAqLywKLQkJCQlCMjc1MzU3MTBCMDUzODE0MDAyQ0U2NEYgLyog
SW1hZ2VTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTRCMzQ4MDk0MEVFRjUwRDQwMEFDMUI0
MSAvKiBJbWFnZVNvdXJjZUNHLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NTUwQ0I0MjFFOTU1RTND
MDAxMTFBQTAgLyogSW1hZ2VUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjZGNzU2QjMxQjNC
NjZGNzAwMDVERDc5IC8qIEltbXV0YWJsZU5GQS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTQxOSw3
ICsyOTQxOCw3IEBACiAJCQkJODQ4NTIyOEIxMTkwMTczQzAwNkVEQzdGIC8qIFNWR1ZLZXJuRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBRjYwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R1pvb21BbmRQYW4uaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRTRFQzk4MEQwMEMyMkIwMDQzMjY0
MyAvKiBTVkdab29tRXZlbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxN0E1MzFEMUY0QjUzQjEw
MERDREMwQSAvKiBTV0NsaWVudENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2RUNC
NjM4MUZEMEEzQzgwMDg4RTVBRCAvKiBTV0NsaWVudENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTQ2NjU4REM5MUZBMjRCODcwMEY3REQ1NCAvKiBTV0NvbnRleHRNYW5hZ2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MTUxRTVCQjFGQkE0QzdBMDBFNDdFMkQgLyogU1dPcmlnaW5TdG9y
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3QTUyRjAxRjQ3NTM1QjAwRENEQzBBIC8qIFNXU2Vy
dmVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTAyYWVmZWM0MjJkMjE3
ZjgxYWY0YTg1NzI0YTkzN2VjNWRlNzkzYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsMjA2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNXQ2xpZW50
Q29ubmVjdGlvbi5oIgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25EYXRhLmgiCisjaW5jbHVkZSAiTWVzc2Fn
ZUV2ZW50LmgiCisjaW5jbHVkZSAiTWljcm90YXNrcy5oIgorI2luY2x1ZGUgIlNXQ29udGV4dE1h
bmFnZXIuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgiCisjaW5jbHVkZSAi
U2VydmljZVdvcmtlckZldGNoUmVzdWx0LmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckpvYkRh
dGEuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmgiCisjaW5jbHVkZSA8
d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU1dDbGll
bnRDb25uZWN0aW9uOjpTV0NsaWVudENvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7CisKK1NXQ2xpZW50
Q29ubmVjdGlvbjo6flNXQ2xpZW50Q29ubmVjdGlvbigpID0gZGVmYXVsdDsKKwordm9pZCBTV0Ns
aWVudENvbm5lY3Rpb246OnNjaGVkdWxlSm9iKFNlcnZpY2VXb3JrZXJKb2ImIGpvYikKK3sKKyAg
ICBhdXRvIGFkZFJlc3VsdCA9IG1fc2NoZWR1bGVkSm9icy5hZGQoam9iLmlkZW50aWZpZXIoKSwg
JmpvYik7CisgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5
KTsKKworICAgIHNjaGVkdWxlSm9iSW5TZXJ2ZXIoam9iLmRhdGEoKSk7Cit9CisKK3ZvaWQgU1dD
bGllbnRDb25uZWN0aW9uOjpmaW5pc2hlZEZldGNoaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2Im
IGpvYiwgY29uc3QgU3RyaW5nJiBzY3JpcHQpCit7CisgICAgQVNTRVJUKG1fc2NoZWR1bGVkSm9i
cy5nZXQoam9iLmlkZW50aWZpZXIoKSkgPT0gJmpvYik7CisKKyAgICBmaW5pc2hGZXRjaGluZ1Nj
cmlwdEluU2VydmVyKHsgam9iLmRhdGEoKS5pZGVudGlmaWVyKCksIGpvYi5kYXRhKCkucmVnaXN0
cmF0aW9uS2V5KCksIHNjcmlwdCwgeyB9IH0pOworfQorCit2b2lkIFNXQ2xpZW50Q29ubmVjdGlv
bjo6ZmFpbGVkRmV0Y2hpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYgam9iLCBjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBBU1NFUlQobV9zY2hlZHVsZWRKb2JzLmdldChqb2Iu
aWRlbnRpZmllcigpKSA9PSAmam9iKTsKKworICAgIGZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2
ZXIoeyBqb2IuZGF0YSgpLmlkZW50aWZpZXIoKSwgam9iLmRhdGEoKS5yZWdpc3RyYXRpb25LZXko
KSwgeyB9LCBlcnJvciB9KTsKK30KKwordm9pZCBTV0NsaWVudENvbm5lY3Rpb246OmpvYlJlamVj
dGVkSW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBqb2JEYXRh
SWRlbnRpZmllciwgY29uc3QgRXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uRGF0YSkKK3sKKyAgICBh
dXRvIGpvYiA9IG1fc2NoZWR1bGVkSm9icy50YWtlKGpvYkRhdGFJZGVudGlmaWVyLmpvYklkZW50
aWZpZXIpOworICAgIGlmICgham9iKSB7CisgICAgICAgIExPR19FUlJPUigiSm9iICVzIHJlamVj
dGVkIGZyb20gc2VydmVyLCBidXQgd2FzIG5vdCBmb3VuZCIsIGpvYkRhdGFJZGVudGlmaWVyLmxv
Z2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGpvYi0+ZmFpbGVkV2l0aEV4Y2VwdGlvbihleGNlcHRpb25EYXRhLnRvRXhjZXB0aW9uKCkp
OworfQorCit2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6cmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJ
blNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVu
dGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmIHJlZ2lzdHJhdGlvbkRhdGEs
IFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCBzaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQpCit7Cisg
ICAgYXV0byBqb2IgPSBtX3NjaGVkdWxlZEpvYnMudGFrZShqb2JEYXRhSWRlbnRpZmllci5qb2JJ
ZGVudGlmaWVyKTsKKyAgICBpZiAoIWpvYikgeworICAgICAgICBMT0dfRVJST1IoIkpvYiAlcyBy
ZXNvbHZlZCBpbiBzZXJ2ZXIsIGJ1dCB3YXMgbm90IGZvdW5kIiwgam9iRGF0YUlkZW50aWZpZXIu
bG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgYXV0byBrZXkgPSByZWdpc3RyYXRpb25EYXRhLmtleTsKKyAgICBqb2ItPnJlc29sdmVk
V2l0aFJlZ2lzdHJhdGlvbihXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGEpLCBbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBrZXksIHNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZF0g
eworICAgICAgICBpZiAoc2hvdWxkTm90aWZ5V2hlblJlc29sdmVkID09IFNob3VsZE5vdGlmeVdo
ZW5SZXNvbHZlZDo6WWVzKQorICAgICAgICAgICAgZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21p
c2Uoa2V5KTsKKyAgICB9KTsKK30KKwordm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnVucmVnaXN0
cmF0aW9uSm9iUmVzb2x2ZWRJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50
aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0KQorewor
ICAgIGF1dG8gam9iID0gbV9zY2hlZHVsZWRKb2JzLnRha2Uoam9iRGF0YUlkZW50aWZpZXIuam9i
SWRlbnRpZmllcik7CisgICAgaWYgKCFqb2IpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJKb2IgJXMg
cmVzb2x2ZWQgaW4gc2VydmVyLCBidXQgd2FzIG5vdCBmb3VuZCIsIGpvYkRhdGFJZGVudGlmaWVy
LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGpvYi0+cmVzb2x2ZWRXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHQodW5yZWdpc3RyYXRp
b25SZXN1bHQpOworfQorCit2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6c3RhcnRTY3JpcHRGZXRj
aEZvclNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJ
ZGVudGlmaWVyKQoreworICAgIGF1dG8gam9iID0gbV9zY2hlZHVsZWRKb2JzLmdldChqb2JEYXRh
SWRlbnRpZmllci5qb2JJZGVudGlmaWVyKTsKKyAgICBpZiAoIWpvYikgeworICAgICAgICBMT0df
RVJST1IoIkpvYiAlcyBpbnN0cnVjdGVkIHRvIHN0YXJ0IGZldGNoIGZyb20gc2VydmVyLCBidXQg
am9iIHdhcyBub3QgZm91bmQiLCBqb2JEYXRhSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CisKKyAgICAgICAgLy8gRklYTUU6IFNob3VsZCBtZXNzYWdlIGJhY2sgdG8g
dGhlIHNlcnZlciBoZXJlIHRvIHNpZ25hbCBmYWlsdXJlIHRvIGZldGNoLAorICAgICAgICAvLyBi
dXQgd2UgY3VycmVudGx5IG5lZWQgdGhlIHJlZ2lzdHJhdGlvbiBrZXkgdG8gZG8gc28sIGFuZCBk
b24ndCBoYXZlIGl0IGhlcmUuCisgICAgICAgIC8vIEluIHRoZSBmdXR1cmUgd2UnbGwgcmVmYWN0
b3IgdG8gaGF2ZSBhIGdsb2JhbCwgY3Jvc3MtcHJvY2VzcyBqb2IgaWRlbnRpZmllciB0aGF0IGNh
biBiZSB1c2VkIHRvIG92ZXJjb21lIHRoaXMuCisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGpvYi0+c3RhcnRTY3JpcHRGZXRjaCgpOworfQorCit2b2lkIFNXQ2xpZW50Q29ubmVjdGlv
bjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoRG9jdW1lbnRJZGVudGlmaWVyIGRl
c3RpbmF0aW9uQ29udGV4dElkZW50aWZpZXIsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYg
bWVzc2FnZSwgU2VydmljZVdvcmtlckRhdGEmJiBzb3VyY2VEYXRhLCBjb25zdCBTdHJpbmcmIHNv
dXJjZU9yaWdpbikKK3sKKyAgICAvLyBGSVhNRTogZGVzdGluYXRpb25Db250ZXh0SWRlbnRpZmll
ciBjYW4gb25seSBpZGVudGlmeSBhIERvY3VtZW50IGF0IHRoZSBtb21lbnQuCisgICAgYXV0byog
ZGVzdGluYXRpb25Eb2N1bWVudCA9IERvY3VtZW50OjphbGxEb2N1bWVudHNNYXAoKS5nZXQoZGVz
dGluYXRpb25Db250ZXh0SWRlbnRpZmllcik7CisgICAgaWYgKCFkZXN0aW5hdGlvbkRvY3VtZW50
KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBjb250YWluZXIgPSBkZXN0aW5hdGlvbkRv
Y3VtZW50LT5zZXJ2aWNlV29ya2VyQ29udGFpbmVyKCk7CisgICAgaWYgKCFjb250YWluZXIpCisg
ICAgICAgIHJldHVybjsKKworICAgIE1lc3NhZ2VFdmVudFNvdXJjZSBzb3VyY2UgPSBSZWZQdHI8
U2VydmljZVdvcmtlcj4geyBTZXJ2aWNlV29ya2VyOjpnZXRPckNyZWF0ZSgqZGVzdGluYXRpb25E
b2N1bWVudCwgV1RGTW92ZShzb3VyY2VEYXRhKSkgfTsKKworICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgcGFzcyBpbiBwb3J0cy4KKyAgICBhdXRvIG1lc3NhZ2VFdmVudCA9IE1lc3NhZ2VFdmVudDo6
Y3JlYXRlKHsgfSwgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlT3JpZ2luLCB7IH0sIFdURk1vdmUo
c291cmNlKSk7CisgICAgY29udGFpbmVyLT5kaXNwYXRjaEV2ZW50KG1lc3NhZ2VFdmVudCk7Cit9
CisKK3ZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjp1cGRhdGVSZWdpc3RyYXRpb25TdGF0ZShTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uU3RhdGUgc3RhdGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtl
ckRhdGE+JiBzZXJ2aWNlV29ya2VyRGF0YSkKK3sKKyAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5n
bGV0b24oKS5mb3JFYWNoU2VydmljZVdvcmtlclRocmVhZChbaWRlbnRpZmllciwgc3RhdGUsICZz
ZXJ2aWNlV29ya2VyRGF0YV0gKGF1dG8mIHdvcmtlclRocmVhZCkgeworICAgICAgICB3b3JrZXJU
aHJlYWQudGhyZWFkKCkucnVuTG9vcCgpLnBvc3RUYXNrKFtpZGVudGlmaWVyLCBzdGF0ZSwgc2Vy
dmljZVdvcmtlckRhdGEgPSBjcm9zc1RocmVhZENvcHkoc2VydmljZVdvcmtlckRhdGEpXShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmIChh
dXRvKiBjb250YWluZXIgPSBjb250ZXh0LnNlcnZpY2VXb3JrZXJDb250YWluZXIoKSkKKyAgICAg
ICAgICAgICAgICBjb250YWluZXItPnNjaGVkdWxlVGFza1RvVXBkYXRlUmVnaXN0cmF0aW9uU3Rh
dGUoaWRlbnRpZmllciwgc3RhdGUsIFdURk1vdmUoc2VydmljZVdvcmtlckRhdGEpKTsKKyAgICAg
ICAgfSk7CisgICAgfSk7CisKKyAgICBmb3IgKGF1dG8qIGRvY3VtZW50IDogRG9jdW1lbnQ6OmFs
bERvY3VtZW50cygpKSB7CisgICAgICAgIGlmIChhdXRvKiBjb250YWluZXIgPSBkb2N1bWVudC0+
c2VydmljZVdvcmtlckNvbnRhaW5lcigpKQorICAgICAgICAgICAgY29udGFpbmVyLT5zY2hlZHVs
ZVRhc2tUb1VwZGF0ZVJlZ2lzdHJhdGlvblN0YXRlKGlkZW50aWZpZXIsIHN0YXRlLCBzZXJ2aWNl
V29ya2VyRGF0YSk7CisgICAgfQorfQorCit2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6dXBkYXRl
V29ya2VyU3RhdGUoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgU2VydmljZVdv
cmtlclN0YXRlIHN0YXRlKQoreworICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmZv
ckVhY2hTZXJ2aWNlV29ya2VyVGhyZWFkKFtpZGVudGlmaWVyLCBzdGF0ZV0gKGF1dG8mIHdvcmtl
clRocmVhZCkgeworICAgICAgICB3b3JrZXJUaHJlYWQudGhyZWFkKCkucnVuTG9vcCgpLnBvc3RU
YXNrKFtpZGVudGlmaWVyLCBzdGF0ZV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkg
eworICAgICAgICAgICAgaWYgKGF1dG8qIHNlcnZpY2VXb3JrZXIgPSBjb250ZXh0LnNlcnZpY2VX
b3JrZXIoaWRlbnRpZmllcikpCisgICAgICAgICAgICAgICAgc2VydmljZVdvcmtlci0+c2NoZWR1
bGVUYXNrVG9VcGRhdGVTdGF0ZShzdGF0ZSk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAg
Zm9yIChhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMoKSkgeworICAgICAg
ICBpZiAoYXV0byogc2VydmljZVdvcmtlciA9IGRvY3VtZW50LT5zZXJ2aWNlV29ya2VyKGlkZW50
aWZpZXIpKQorICAgICAgICAgICAgc2VydmljZVdvcmtlci0+c2NoZWR1bGVUYXNrVG9VcGRhdGVT
dGF0ZShzdGF0ZSk7CisgICAgfQorfQorCit2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6ZmlyZVVw
ZGF0ZUZvdW5kRXZlbnQoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgaWRlbnRp
ZmllcikKK3sKKyAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5mb3JFYWNoU2Vydmlj
ZVdvcmtlclRocmVhZChbaWRlbnRpZmllcl0gKGF1dG8mIHdvcmtlclRocmVhZCkgeworICAgICAg
ICB3b3JrZXJUaHJlYWQudGhyZWFkKCkucnVuTG9vcCgpLnBvc3RUYXNrKFtpZGVudGlmaWVyXShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICBpZiAoYXV0byog
Y29udGFpbmVyID0gY29udGV4dC5zZXJ2aWNlV29ya2VyQ29udGFpbmVyKCkpCisgICAgICAgICAg
ICAgICAgY29udGFpbmVyLT5zY2hlZHVsZVRhc2tUb0ZpcmVVcGRhdGVGb3VuZEV2ZW50KGlkZW50
aWZpZXIpOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGZvciAoYXV0byogZG9jdW1lbnQg
OiBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGNvbnRhaW5l
ciA9IGRvY3VtZW50LT5zZXJ2aWNlV29ya2VyQ29udGFpbmVyKCkpCisgICAgICAgICAgICBjb250
YWluZXItPnNjaGVkdWxlVGFza1RvRmlyZVVwZGF0ZUZvdW5kRXZlbnQoaWRlbnRpZmllcik7Cisg
ICAgfQorfQorCit2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6bm90aWZ5Q2xpZW50c09mQ29udHJv
bGxlckNoYW5nZShjb25zdCBIYXNoU2V0PERvY3VtZW50SWRlbnRpZmllcj4mIGNvbnRleHRJZGVu
dGlmaWVycywgU2VydmljZVdvcmtlckRhdGEmJiBuZXdDb250cm9sbGVyKQoreworICAgIEFTU0VS
VCghY29udGV4dElkZW50aWZpZXJzLmlzRW1wdHkoKSk7CisKKyAgICBmb3IgKGF1dG8mIGNsaWVu
dElkZW50aWZpZXIgOiBjb250ZXh0SWRlbnRpZmllcnMpIHsKKyAgICAgICAgLy8gRklYTUU6IFN1
cHBvcnQgd29ya2VyIGNvbnRleHRzLgorICAgICAgICBhdXRvKiBjbGllbnQgPSBEb2N1bWVudDo6
YWxsRG9jdW1lbnRzTWFwKCkuZ2V0KGNsaWVudElkZW50aWZpZXIpOworICAgICAgICBpZiAoIWNs
aWVudCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIEFTU0VSVChjbGllbnQtPmFj
dGl2ZVNlcnZpY2VXb3JrZXIoKSk7CisgICAgICAgIEFTU0VSVChjbGllbnQtPmFjdGl2ZVNlcnZp
Y2VXb3JrZXIoKS0+aWRlbnRpZmllcigpICE9IG5ld0NvbnRyb2xsZXIuaWRlbnRpZmllcik7Cisg
ICAgICAgIGNsaWVudC0+c2V0QWN0aXZlU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VyOjpnZXRP
ckNyZWF0ZSgqY2xpZW50LCBTZXJ2aWNlV29ya2VyRGF0YSB7IG5ld0NvbnRyb2xsZXIgfSkpOwor
ICAgICAgICBpZiAoYXV0byogY29udGFpbmVyID0gY2xpZW50LT5zZXJ2aWNlV29ya2VyQ29udGFp
bmVyKCkpCisgICAgICAgICAgICBjb250YWluZXItPnNjaGVkdWxlVGFza1RvRmlyZUNvbnRyb2xs
ZXJDaGFuZ2VFdmVudCgpOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyYTE3MjFl
YzlkMjk5ZjkyZDYyNWE3YTE3N2ZiNjA3MzhlMWFiODcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmgKQEAgLTAsMCAr
MSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKKworI2luY2x1ZGUgIkRvY3VtZW50SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlNl
cnZpY2VXb3JrZXJKb2IuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyVHlwZXMuaCIKKyNpbmNs
dWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgor
I2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIFJlc291cmNlRXJyb3I7CitjbGFzcyBTZWN1cml0eU9yaWdpbjsKK2NsYXNz
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKK2NsYXNzIFNlcnZpY2VXb3JrZXJDb250YWluZXI7Citj
bGFzcyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOworY2xhc3MgU2hhcmVkQnVmZmVyOworZW51
bSBjbGFzcyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uU3RhdGU7CitlbnVtIGNsYXNzIFNlcnZp
Y2VXb3JrZXJTdGF0ZTsKK2VudW0gY2xhc3MgU2hvdWxkTm90aWZ5V2hlblJlc29sdmVkOworc3Ry
dWN0IEV4Y2VwdGlvbkRhdGE7CitzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudERhdGE7CitzdHJ1
Y3QgU2VydmljZVdvcmtlckRhdGE7CitzdHJ1Y3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0Owor
c3RydWN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhOworCitjbGFzcyBTV0NsaWVudENv
bm5lY3Rpb24gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U1dDbGllbnRDb25uZWN0aW9u
PiB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+U1dDbGllbnRDb25uZWN0
aW9uKCk7CisKKyAgICB1c2luZyBSZWdpc3RyYXRpb25DYWxsYmFjayA9IFdURjo6Q29tcGxldGlv
bkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRh
PiYmKT47CisgICAgdmlydHVhbCB2b2lkIG1hdGNoUmVnaXN0cmF0aW9uKGNvbnN0IFNlY3VyaXR5
T3JpZ2luJiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMLCBSZWdpc3RyYXRpb25DYWxs
YmFjayYmKSA9IDA7CisKKyAgICB1c2luZyBHZXRSZWdpc3RyYXRpb25zQ2FsbGJhY2sgPSBXVEY6
OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
YXRhPiYmKT47CisgICAgdmlydHVhbCB2b2lkIGdldFJlZ2lzdHJhdGlvbnMoY29uc3QgU2VjdXJp
dHlPcmlnaW4mIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwsIEdldFJlZ2lzdHJhdGlv
bnNDYWxsYmFjayYmKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgYWRkU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkluU2VydmVyKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNl
cnZlcihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcikgPSAwOworCisgICAgdm9p
ZCBzY2hlZHVsZUpvYihTZXJ2aWNlV29ya2VySm9iJik7CisgICAgdm9pZCBmaW5pc2hlZEZldGNo
aW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGZh
aWxlZEZldGNoaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImLCBjb25zdCBSZXNvdXJjZUVycm9y
Jik7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoY29u
c3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYpID0gMDsKKworICAgIHZpcnR1YWwgdm9p
ZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4m
JiwgRG9jdW1lbnRJZGVudGlmaWVyIHNvdXJjZUNvbnRleHRJZGVudGlmaWVyLCBTZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YSYmIHNvdXJjZSkgPSAwOworICAgIHZpcnR1YWwgU1dTZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgbWF5SGF2ZVNlcnZpY2VXb3JrZXJSZWdpc3RlcmVkRm9yT3JpZ2luKGNv
bnN0IFNlY3VyaXR5T3JpZ2luJikgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNlcnZp
Y2VXb3JrZXJTdGFydGVkQ29udHJvbGxpbmdDbGllbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIs
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBEb2N1bWVudElkZW50aWZpZXIp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2VydmljZVdvcmtlclN0b3BwZWRDb250cm9sbGluZ0Ns
aWVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIsIERvY3VtZW50SWRlbnRpZmllcikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHJl
Z2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2lu
LCBEb2N1bWVudElkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChEb2N1bWVu
dElkZW50aWZpZXIpID0gMDsKKworcHJvdGVjdGVkOgorICAgIFdFQkNPUkVfRVhQT1JUIFNXQ2xp
ZW50Q29ubmVjdGlvbigpOworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBqb2JSZWplY3RlZElu
U2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIGNvbnN0IEV4Y2Vw
dGlvbkRhdGEmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlZ2lzdHJhdGlvbkpvYlJlc29s
dmVkSW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJiwgU2hvdWxkTm90aWZ5V2hlblJlc29sdmVkKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVucmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJblNlcnZlcihj
b25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBib29sIHVucmVnaXN0cmF0aW9u
UmVzdWx0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2hGb3JTZXJ2
ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChEb2N1bWVudElkZW50
aWZpZXIgZGVzdGluYXRpb25Db250ZXh0SWRlbnRpZmllciwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4mJiBtZXNzYWdlLCBTZXJ2aWNlV29ya2VyRGF0YSYmIHNvdXJjZSwgY29uc3QgU3RyaW5n
JiBzb3VyY2VPcmlnaW4pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlUmVnaXN0cmF0
aW9uU3RhdGUoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25TdGF0ZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0
YT4mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVdvcmtlclN0YXRlKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyU3RhdGUpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZmlyZVVwZGF0ZUZvdW5kRXZlbnQoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50
aWZpZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbm90aWZ5Q2xpZW50c09mQ29udHJvbGxl
ckNoYW5nZShjb25zdCBIYXNoU2V0PERvY3VtZW50SWRlbnRpZmllcj4mIGNvbnRleHRJZGVudGlm
aWVycywgU2VydmljZVdvcmtlckRhdGEmJiBuZXdDb250cm9sbGVyKTsKKworcHJpdmF0ZToKKyAg
ICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVKb2JJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9i
RGF0YSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZl
cihjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmKSA9IDA7CisKKyAgICBIYXNoTWFwPFNl
cnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyLCBSZWZQdHI8U2VydmljZVdvcmtlckpvYj4+IG1fc2No
ZWR1bGVkSm9iczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAppbmRleCAzZjI5YzZiMDAzZTk0
YmY5NTAwYjI4MGNjODBlMjUxMjcwYTlhN2I5Li44YmViMDg2ZjNkOTVhODc3MmI2NmIzOGQ5MDM1
Zjg5ZGJiNmZmNzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKKyNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUg
IkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRlICJJRExUeXBl
cy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV0NsaWVudENvbm5lY3Rpb24uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAxMDJhZWZlYzQyMmQyMTdmODFhZjRhODU3MjRhOTM3ZWM1ZGU3OTNjLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dDbGllbnRDb25uZWN0aW9uLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDIwNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IlNXQ2xpZW50Q29ubmVjdGlvbi5oIgotCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotCi0j
aW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFeGNlcHRpb25EYXRhLmgiCi0jaW5jbHVk
ZSAiTWVzc2FnZUV2ZW50LmgiCi0jaW5jbHVkZSAiTWljcm90YXNrcy5oIgotI2luY2x1ZGUgIlNX
Q29udGV4dE1hbmFnZXIuaCIKLSNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgiCi0j
aW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoUmVzdWx0LmgiCi0jaW5jbHVkZSAiU2VydmljZVdv
cmtlckpvYkRhdGEuaCIKLSNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmgiCi0j
aW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotU1dDbGllbnRDb25uZWN0aW9uOjpTV0NsaWVudENvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7Ci0K
LVNXQ2xpZW50Q29ubmVjdGlvbjo6flNXQ2xpZW50Q29ubmVjdGlvbigpID0gZGVmYXVsdDsKLQot
dm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnNjaGVkdWxlSm9iKFNlcnZpY2VXb3JrZXJKb2ImIGpv
YikKLXsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fc2NoZWR1bGVkSm9icy5hZGQoam9iLmlkZW50
aWZpZXIoKSwgJmpvYik7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5p
c05ld0VudHJ5KTsKLQotICAgIHNjaGVkdWxlSm9iSW5TZXJ2ZXIoam9iLmRhdGEoKSk7Ci19Ci0K
LXZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjpmaW5pc2hlZEZldGNoaW5nU2NyaXB0KFNlcnZpY2VX
b3JrZXJKb2ImIGpvYiwgY29uc3QgU3RyaW5nJiBzY3JpcHQpCi17Ci0gICAgQVNTRVJUKG1fc2No
ZWR1bGVkSm9icy5nZXQoam9iLmlkZW50aWZpZXIoKSkgPT0gJmpvYik7Ci0KLSAgICBmaW5pc2hG
ZXRjaGluZ1NjcmlwdEluU2VydmVyKHsgam9iLmRhdGEoKS5pZGVudGlmaWVyKCksIGpvYi5kYXRh
KCkucmVnaXN0cmF0aW9uS2V5KCksIHNjcmlwdCwgeyB9IH0pOwotfQotCi12b2lkIFNXQ2xpZW50
Q29ubmVjdGlvbjo6ZmFpbGVkRmV0Y2hpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYgam9iLCBj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKLXsKLSAgICBBU1NFUlQobV9zY2hlZHVsZWRKb2Jz
LmdldChqb2IuaWRlbnRpZmllcigpKSA9PSAmam9iKTsKLQotICAgIGZpbmlzaEZldGNoaW5nU2Ny
aXB0SW5TZXJ2ZXIoeyBqb2IuZGF0YSgpLmlkZW50aWZpZXIoKSwgam9iLmRhdGEoKS5yZWdpc3Ry
YXRpb25LZXkoKSwgeyB9LCBlcnJvciB9KTsKLX0KLQotdm9pZCBTV0NsaWVudENvbm5lY3Rpb246
OmpvYlJlamVjdGVkSW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVy
JiBqb2JEYXRhSWRlbnRpZmllciwgY29uc3QgRXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uRGF0YSkK
LXsKLSAgICBhdXRvIGpvYiA9IG1fc2NoZWR1bGVkSm9icy50YWtlKGpvYkRhdGFJZGVudGlmaWVy
LmpvYklkZW50aWZpZXIpOwotICAgIGlmICgham9iKSB7Ci0gICAgICAgIExPR19FUlJPUigiSm9i
ICVzIHJlamVjdGVkIGZyb20gc2VydmVyLCBidXQgd2FzIG5vdCBmb3VuZCIsIGpvYkRhdGFJZGVu
dGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGpvYi0+ZmFpbGVkV2l0aEV4Y2VwdGlvbihleGNlcHRpb25EYXRhLnRvRXhj
ZXB0aW9uKCkpOwotfQotCi12b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6cmVnaXN0cmF0aW9uSm9i
UmVzb2x2ZWRJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpv
YkRhdGFJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmIHJlZ2lzdHJh
dGlvbkRhdGEsIFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCBzaG91bGROb3RpZnlXaGVuUmVzb2x2
ZWQpCi17Ci0gICAgYXV0byBqb2IgPSBtX3NjaGVkdWxlZEpvYnMudGFrZShqb2JEYXRhSWRlbnRp
Zmllci5qb2JJZGVudGlmaWVyKTsKLSAgICBpZiAoIWpvYikgewotICAgICAgICBMT0dfRVJST1Io
IkpvYiAlcyByZXNvbHZlZCBpbiBzZXJ2ZXIsIGJ1dCB3YXMgbm90IGZvdW5kIiwgam9iRGF0YUlk
ZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgYXV0byBrZXkgPSByZWdpc3RyYXRpb25EYXRhLmtleTsKLSAgICBqb2It
PnJlc29sdmVkV2l0aFJlZ2lzdHJhdGlvbihXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGEpLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBrZXksIHNob3VsZE5vdGlmeVdoZW5S
ZXNvbHZlZF0gewotICAgICAgICBpZiAoc2hvdWxkTm90aWZ5V2hlblJlc29sdmVkID09IFNob3Vs
ZE5vdGlmeVdoZW5SZXNvbHZlZDo6WWVzKQotICAgICAgICAgICAgZGlkUmVzb2x2ZVJlZ2lzdHJh
dGlvblByb21pc2Uoa2V5KTsKLSAgICB9KTsKLX0KLQotdm9pZCBTV0NsaWVudENvbm5lY3Rpb246
OnVucmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9i
RGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBib29sIHVucmVnaXN0cmF0aW9uUmVz
dWx0KQotewotICAgIGF1dG8gam9iID0gbV9zY2hlZHVsZWRKb2JzLnRha2Uoam9iRGF0YUlkZW50
aWZpZXIuam9iSWRlbnRpZmllcik7Ci0gICAgaWYgKCFqb2IpIHsKLSAgICAgICAgTE9HX0VSUk9S
KCJKb2IgJXMgcmVzb2x2ZWQgaW4gc2VydmVyLCBidXQgd2FzIG5vdCBmb3VuZCIsIGpvYkRhdGFJ
ZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGpvYi0+cmVzb2x2ZWRXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHQodW5y
ZWdpc3RyYXRpb25SZXN1bHQpOwotfQotCi12b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6c3RhcnRT
Y3JpcHRGZXRjaEZvclNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIm
IGpvYkRhdGFJZGVudGlmaWVyKQotewotICAgIGF1dG8gam9iID0gbV9zY2hlZHVsZWRKb2JzLmdl
dChqb2JEYXRhSWRlbnRpZmllci5qb2JJZGVudGlmaWVyKTsKLSAgICBpZiAoIWpvYikgewotICAg
ICAgICBMT0dfRVJST1IoIkpvYiAlcyBpbnN0cnVjdGVkIHRvIHN0YXJ0IGZldGNoIGZyb20gc2Vy
dmVyLCBidXQgam9iIHdhcyBub3QgZm91bmQiLCBqb2JEYXRhSWRlbnRpZmllci5sb2dnaW5nU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0KLSAgICAgICAgLy8gRklYTUU6IFNob3VsZCBtZXNzYWdl
IGJhY2sgdG8gdGhlIHNlcnZlciBoZXJlIHRvIHNpZ25hbCBmYWlsdXJlIHRvIGZldGNoLAotICAg
ICAgICAvLyBidXQgd2UgY3VycmVudGx5IG5lZWQgdGhlIHJlZ2lzdHJhdGlvbiBrZXkgdG8gZG8g
c28sIGFuZCBkb24ndCBoYXZlIGl0IGhlcmUuCi0gICAgICAgIC8vIEluIHRoZSBmdXR1cmUgd2Un
bGwgcmVmYWN0b3IgdG8gaGF2ZSBhIGdsb2JhbCwgY3Jvc3MtcHJvY2VzcyBqb2IgaWRlbnRpZmll
ciB0aGF0IGNhbiBiZSB1c2VkIHRvIG92ZXJjb21lIHRoaXMuCi0KLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGpvYi0+c3RhcnRTY3JpcHRGZXRjaCgpOwotfQotCi12b2lkIFNXQ2xpZW50
Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoRG9jdW1lbnRJZGVu
dGlmaWVyIGRlc3RpbmF0aW9uQ29udGV4dElkZW50aWZpZXIsIFJlZjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+JiYgbWVzc2FnZSwgU2VydmljZVdvcmtlckRhdGEmJiBzb3VyY2VEYXRhLCBjb25zdCBT
dHJpbmcmIHNvdXJjZU9yaWdpbikKLXsKLSAgICAvLyBGSVhNRTogZGVzdGluYXRpb25Db250ZXh0
SWRlbnRpZmllciBjYW4gb25seSBpZGVudGlmeSBhIERvY3VtZW50IGF0IHRoZSBtb21lbnQuCi0g
ICAgYXV0byogZGVzdGluYXRpb25Eb2N1bWVudCA9IERvY3VtZW50OjphbGxEb2N1bWVudHNNYXAo
KS5nZXQoZGVzdGluYXRpb25Db250ZXh0SWRlbnRpZmllcik7Ci0gICAgaWYgKCFkZXN0aW5hdGlv
bkRvY3VtZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvKiBjb250YWluZXIgPSBkZXN0
aW5hdGlvbkRvY3VtZW50LT5zZXJ2aWNlV29ya2VyQ29udGFpbmVyKCk7Ci0gICAgaWYgKCFjb250
YWluZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIE1lc3NhZ2VFdmVudFNvdXJjZSBzb3VyY2Ug
PSBSZWZQdHI8U2VydmljZVdvcmtlcj4geyBTZXJ2aWNlV29ya2VyOjpnZXRPckNyZWF0ZSgqZGVz
dGluYXRpb25Eb2N1bWVudCwgV1RGTW92ZShzb3VyY2VEYXRhKSkgfTsKLQotICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgcGFzcyBpbiBwb3J0cy4KLSAgICBhdXRvIG1lc3NhZ2VFdmVudCA9IE1lc3Nh
Z2VFdmVudDo6Y3JlYXRlKHsgfSwgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlT3JpZ2luLCB7IH0s
IFdURk1vdmUoc291cmNlKSk7Ci0gICAgY29udGFpbmVyLT5kaXNwYXRjaEV2ZW50KG1lc3NhZ2VF
dmVudCk7Ci19Ci0KLXZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjp1cGRhdGVSZWdpc3RyYXRpb25T
dGF0ZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uU3RhdGUgc3RhdGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2Vy
dmljZVdvcmtlckRhdGE+JiBzZXJ2aWNlV29ya2VyRGF0YSkKLXsKLSAgICBTV0NvbnRleHRNYW5h
Z2VyOjpzaW5nbGV0b24oKS5mb3JFYWNoU2VydmljZVdvcmtlclRocmVhZChbaWRlbnRpZmllciwg
c3RhdGUsICZzZXJ2aWNlV29ya2VyRGF0YV0gKGF1dG8mIHdvcmtlclRocmVhZCkgewotICAgICAg
ICB3b3JrZXJUaHJlYWQudGhyZWFkKCkucnVuTG9vcCgpLnBvc3RUYXNrKFtpZGVudGlmaWVyLCBz
dGF0ZSwgc2VydmljZVdvcmtlckRhdGEgPSBjcm9zc1RocmVhZENvcHkoc2VydmljZVdvcmtlckRh
dGEpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAg
ICAgIGlmIChhdXRvKiBjb250YWluZXIgPSBjb250ZXh0LnNlcnZpY2VXb3JrZXJDb250YWluZXIo
KSkKLSAgICAgICAgICAgICAgICBjb250YWluZXItPnNjaGVkdWxlVGFza1RvVXBkYXRlUmVnaXN0
cmF0aW9uU3RhdGUoaWRlbnRpZmllciwgc3RhdGUsIFdURk1vdmUoc2VydmljZVdvcmtlckRhdGEp
KTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci0KLSAgICBmb3IgKGF1dG8qIGRvY3VtZW50IDogRG9j
dW1lbnQ6OmFsbERvY3VtZW50cygpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBjb250YWluZXIgPSBk
b2N1bWVudC0+c2VydmljZVdvcmtlckNvbnRhaW5lcigpKQotICAgICAgICAgICAgY29udGFpbmVy
LT5zY2hlZHVsZVRhc2tUb1VwZGF0ZVJlZ2lzdHJhdGlvblN0YXRlKGlkZW50aWZpZXIsIHN0YXRl
LCBzZXJ2aWNlV29ya2VyRGF0YSk7Ci0gICAgfQotfQotCi12b2lkIFNXQ2xpZW50Q29ubmVjdGlv
bjo6dXBkYXRlV29ya2VyU3RhdGUoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwg
U2VydmljZVdvcmtlclN0YXRlIHN0YXRlKQotewotICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmds
ZXRvbigpLmZvckVhY2hTZXJ2aWNlV29ya2VyVGhyZWFkKFtpZGVudGlmaWVyLCBzdGF0ZV0gKGF1
dG8mIHdvcmtlclRocmVhZCkgewotICAgICAgICB3b3JrZXJUaHJlYWQudGhyZWFkKCkucnVuTG9v
cCgpLnBvc3RUYXNrKFtpZGVudGlmaWVyLCBzdGF0ZV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkgewotICAgICAgICAgICAgaWYgKGF1dG8qIHNlcnZpY2VXb3JrZXIgPSBjb250ZXh0
LnNlcnZpY2VXb3JrZXIoaWRlbnRpZmllcikpCi0gICAgICAgICAgICAgICAgc2VydmljZVdvcmtl
ci0+c2NoZWR1bGVUYXNrVG9VcGRhdGVTdGF0ZShzdGF0ZSk7Ci0gICAgICAgIH0pOwotICAgIH0p
OwotCi0gICAgZm9yIChhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMoKSkg
ewotICAgICAgICBpZiAoYXV0byogc2VydmljZVdvcmtlciA9IGRvY3VtZW50LT5zZXJ2aWNlV29y
a2VyKGlkZW50aWZpZXIpKQotICAgICAgICAgICAgc2VydmljZVdvcmtlci0+c2NoZWR1bGVUYXNr
VG9VcGRhdGVTdGF0ZShzdGF0ZSk7Ci0gICAgfQotfQotCi12b2lkIFNXQ2xpZW50Q29ubmVjdGlv
bjo6ZmlyZVVwZGF0ZUZvdW5kRXZlbnQoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIgaWRlbnRpZmllcikKLXsKLSAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5mb3JF
YWNoU2VydmljZVdvcmtlclRocmVhZChbaWRlbnRpZmllcl0gKGF1dG8mIHdvcmtlclRocmVhZCkg
ewotICAgICAgICB3b3JrZXJUaHJlYWQudGhyZWFkKCkucnVuTG9vcCgpLnBvc3RUYXNrKFtpZGVu
dGlmaWVyXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBp
ZiAoYXV0byogY29udGFpbmVyID0gY29udGV4dC5zZXJ2aWNlV29ya2VyQ29udGFpbmVyKCkpCi0g
ICAgICAgICAgICAgICAgY29udGFpbmVyLT5zY2hlZHVsZVRhc2tUb0ZpcmVVcGRhdGVGb3VuZEV2
ZW50KGlkZW50aWZpZXIpOwotICAgICAgICB9KTsKLSAgICB9KTsKLQotICAgIGZvciAoYXV0byog
ZG9jdW1lbnQgOiBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkpIHsKLSAgICAgICAgaWYgKGF1dG8q
IGNvbnRhaW5lciA9IGRvY3VtZW50LT5zZXJ2aWNlV29ya2VyQ29udGFpbmVyKCkpCi0gICAgICAg
ICAgICBjb250YWluZXItPnNjaGVkdWxlVGFza1RvRmlyZVVwZGF0ZUZvdW5kRXZlbnQoaWRlbnRp
Zmllcik7Ci0gICAgfQotfQotCi12b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6bm90aWZ5Q2xpZW50
c09mQ29udHJvbGxlckNoYW5nZShjb25zdCBIYXNoU2V0PERvY3VtZW50SWRlbnRpZmllcj4mIGNv
bnRleHRJZGVudGlmaWVycywgU2VydmljZVdvcmtlckRhdGEmJiBuZXdDb250cm9sbGVyKQotewot
ICAgIEFTU0VSVCghY29udGV4dElkZW50aWZpZXJzLmlzRW1wdHkoKSk7Ci0KLSAgICBmb3IgKGF1
dG8mIGNsaWVudElkZW50aWZpZXIgOiBjb250ZXh0SWRlbnRpZmllcnMpIHsKLSAgICAgICAgLy8g
RklYTUU6IFN1cHBvcnQgd29ya2VyIGNvbnRleHRzLgotICAgICAgICBhdXRvKiBjbGllbnQgPSBE
b2N1bWVudDo6YWxsRG9jdW1lbnRzTWFwKCkuZ2V0KGNsaWVudElkZW50aWZpZXIpOwotICAgICAg
ICBpZiAoIWNsaWVudCkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIEFTU0VSVChj
bGllbnQtPmFjdGl2ZVNlcnZpY2VXb3JrZXIoKSk7Ci0gICAgICAgIEFTU0VSVChjbGllbnQtPmFj
dGl2ZVNlcnZpY2VXb3JrZXIoKS0+aWRlbnRpZmllcigpICE9IG5ld0NvbnRyb2xsZXIuaWRlbnRp
Zmllcik7Ci0gICAgICAgIGNsaWVudC0+c2V0QWN0aXZlU2VydmljZVdvcmtlcihTZXJ2aWNlV29y
a2VyOjpnZXRPckNyZWF0ZSgqY2xpZW50LCBTZXJ2aWNlV29ya2VyRGF0YSB7IG5ld0NvbnRyb2xs
ZXIgfSkpOwotICAgICAgICBpZiAoYXV0byogY29udGFpbmVyID0gY2xpZW50LT5zZXJ2aWNlV29y
a2VyQ29udGFpbmVyKCkpCi0gICAgICAgICAgICBjb250YWluZXItPnNjaGVkdWxlVGFza1RvRmly
ZUNvbnRyb2xsZXJDaGFuZ2VFdmVudCgpOwotICAgIH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV0NsaWVudENvbm5lY3Rpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dDbGllbnRDb25uZWN0aW9u
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxMDY3YjQ2OTE2NmIxYjVhYzE2ZjVi
ODUzNmExMTBiMTY0Y2I5YzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV0NsaWVudENv
bm5lY3Rpb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDEwNCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0KLSNpbmNsdWRlICJE
b2N1bWVudElkZW50aWZpZXIuaCIKLSNpbmNsdWRlICJTZXJ2aWNlV29ya2VySm9iLmgiCi0jaW5j
bHVkZSAiU2VydmljZVdvcmtlclR5cGVzLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNp
bmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jbGFzcyBSZXNvdXJjZUVycm9yOwotY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU7Ci1jbGFzcyBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOwotY2xh
c3MgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKLWVudW0g
Y2xhc3MgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblN0YXRlOwotZW51bSBjbGFzcyBTZXJ2aWNl
V29ya2VyU3RhdGU7Ci1lbnVtIGNsYXNzIFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZDsKLXN0cnVj
dCBFeGNlcHRpb25EYXRhOwotc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOwotc3RydWN0
IFNlcnZpY2VXb3JrZXJEYXRhOwotc3RydWN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdDsKLXN0
cnVjdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YTsKLQotY2xhc3MgU1dDbGllbnRDb25u
ZWN0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNXQ2xpZW50Q29ubmVjdGlvbj4g
ewotcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflNXQ2xpZW50Q29ubmVjdGlv
bigpOwotCi0gICAgdXNpbmcgUmVnaXN0cmF0aW9uQ2FsbGJhY2sgPSBXVEY6OkNvbXBsZXRpb25I
YW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YT4m
Jik+OwotICAgIHZpcnR1YWwgdm9pZCBtYXRjaFJlZ2lzdHJhdGlvbihjb25zdCBTZWN1cml0eU9y
aWdpbiYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCwgUmVnaXN0cmF0aW9uQ2FsbGJh
Y2smJikgPSAwOwotCi0gICAgdXNpbmcgR2V0UmVnaXN0cmF0aW9uc0NhbGxiYWNrID0gV1RGOjpD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0
YT4mJik+OwotICAgIHZpcnR1YWwgdm9pZCBnZXRSZWdpc3RyYXRpb25zKGNvbnN0IFNlY3VyaXR5
T3JpZ2luJiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMLCBHZXRSZWdpc3RyYXRpb25z
Q2FsbGJhY2smJikgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIGFkZFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JblNlcnZlcihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcikgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2
ZXIoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpID0gMDsKLQotICAgIHZvaWQg
c2NoZWR1bGVKb2IoU2VydmljZVdvcmtlckpvYiYpOwotICAgIHZvaWQgZmluaXNoZWRGZXRjaGlu
Z1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiwgY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBmYWls
ZWRGZXRjaGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiwgY29uc3QgUmVzb3VyY2VFcnJvciYp
OwotCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKGNvbnN0
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQg
cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBkZXN0aW5hdGlvbklkZW50aWZpZXIsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYs
IERvY3VtZW50SWRlbnRpZmllciBzb3VyY2VDb250ZXh0SWRlbnRpZmllciwgU2VydmljZVdvcmtl
ckNsaWVudERhdGEmJiBzb3VyY2UpID0gMDsKLSAgICB2aXJ0dWFsIFNXU2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdCA9IDA7Ci0gICAg
dmlydHVhbCBib29sIG1heUhhdmVTZXJ2aWNlV29ya2VyUmVnaXN0ZXJlZEZvck9yaWdpbihjb25z
dCBTZWN1cml0eU9yaWdpbiYpIGNvbnN0ID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBzZXJ2aWNl
V29ya2VyU3RhcnRlZENvbnRyb2xsaW5nQ2xpZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgRG9jdW1lbnRJZGVudGlmaWVyKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNlcnZpY2VXb3JrZXJTdG9wcGVkQ29udHJvbGxpbmdDbGll
bnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVu
dGlmaWVyLCBEb2N1bWVudElkZW50aWZpZXIpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwg
RG9jdW1lbnRJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoRG9jdW1lbnRJ
ZGVudGlmaWVyKSA9IDA7Ci0KLXByb3RlY3RlZDoKLSAgICBXRUJDT1JFX0VYUE9SVCBTV0NsaWVu
dENvbm5lY3Rpb24oKTsKLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgam9iUmVqZWN0ZWRJblNl
cnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBjb25zdCBFeGNlcHRp
b25EYXRhJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWdpc3RyYXRpb25Kb2JSZXNvbHZl
ZEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EYXRhJiYsIFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCk7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCB1bnJlZ2lzdHJhdGlvbkpvYlJlc29sdmVkSW5TZXJ2ZXIoY29u
c3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgYm9vbCB1bnJlZ2lzdHJhdGlvblJl
c3VsdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydFNjcmlwdEZldGNoRm9yU2VydmVy
KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoRG9jdW1lbnRJZGVudGlm
aWVyIGRlc3RpbmF0aW9uQ29udGV4dElkZW50aWZpZXIsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+JiYgbWVzc2FnZSwgU2VydmljZVdvcmtlckRhdGEmJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYg
c291cmNlT3JpZ2luKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVJlZ2lzdHJhdGlv
blN0YXRlKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uU3RhdGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+
Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVXb3JrZXJTdGF0ZShTZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgU2VydmljZVdvcmtlclN0YXRlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGZpcmVVcGRhdGVGb3VuZEV2ZW50KFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlm
aWVyKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG5vdGlmeUNsaWVudHNPZkNvbnRyb2xsZXJD
aGFuZ2UoY29uc3QgSGFzaFNldDxEb2N1bWVudElkZW50aWZpZXI+JiBjb250ZXh0SWRlbnRpZmll
cnMsIFNlcnZpY2VXb3JrZXJEYXRhJiYgbmV3Q29udHJvbGxlcik7Ci0KLXByaXZhdGU6Ci0gICAg
dmlydHVhbCB2b2lkIHNjaGVkdWxlSm9iSW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRh
dGEmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIo
Y29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0JikgPSAwOwotCi0gICAgSGFzaE1hcDxTZXJ2
aWNlV29ya2VySm9iSWRlbnRpZmllciwgUmVmUHRyPFNlcnZpY2VXb3JrZXJKb2I+PiBtX3NjaGVk
dWxlZEpvYnM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXT3JpZ2luU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV09yaWdpblN0b3JlLmNwcAppbmRleCAwNWFlOTk1NTA4YWY1MjNiNjZh
M2ZmNWQxMWFhMzA5ZjdmMmUzNzkzLi41ZWE0NWI5NTVkZmY1NzQzMjc1ZDVkMDA3MTlmMmVjMmRk
ODRiODA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXT3JpZ2luU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dPcmlnaW5TdG9yZS5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCiAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXT3JpZ2luU3RvcmUuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5oCmlu
ZGV4IGE5M2FhM2ZiYWIyOWFkZTdjYmYxZWVhOGU3MzllYjIxNTYyOGViOWIuLjkxZjFjY2Q5YjA5
ZDM5ZDhkZDE1YzBhNzBhMzEyY2YzZmI3N2EzMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5oCkBAIC0yOCw2ICsyOCw4
IEBACiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328028</attachid>
            <date>2017-11-30 14:29:42 -0800</date>
            <delta_ts>2017-11-30 15:06:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180217-20171130142941.patch</filename>
            <type>text/plain</type>
            <size>42959</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1MzQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjQ4NzRjY2ZiYjM1YmYy
OWQ5OTEzMmNkMTcyNzA0NWE4YTQxODRhNy4uOWQ3MGZiY2RiYzc2YWQzNjJjMTE1NjU0NDVjN2Vh
OGUyNWViMWNkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE3LTExLTMwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBTV0NsaWVudENvbm5l
Y3Rpb24gY2xhc3Mgb3V0IG9mIHNlcnZlci8gZm9sZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAyMTcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIFNXQ2xpZW50Q29ubmVjdGlvbiBjbGFzcyBv
dXQgb2Ygc2VydmVyLyBmb2xkZXIgc2luY2UgdGhlIGNsaWVudCBjb25uZWN0aW9uCisgICAgICAg
IGxpdmVzIGluIHRoZSBXZWJQcm9jZXNzLCBub3QgdGhlIFN0b3JhZ2UgcHJvY2Vzcy4KKworICAg
ICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmNw
cDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dD
bGllbnRDb25uZWN0aW9uLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OlNXQ2xpZW50Q29ubmVjdGlv
bjo6c2NoZWR1bGVKb2IpOgorICAgICAgICAoV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uOjpm
aW5pc2hlZEZldGNoaW5nU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OlNXQ2xpZW50Q29ubmVj
dGlvbjo6ZmFpbGVkRmV0Y2hpbmdTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6U1dDbGllbnRD
b25uZWN0aW9uOjpqb2JSZWplY3RlZEluU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNXQ2xp
ZW50Q29ubmVjdGlvbjo6cmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJblNlcnZlcik6CisgICAgICAg
IChXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb246OnVucmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJ
blNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb246OnN0YXJ0U2Ny
aXB0RmV0Y2hGb3JTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9u
Ojpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpT
V0NsaWVudENvbm5lY3Rpb246OmZvckVhY2hDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U1dDbGllbnRDb25uZWN0aW9uOjp1cGRhdGVSZWdpc3RyYXRpb25TdGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb246OnVwZGF0ZVdvcmtlclN0YXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNXQ2xpZW50Q29ubmVjdGlvbjo6ZmlyZVVwZGF0ZUZvdW5kRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uOjpub3RpZnlDbGllbnRzT2ZDb250cm9s
bGVyQ2hhbmdlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9u
Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
Q2xpZW50Q29ubmVjdGlvbi5oLgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ29udGFpbmVyLmNwcDoKKwogMjAxNy0xMS0zMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiAvIFNXU2VydmVy
V29ya2VyIGRvIG5vdCBuZWVkIHRvIGJlIFRocmVhZFNhZmVSZWZDb3VudGVkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CmluZGV4IDkxZTA0ZTE5MDkzNmNhYjBmMDYyODUyNmE0ZjllYjViOGY5YzhkZWIuLjhhNzQ4ZDY1
MzM1NzkxZjIwZTdlYzI2NzVkOTk5NTUxNDdhMjgxZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yMTc1
LDYgKzIxNzUsNyBAQCB3b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKIHdvcmtlcnMvc2VydmljZS9F
eHRlbmRhYmxlRXZlbnQuY3BwCiB3b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZU1lc3NhZ2VFdmVu
dC5jcHAKIHdvcmtlcnMvc2VydmljZS9GZXRjaEV2ZW50LmNwcAord29ya2Vycy9zZXJ2aWNlL1NX
Q2xpZW50Q29ubmVjdGlvbi5jcHAKIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyLmNwcAog
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuY3BwCiB3b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudERhdGEuY3BwCkBAIC0yMTk5LDcgKzIyMDAsNiBAQCB3b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAogd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAogd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKIAotd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV0Ns
aWVudENvbm5lY3Rpb24uY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXT3JpZ2luU3RvcmUu
Y3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAogd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDE1NzMwNTNlODAzMTE4MTI2ZWY3NWI0
YWIyYjNjYTk3OThiNmQ3YTguLjdiM2MwOTk3ODQwMTIyOWQxYTFmYWFkMDA4MGU0YjgwNTY4ZTEz
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTExNTEsNiArMTE1MSw3IEBACiAJCTQ2RUIzN0NDMUY5N0NDRDIwMEI2NTUyMyAv
KiBKU1NlcnZpY2VXb3JrZXJDbGllbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NkVCMzdDNTFGOTdDQ0NCMDBCNjU1MjMgLyogSlNTZXJ2aWNlV29y
a2VyQ2xpZW50cy5oICovOyB9OwogCQk0NkVCMzdDRTFGOTdDQ0QyMDBCNjU1MjMgLyogSlNTZXJ2
aWNlV29ya2VyV2luZG93Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NkVCMzdDNzFGOTdDQ0NCMDBCNjU1MjMgLyogSlNTZXJ2aWNlV29ya2Vy
V2luZG93Q2xpZW50LmggKi87IH07CiAJCTQ2RUJFQTAyMUI3RDRENjUwMEJFNDk0MSAvKiBDb2xs
ZWN0aW9uVHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NkVCRUEwMTFCN0Q0RDVEMDBCRTQ5NDEgLyogQ29sbGVjdGlvblRyYXZlcnNhbC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2RUNC
NjM4MUZEMEEzQzgwMDg4RTVBRCAvKiBTV0NsaWVudENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RUNCNjM3MUZEMEEzQkIwMDg4RTVB
RCAvKiBTV0NsaWVudENvbm5lY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk0NkVGMTQyQTFGOTdCN0Q4MDBDMkE1MjQgLyogU2VydmljZVdv
cmtlcldpbmRvd0NsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDZFRjE0MjAxRjk3QjdCQTAwQzJBNTI0IC8qIFNlcnZpY2VXb3JrZXJXaW5kb3dD
bGllbnQuaCAqLzsgfTsKIAkJNDZFRjE0MkMxRjk3QjdEODAwQzJBNTI0IC8qIFNlcnZpY2VXb3Jr
ZXJDbGllbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NkVGMTQyMjFGOTdCN0JBMDBDMkE1MjQgLyogU2VydmljZVdvcmtlckNsaWVudHMuaCAqLzsg
fTsKIAkJNDZFRjE0MkQxRjk3QjdEODAwQzJBNTI0IC8qIFNlcnZpY2VXb3JrZXJDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RUYxNDI0MUY5
N0I3QkEwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50LmggKi87IH07CkBAIC0xMzQwLDcg
KzEzNDEsNiBAQAogCQk1MTc0RTIwQTEwQTFGNDRGMDBGOTVFNkYgLyogUG9wU3RhdGVFdmVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3NEUyMDgx
MEExRjQ0RjAwRjk1RTZGIC8qIFBvcFN0YXRlRXZlbnQuaCAqLzsgfTsKIAkJNTE3NzFERkYxQkRC
NDg1MDAwQ0FFOEU0IC8qIE1lbW9yeU9iamVjdFN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTc3MURGRDFCREI0NzU2MDBDQUU4RTQgLyogTWVt
b3J5T2JqZWN0U3RvcmUuaCAqLzsgfTsKIAkJNTE3QTUyRjAxRjQ3NTM1QjAwRENEQzBBIC8qIFNX
U2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTdBNTJFRTFGNDc1MzU5MDBEQ0RDMEEgLyogU1dTZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MTdBNTMxRDFGNEI1M0IxMDBEQ0RDMEEg
LyogU1dDbGllbnRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTdBNTJGRjFGNDc4Q0NFMDBEQ0RDMEEgLyogU1dDbGllbnRDb25uZWN0
aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NTE3QTUzMjkxRjRCOTBCOTAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0E1MzI2
MUY0QjkwQjIwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE3QTUzNDYxRjUw
QzE3RjAwRENEQzBBIC8qIFNXU2VydmVyV29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdBNTM0MjFGNTBDMTYxMDBEQ0RDMEEgLyogU1dTZXJ2
ZXJXb3JrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1MTdBNTM0RjFGNTRBOEJBMDBEQ0RDMEEgLyogU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
N0E1MzRDMUY1NDlENEEwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03Mjc4
LDYgKzcyNzgsOCBAQAogCQk0NkVCMzdDNjFGOTdDQ0NCMDBCNjU1MjMgLyogSlNTZXJ2aWNlV29y
a2VyV2luZG93Q2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ2RUIzN0M3MUY5N0NDQ0IwMEI2NTUyMyAvKiBKU1NlcnZpY2VXb3JrZXJXaW5kb3dD
bGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTZXJ2aWNlV29ya2Vy
V2luZG93Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RUJFQTAxMUI3
RDRENUQwMEJFNDk0MSAvKiBDb2xsZWN0aW9uVHJhdmVyc2FsLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENvbGxlY3Rpb25UcmF2ZXJzYWwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDZFQ0I2MzYxRkQwQTNCQjAwODhFNUFEIC8qIFNXQ2xpZW50Q29ubmVjdGlv
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTV0NsaWVudENvbm5l
Y3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkVDQjYzNzFGRDBBM0JC
MDA4OEU1QUQgLyogU1dDbGllbnRDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNXQ2xpZW50Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NkVGMTQyMDFGOTdCN0JBMDBDMkE1MjQgLyogU2VydmljZVdvcmtlcldpbmRvd0NsaWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VyV2luZG93
Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RUYxNDIxMUY5N0I3QkEw
MEMyQTUyNCAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ2xpZW50cy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2RUYxNDIyMUY5N0I3QkEwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2Vy
Q2xpZW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2Vy
Q2xpZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzY3OSw4ICs3NjgxLDYg
QEAKIAkJNTE3NzFERkQxQkRCNDc1NjAwQ0FFOEU0IC8qIE1lbW9yeU9iamVjdFN0b3JlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeU9iamVjdFN0b3JlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0E1MkVFMUY0NzUzNTkwMERDREMwQSAvKiBTV1Nl
cnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTV1NlcnZlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdBNTJFRjFGNDc1MzU5MDBEQ0RDMEEgLyogU1dT
ZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1dTZXJ2ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTdBNTJGRTFGNDc4Q0NFMDBEQ0RD
MEEgLyogU1dDbGllbnRDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNXQ2xpZW50Q29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTUxN0E1MkZGMUY0NzhDQ0UwMERDREMwQSAvKiBTV0NsaWVudENvbm5lY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1dDbGllbnRDb25uZWN0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0E1MzI0MUY0QjkwNEEwMERDREMwQSAvKiBT
ZXJ2aWNlV29ya2VySm9iRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTZXJ2aWNlV29ya2VySm9iRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxN0E1MzI2MUY0QjkwQjIwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3QTUzMjcxRjRC
OTBCMjAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzEzNSw4ICsxNzEzNSw2IEBA
CiAJCTUxN0E1MkVDMUY0NzUzMkQwMERDREMwQSAvKiBzZXJ2ZXIgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTUxN0E1MkZFMUY0NzhDQ0UwMERDREMwQSAv
KiBTV0NsaWVudENvbm5lY3Rpb24uY3BwICovLAotCQkJCTUxN0E1MkZGMUY0NzhDQ0UwMERDREMw
QSAvKiBTV0NsaWVudENvbm5lY3Rpb24uaCAqLywKIAkJCQk0MTUxRTVCOTFGQkE0Qzc2MDBFNDdF
MkQgLyogU1dPcmlnaW5TdG9yZS5jcHAgKi8sCiAJCQkJNDE1MUU1QjcxRkJBNEM3NTAwRTQ3RTJE
IC8qIFNXT3JpZ2luU3RvcmUuaCAqLywKIAkJCQk1MTdBNTJFRjFGNDc1MzU5MDBEQ0RDMEEgLyog
U1dTZXJ2ZXIuY3BwICovLApAQCAtMTczMjksNiArMTczMjcsOCBAQAogCQkJCTQ2RUYxNDI1MUY5
N0I3QkEwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50LmNwcCAqLywKIAkJCQk0
NkVGMTQyMDFGOTdCN0JBMDBDMkE1MjQgLyogU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5oICov
LAogCQkJCTQ2RUYxNDI2MUY5N0I3QkEwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2VyV2luZG93Q2xp
ZW50LmlkbCAqLywKKwkJCQk0NkVDQjYzNjFGRDBBM0JCMDA4OEU1QUQgLyogU1dDbGllbnRDb25u
ZWN0aW9uLmNwcCAqLywKKwkJCQk0NkVDQjYzNzFGRDBBM0JCMDA4OEU1QUQgLyogU1dDbGllbnRD
b25uZWN0aW9uLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHNlcnZpY2U7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwpAQCAtMjcxOTgsNyArMjcxOTgsNiBAQAogCQkJCUI1MUEyRjNGMTdEN0Qz
QUUwMDcyNTE3QSAvKiBJbWFnZVF1YWxpdHlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0OTI5MUU0QjEzNDE3MkM4MDBFNzUzREUgLyogSW1hZ2VSZW5kZXJpbmdNb2RlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3QzE5M0JDMTFGNUUwRUVEMDA4OEYzRTYgLyogSW1hZ2VTbW9vdGhpbmdR
dWFsaXR5LmggaW4gSGVhZGVycyAqLywKLQkJCQlCMjc1MzU3MTBCMDUzODE0MDAyQ0U2NEYgLyog
SW1hZ2VTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTRCMzQ4MDk0MEVFRjUwRDQwMEFDMUI0
MSAvKiBJbWFnZVNvdXJjZUNHLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NTUwQ0I0MjFFOTU1RTND
MDAxMTFBQTAgLyogSW1hZ2VUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjZGNzU2QjMxQjNC
NjZGNzAwMDVERDc5IC8qIEltbXV0YWJsZU5GQS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTQxOSw3
ICsyOTQxOCw3IEBACiAJCQkJODQ4NTIyOEIxMTkwMTczQzAwNkVEQzdGIC8qIFNWR1ZLZXJuRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBRjYwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R1pvb21BbmRQYW4uaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRTRFQzk4MEQwMEMyMkIwMDQzMjY0
MyAvKiBTVkdab29tRXZlbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxN0E1MzFEMUY0QjUzQjEw
MERDREMwQSAvKiBTV0NsaWVudENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2RUNC
NjM4MUZEMEEzQzgwMDg4RTVBRCAvKiBTV0NsaWVudENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTQ2NjU4REM5MUZBMjRCODcwMEY3REQ1NCAvKiBTV0NvbnRleHRNYW5hZ2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MTUxRTVCQjFGQkE0QzdBMDBFNDdFMkQgLyogU1dPcmlnaW5TdG9y
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3QTUyRjAxRjQ3NTM1QjAwRENEQzBBIC8qIFNXU2Vy
dmVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTAyYWVmZWM0MjJkMjE3
ZjgxYWY0YTg1NzI0YTkzN2VjNWRlNzkzYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsMjA2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNXQ2xpZW50
Q29ubmVjdGlvbi5oIgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25EYXRhLmgiCisjaW5jbHVkZSAiTWVzc2Fn
ZUV2ZW50LmgiCisjaW5jbHVkZSAiTWljcm90YXNrcy5oIgorI2luY2x1ZGUgIlNXQ29udGV4dE1h
bmFnZXIuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgiCisjaW5jbHVkZSAi
U2VydmljZVdvcmtlckZldGNoUmVzdWx0LmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckpvYkRh
dGEuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmgiCisjaW5jbHVkZSA8
d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU1dDbGll
bnRDb25uZWN0aW9uOjpTV0NsaWVudENvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7CisKK1NXQ2xpZW50
Q29ubmVjdGlvbjo6flNXQ2xpZW50Q29ubmVjdGlvbigpID0gZGVmYXVsdDsKKwordm9pZCBTV0Ns
aWVudENvbm5lY3Rpb246OnNjaGVkdWxlSm9iKFNlcnZpY2VXb3JrZXJKb2ImIGpvYikKK3sKKyAg
ICBhdXRvIGFkZFJlc3VsdCA9IG1fc2NoZWR1bGVkSm9icy5hZGQoam9iLmlkZW50aWZpZXIoKSwg
JmpvYik7CisgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5
KTsKKworICAgIHNjaGVkdWxlSm9iSW5TZXJ2ZXIoam9iLmRhdGEoKSk7Cit9CisKK3ZvaWQgU1dD
bGllbnRDb25uZWN0aW9uOjpmaW5pc2hlZEZldGNoaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2Im
IGpvYiwgY29uc3QgU3RyaW5nJiBzY3JpcHQpCit7CisgICAgQVNTRVJUKG1fc2NoZWR1bGVkSm9i
cy5nZXQoam9iLmlkZW50aWZpZXIoKSkgPT0gJmpvYik7CisKKyAgICBmaW5pc2hGZXRjaGluZ1Nj
cmlwdEluU2VydmVyKHsgam9iLmRhdGEoKS5pZGVudGlmaWVyKCksIGpvYi5kYXRhKCkucmVnaXN0
cmF0aW9uS2V5KCksIHNjcmlwdCwgeyB9IH0pOworfQorCit2b2lkIFNXQ2xpZW50Q29ubmVjdGlv
bjo6ZmFpbGVkRmV0Y2hpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYgam9iLCBjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBBU1NFUlQobV9zY2hlZHVsZWRKb2JzLmdldChqb2Iu
aWRlbnRpZmllcigpKSA9PSAmam9iKTsKKworICAgIGZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2
ZXIoeyBqb2IuZGF0YSgpLmlkZW50aWZpZXIoKSwgam9iLmRhdGEoKS5yZWdpc3RyYXRpb25LZXko
KSwgeyB9LCBlcnJvciB9KTsKK30KKwordm9pZCBTV0NsaWVudENvbm5lY3Rpb246OmpvYlJlamVj
dGVkSW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBqb2JEYXRh
SWRlbnRpZmllciwgY29uc3QgRXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uRGF0YSkKK3sKKyAgICBh
dXRvIGpvYiA9IG1fc2NoZWR1bGVkSm9icy50YWtlKGpvYkRhdGFJZGVudGlmaWVyLmpvYklkZW50
aWZpZXIpOworICAgIGlmICgham9iKSB7CisgICAgICAgIExPR19FUlJPUigiSm9iICVzIHJlamVj
dGVkIGZyb20gc2VydmVyLCBidXQgd2FzIG5vdCBmb3VuZCIsIGpvYkRhdGFJZGVudGlmaWVyLmxv
Z2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGpvYi0+ZmFpbGVkV2l0aEV4Y2VwdGlvbihleGNlcHRpb25EYXRhLnRvRXhjZXB0aW9uKCkp
OworfQorCit2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6cmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJ
blNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVu
dGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmIHJlZ2lzdHJhdGlvbkRhdGEs
IFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCBzaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQpCit7Cisg
ICAgYXV0byBqb2IgPSBtX3NjaGVkdWxlZEpvYnMudGFrZShqb2JEYXRhSWRlbnRpZmllci5qb2JJ
ZGVudGlmaWVyKTsKKyAgICBpZiAoIWpvYikgeworICAgICAgICBMT0dfRVJST1IoIkpvYiAlcyBy
ZXNvbHZlZCBpbiBzZXJ2ZXIsIGJ1dCB3YXMgbm90IGZvdW5kIiwgam9iRGF0YUlkZW50aWZpZXIu
bG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgYXV0byBrZXkgPSByZWdpc3RyYXRpb25EYXRhLmtleTsKKyAgICBqb2ItPnJlc29sdmVk
V2l0aFJlZ2lzdHJhdGlvbihXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGEpLCBbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBrZXksIHNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZF0g
eworICAgICAgICBpZiAoc2hvdWxkTm90aWZ5V2hlblJlc29sdmVkID09IFNob3VsZE5vdGlmeVdo
ZW5SZXNvbHZlZDo6WWVzKQorICAgICAgICAgICAgZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21p
c2Uoa2V5KTsKKyAgICB9KTsKK30KKwordm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnVucmVnaXN0
cmF0aW9uSm9iUmVzb2x2ZWRJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50
aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0KQorewor
ICAgIGF1dG8gam9iID0gbV9zY2hlZHVsZWRKb2JzLnRha2Uoam9iRGF0YUlkZW50aWZpZXIuam9i
SWRlbnRpZmllcik7CisgICAgaWYgKCFqb2IpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJKb2IgJXMg
cmVzb2x2ZWQgaW4gc2VydmVyLCBidXQgd2FzIG5vdCBmb3VuZCIsIGpvYkRhdGFJZGVudGlmaWVy
LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGpvYi0+cmVzb2x2ZWRXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHQodW5yZWdpc3RyYXRp
b25SZXN1bHQpOworfQorCit2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6c3RhcnRTY3JpcHRGZXRj
aEZvclNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJ
ZGVudGlmaWVyKQoreworICAgIGF1dG8gam9iID0gbV9zY2hlZHVsZWRKb2JzLmdldChqb2JEYXRh
SWRlbnRpZmllci5qb2JJZGVudGlmaWVyKTsKKyAgICBpZiAoIWpvYikgeworICAgICAgICBMT0df
RVJST1IoIkpvYiAlcyBpbnN0cnVjdGVkIHRvIHN0YXJ0IGZldGNoIGZyb20gc2VydmVyLCBidXQg
am9iIHdhcyBub3QgZm91bmQiLCBqb2JEYXRhSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CisKKyAgICAgICAgLy8gRklYTUU6IFNob3VsZCBtZXNzYWdlIGJhY2sgdG8g
dGhlIHNlcnZlciBoZXJlIHRvIHNpZ25hbCBmYWlsdXJlIHRvIGZldGNoLAorICAgICAgICAvLyBi
dXQgd2UgY3VycmVudGx5IG5lZWQgdGhlIHJlZ2lzdHJhdGlvbiBrZXkgdG8gZG8gc28sIGFuZCBk
b24ndCBoYXZlIGl0IGhlcmUuCisgICAgICAgIC8vIEluIHRoZSBmdXR1cmUgd2UnbGwgcmVmYWN0
b3IgdG8gaGF2ZSBhIGdsb2JhbCwgY3Jvc3MtcHJvY2VzcyBqb2IgaWRlbnRpZmllciB0aGF0IGNh
biBiZSB1c2VkIHRvIG92ZXJjb21lIHRoaXMuCisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGpvYi0+c3RhcnRTY3JpcHRGZXRjaCgpOworfQorCit2b2lkIFNXQ2xpZW50Q29ubmVjdGlv
bjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoRG9jdW1lbnRJZGVudGlmaWVyIGRl
c3RpbmF0aW9uQ29udGV4dElkZW50aWZpZXIsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYg
bWVzc2FnZSwgU2VydmljZVdvcmtlckRhdGEmJiBzb3VyY2VEYXRhLCBjb25zdCBTdHJpbmcmIHNv
dXJjZU9yaWdpbikKK3sKKyAgICAvLyBGSVhNRTogZGVzdGluYXRpb25Db250ZXh0SWRlbnRpZmll
ciBjYW4gb25seSBpZGVudGlmeSBhIERvY3VtZW50IGF0IHRoZSBtb21lbnQuCisgICAgYXV0byog
ZGVzdGluYXRpb25Eb2N1bWVudCA9IERvY3VtZW50OjphbGxEb2N1bWVudHNNYXAoKS5nZXQoZGVz
dGluYXRpb25Db250ZXh0SWRlbnRpZmllcik7CisgICAgaWYgKCFkZXN0aW5hdGlvbkRvY3VtZW50
KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBjb250YWluZXIgPSBkZXN0aW5hdGlvbkRv
Y3VtZW50LT5zZXJ2aWNlV29ya2VyQ29udGFpbmVyKCk7CisgICAgaWYgKCFjb250YWluZXIpCisg
ICAgICAgIHJldHVybjsKKworICAgIE1lc3NhZ2VFdmVudFNvdXJjZSBzb3VyY2UgPSBSZWZQdHI8
U2VydmljZVdvcmtlcj4geyBTZXJ2aWNlV29ya2VyOjpnZXRPckNyZWF0ZSgqZGVzdGluYXRpb25E
b2N1bWVudCwgV1RGTW92ZShzb3VyY2VEYXRhKSkgfTsKKworICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgcGFzcyBpbiBwb3J0cy4KKyAgICBhdXRvIG1lc3NhZ2VFdmVudCA9IE1lc3NhZ2VFdmVudDo6
Y3JlYXRlKHsgfSwgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlT3JpZ2luLCB7IH0sIFdURk1vdmUo
c291cmNlKSk7CisgICAgY29udGFpbmVyLT5kaXNwYXRjaEV2ZW50KG1lc3NhZ2VFdmVudCk7Cit9
CisKK3ZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjp1cGRhdGVSZWdpc3RyYXRpb25TdGF0ZShTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uU3RhdGUgc3RhdGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtl
ckRhdGE+JiBzZXJ2aWNlV29ya2VyRGF0YSkKK3sKKyAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5n
bGV0b24oKS5mb3JFYWNoU2VydmljZVdvcmtlclRocmVhZChbaWRlbnRpZmllciwgc3RhdGUsICZz
ZXJ2aWNlV29ya2VyRGF0YV0gKGF1dG8mIHdvcmtlclRocmVhZCkgeworICAgICAgICB3b3JrZXJU
aHJlYWQudGhyZWFkKCkucnVuTG9vcCgpLnBvc3RUYXNrKFtpZGVudGlmaWVyLCBzdGF0ZSwgc2Vy
dmljZVdvcmtlckRhdGEgPSBjcm9zc1RocmVhZENvcHkoc2VydmljZVdvcmtlckRhdGEpXShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmIChh
dXRvKiBjb250YWluZXIgPSBjb250ZXh0LnNlcnZpY2VXb3JrZXJDb250YWluZXIoKSkKKyAgICAg
ICAgICAgICAgICBjb250YWluZXItPnNjaGVkdWxlVGFza1RvVXBkYXRlUmVnaXN0cmF0aW9uU3Rh
dGUoaWRlbnRpZmllciwgc3RhdGUsIFdURk1vdmUoc2VydmljZVdvcmtlckRhdGEpKTsKKyAgICAg
ICAgfSk7CisgICAgfSk7CisKKyAgICBmb3IgKGF1dG8qIGRvY3VtZW50IDogRG9jdW1lbnQ6OmFs
bERvY3VtZW50cygpKSB7CisgICAgICAgIGlmIChhdXRvKiBjb250YWluZXIgPSBkb2N1bWVudC0+
c2VydmljZVdvcmtlckNvbnRhaW5lcigpKQorICAgICAgICAgICAgY29udGFpbmVyLT5zY2hlZHVs
ZVRhc2tUb1VwZGF0ZVJlZ2lzdHJhdGlvblN0YXRlKGlkZW50aWZpZXIsIHN0YXRlLCBzZXJ2aWNl
V29ya2VyRGF0YSk7CisgICAgfQorfQorCit2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6dXBkYXRl
V29ya2VyU3RhdGUoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgU2VydmljZVdv
cmtlclN0YXRlIHN0YXRlKQoreworICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmZv
ckVhY2hTZXJ2aWNlV29ya2VyVGhyZWFkKFtpZGVudGlmaWVyLCBzdGF0ZV0gKGF1dG8mIHdvcmtl
clRocmVhZCkgeworICAgICAgICB3b3JrZXJUaHJlYWQudGhyZWFkKCkucnVuTG9vcCgpLnBvc3RU
YXNrKFtpZGVudGlmaWVyLCBzdGF0ZV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkg
eworICAgICAgICAgICAgaWYgKGF1dG8qIHNlcnZpY2VXb3JrZXIgPSBjb250ZXh0LnNlcnZpY2VX
b3JrZXIoaWRlbnRpZmllcikpCisgICAgICAgICAgICAgICAgc2VydmljZVdvcmtlci0+c2NoZWR1
bGVUYXNrVG9VcGRhdGVTdGF0ZShzdGF0ZSk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAg
Zm9yIChhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMoKSkgeworICAgICAg
ICBpZiAoYXV0byogc2VydmljZVdvcmtlciA9IGRvY3VtZW50LT5zZXJ2aWNlV29ya2VyKGlkZW50
aWZpZXIpKQorICAgICAgICAgICAgc2VydmljZVdvcmtlci0+c2NoZWR1bGVUYXNrVG9VcGRhdGVT
dGF0ZShzdGF0ZSk7CisgICAgfQorfQorCit2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6ZmlyZVVw
ZGF0ZUZvdW5kRXZlbnQoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgaWRlbnRp
ZmllcikKK3sKKyAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5mb3JFYWNoU2Vydmlj
ZVdvcmtlclRocmVhZChbaWRlbnRpZmllcl0gKGF1dG8mIHdvcmtlclRocmVhZCkgeworICAgICAg
ICB3b3JrZXJUaHJlYWQudGhyZWFkKCkucnVuTG9vcCgpLnBvc3RUYXNrKFtpZGVudGlmaWVyXShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICBpZiAoYXV0byog
Y29udGFpbmVyID0gY29udGV4dC5zZXJ2aWNlV29ya2VyQ29udGFpbmVyKCkpCisgICAgICAgICAg
ICAgICAgY29udGFpbmVyLT5zY2hlZHVsZVRhc2tUb0ZpcmVVcGRhdGVGb3VuZEV2ZW50KGlkZW50
aWZpZXIpOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGZvciAoYXV0byogZG9jdW1lbnQg
OiBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGNvbnRhaW5l
ciA9IGRvY3VtZW50LT5zZXJ2aWNlV29ya2VyQ29udGFpbmVyKCkpCisgICAgICAgICAgICBjb250
YWluZXItPnNjaGVkdWxlVGFza1RvRmlyZVVwZGF0ZUZvdW5kRXZlbnQoaWRlbnRpZmllcik7Cisg
ICAgfQorfQorCit2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6bm90aWZ5Q2xpZW50c09mQ29udHJv
bGxlckNoYW5nZShjb25zdCBIYXNoU2V0PERvY3VtZW50SWRlbnRpZmllcj4mIGNvbnRleHRJZGVu
dGlmaWVycywgU2VydmljZVdvcmtlckRhdGEmJiBuZXdDb250cm9sbGVyKQoreworICAgIEFTU0VS
VCghY29udGV4dElkZW50aWZpZXJzLmlzRW1wdHkoKSk7CisKKyAgICBmb3IgKGF1dG8mIGNsaWVu
dElkZW50aWZpZXIgOiBjb250ZXh0SWRlbnRpZmllcnMpIHsKKyAgICAgICAgLy8gRklYTUU6IFN1
cHBvcnQgd29ya2VyIGNvbnRleHRzLgorICAgICAgICBhdXRvKiBjbGllbnQgPSBEb2N1bWVudDo6
YWxsRG9jdW1lbnRzTWFwKCkuZ2V0KGNsaWVudElkZW50aWZpZXIpOworICAgICAgICBpZiAoIWNs
aWVudCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIEFTU0VSVChjbGllbnQtPmFj
dGl2ZVNlcnZpY2VXb3JrZXIoKSk7CisgICAgICAgIEFTU0VSVChjbGllbnQtPmFjdGl2ZVNlcnZp
Y2VXb3JrZXIoKS0+aWRlbnRpZmllcigpICE9IG5ld0NvbnRyb2xsZXIuaWRlbnRpZmllcik7Cisg
ICAgICAgIGNsaWVudC0+c2V0QWN0aXZlU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VyOjpnZXRP
ckNyZWF0ZSgqY2xpZW50LCBTZXJ2aWNlV29ya2VyRGF0YSB7IG5ld0NvbnRyb2xsZXIgfSkpOwor
ICAgICAgICBpZiAoYXV0byogY29udGFpbmVyID0gY2xpZW50LT5zZXJ2aWNlV29ya2VyQ29udGFp
bmVyKCkpCisgICAgICAgICAgICBjb250YWluZXItPnNjaGVkdWxlVGFza1RvRmlyZUNvbnRyb2xs
ZXJDaGFuZ2VFdmVudCgpOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyYTE3MjFl
YzlkMjk5ZjkyZDYyNWE3YTE3N2ZiNjA3MzhlMWFiODcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmgKQEAgLTAsMCAr
MSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKKworI2luY2x1ZGUgIkRvY3VtZW50SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlNl
cnZpY2VXb3JrZXJKb2IuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyVHlwZXMuaCIKKyNpbmNs
dWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgor
I2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIFJlc291cmNlRXJyb3I7CitjbGFzcyBTZWN1cml0eU9yaWdpbjsKK2NsYXNz
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKK2NsYXNzIFNlcnZpY2VXb3JrZXJDb250YWluZXI7Citj
bGFzcyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOworY2xhc3MgU2hhcmVkQnVmZmVyOworZW51
bSBjbGFzcyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uU3RhdGU7CitlbnVtIGNsYXNzIFNlcnZp
Y2VXb3JrZXJTdGF0ZTsKK2VudW0gY2xhc3MgU2hvdWxkTm90aWZ5V2hlblJlc29sdmVkOworc3Ry
dWN0IEV4Y2VwdGlvbkRhdGE7CitzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudERhdGE7CitzdHJ1
Y3QgU2VydmljZVdvcmtlckRhdGE7CitzdHJ1Y3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0Owor
c3RydWN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhOworCitjbGFzcyBTV0NsaWVudENv
bm5lY3Rpb24gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U1dDbGllbnRDb25uZWN0aW9u
PiB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+U1dDbGllbnRDb25uZWN0
aW9uKCk7CisKKyAgICB1c2luZyBSZWdpc3RyYXRpb25DYWxsYmFjayA9IFdURjo6Q29tcGxldGlv
bkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRh
PiYmKT47CisgICAgdmlydHVhbCB2b2lkIG1hdGNoUmVnaXN0cmF0aW9uKGNvbnN0IFNlY3VyaXR5
T3JpZ2luJiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMLCBSZWdpc3RyYXRpb25DYWxs
YmFjayYmKSA9IDA7CisKKyAgICB1c2luZyBHZXRSZWdpc3RyYXRpb25zQ2FsbGJhY2sgPSBXVEY6
OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
YXRhPiYmKT47CisgICAgdmlydHVhbCB2b2lkIGdldFJlZ2lzdHJhdGlvbnMoY29uc3QgU2VjdXJp
dHlPcmlnaW4mIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwsIEdldFJlZ2lzdHJhdGlv
bnNDYWxsYmFjayYmKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgYWRkU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkluU2VydmVyKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNl
cnZlcihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcikgPSAwOworCisgICAgdm9p
ZCBzY2hlZHVsZUpvYihTZXJ2aWNlV29ya2VySm9iJik7CisgICAgdm9pZCBmaW5pc2hlZEZldGNo
aW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGZh
aWxlZEZldGNoaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImLCBjb25zdCBSZXNvdXJjZUVycm9y
Jik7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoY29u
c3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYpID0gMDsKKworICAgIHZpcnR1YWwgdm9p
ZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4m
JiwgRG9jdW1lbnRJZGVudGlmaWVyIHNvdXJjZUNvbnRleHRJZGVudGlmaWVyLCBTZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YSYmIHNvdXJjZSkgPSAwOworICAgIHZpcnR1YWwgU1dTZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgbWF5SGF2ZVNlcnZpY2VXb3JrZXJSZWdpc3RlcmVkRm9yT3JpZ2luKGNv
bnN0IFNlY3VyaXR5T3JpZ2luJikgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNlcnZp
Y2VXb3JrZXJTdGFydGVkQ29udHJvbGxpbmdDbGllbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIs
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBEb2N1bWVudElkZW50aWZpZXIp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2VydmljZVdvcmtlclN0b3BwZWRDb250cm9sbGluZ0Ns
aWVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIsIERvY3VtZW50SWRlbnRpZmllcikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHJl
Z2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2lu
LCBEb2N1bWVudElkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChEb2N1bWVu
dElkZW50aWZpZXIpID0gMDsKKworcHJvdGVjdGVkOgorICAgIFdFQkNPUkVfRVhQT1JUIFNXQ2xp
ZW50Q29ubmVjdGlvbigpOworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBqb2JSZWplY3RlZElu
U2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIGNvbnN0IEV4Y2Vw
dGlvbkRhdGEmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlZ2lzdHJhdGlvbkpvYlJlc29s
dmVkSW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJiwgU2hvdWxkTm90aWZ5V2hlblJlc29sdmVkKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVucmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJblNlcnZlcihj
b25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBib29sIHVucmVnaXN0cmF0aW9u
UmVzdWx0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2hGb3JTZXJ2
ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChEb2N1bWVudElkZW50
aWZpZXIgZGVzdGluYXRpb25Db250ZXh0SWRlbnRpZmllciwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4mJiBtZXNzYWdlLCBTZXJ2aWNlV29ya2VyRGF0YSYmIHNvdXJjZSwgY29uc3QgU3RyaW5n
JiBzb3VyY2VPcmlnaW4pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlUmVnaXN0cmF0
aW9uU3RhdGUoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25TdGF0ZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0
YT4mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVdvcmtlclN0YXRlKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyU3RhdGUpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZmlyZVVwZGF0ZUZvdW5kRXZlbnQoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50
aWZpZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbm90aWZ5Q2xpZW50c09mQ29udHJvbGxl
ckNoYW5nZShjb25zdCBIYXNoU2V0PERvY3VtZW50SWRlbnRpZmllcj4mIGNvbnRleHRJZGVudGlm
aWVycywgU2VydmljZVdvcmtlckRhdGEmJiBuZXdDb250cm9sbGVyKTsKKworcHJpdmF0ZToKKyAg
ICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVKb2JJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9i
RGF0YSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZl
cihjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmKSA9IDA7CisKKyAgICBIYXNoTWFwPFNl
cnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyLCBSZWZQdHI8U2VydmljZVdvcmtlckpvYj4+IG1fc2No
ZWR1bGVkSm9iczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAppbmRleCAzZjI5YzZiMDAzZTk0
YmY5NTAwYjI4MGNjODBlMjUxMjcwYTlhN2I5Li44YmViMDg2ZjNkOTVhODc3MmI2NmIzOGQ5MDM1
Zjg5ZGJiNmZmNzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKKyNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUg
IkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRlICJJRExUeXBl
cy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV0NsaWVudENvbm5lY3Rpb24uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAxMDJhZWZlYzQyMmQyMTdmODFhZjRhODU3MjRhOTM3ZWM1ZGU3OTNjLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dDbGllbnRDb25uZWN0aW9uLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDIwNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IlNXQ2xpZW50Q29ubmVjdGlvbi5oIgotCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotCi0j
aW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFeGNlcHRpb25EYXRhLmgiCi0jaW5jbHVk
ZSAiTWVzc2FnZUV2ZW50LmgiCi0jaW5jbHVkZSAiTWljcm90YXNrcy5oIgotI2luY2x1ZGUgIlNX
Q29udGV4dE1hbmFnZXIuaCIKLSNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgiCi0j
aW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoUmVzdWx0LmgiCi0jaW5jbHVkZSAiU2VydmljZVdv
cmtlckpvYkRhdGEuaCIKLSNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmgiCi0j
aW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotU1dDbGllbnRDb25uZWN0aW9uOjpTV0NsaWVudENvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7Ci0K
LVNXQ2xpZW50Q29ubmVjdGlvbjo6flNXQ2xpZW50Q29ubmVjdGlvbigpID0gZGVmYXVsdDsKLQot
dm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnNjaGVkdWxlSm9iKFNlcnZpY2VXb3JrZXJKb2ImIGpv
YikKLXsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fc2NoZWR1bGVkSm9icy5hZGQoam9iLmlkZW50
aWZpZXIoKSwgJmpvYik7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5p
c05ld0VudHJ5KTsKLQotICAgIHNjaGVkdWxlSm9iSW5TZXJ2ZXIoam9iLmRhdGEoKSk7Ci19Ci0K
LXZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjpmaW5pc2hlZEZldGNoaW5nU2NyaXB0KFNlcnZpY2VX
b3JrZXJKb2ImIGpvYiwgY29uc3QgU3RyaW5nJiBzY3JpcHQpCi17Ci0gICAgQVNTRVJUKG1fc2No
ZWR1bGVkSm9icy5nZXQoam9iLmlkZW50aWZpZXIoKSkgPT0gJmpvYik7Ci0KLSAgICBmaW5pc2hG
ZXRjaGluZ1NjcmlwdEluU2VydmVyKHsgam9iLmRhdGEoKS5pZGVudGlmaWVyKCksIGpvYi5kYXRh
KCkucmVnaXN0cmF0aW9uS2V5KCksIHNjcmlwdCwgeyB9IH0pOwotfQotCi12b2lkIFNXQ2xpZW50
Q29ubmVjdGlvbjo6ZmFpbGVkRmV0Y2hpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYgam9iLCBj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKLXsKLSAgICBBU1NFUlQobV9zY2hlZHVsZWRKb2Jz
LmdldChqb2IuaWRlbnRpZmllcigpKSA9PSAmam9iKTsKLQotICAgIGZpbmlzaEZldGNoaW5nU2Ny
aXB0SW5TZXJ2ZXIoeyBqb2IuZGF0YSgpLmlkZW50aWZpZXIoKSwgam9iLmRhdGEoKS5yZWdpc3Ry
YXRpb25LZXkoKSwgeyB9LCBlcnJvciB9KTsKLX0KLQotdm9pZCBTV0NsaWVudENvbm5lY3Rpb246
OmpvYlJlamVjdGVkSW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVy
JiBqb2JEYXRhSWRlbnRpZmllciwgY29uc3QgRXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uRGF0YSkK
LXsKLSAgICBhdXRvIGpvYiA9IG1fc2NoZWR1bGVkSm9icy50YWtlKGpvYkRhdGFJZGVudGlmaWVy
LmpvYklkZW50aWZpZXIpOwotICAgIGlmICgham9iKSB7Ci0gICAgICAgIExPR19FUlJPUigiSm9i
ICVzIHJlamVjdGVkIGZyb20gc2VydmVyLCBidXQgd2FzIG5vdCBmb3VuZCIsIGpvYkRhdGFJZGVu
dGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGpvYi0+ZmFpbGVkV2l0aEV4Y2VwdGlvbihleGNlcHRpb25EYXRhLnRvRXhj
ZXB0aW9uKCkpOwotfQotCi12b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6cmVnaXN0cmF0aW9uSm9i
UmVzb2x2ZWRJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpv
YkRhdGFJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmIHJlZ2lzdHJh
dGlvbkRhdGEsIFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCBzaG91bGROb3RpZnlXaGVuUmVzb2x2
ZWQpCi17Ci0gICAgYXV0byBqb2IgPSBtX3NjaGVkdWxlZEpvYnMudGFrZShqb2JEYXRhSWRlbnRp
Zmllci5qb2JJZGVudGlmaWVyKTsKLSAgICBpZiAoIWpvYikgewotICAgICAgICBMT0dfRVJST1Io
IkpvYiAlcyByZXNvbHZlZCBpbiBzZXJ2ZXIsIGJ1dCB3YXMgbm90IGZvdW5kIiwgam9iRGF0YUlk
ZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgYXV0byBrZXkgPSByZWdpc3RyYXRpb25EYXRhLmtleTsKLSAgICBqb2It
PnJlc29sdmVkV2l0aFJlZ2lzdHJhdGlvbihXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGEpLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBrZXksIHNob3VsZE5vdGlmeVdoZW5S
ZXNvbHZlZF0gewotICAgICAgICBpZiAoc2hvdWxkTm90aWZ5V2hlblJlc29sdmVkID09IFNob3Vs
ZE5vdGlmeVdoZW5SZXNvbHZlZDo6WWVzKQotICAgICAgICAgICAgZGlkUmVzb2x2ZVJlZ2lzdHJh
dGlvblByb21pc2Uoa2V5KTsKLSAgICB9KTsKLX0KLQotdm9pZCBTV0NsaWVudENvbm5lY3Rpb246
OnVucmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9i
RGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBib29sIHVucmVnaXN0cmF0aW9uUmVz
dWx0KQotewotICAgIGF1dG8gam9iID0gbV9zY2hlZHVsZWRKb2JzLnRha2Uoam9iRGF0YUlkZW50
aWZpZXIuam9iSWRlbnRpZmllcik7Ci0gICAgaWYgKCFqb2IpIHsKLSAgICAgICAgTE9HX0VSUk9S
KCJKb2IgJXMgcmVzb2x2ZWQgaW4gc2VydmVyLCBidXQgd2FzIG5vdCBmb3VuZCIsIGpvYkRhdGFJ
ZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGpvYi0+cmVzb2x2ZWRXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHQodW5y
ZWdpc3RyYXRpb25SZXN1bHQpOwotfQotCi12b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6c3RhcnRT
Y3JpcHRGZXRjaEZvclNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIm
IGpvYkRhdGFJZGVudGlmaWVyKQotewotICAgIGF1dG8gam9iID0gbV9zY2hlZHVsZWRKb2JzLmdl
dChqb2JEYXRhSWRlbnRpZmllci5qb2JJZGVudGlmaWVyKTsKLSAgICBpZiAoIWpvYikgewotICAg
ICAgICBMT0dfRVJST1IoIkpvYiAlcyBpbnN0cnVjdGVkIHRvIHN0YXJ0IGZldGNoIGZyb20gc2Vy
dmVyLCBidXQgam9iIHdhcyBub3QgZm91bmQiLCBqb2JEYXRhSWRlbnRpZmllci5sb2dnaW5nU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0KLSAgICAgICAgLy8gRklYTUU6IFNob3VsZCBtZXNzYWdl
IGJhY2sgdG8gdGhlIHNlcnZlciBoZXJlIHRvIHNpZ25hbCBmYWlsdXJlIHRvIGZldGNoLAotICAg
ICAgICAvLyBidXQgd2UgY3VycmVudGx5IG5lZWQgdGhlIHJlZ2lzdHJhdGlvbiBrZXkgdG8gZG8g
c28sIGFuZCBkb24ndCBoYXZlIGl0IGhlcmUuCi0gICAgICAgIC8vIEluIHRoZSBmdXR1cmUgd2Un
bGwgcmVmYWN0b3IgdG8gaGF2ZSBhIGdsb2JhbCwgY3Jvc3MtcHJvY2VzcyBqb2IgaWRlbnRpZmll
ciB0aGF0IGNhbiBiZSB1c2VkIHRvIG92ZXJjb21lIHRoaXMuCi0KLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGpvYi0+c3RhcnRTY3JpcHRGZXRjaCgpOwotfQotCi12b2lkIFNXQ2xpZW50
Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoRG9jdW1lbnRJZGVu
dGlmaWVyIGRlc3RpbmF0aW9uQ29udGV4dElkZW50aWZpZXIsIFJlZjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+JiYgbWVzc2FnZSwgU2VydmljZVdvcmtlckRhdGEmJiBzb3VyY2VEYXRhLCBjb25zdCBT
dHJpbmcmIHNvdXJjZU9yaWdpbikKLXsKLSAgICAvLyBGSVhNRTogZGVzdGluYXRpb25Db250ZXh0
SWRlbnRpZmllciBjYW4gb25seSBpZGVudGlmeSBhIERvY3VtZW50IGF0IHRoZSBtb21lbnQuCi0g
ICAgYXV0byogZGVzdGluYXRpb25Eb2N1bWVudCA9IERvY3VtZW50OjphbGxEb2N1bWVudHNNYXAo
KS5nZXQoZGVzdGluYXRpb25Db250ZXh0SWRlbnRpZmllcik7Ci0gICAgaWYgKCFkZXN0aW5hdGlv
bkRvY3VtZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvKiBjb250YWluZXIgPSBkZXN0
aW5hdGlvbkRvY3VtZW50LT5zZXJ2aWNlV29ya2VyQ29udGFpbmVyKCk7Ci0gICAgaWYgKCFjb250
YWluZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIE1lc3NhZ2VFdmVudFNvdXJjZSBzb3VyY2Ug
PSBSZWZQdHI8U2VydmljZVdvcmtlcj4geyBTZXJ2aWNlV29ya2VyOjpnZXRPckNyZWF0ZSgqZGVz
dGluYXRpb25Eb2N1bWVudCwgV1RGTW92ZShzb3VyY2VEYXRhKSkgfTsKLQotICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgcGFzcyBpbiBwb3J0cy4KLSAgICBhdXRvIG1lc3NhZ2VFdmVudCA9IE1lc3Nh
Z2VFdmVudDo6Y3JlYXRlKHsgfSwgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlT3JpZ2luLCB7IH0s
IFdURk1vdmUoc291cmNlKSk7Ci0gICAgY29udGFpbmVyLT5kaXNwYXRjaEV2ZW50KG1lc3NhZ2VF
dmVudCk7Ci19Ci0KLXZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjp1cGRhdGVSZWdpc3RyYXRpb25T
dGF0ZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uU3RhdGUgc3RhdGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2Vy
dmljZVdvcmtlckRhdGE+JiBzZXJ2aWNlV29ya2VyRGF0YSkKLXsKLSAgICBTV0NvbnRleHRNYW5h
Z2VyOjpzaW5nbGV0b24oKS5mb3JFYWNoU2VydmljZVdvcmtlclRocmVhZChbaWRlbnRpZmllciwg
c3RhdGUsICZzZXJ2aWNlV29ya2VyRGF0YV0gKGF1dG8mIHdvcmtlclRocmVhZCkgewotICAgICAg
ICB3b3JrZXJUaHJlYWQudGhyZWFkKCkucnVuTG9vcCgpLnBvc3RUYXNrKFtpZGVudGlmaWVyLCBz
dGF0ZSwgc2VydmljZVdvcmtlckRhdGEgPSBjcm9zc1RocmVhZENvcHkoc2VydmljZVdvcmtlckRh
dGEpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAg
ICAgIGlmIChhdXRvKiBjb250YWluZXIgPSBjb250ZXh0LnNlcnZpY2VXb3JrZXJDb250YWluZXIo
KSkKLSAgICAgICAgICAgICAgICBjb250YWluZXItPnNjaGVkdWxlVGFza1RvVXBkYXRlUmVnaXN0
cmF0aW9uU3RhdGUoaWRlbnRpZmllciwgc3RhdGUsIFdURk1vdmUoc2VydmljZVdvcmtlckRhdGEp
KTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci0KLSAgICBmb3IgKGF1dG8qIGRvY3VtZW50IDogRG9j
dW1lbnQ6OmFsbERvY3VtZW50cygpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBjb250YWluZXIgPSBk
b2N1bWVudC0+c2VydmljZVdvcmtlckNvbnRhaW5lcigpKQotICAgICAgICAgICAgY29udGFpbmVy
LT5zY2hlZHVsZVRhc2tUb1VwZGF0ZVJlZ2lzdHJhdGlvblN0YXRlKGlkZW50aWZpZXIsIHN0YXRl
LCBzZXJ2aWNlV29ya2VyRGF0YSk7Ci0gICAgfQotfQotCi12b2lkIFNXQ2xpZW50Q29ubmVjdGlv
bjo6dXBkYXRlV29ya2VyU3RhdGUoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwg
U2VydmljZVdvcmtlclN0YXRlIHN0YXRlKQotewotICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmds
ZXRvbigpLmZvckVhY2hTZXJ2aWNlV29ya2VyVGhyZWFkKFtpZGVudGlmaWVyLCBzdGF0ZV0gKGF1
dG8mIHdvcmtlclRocmVhZCkgewotICAgICAgICB3b3JrZXJUaHJlYWQudGhyZWFkKCkucnVuTG9v
cCgpLnBvc3RUYXNrKFtpZGVudGlmaWVyLCBzdGF0ZV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkgewotICAgICAgICAgICAgaWYgKGF1dG8qIHNlcnZpY2VXb3JrZXIgPSBjb250ZXh0
LnNlcnZpY2VXb3JrZXIoaWRlbnRpZmllcikpCi0gICAgICAgICAgICAgICAgc2VydmljZVdvcmtl
ci0+c2NoZWR1bGVUYXNrVG9VcGRhdGVTdGF0ZShzdGF0ZSk7Ci0gICAgICAgIH0pOwotICAgIH0p
OwotCi0gICAgZm9yIChhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMoKSkg
ewotICAgICAgICBpZiAoYXV0byogc2VydmljZVdvcmtlciA9IGRvY3VtZW50LT5zZXJ2aWNlV29y
a2VyKGlkZW50aWZpZXIpKQotICAgICAgICAgICAgc2VydmljZVdvcmtlci0+c2NoZWR1bGVUYXNr
VG9VcGRhdGVTdGF0ZShzdGF0ZSk7Ci0gICAgfQotfQotCi12b2lkIFNXQ2xpZW50Q29ubmVjdGlv
bjo6ZmlyZVVwZGF0ZUZvdW5kRXZlbnQoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIgaWRlbnRpZmllcikKLXsKLSAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5mb3JF
YWNoU2VydmljZVdvcmtlclRocmVhZChbaWRlbnRpZmllcl0gKGF1dG8mIHdvcmtlclRocmVhZCkg
ewotICAgICAgICB3b3JrZXJUaHJlYWQudGhyZWFkKCkucnVuTG9vcCgpLnBvc3RUYXNrKFtpZGVu
dGlmaWVyXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBp
ZiAoYXV0byogY29udGFpbmVyID0gY29udGV4dC5zZXJ2aWNlV29ya2VyQ29udGFpbmVyKCkpCi0g
ICAgICAgICAgICAgICAgY29udGFpbmVyLT5zY2hlZHVsZVRhc2tUb0ZpcmVVcGRhdGVGb3VuZEV2
ZW50KGlkZW50aWZpZXIpOwotICAgICAgICB9KTsKLSAgICB9KTsKLQotICAgIGZvciAoYXV0byog
ZG9jdW1lbnQgOiBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkpIHsKLSAgICAgICAgaWYgKGF1dG8q
IGNvbnRhaW5lciA9IGRvY3VtZW50LT5zZXJ2aWNlV29ya2VyQ29udGFpbmVyKCkpCi0gICAgICAg
ICAgICBjb250YWluZXItPnNjaGVkdWxlVGFza1RvRmlyZVVwZGF0ZUZvdW5kRXZlbnQoaWRlbnRp
Zmllcik7Ci0gICAgfQotfQotCi12b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6bm90aWZ5Q2xpZW50
c09mQ29udHJvbGxlckNoYW5nZShjb25zdCBIYXNoU2V0PERvY3VtZW50SWRlbnRpZmllcj4mIGNv
bnRleHRJZGVudGlmaWVycywgU2VydmljZVdvcmtlckRhdGEmJiBuZXdDb250cm9sbGVyKQotewot
ICAgIEFTU0VSVCghY29udGV4dElkZW50aWZpZXJzLmlzRW1wdHkoKSk7Ci0KLSAgICBmb3IgKGF1
dG8mIGNsaWVudElkZW50aWZpZXIgOiBjb250ZXh0SWRlbnRpZmllcnMpIHsKLSAgICAgICAgLy8g
RklYTUU6IFN1cHBvcnQgd29ya2VyIGNvbnRleHRzLgotICAgICAgICBhdXRvKiBjbGllbnQgPSBE
b2N1bWVudDo6YWxsRG9jdW1lbnRzTWFwKCkuZ2V0KGNsaWVudElkZW50aWZpZXIpOwotICAgICAg
ICBpZiAoIWNsaWVudCkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIEFTU0VSVChj
bGllbnQtPmFjdGl2ZVNlcnZpY2VXb3JrZXIoKSk7Ci0gICAgICAgIEFTU0VSVChjbGllbnQtPmFj
dGl2ZVNlcnZpY2VXb3JrZXIoKS0+aWRlbnRpZmllcigpICE9IG5ld0NvbnRyb2xsZXIuaWRlbnRp
Zmllcik7Ci0gICAgICAgIGNsaWVudC0+c2V0QWN0aXZlU2VydmljZVdvcmtlcihTZXJ2aWNlV29y
a2VyOjpnZXRPckNyZWF0ZSgqY2xpZW50LCBTZXJ2aWNlV29ya2VyRGF0YSB7IG5ld0NvbnRyb2xs
ZXIgfSkpOwotICAgICAgICBpZiAoYXV0byogY29udGFpbmVyID0gY2xpZW50LT5zZXJ2aWNlV29y
a2VyQ29udGFpbmVyKCkpCi0gICAgICAgICAgICBjb250YWluZXItPnNjaGVkdWxlVGFza1RvRmly
ZUNvbnRyb2xsZXJDaGFuZ2VFdmVudCgpOwotICAgIH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV0NsaWVudENvbm5lY3Rpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dDbGllbnRDb25uZWN0aW9u
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxMDY3YjQ2OTE2NmIxYjVhYzE2ZjVi
ODUzNmExMTBiMTY0Y2I5YzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV0NsaWVudENv
bm5lY3Rpb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDEwNCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0KLSNpbmNsdWRlICJE
b2N1bWVudElkZW50aWZpZXIuaCIKLSNpbmNsdWRlICJTZXJ2aWNlV29ya2VySm9iLmgiCi0jaW5j
bHVkZSAiU2VydmljZVdvcmtlclR5cGVzLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNp
bmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jbGFzcyBSZXNvdXJjZUVycm9yOwotY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU7Ci1jbGFzcyBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOwotY2xh
c3MgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKLWVudW0g
Y2xhc3MgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblN0YXRlOwotZW51bSBjbGFzcyBTZXJ2aWNl
V29ya2VyU3RhdGU7Ci1lbnVtIGNsYXNzIFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZDsKLXN0cnVj
dCBFeGNlcHRpb25EYXRhOwotc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOwotc3RydWN0
IFNlcnZpY2VXb3JrZXJEYXRhOwotc3RydWN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdDsKLXN0
cnVjdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YTsKLQotY2xhc3MgU1dDbGllbnRDb25u
ZWN0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNXQ2xpZW50Q29ubmVjdGlvbj4g
ewotcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflNXQ2xpZW50Q29ubmVjdGlv
bigpOwotCi0gICAgdXNpbmcgUmVnaXN0cmF0aW9uQ2FsbGJhY2sgPSBXVEY6OkNvbXBsZXRpb25I
YW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YT4m
Jik+OwotICAgIHZpcnR1YWwgdm9pZCBtYXRjaFJlZ2lzdHJhdGlvbihjb25zdCBTZWN1cml0eU9y
aWdpbiYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCwgUmVnaXN0cmF0aW9uQ2FsbGJh
Y2smJikgPSAwOwotCi0gICAgdXNpbmcgR2V0UmVnaXN0cmF0aW9uc0NhbGxiYWNrID0gV1RGOjpD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0
YT4mJik+OwotICAgIHZpcnR1YWwgdm9pZCBnZXRSZWdpc3RyYXRpb25zKGNvbnN0IFNlY3VyaXR5
T3JpZ2luJiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMLCBHZXRSZWdpc3RyYXRpb25z
Q2FsbGJhY2smJikgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIGFkZFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JblNlcnZlcihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcikgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2
ZXIoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpID0gMDsKLQotICAgIHZvaWQg
c2NoZWR1bGVKb2IoU2VydmljZVdvcmtlckpvYiYpOwotICAgIHZvaWQgZmluaXNoZWRGZXRjaGlu
Z1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiwgY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBmYWls
ZWRGZXRjaGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiwgY29uc3QgUmVzb3VyY2VFcnJvciYp
OwotCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKGNvbnN0
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQg
cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBkZXN0aW5hdGlvbklkZW50aWZpZXIsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYs
IERvY3VtZW50SWRlbnRpZmllciBzb3VyY2VDb250ZXh0SWRlbnRpZmllciwgU2VydmljZVdvcmtl
ckNsaWVudERhdGEmJiBzb3VyY2UpID0gMDsKLSAgICB2aXJ0dWFsIFNXU2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdCA9IDA7Ci0gICAg
dmlydHVhbCBib29sIG1heUhhdmVTZXJ2aWNlV29ya2VyUmVnaXN0ZXJlZEZvck9yaWdpbihjb25z
dCBTZWN1cml0eU9yaWdpbiYpIGNvbnN0ID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBzZXJ2aWNl
V29ya2VyU3RhcnRlZENvbnRyb2xsaW5nQ2xpZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgRG9jdW1lbnRJZGVudGlmaWVyKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNlcnZpY2VXb3JrZXJTdG9wcGVkQ29udHJvbGxpbmdDbGll
bnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVu
dGlmaWVyLCBEb2N1bWVudElkZW50aWZpZXIpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwg
RG9jdW1lbnRJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoRG9jdW1lbnRJ
ZGVudGlmaWVyKSA9IDA7Ci0KLXByb3RlY3RlZDoKLSAgICBXRUJDT1JFX0VYUE9SVCBTV0NsaWVu
dENvbm5lY3Rpb24oKTsKLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgam9iUmVqZWN0ZWRJblNl
cnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBjb25zdCBFeGNlcHRp
b25EYXRhJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWdpc3RyYXRpb25Kb2JSZXNvbHZl
ZEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EYXRhJiYsIFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCk7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCB1bnJlZ2lzdHJhdGlvbkpvYlJlc29sdmVkSW5TZXJ2ZXIoY29u
c3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgYm9vbCB1bnJlZ2lzdHJhdGlvblJl
c3VsdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydFNjcmlwdEZldGNoRm9yU2VydmVy
KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoRG9jdW1lbnRJZGVudGlm
aWVyIGRlc3RpbmF0aW9uQ29udGV4dElkZW50aWZpZXIsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+JiYgbWVzc2FnZSwgU2VydmljZVdvcmtlckRhdGEmJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYg
c291cmNlT3JpZ2luKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVJlZ2lzdHJhdGlv
blN0YXRlKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uU3RhdGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+
Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVXb3JrZXJTdGF0ZShTZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgU2VydmljZVdvcmtlclN0YXRlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGZpcmVVcGRhdGVGb3VuZEV2ZW50KFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlm
aWVyKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG5vdGlmeUNsaWVudHNPZkNvbnRyb2xsZXJD
aGFuZ2UoY29uc3QgSGFzaFNldDxEb2N1bWVudElkZW50aWZpZXI+JiBjb250ZXh0SWRlbnRpZmll
cnMsIFNlcnZpY2VXb3JrZXJEYXRhJiYgbmV3Q29udHJvbGxlcik7Ci0KLXByaXZhdGU6Ci0gICAg
dmlydHVhbCB2b2lkIHNjaGVkdWxlSm9iSW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRh
dGEmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIo
Y29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0JikgPSAwOwotCi0gICAgSGFzaE1hcDxTZXJ2
aWNlV29ya2VySm9iSWRlbnRpZmllciwgUmVmUHRyPFNlcnZpY2VXb3JrZXJKb2I+PiBtX3NjaGVk
dWxlZEpvYnM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXT3JpZ2luU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV09yaWdpblN0b3JlLmNwcAppbmRleCAwNWFlOTk1NTA4YWY1MjNiNjZh
M2ZmNWQxMWFhMzA5ZjdmMmUzNzkzLi41ZWE0NWI5NTVkZmY1NzQzMjc1ZDVkMDA3MTlmMmVjMmRk
ODRiODA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXT3JpZ2luU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dPcmlnaW5TdG9yZS5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCiAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXT3JpZ2luU3RvcmUuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5oCmlu
ZGV4IGE5M2FhM2ZiYWIyOWFkZTdjYmYxZWVhOGU3MzllYjIxNTYyOGViOWIuLjU4NDdkMzU2MTg0
OGQxZTE3ZTJiNzY4NjViMTVkZWJhMzA1NWQ1MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5oCkBAIC0yOCw2ICsyOCw4
IEBACiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>