<?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>233534</bug_id>
          
          <creation_ts>2021-11-27 00:09:58 -0800</creation_ts>
          <short_desc>[WebGPU] Hook up first API function</short_desc>
          <delta_ts>2021-11-29 22:19: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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>233619</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>jer.noble</cc>
    
    <cc>mkwst</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1818021</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-27 00:09:58 -0800</bug_when>
    <thetext>[WebGPU] Hook up first API function</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818022</commentid>
    <comment_count>1</comment_count>
      <attachid>445213</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-27 00:11:00 -0800</bug_when>
    <thetext>Created attachment 445213
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818063</commentid>
    <comment_count>2</comment_count>
      <attachid>445232</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-27 21:22:18 -0800</bug_when>
    <thetext>Created attachment 445232
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818067</commentid>
    <comment_count>3</comment_count>
      <attachid>445235</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-27 23:14:30 -0800</bug_when>
    <thetext>Created attachment 445235
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818105</commentid>
    <comment_count>4</comment_count>
      <attachid>445244</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-28 17:16:56 -0800</bug_when>
    <thetext>Created attachment 445244
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818115</commentid>
    <comment_count>5</comment_count>
      <attachid>445245</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-28 19:12:26 -0800</bug_when>
    <thetext>Created attachment 445245
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818603</commentid>
    <comment_count>6</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-29 22:19:24 -0800</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 233619 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445213</attachid>
            <date>2021-11-27 00:11:00 -0800</date>
            <delta_ts>2021-11-27 21:22:14 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-233534-20211127001059.patch</filename>
            <type>text/plain</type>
            <size>137935</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGVhYjNiMjBkYTVmNDFhMjYwMTM4NDhj
OTViMmViNTZmMzFjZDE3ODEuLmY1Mjg2YjVmZTEzZGYzMjhhY2YxMTRkYmM1NzIzYzgxNmJkZDBk
MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMTEtMjcgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViR1BVXSBIb29rIHVwIGZpcnN0IEFQ
SSBmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMzNTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzLnlhbWw6CisKIDIwMjEtMTEt
MTkgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW01vZGVs
XSBhZGQgYXVkaW8gc3VwcG9ydApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDE4MGZkNzlmYWRhYzNlZmU1MDNmMzNm
NTY2MWMzN2U4OGFmNGJiMjQuLjdjMjdmOTMzMzRhMjAzYTg1ODE0ZWM1MGNjOWE0YzE4OGVmZTRi
OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAyMS0xMS0yNyAgTXlsZXMgQy4gTWF4
ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJHUFVdIEhvb2sgdXAg
Zmlyc3QgQVBJIGZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzM1MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIENvbmZpZ3VyYXRp
b25zL1dlYkNvcmUueGNjb25maWc6CisgICAgICAgICogTW9kdWxlcy9XZWJHUFUvR1BVLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdQVTo6c2V0QmFja2luZyk6CisgICAgICAgIChXZWJDb3JlOjpH
UFU6OnJlcXVlc3RBZGFwdGVyKToKKyAgICAgICAgKiBNb2R1bGVzL1dlYkdQVS9HUFUuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdQVTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdQVTo6YmFj
a2luZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHUFU6OmJhY2tpbmcgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R1BVOjpHUFUpOiBEZWxldGVkLgorICAgICAgICAq
IHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6Y3JlYXRlR1BVRm9y
V2ViR1BVIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5oOgorICAgICAgICAqIHBhZ2Uv
Q2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OmNyZWF0ZUdQ
VUZvcldlYkdQVSBjb25zdCk6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpncHUpOgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yLmg6
CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3JCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpOYXZp
Z2F0b3JCYXNlOjpncHUpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvV29ya2VyTmF2aWdhdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck5hdmlnYXRvcjo6Z3B1KToKKyAgICAgICAg
KiBwYWdlL1dvcmtlck5hdmlnYXRvci5oOgorCiAyMDIxLTExLTI2ICBTYWlkIEFib3UtSGFsbGF3
YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gTWFrZSBGaWx0ZXJF
ZmZlY3RzIGNyZWF0ZSBGaWx0ZXJFZmZlY3RBcHBsaWVycyB3aGljaCB3aWxsIGJlIHVzZWQgYnkg
RmlsdGVyRWZmZWN0OjphcHBseSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCA1ZDZkNjc3MDI5ZGMy
MDZjZDFlNGFkMDBlNjAzMWM5ODAyYjVkMjY5Li5kYmMxYTUyNjViNjgxMmY4NDA2ZGMyOWMzOWVm
MzNiNmY3ZmU3OGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MSBAQAorMjAyMS0x
MS0yNyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAg
IFtXZWJHUFVdIEhvb2sgdXAgZmlyc3QgQVBJIGZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM1MzQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBBTC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVBZGFwdGVySW1w
bC5jcHA6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJ
bXBsLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUJpbmRHcm91
cEltcGwuY3BwOgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCaW5k
R3JvdXBJbXBsLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUJp
bmRHcm91cExheW91dEltcGwuY3BwOgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1w
bC9XZWJHUFVCaW5kR3JvdXBMYXlvdXRJbXBsLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dl
YkdQVS9JbXBsL1dlYkdQVUJ1ZmZlckltcGwuY3BwOgorICAgICAgICAqIHBhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVCdWZmZXJJbXBsLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dl
YkdQVS9JbXBsL1dlYkdQVUNvbW1hbmRCdWZmZXJJbXBsLmNwcDoKKyAgICAgICAgKiBwYWwvZ3Jh
cGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tbWFuZEJ1ZmZlckltcGwuaDoKKyAgICAgICAgKiBw
YWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tbWFuZEVuY29kZXJJbXBsLmNwcDoKKyAg
ICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tbWFuZEVuY29kZXJJbXBs
Lmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbXB1dGVQYXNz
RW5jb2RlckltcGwuY3BwOgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJH
UFVDb21wdXRlUGFzc0VuY29kZXJJbXBsLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQ
VS9JbXBsL1dlYkdQVUNvbXB1dGVQaXBlbGluZUltcGwuY3BwOgorICAgICAgICAqIHBhbC9ncmFw
aGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb21wdXRlUGlwZWxpbmVJbXBsLmg6CisgICAgICAgICog
cGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmNw
cDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29udmVydFRvQmFj
a2luZ0NvbnRleHQuaDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BV
RGV2aWNlSW1wbC5jcHA6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQ
VURldmljZUltcGwuaDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BV
RG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5jcHA6CisgICAgICAgICogcGFsL2dyYXBo
aWNzL1dlYkdQVS9JbXBsL1dlYkdQVURvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQuaDoK
KyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRXh0ZXJuYWxUZXh0dXJl
SW1wbC5jcHA6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUV4dGVy
bmFsVGV4dHVyZUltcGwuaDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVSW1wbC5jcHA6CisgICAgICAgIChQQUw6OldlYkdQVTo6R1BVSW1wbDo6Y3JlYXRlKToKKyAg
ICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVSW1wbC5oOgorICAgICAgICAq
IHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVQaXBlbGluZUxheW91dEltcGwuY3BwOgor
ICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVQaXBlbGluZUxheW91dElt
cGwuaDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUXVlcnlTZXRJ
bXBsLmNwcDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUXVlcnlT
ZXRJbXBsLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVF1ZXVl
SW1wbC5jcHA6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVF1ZXVl
SW1wbC5oOgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJC
dW5kbGVFbmNvZGVySW1wbC5jcHA6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBs
L1dlYkdQVVJlbmRlckJ1bmRsZUVuY29kZXJJbXBsLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNz
L1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlckJ1bmRsZUltcGwuY3BwOgorICAgICAgICAqIHBhbC9n
cmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJCdW5kbGVJbXBsLmg6CisgICAgICAgICog
cGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlclBhc3NFbmNvZGVySW1wbC5jcHA6
CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlclBhc3NFbmNv
ZGVySW1wbC5oOgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5k
ZXJQaXBlbGluZUltcGwuY3BwOgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9X
ZWJHUFVSZW5kZXJQaXBlbGluZUltcGwuaDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVU2FtcGxlckltcGwuY3BwOgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJH
UFUvSW1wbC9XZWJHUFVTYW1wbGVySW1wbC5oOgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJH
UFUvSW1wbC9XZWJHUFVTaGFkZXJNb2R1bGVJbXBsLmNwcDoKKyAgICAgICAgKiBwYWwvZ3JhcGhp
Y3MvV2ViR1BVL0ltcGwvV2ViR1BVU2hhZGVyTW9kdWxlSW1wbC5oOgorICAgICAgICAqIHBhbC9n
cmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVUZXh0dXJlSW1wbC5jcHA6CisgICAgICAgICogcGFs
L2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVRleHR1cmVJbXBsLmg6CisgICAgICAgICogcGFs
L2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVRleHR1cmVWaWV3SW1wbC5jcHA6CisgICAgICAg
ICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVRleHR1cmVWaWV3SW1wbC5oOgorCiAy
MDIxLTExLTI1ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQU5HTEUgTWV0YWw6IFRoZSBtZW1vcnkgYmFja2luZyBJT1N1cmZhY2VzIG9mIGZvcm1lciBj
bGllbnQgYnVmZmVyIHBidWZmZXJzIGlzIGxlYWtlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhZDhlNjg4MGYwNTU5
ODE2YTQ3MGQ3NTUwNWIxODllZjE5MmE2ODU0Li5kOGVkZjY5YjRkMTY5Y2I4MzgzZWE2ZjhhNWI5
N2EwNjUxZWVjMjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDkwIEBACisyMDIxLTExLTI3ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0g
SG9vayB1cCBmaXJzdCBBUEkgZnVuY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMzUzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogQ29uZmlndXJh
dGlvbnMvQmFzZVRhcmdldC54Y2NvbmZpZzoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1
dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0
OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVtb3RlR1BVKToKKyAgICAgICAgKiBHUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlQWRhcHRlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExheW91dC5oOgorICAgICAgICAqIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRCdWZmZXIuaDoKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kRW5jb2Rlci5oOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlci5oOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQaXBlbGluZS5o
OgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZURldmljZS5oOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4dHVy
ZS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdQVTo6UmVtb3RlR1BVKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR1BVOjp+UmVtb3RlR1BVKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR1BVOjpp
bml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR1BVOjpzdG9wTGlzdGVuaW5nRm9y
SVBDKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR1BVOjp3b3JrUXVldWVJbml0aWFsaXplKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR1BVOjp3b3JrUXVldWVVbmluaXRpYWxpemUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHUFU6OnJlcXVlc3RBZGFwdGVyKToKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVQaXBlbGluZUxheW91dC5oOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0Lmg6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVldWUuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGUuaDoKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyLmg6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIuaDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBlbGlu
ZS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNhbXBsZXIu
aDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1
bGUuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJl
Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVZp
ZXcuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVPYmplY3RI
ZWFwLmg6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZUFkYXB0ZXJQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBQcm94eS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZmZXJQcm94eS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kQnVm
ZmVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlQ29tbWFuZEVuY29kZXJQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVEZXZpY2VQ
cm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVF
eHRlcm5hbFRleHR1cmVQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVHUFVQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdQVVBy
b3h5OjpSZW1vdGVHUFVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdQVVByb3h5Ojpn
cHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR1BV
UHJveHk6OmFiYW5kb25HUFVQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR1BVUHJv
eHk6Ondhc0NyZWF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHUFVQcm94eTo6d2FpdFVu
dGlsSW5pdGlhbGl6ZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHUFVQcm94eTo6cmVxdWVz
dEFkYXB0ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUdQVVByb3h5OjpSZW1v
dGVHUFVQcm94eSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlR1BV
UHJveHk6On5SZW1vdGVHUFVQcm94eSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdQ
VTo6UmVtb3RlR1BVUHJveHk6OnJlcXVlc3RBZGFwdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVUHJveHkuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVUHJveHkubWVzc2FnZXMu
aW46IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVQaXBlbGluZUxheW91dFByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0UHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVldWVQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHkuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVu
ZGxlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5Lmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNhbXBsZXJQcm94eS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGVQcm94
eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0
dXJlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlVGV4dHVyZVZpZXdQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1dlYkdQVS9XZWJHUFVEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUdQVUZvcldlYkdQVSBjb25zdCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKwog
MjAyMS0xMS0yNiAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQuIFVwZGF0ZSBPcHRpb25zV1BFLmNtYWtlIGFuZCBORVdTIGZv
ciB0aGUgMi4zNS4xIHJlbGVhc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA1MDFk
NTAxYWIzODAxN2YxZDhmOWU4MWM5YmVmZGMyZDdmNmYxNmZlLi4xMmE1Y2FhZjQ3ODdlN2NkYzU0
NTUzNTg2Y2FjYmM0MDhmNzM0MDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMjEtMTEtMjcgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFw
cGxlLmNvbT4KKworICAgICAgICBbV2ViR1BVXSBIb29rIHVwIGZpcnN0IEFQSSBmdW5jdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNTM0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDb25maWd1
cmF0aW9ucy9XZWJLaXRMZWdhY3kueGNjb25maWc6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50Lm1tOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVHUFVGb3JXZWJHUFUgY29u
c3QpOgorCiAyMDIxLTExLTI0ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAK
ICAgICAgICAgQ29tcGlsZXIgc2hvdWxkIGJlIGFibGUgdG8gY2hlY2sgbG9jYWxpemVkIGZvcm1h
dCBzdHJpbmdzIGZvciBjb25zaXN0ZW5jeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9TY3JpcHRz
L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzLnlhbWwgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJl
ZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbAppbmRleCBlYzgyYmY1YjVhMjk5ZDcxMjA3MDM0
OGVjNDFiYmQ5YjYzNjc2OWUyLi41NzNlMDI1ZDhkOWY3MDM2ZGJiMzgyZjUwZmI0MTUyNTJlN2E4
N2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVy
ZW5jZXMueWFtbAorKysgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVy
ZW5jZXMueWFtbApAQCAtMjU1MSwxMSArMjU1MSwxMSBAQCBXZWJHUFU6CiAgIHR5cGU6IGJvb2wK
ICAgZGVmYXVsdFZhbHVlOgogICAgIFdlYktpdExlZ2FjeToKLSAgICAgIGRlZmF1bHQ6IGZhbHNl
CisgICAgICBkZWZhdWx0OiB0cnVlCiAgICAgV2ViS2l0OgotICAgICAgZGVmYXVsdDogZmFsc2UK
KyAgICAgIGRlZmF1bHQ6IHRydWUKICAgICBXZWJDb3JlOgotICAgICAgZGVmYXVsdDogZmFsc2UK
KyAgICAgIGRlZmF1bHQ6IHRydWUKIAogV2ViU2VjdXJpdHlFbmFibGVkOgogICB0eXBlOiBib29s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9XZWJDb3JlLnhjY29u
ZmlnIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2NvbmZpZwppbmRl
eCBiOGJhNGM2YTY0YWRiYzg4OWY3NmJmZmFmZDg0OTcxYzZhYzhhMmNkLi42Y2VmMjQ0N2QwNzA4
ZDVhYTkzMmQ4ZjZiMzhkN2Y5NmE4NzEyNWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
b25maWd1cmF0aW9ucy9XZWJDb3JlLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZp
Z3VyYXRpb25zL1dlYkNvcmUueGNjb25maWcKQEAgLTczLDYgKzczLDggQEAgVU5FWFBPUlRFRF9T
WU1CT0xTX0ZJTEUgPSBDb25maWd1cmF0aW9ucy9XZWJDb3JlLnVuZXhwOwogCiBXS19BTkdMRV9M
REZMQUdTID0gLXdlYWstbEFOR0xFLXNoYXJlZDsKIAorV0tfV0VCR1BVX0xERkxBR1MgPSAtd2Vh
a19mcmFtZXdvcmsgV2ViR1BVOworCiBXS19BUFBLSVRfTERGTEFHUyA9ICQoV0tfQVBQS0lUX0xE
RkxBR1NfJChXS19QTEFURk9STV9OQU1FKSk7CiBXS19BUFBLSVRfTERGTEFHU19tYWNvc3ggPSAt
ZnJhbWV3b3JrIEFwcEtpdDsKIFdLX0FQUEtJVF9MREZMQUdTX21hY2NhdGFseXN0ID0gLWZyYW1l
d29yayBBcHBLaXQ7CkBAIC0xMzAsNyArMTMyLDcgQEAgV0tfU0NFTkVLSVRfTERGTEFHUyA9ICQo
V0tfU0NFTkVLSVRfTERGTEFHU18kKFdLX1BMQVRGT1JNX05BTUUpKTsKIFdLX1NDRU5FS0lUX0xE
RkxBR1NfbWFjb3N4ID0gLXdlYWtfZnJhbWV3b3JrIFNjZW5lS2l0OwogCiAvLyBGSVhNRTogUmVk
dWNlIHRoZSBudW1iZXIgb2YgYWxsb3dhYmxlX2NsaWVudHMgPHJkYXI6Ly9wcm9ibGVtLzMxODIz
OTY5PgotT1RIRVJfTERGTEFHUyA9ICQoaW5oZXJpdGVkKSAkKFdLX1JFTE9DQVRBQkxFX0ZSQU1F
V09SS19MREZMQUdTKSAtbHNxbGl0ZTMgLWxvYmpjIC1hbGxvd2FibGVfY2xpZW50IFdlYkNvcmVU
ZXN0U3VwcG9ydCAtYWxsb3dhYmxlX2NsaWVudCBXZWJLaXRMZWdhY3kgLWZvcmNlX2xvYWQgJChC
VUlMVF9QUk9EVUNUU19ESVIpL2xpYlBBTC5hIC1mcmFtZXdvcmsgQ0ZOZXR3b3JrIC1mcmFtZXdv
cmsgQ29yZUF1ZGlvIC1mcmFtZXdvcmsgQ29yZUdyYXBoaWNzIC1mcmFtZXdvcmsgQ29yZVRleHQg
LWZyYW1ld29yayBGb3VuZGF0aW9uIC1mcmFtZXdvcmsgSU9TdXJmYWNlIC1mcmFtZXdvcmsgSW1h
Z2VJTyAtZnJhbWV3b3JrIE1ldGFsICQoT1RIRVJfTERGTEFHU19QTEFURk9STV8kKFdLX0NPQ09B
X1RPVUNIKSkgJChPVEhFUl9MREZMQUdTX1BMQVRGT1JNXyQoV0tfUExBVEZPUk1fTkFNRSkpICQo
V0tfQU5HTEVfTERGTEFHUykgJChXS19BUFBLSVRfTERGTEFHUykgJChXS19BUFBTVVBQT1JUX0xE
RkxBR1MpICQoV0tfQVVESU9fVU5JVF9MREZMQUdTKSAkKFdLX0NBUkJPTl9MREZMQUdTKSAkKFdL
X0NPUkVfVUlfTERGTEFHUykgJChXS19EQVRBX0RFVEVDVE9SU19DT1JFX0xERkxBR1MpICQoV0tf
R1JBUEhJQ1NfU0VSVklDRVNfTERGTEFHUykgJChXS19JT1NVUkZBQ0VfQUNDRUxFUkFUT1JfTERG
TEFHUykgJChXS19MSUJXRUJSVENfTERGTEFHUykgJChXS19NT0JJTEVfQ09SRV9TRVJWSUNFU19M
REZMQUdTKSAkKFdLX01PQklMRV9HRVNUQUxUX0xERkxBR1MpICQoV0tfTkVUV09SS19FWFRFTlNJ
T05fTERfRkxBR1MpICQoV0tfU1lTVEVNX0NPTkZJR1VSQVRJT05fTERGTEFHUykgJChXS19DT1JF
X0lNQUdFX0xERkxBR1MpICQoV0tfVVJMX0ZPUk1BVFRJTkdfTERGTEFHUykgJChXS19TQ0VORUtJ
VF9MREZMQUdTKTsKK09USEVSX0xERkxBR1MgPSAkKGluaGVyaXRlZCkgJChXS19SRUxPQ0FUQUJM
RV9GUkFNRVdPUktfTERGTEFHUykgLWxzcWxpdGUzIC1sb2JqYyAtYWxsb3dhYmxlX2NsaWVudCBX
ZWJDb3JlVGVzdFN1cHBvcnQgLWFsbG93YWJsZV9jbGllbnQgV2ViS2l0TGVnYWN5IC1mb3JjZV9s
b2FkICQoQlVJTFRfUFJPRFVDVFNfRElSKS9saWJQQUwuYSAtZnJhbWV3b3JrIENGTmV0d29yayAt
ZnJhbWV3b3JrIENvcmVBdWRpbyAtZnJhbWV3b3JrIENvcmVHcmFwaGljcyAtZnJhbWV3b3JrIENv
cmVUZXh0IC1mcmFtZXdvcmsgRm91bmRhdGlvbiAtZnJhbWV3b3JrIElPU3VyZmFjZSAtZnJhbWV3
b3JrIEltYWdlSU8gLWZyYW1ld29yayBNZXRhbCAkKE9USEVSX0xERkxBR1NfUExBVEZPUk1fJChX
S19DT0NPQV9UT1VDSCkpICQoT1RIRVJfTERGTEFHU19QTEFURk9STV8kKFdLX1BMQVRGT1JNX05B
TUUpKSAkKFdLX0FOR0xFX0xERkxBR1MpICQoV0tfV0VCR1BVX0xERkxBR1MpICQoV0tfQVBQS0lU
X0xERkxBR1MpICQoV0tfQVBQU1VQUE9SVF9MREZMQUdTKSAkKFdLX0FVRElPX1VOSVRfTERGTEFH
UykgJChXS19DQVJCT05fTERGTEFHUykgJChXS19DT1JFX1VJX0xERkxBR1MpICQoV0tfREFUQV9E
RVRFQ1RPUlNfQ09SRV9MREZMQUdTKSAkKFdLX0dSQVBISUNTX1NFUlZJQ0VTX0xERkxBR1MpICQo
V0tfSU9TVVJGQUNFX0FDQ0VMRVJBVE9SX0xERkxBR1MpICQoV0tfTElCV0VCUlRDX0xERkxBR1Mp
ICQoV0tfTU9CSUxFX0NPUkVfU0VSVklDRVNfTERGTEFHUykgJChXS19NT0JJTEVfR0VTVEFMVF9M
REZMQUdTKSAkKFdLX05FVFdPUktfRVhURU5TSU9OX0xEX0ZMQUdTKSAkKFdLX1NZU1RFTV9DT05G
SUdVUkFUSU9OX0xERkxBR1MpICQoV0tfQ09SRV9JTUFHRV9MREZMQUdTKSAkKFdLX1VSTF9GT1JN
QVRUSU5HX0xERkxBR1MpICQoV0tfU0NFTkVLSVRfTERGTEFHUyk7CiAKIE9USEVSX0xERkxBR1Nf
UExBVEZPUk1fY29jb2F0b3VjaCA9IC1hbGxvd2FibGVfY2xpZW50IFdlYktpdCAtYWxsb3dhYmxl
X2NsaWVudCBpVHVuZXNVIC1hbGxvd2FibGVfY2xpZW50IENhc2FibGFuY2EgLWFsbG93YWJsZV9j
bGllbnQgUmVtb3RlIC1hbGxvd2FibGVfY2xpZW50IFRWQm9va3MgLWFsbG93YWJsZV9jbGllbnQg
RHVtcFJlbmRlclRyZWUgLWFsbG93YWJsZV9jbGllbnQgV2ViS2l0VGVzdFJ1bm5lciAtYWxsb3dh
YmxlX2NsaWVudCBUZXN0V2ViS2l0QVBJOwogT1RIRVJfTERGTEFHU19QTEFURk9STV9tYWNvc3gg
PSAtc3ViX2xpYnJhcnkgbGlib2JqYyAtdW1icmVsbGEgV2ViS2l0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvV2ViR1BVL0dQVS5jcHAKaW5kZXggMjYxM2YyZjc4OTRmZTBiM2ExZGQzZGYzODBmZTNkYmEy
NGI3MGZhZC4uMzhmZWY4ZjdhOWRjZjJmNzIxOTdhMTFhNzE0ZmY5OWVjNjA3NjAxNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFUuY3BwCkBAIC0zOCw4ICszOCwyMiBAQCBzdGF0aWMg
UEFMOjpXZWJHUFU6OlJlcXVlc3RBZGFwdGVyT3B0aW9ucyBjb252ZXJ0VG9CYWNraW5nKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8RwogICAgIHJldHVybiBvcHRpb25zLT5jb252ZXJ0VG9CYWNraW5nKCk7
CiB9CiAKK3ZvaWQgR1BVOjpzZXRCYWNraW5nKFBBTDo6V2ViR1BVOjpHUFUmIGJhY2tpbmcpCit7
CisgICAgbV9iYWNraW5nID0gJmJhY2tpbmc7CisgICAgd2hpbGUgKCFtX3BlbmRpbmdSZXF1ZXN0
QWRhcHRlckFyZ3VtZW50cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byBhcmd1bWVudHMgPSBt
X3BlbmRpbmdSZXF1ZXN0QWRhcHRlckFyZ3VtZW50cy50YWtlRmlyc3QoKTsKKyAgICAgICAgcmVx
dWVzdEFkYXB0ZXIoYXJndW1lbnRzLm9wdGlvbnMsIFdURk1vdmUoYXJndW1lbnRzLnByb21pc2Up
KTsKKyAgICB9Cit9CisKIHZvaWQgR1BVOjpyZXF1ZXN0QWRhcHRlcihjb25zdCBzdGQ6Om9wdGlv
bmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4mIG9wdGlvbnMsIFJlcXVlc3RBZGFwdGVyUHJv
bWlzZSYmIHByb21pc2UpCiB7CisgICAgaWYgKCFtX2JhY2tpbmcpIHsKKyAgICAgICAgbV9wZW5k
aW5nUmVxdWVzdEFkYXB0ZXJBcmd1bWVudHMuYXBwZW5kKHsgb3B0aW9ucywgV1RGTW92ZShwcm9t
aXNlKSB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIG1fYmFja2luZy0+cmVxdWVz
dEFkYXB0ZXIoY29udmVydFRvQmFja2luZyhvcHRpb25zKSwgW3Byb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpXSAoUmVmUHRyPFBBTDo6V2ViR1BVOjpBZGFwdGVyPiYmIGFkYXB0ZXIpIG11dGFibGUg
ewogICAgICAgICBpZiAoIWFkYXB0ZXIpCiAgICAgICAgICAgICBwcm9taXNlLnJlc29sdmUobnVs
bHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFUuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVS5oCmluZGV4IDE2ZTQ3NzRiMzFjOGQ2
ZTJhZWM4NzE4Njc5MDE1N2E3ZWZlZmUwNzAuLmQzMDRlOGU4ZjdhMTUzNWI3OGI5MzBmN2UxYzY4
YjA2MzM1Yjk1NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQ
VS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVS5oCkBAIC0zMCw2ICsz
MCw3IEBACiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlIDxvcHRp
b25hbD4KICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVS5oPgorI2luY2x1ZGUg
PHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogCkBAIC0zNywyNCArMzgsMjUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBHUFUgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PEdQVT4gY3JlYXRlKFJlZjxQQUw6OldlYkdQVTo6R1BVPiYmIGJhY2tpbmcpCisgICAgc3RhdGlj
IFJlZjxHUFU+IGNyZWF0ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBH
UFUoV1RGTW92ZShiYWNraW5nKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHUFUo
KSk7CiAgICAgfQogCiAgICAgdXNpbmcgUmVxdWVzdEFkYXB0ZXJQcm9taXNlID0gRE9NUHJvbWlz
ZURlZmVycmVkPElETE51bGxhYmxlPElETEludGVyZmFjZTxHUFVBZGFwdGVyPj4+OwogICAgIHZv
aWQgcmVxdWVzdEFkYXB0ZXIoY29uc3Qgc3RkOjpvcHRpb25hbDxHUFVSZXF1ZXN0QWRhcHRlck9w
dGlvbnM+JiwgUmVxdWVzdEFkYXB0ZXJQcm9taXNlJiYpOwogCi0gICAgUEFMOjpXZWJHUFU6OkdQ
VSYgYmFja2luZygpIHsgcmV0dXJuIG1fYmFja2luZzsgfQotICAgIGNvbnN0IFBBTDo6V2ViR1BV
OjpHUFUmIGJhY2tpbmcoKSBjb25zdCB7IHJldHVybiBtX2JhY2tpbmc7IH0KKyAgICB2b2lkIHNl
dEJhY2tpbmcoUEFMOjpXZWJHUFU6OkdQVSYpOwogCiBwcml2YXRlOgotICAgIEdQVShSZWY8UEFM
OjpXZWJHUFU6OkdQVT4mJiBiYWNraW5nKQotICAgICAgICA6IG1fYmFja2luZyhXVEZNb3ZlKGJh
Y2tpbmcpKQotICAgIHsKLSAgICB9Ci0KLSAgICBSZWY8UEFMOjpXZWJHUFU6OkdQVT4gbV9iYWNr
aW5nOworICAgIEdQVSgpID0gZGVmYXVsdDsKKworICAgIHN0cnVjdCBQZW5kaW5nUmVxdWVzdEFk
YXB0ZXJBcmd1bWVudHMgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVy
T3B0aW9ucz4gb3B0aW9uczsKKyAgICAgICAgUmVxdWVzdEFkYXB0ZXJQcm9taXNlIHByb21pc2U7
CisgICAgfTsKKyAgICBEZXF1ZTxQZW5kaW5nUmVxdWVzdEFkYXB0ZXJBcmd1bWVudHM+IG1fcGVu
ZGluZ1JlcXVlc3RBZGFwdGVyQXJndW1lbnRzOworICAgIFJlZlB0cjxQQUw6OldlYkdQVTo6R1BV
PiBtX2JhY2tpbmc7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFM
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWU2OTk3NWZiYmI2Y2NiOWI2MWU0NzA3N2ExYTI1
M2JjZGMzYWRiMC4uZDM0OGJmNzY2OTJkNDY3MTBkYzYxZTJiOGE0ZDMxMTdmMGYyZTIxZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTQxLDYgKzE0MSw3IEBACiAJCTFDQzNBQ0U4MjJCRDdFQzUwMEYzNjBGMCAvKiBNZXRhbFNQ
SS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNDM0FD
RTcyMkJEN0VCODAwRjM2MEYwIC8qIE1ldGFsU1BJLmggKi87IH07CiAJCTFDQ0VFNEY1MjBEODcx
OTMwMDQ3QjA5NyAvKiBDb3JlVUlTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFDQ0VFNEY0MjBEODcxOTMwMDQ3QjA5NyAvKiBDb3JlVUlTUEkuaCAq
LzsgfTsKIAkJMUNDRUU0RjcyMEQ4NzQzRjAwNDdCMDk3IC8qIE5TQXBwZWFyYW5jZVNQSS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNDRUU0RjYyMEQ4
NzQzRjAwNDdCMDk3IC8qIE5TQXBwZWFyYW5jZVNQSS5oICovOyB9OworCQkxQ0Q0MTJFODI3NTFF
NERDMDBDQTJFMjIgLyogV2ViR1BVSW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUMxOUU2OUIyNzNGNDI0MjAwNEIxN0IwIC8qIFdlYkdQVUltcGwu
aCAqLzsgfTsKIAkJMUNFRkExQzMyNzM3QTRDODAwRjBEQTk1IC8qIFdlYkdQVUJpbmRHcm91cERl
c2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFDQzVFNDZFMjczNzQ5NDgwMDZGNkZGNCAvKiBXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmgg
Ki87IH07CiAJCTFDRUZBMUM0MjczN0E0QzgwMEYwREE5NSAvKiBXZWJHUFVTYW1wbGVyRGVzY3Jp
cHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUND
NUU0MjMyNzM3NDkyQzAwNkY2RkY0IC8qIFdlYkdQVVNhbXBsZXJEZXNjcmlwdG9yLmggKi87IH07
CiAJCTFDRUZBMUM1MjczN0E0QzgwMEYwREE5NSAvKiBXZWJHUFVTdG9yYWdlVGV4dHVyZUFjY2Vz
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNDNUU0
MjAyNzM3NDkyQzAwNkY2RkY0IC8qIFdlYkdQVVN0b3JhZ2VUZXh0dXJlQWNjZXNzLmggKi87IH07
CkBAIC0xNjI0LDYgKzE2MjUsNyBAQAogCQkJCTFDRUZBMjMyMjczN0E0QzgwMEYwREE5NSAvKiBX
ZWJHUFVJbWFnZUNvcHlUZXh0dXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQ0VGQTIzRjI3MzdB
NEM4MDBGMERBOTUgLyogV2ViR1BVSW1hZ2VDb3B5VGV4dHVyZVRhZ2dlZC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUNFRkEyM0IyNzM3QTRDODAwRjBEQTk1IC8qIFdlYkdQVUltYWdlRGF0YUxheW91
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUNENDEyRTgyNzUxRTREQzAwQ0EyRTIyIC8qIFdlYkdQ
VUltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDRUZBMjA3MjczN0E0QzgwMEYwREE5NSAvKiBX
ZWJHUFVJbmRleEZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUNFRkEyMTQyNzM3QTRDODAw
RjBEQTk1IC8qIFdlYkdQVUludGVncmFsVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDRUZB
MjFEMjczN0E0QzgwMEYwREE5NSAvKiBXZWJHUFVMb2FkT3AuaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJH
UFVBZGFwdGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQ
VS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmNwcAppbmRleCA3ZDViMTY1NGVlZDA3NmMxNzYwMjY4
ZGYwMDI2ZGI3MjIwNjU3YjhjLi44MzUzNmI0YzVlNTQwZGVlMzUxNmMxZWUzMWI5NmMxMWU5NDlm
MGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9J
bXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dy
YXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmNwcApAQCAtMjYsOCArMjYsNiBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkdQVUFkYXB0ZXJJbXBsLmgiCiAK
LSNpZiBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKLQogI2luY2x1ZGUgIldlYkdQVUNvbnZl
cnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViR1BVRGV2aWNlSW1wbC5oIgogI2lu
Y2x1ZGUgPFdlYkdQVS9XZWJHUFVFeHQuaD4KQEAgLTIxNSw1ICsyMTMsMyBAQCB2b2lkIEFkYXB0
ZXJJbXBsOjpyZXF1ZXN0RGV2aWNlQ2FsbGJhY2soV0dQVVJlcXVlc3REZXZpY2VTdGF0dXMsIFdH
UFVEZXZpY2UgZGV2aQogfQogCiB9IC8vIG5hbWVzcGFjZSBQQUw6OldlYkdQVQotCi0jZW5kaWYg
Ly8gSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBs
LmgKaW5kZXggODE0YTI1NzBiMjhlYWU3YmJkY2E5ZmY2YTI4Yzc4NzdiNWVkMzljNy4uN2M2NDc1
YmQ5ODE5OThlMGMwODI1MDUyODcwYTg4NDQzNjkxZWQ0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVBZGFwdGVySW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRh
cHRlckltcGwuaApAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIEhBVkUo
V0VCR1BVX0lNUExFTUVOVEFUSU9OKQotCiAjaW5jbHVkZSAiV2ViR1BVQWRhcHRlci5oIgogI2lu
Y2x1ZGUgPFdlYkdQVS9XZWJHUFUuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTM2LDYg
KzM0LDcgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdD
b250ZXh0OwogCiBjbGFzcyBBZGFwdGVySW1wbCBmaW5hbCA6IHB1YmxpYyBBZGFwdGVyIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEFkYXB0
ZXJJbXBsPiBjcmVhdGUoV0dQVUFkYXB0ZXIgYWRhcHRlciwgQ29udmVydFRvQmFja2luZ0NvbnRl
eHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQogICAgIHsKQEAgLTY3LDUgKzY2LDMgQEAgcHJp
dmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBIQVZF
KFdFQkdQVV9JTVBMRU1FTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQmluZEdyb3VwSW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUJpbmRHcm91cEltcGwu
Y3BwCmluZGV4IGIzYmUyOTM1NzE2ZDk4OWZhMTY3MjYwNDQxYmUxYzA0NjM4ZTdiZGMuLjk0MmI5
ZTFiZWFkN2I4MTlhMjIzNDYwYWQ0N2QzZDU3ZWYwNmZjZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQmluZEdyb3VwSW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJH
UFVCaW5kR3JvdXBJbXBsLmNwcApAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIldlYkdQVUJpbmRHcm91cEltcGwuaCIKIAotI2lmIEhBVkUoV0VCR1BVX0lN
UExFTUVOVEFUSU9OKQotCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQu
aCIKICNpbmNsdWRlIDxXZWJHUFUvV2ViR1BVRXh0Lmg+CiAKQEAgLTUwLDUgKzQ4LDMgQEAgdm9p
ZCBCaW5kR3JvdXBJbXBsOjpzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBIQVZFKFdFQkdQVV9J
TVBMRU1FTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhp
Y3MvV2ViR1BVL0ltcGwvV2ViR1BVQmluZEdyb3VwSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCaW5kR3JvdXBJbXBsLmgKaW5kZXggMzVh
ZDQzMzFlYWQ5OTBiZTJjN2MxMTQzYmFlZDcyZmNjZTU5ZTA2ZS4uOGFhYTAwMzM5NWE4OWFlNzc4
MzQ2NDdjZWRjMDg1MjNhYTg2YTJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCaW5kR3JvdXBJbXBsLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCaW5kR3JvdXBJbXBs
LmgKQEAgLTI1LDggKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBIQVZFKFdFQkdQVV9J
TVBMRU1FTlRBVElPTikKLQogI2luY2x1ZGUgIldlYkdQVUJpbmRHcm91cC5oIgogI2luY2x1ZGUg
PFdlYkdQVS9XZWJHUFUuaD4KIApAQCAtMzUsNiArMzMsNyBAQCBuYW1lc3BhY2UgUEFMOjpXZWJH
UFUgewogY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIEJpbmRHcm91cElt
cGwgZmluYWwgOiBwdWJsaWMgQmluZEdyb3VwIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEJpbmRHcm91cEltcGw+IGNyZWF0ZShXR1BVQmlu
ZEdyb3VwIGJpbmRHcm91cCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tp
bmdDb250ZXh0KQogICAgIHsKQEAgLTYyLDUgKzYxLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBIQVZFKFdFQkdQVV9JTVBMRU1FTlRB
VElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQmluZEdyb3VwTGF5b3V0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUJpbmRHcm91cExheW91dEltcGwuY3BwCmlu
ZGV4IGZkYzc5NWY4NTE5NDBkNDJlYzUwNGFiOGQ0MDlkNjkyY2VlMTc0NDYuLjdmNTY3OTFiNDQ4
ZmI4OTU2NzFlZDc1YWI3ZTc0MTQ0NjJmMjc5NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQmluZEdyb3VwTGF5b3V0SW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJH
UFVCaW5kR3JvdXBMYXlvdXRJbXBsLmNwcApAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIldlYkdQVUJpbmRHcm91cExheW91dEltcGwuaCIKIAotI2lmIEhB
VkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQotCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFj
a2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxXZWJHUFUvV2ViR1BVRXh0Lmg+CiAKQEAgLTUwLDUg
KzQ4LDMgQEAgdm9pZCBCaW5kR3JvdXBMYXlvdXRJbXBsOjpzZXRMYWJlbEludGVybmFsKGNvbnN0
IFN0cmluZyYgbGFiZWwpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRp
ZiAvLyBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQmluZEdyb3VwTGF5b3V0SW1w
bC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVC
aW5kR3JvdXBMYXlvdXRJbXBsLmgKaW5kZXggODY1Y2RjOTgyMDgzYjJlMzZiNDcyNjMzYTAxMTIz
NTYyNDBkNjI5MS4uOWMyMTY4NTI5NmJhOGIyNTRmMmI2NWQ5ZjdkODkyZWRkZWUwNzc0MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJH
UFVCaW5kR3JvdXBMYXlvdXRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFw
aGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCaW5kR3JvdXBMYXlvdXRJbXBsLmgKQEAgLTI1LDggKzI1
LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikK
LQogI2luY2x1ZGUgIldlYkdQVUJpbmRHcm91cExheW91dC5oIgogI2luY2x1ZGUgPFdlYkdQVS9X
ZWJHUFUuaD4KIApAQCAtMzUsNiArMzMsNyBAQCBuYW1lc3BhY2UgUEFMOjpXZWJHUFUgewogY2xh
c3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIEJpbmRHcm91cExheW91dEltcGwg
ZmluYWwgOiBwdWJsaWMgQmluZEdyb3VwTGF5b3V0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEJpbmRHcm91cExheW91dEltcGw+IGNyZWF0
ZShXR1BVQmluZEdyb3VwTGF5b3V0IGJpbmRHcm91cExheW91dCwgQ29udmVydFRvQmFja2luZ0Nv
bnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQogICAgIHsKQEAgLTYyLDUgKzYxLDMgQEAg
cHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBI
QVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQnVmZmVySW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUJ1ZmZlckltcGwuY3Bw
CmluZGV4IGQ5YTljZTVjYWQ4ZDlhNWY5MTZmYjYwZWNlOTJjMTI3ZjNiZjg1ZGUuLmEwYTg3Yjgx
M2JiYmRmMzg0ODgxNjk0YTBmYjM0ZmVhYWU3ZTBmNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQnVmZmVySW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCdWZm
ZXJJbXBsLmNwcApAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIldlYkdQVUJ1ZmZlckltcGwuaCIKIAotI2lmIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9O
KQotCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRl
IDxXZWJHUFUvV2ViR1BVRXh0Lmg+CiAKQEAgLTk4LDUgKzk2LDMgQEAgdm9pZCBCdWZmZXJJbXBs
OjpzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVQnVmZmVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJH
UFUvSW1wbC9XZWJHUFVCdWZmZXJJbXBsLmgKaW5kZXggYzM2N2U3YmM3MzlmNzczZWU2MjI0ODNj
Y2M3MTVlNTBjNDNhYzUyNy4uZjkzNTNhOTBlMmY0OGJhYzgxOTVhZTZiMmRhMDUzZWUyNzBkNGMy
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1w
bC9XZWJHUFVCdWZmZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGlj
cy9XZWJHUFUvSW1wbC9XZWJHUFVCdWZmZXJJbXBsLmgKQEAgLTI1LDggKzI1LDYgQEAKIAogI3By
YWdtYSBvbmNlCiAKLSNpZiBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKLQogI2luY2x1ZGUg
IldlYkdQVUJ1ZmZlci5oIgogI2luY2x1ZGUgPFdlYkdQVS9XZWJHUFUuaD4KICNpbmNsdWRlIDx3
dGYvRGVxdWUuaD4KQEAgLTM2LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNs
YXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBCdWZmZXJJbXBsIGZpbmFsIDog
cHVibGljIEJ1ZmZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlZjxCdWZmZXJJbXBsPiBjcmVhdGUoV0dQVUJ1ZmZlciBidWZmZXIsIENvbnZl
cnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKICAgICB7CkBAIC03
Myw1ICs3MiwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBQQUw6OldlYkdQVQot
Ci0jZW5kaWYgLy8gSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbW1hbmRCdWZm
ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVQ29tbWFuZEJ1ZmZlckltcGwuY3BwCmluZGV4IDQ4NDc2ZjdmYzczZmM3ZGU3ODQ5N2Ey
YjI3YTY4OGUwNmFmNGJkYWYuLjc5YzVlMmUwM2M2NTM5ZWVkOGRkYjQxM2MwNTQ3MTAwNDhiZjUz
NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0lt
cGwvV2ViR1BVQ29tbWFuZEJ1ZmZlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tbWFuZEJ1ZmZlckltcGwuY3BwCkBAIC0y
Niw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViR1BVQ29tbWFu
ZEJ1ZmZlckltcGwuaCIKIAotI2lmIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQotCiAjaW5j
bHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxXZWJHUFUv
V2ViR1BVRXh0Lmg+CiAKQEAgLTUwLDUgKzQ4LDMgQEAgdm9pZCBDb21tYW5kQnVmZmVySW1wbDo6
c2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmIGxhYmVsKQogfQogCiB9IC8vIG5hbWVzcGFj
ZSBQQUw6OldlYkdQVQotCi0jZW5kaWYgLy8gSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dl
YkdQVUNvbW1hbmRCdWZmZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNz
L1dlYkdQVS9JbXBsL1dlYkdQVUNvbW1hbmRCdWZmZXJJbXBsLmgKaW5kZXggNGJjM2MxZWQ3YzNi
NDhlODAzN2E5NTcxMTEzYzZmNWI4MDU0OWEzYS4uM2U0N2NhN2E5OTIyMjI1OTZkZWIzODE2NzQ3
ZWU3MWY4NDVmZWRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGlj
cy9XZWJHUFUvSW1wbC9XZWJHUFVDb21tYW5kQnVmZmVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tbWFuZEJ1ZmZlckltcGwu
aApAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIEhBVkUoV0VCR1BVX0lN
UExFTUVOVEFUSU9OKQotCiAjaW5jbHVkZSAiV2ViR1BVQ29tbWFuZEJ1ZmZlci5oIgogI2luY2x1
ZGUgPFdlYkdQVS9XZWJHUFUuaD4KIApAQCAtMzUsNiArMzMsNyBAQCBuYW1lc3BhY2UgUEFMOjpX
ZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIENvbW1hbmRC
dWZmZXJJbXBsIGZpbmFsIDogcHVibGljIENvbW1hbmRCdWZmZXIgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8Q29tbWFuZEJ1ZmZlckltcGw+
IGNyZWF0ZShXR1BVQ29tbWFuZEJ1ZmZlciBjb21tYW5kQnVmZmVyLCBDb252ZXJ0VG9CYWNraW5n
Q29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCiAgICAgewpAQCAtNjIsNSArNjEsMyBA
QCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgUEFMOjpXZWJHUFUKLQotI2VuZGlmIC8v
IEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb21tYW5kRW5jb2RlckltcGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb21t
YW5kRW5jb2RlckltcGwuY3BwCmluZGV4IGE4NTM2YmNlY2QyNGQ1NzIwN2QyMTc0NTYwOWY4MjBl
YTljYmQ5YjYuLjcxMGViYWU4Njk0MjFmZGY0ZTVjOGNiNjA0MDk2ODc2NDUwYzNkNTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BV
Q29tbWFuZEVuY29kZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBo
aWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbW1hbmRFbmNvZGVySW1wbC5jcHAKQEAgLTI2LDggKzI2
LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJHUFVDb21tYW5kRW5jb2Rl
ckltcGwuaCIKIAotI2lmIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQotCiAjaW5jbHVkZSAi
V2ViR1BVQnVmZmVySW1wbC5oIgogI2luY2x1ZGUgIldlYkdQVUNvbW1hbmRCdWZmZXJJbXBsLmgi
CiAjaW5jbHVkZSAiV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVySW1wbC5oIgpAQCAtMjc3LDUgKzI3
NSwzIEBAIHZvaWQgQ29tbWFuZEVuY29kZXJJbXBsOjpzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0
cmluZyYgbGFiZWwpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAv
LyBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tbWFuZEVuY29kZXJJbXBsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbW1h
bmRFbmNvZGVySW1wbC5oCmluZGV4IGY1NTY2MmRjNDRlZjZmZjQwYzQ3NTA5OGRjZWRmZTdkYzBl
M2EzODUuLmU1ZWFhMTIzMmI2NTI2ZGIzOWQyZjdjMmYxZjI1ZTI0MjViMmM1N2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29t
bWFuZEVuY29kZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVDb21tYW5kRW5jb2RlckltcGwuaApAQCAtMjUsOCArMjUsNiBAQAog
CiAjcHJhZ21hIG9uY2UKIAotI2lmIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQotCiAjaW5j
bHVkZSAiV2ViR1BVQ29tbWFuZEVuY29kZXIuaCIKICNpbmNsdWRlIDxXZWJHUFUvV2ViR1BVLmg+
CiAKQEAgLTM1LDYgKzMzLDcgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNzIENvbnZl
cnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBDb21tYW5kRW5jb2RlckltcGwgZmluYWwgOiBw
dWJsaWMgQ29tbWFuZEVuY29kZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8Q29tbWFuZEVuY29kZXJJbXBsPiBjcmVhdGUoV0dQVUNvbW1h
bmRFbmNvZGVyIENvbW1hbmRFbmNvZGVyLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVy
dFRvQmFja2luZ0NvbnRleHQpCiAgICAgewpAQCAtMTA3LDUgKzEwNiwzIEBAIHByaXZhdGU6CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBQQUw6OldlYkdQVQotCi0jZW5kaWYgLy8gSEFWRShXRUJHUFVf
SU1QTEVNRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBo
aWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbXB1dGVQYXNzRW5jb2RlckltcGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb21wdXRlUGFzc0Vu
Y29kZXJJbXBsLmNwcAppbmRleCBmYTI2Njc1YWMzNjJjM2ZhMmFlYmU1NjIxODE5YmY4ZGJlMmE5
NTg5Li41ZTE5OTUxMmU4MGRkNWYwYWM2OGRkMmVmMjBkNjZkYTdmMWUyODc1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbXB1
dGVQYXNzRW5jb2RlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhp
Y3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVySW1wbC5jcHAKQEAgLTI2LDgg
KzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJHUFVDb21wdXRlUGFz
c0VuY29kZXJJbXBsLmgiCiAKLSNpZiBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKLQogI2lu
Y2x1ZGUgIldlYkdQVUJpbmRHcm91cEltcGwuaCIKICNpbmNsdWRlICJXZWJHUFVCdWZmZXJJbXBs
LmgiCiAjaW5jbHVkZSAiV2ViR1BVQ29tcHV0ZVBpcGVsaW5lSW1wbC5oIgpAQCAtMTE3LDUgKzEx
NSwzIEBAIHZvaWQgQ29tcHV0ZVBhc3NFbmNvZGVySW1wbDo6c2V0TGFiZWxJbnRlcm5hbChjb25z
dCBTdHJpbmcmIGxhYmVsKQogfQogCiB9IC8vIG5hbWVzcGFjZSBQQUw6OldlYkdQVQotCi0jZW5k
aWYgLy8gSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbXB1dGVQYXNzRW5jb2Rl
ckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVQ29tcHV0ZVBhc3NFbmNvZGVySW1wbC5oCmluZGV4IDJiNTc2MmVhNzUzYWU1YjljNGZhNWZh
MWFkM2Y5NTg4OGY4MmQ4M2QuLjg0ZGJlM2Q0M2EzZTFlOGRkM2RhYzM0NjUzYjZhZDM0MGM5Nzc5
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0lt
cGwvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVySW1wbC5o
CkBAIC0yNSw4ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgSEFWRShXRUJHUFVfSU1Q
TEVNRU5UQVRJT04pCi0KICNpbmNsdWRlICJXZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuaCIKICNp
bmNsdWRlIDxXZWJHUFUvV2ViR1BVLmg+CiAKQEAgLTM1LDYgKzMzLDcgQEAgbmFtZXNwYWNlIFBB
TDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBDb21w
dXRlUGFzc0VuY29kZXJJbXBsIGZpbmFsIDogcHVibGljIENvbXB1dGVQYXNzRW5jb2RlciB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxDb21w
dXRlUGFzc0VuY29kZXJJbXBsPiBjcmVhdGUoV0dQVUNvbXB1dGVQYXNzRW5jb2RlciBjb21wdXRl
UGFzc0VuY29kZXIsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCkKICAgICB7CkBAIC04NCw1ICs4MywzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBQQUw6OldlYkdQVQotCi0jZW5kaWYgLy8gSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBs
L1dlYkdQVUNvbXB1dGVQaXBlbGluZUltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9n
cmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb21wdXRlUGlwZWxpbmVJbXBsLmNwcAppbmRleCA0
ODY4ZjNkZTk4NzZlZjI1ODY5Y2Y0ZWRjZDBkMTU5MGEyNDJjZGJmLi4wNGNhMmZlNWM3NDkwZTIz
NmUyZWRiYmZmZjVhNjNjNmE0ZGMxZWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbXB1dGVQaXBlbGluZUltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29t
cHV0ZVBpcGVsaW5lSW1wbC5jcHAKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJXZWJHUFVDb21wdXRlUGlwZWxpbmVJbXBsLmgiCiAKLSNpZiBIQVZFKFdF
QkdQVV9JTVBMRU1FTlRBVElPTikKLQogI2luY2x1ZGUgIldlYkdQVUJpbmRHcm91cExheW91dElt
cGwuaCIKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1
ZGUgPFdlYkdQVS9XZWJHUFVFeHQuaD4KQEAgLTU2LDUgKzU0LDMgQEAgdm9pZCBDb21wdXRlUGlw
ZWxpbmVJbXBsOjpzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBIQVZFKFdFQkdQVV9JTVBMRU1F
TlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2Vi
R1BVL0ltcGwvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb21wdXRlUGlwZWxpbmVJbXBsLmgKaW5k
ZXggYzg5OGM5OWFlN2M0MWVkMGFlYjVkYTlkY2I0OGMwMTFlNTg1MDc1MC4uZjM0MTkwYmJmMWVm
ZWUwZjI1NTY5ZjM3MmJmYjNhODJmMzA5MzM4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb21wdXRlUGlwZWxpbmVJbXBsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVD
b21wdXRlUGlwZWxpbmVJbXBsLmgKQEAgLTI1LDggKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpZiBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKLQogI2luY2x1ZGUgIldlYkdQVUNvbXB1
dGVQaXBlbGluZS5oIgogI2luY2x1ZGUgPFdlYkdQVS9XZWJHUFUuaD4KIApAQCAtMzUsNiArMzMs
NyBAQCBuYW1lc3BhY2UgUEFMOjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRl
eHQ7CiAKIGNsYXNzIENvbXB1dGVQaXBlbGluZUltcGwgZmluYWwgOiBwdWJsaWMgQ29tcHV0ZVBp
cGVsaW5lIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmPENvbXB1dGVQaXBlbGluZUltcGw+IGNyZWF0ZShXR1BVQ29tcHV0ZVBpcGVsaW5lIGNv
bXB1dGVQaXBlbGluZSwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdD
b250ZXh0KQogICAgIHsKQEAgLTY0LDUgKzYzLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElP
TikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0lt
cGwvV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5j
cHAKaW5kZXggMGZiZmI0ZWNkNmI2NWM0NDFmNzE1NDMzZDJjNjUwOWQ4ZGU0MjNhYS4uZjlmYmI0
YTlkMmIyOGM0NTAxY2QzMWNiMzBmZDAzMmQxMmEwNDc1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb252ZXJ0VG9CYWNraW5n
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUv
SW1wbC9XZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5jcHAKQEAgLTI2LDggKzI2LDYgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dC5oIgogCi0jaWYgSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCi0KICNpbmNsdWRlICJX
ZWJHUFVBZGRyZXNzTW9kZS5oIgogI2luY2x1ZGUgIldlYkdQVUJsZW5kRmFjdG9yLmgiCiAjaW5j
bHVkZSAiV2ViR1BVQmxlbmRPcGVyYXRpb24uaCIKQEAgLTgzNSw1ICs4MzMsMyBAQCBXR1BVT3Jp
Z2luM0QgQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgT3Jp
Z2luM0QmIG9yaWdpbjNEKQogfQogCiB9IC8vIG5hbWVzcGFjZSBQQUw6OldlYkdQVQotCi0jZW5k
aWYgLy8gSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbnZlcnRUb0JhY2tpbmdD
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dl
YkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgKaW5kZXggM2M5YjVjN2I0ZDU4M2QyYTY3Mjhi
YmQ3MjczYjViYjI2MGM2MmQzOS4uMWY1NDI3YzYxODkyZDhiN2E4MDZjMThiZjQ1MmM3ZDZkNmI1
YmQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUv
SW1wbC9XZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRl
eHQuaApAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIEhBVkUoV0VCR1BV
X0lNUExFTUVOVEFUSU9OKQotCiAjaW5jbHVkZSAiV2ViR1BVQnVmZmVyVXNhZ2UuaCIKICNpbmNs
dWRlICJXZWJHUFVDb2xvci5oIgogI2luY2x1ZGUgIldlYkdQVUNvbG9yV3JpdGUuaCIKQEAgLTkz
LDYgKzkxLDcgQEAgZW51bSBjbGFzcyBWZXJ0ZXhGb3JtYXQgOiB1aW50OF90OwogZW51bSBjbGFz
cyBWZXJ0ZXhTdGVwTW9kZSA6IHVpbnQ4X3Q7CiAKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250
ZXh0IDogcHVibGljIFJlZkNvdW50ZWQ8Q29udmVydFRvQmFja2luZ0NvbnRleHQ+IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Db252ZXJ0VG9C
YWNraW5nQ29udGV4dCgpID0gZGVmYXVsdDsKIApAQCAtMTYwLDUgKzE1OSwzIEBAIHB1YmxpYzoK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBIQVZFKFdFQkdQ
VV9JTVBMRU1FTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3Jh
cGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVURldmljZUltcGwuY3BwCmluZGV4IGIz
ZjU1NWRiMzE3ODVlMmRiNmQ2NDE2YzJmOTI5NmVmNDI0MGQ4M2IuLjhlNGZkZGNmOTc3MmQ0Zjdi
NDRkOTQ4ZDE2NzY5MzhhMmQzN2MwZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNlSW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNw
cApAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkdQ
VURldmljZUltcGwuaCIKIAotI2lmIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQotCiAjaW5j
bHVkZSAiV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIldlYkdQVUJpbmRH
cm91cEltcGwuaCIKICNpbmNsdWRlICJXZWJHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmgi
CkBAIC02MTQsNSArNjEyLDMgQEAgdm9pZCBEZXZpY2VJbXBsOjpzZXRMYWJlbEludGVybmFsKGNv
bnN0IFN0cmluZyYgbGFiZWwpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFBBTDo6V2ViR1BVCi0KLSNl
bmRpZiAvLyBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNlSW1wbC5oIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJ
bXBsLmgKaW5kZXggNjI0OTM2YmU5NzI0YTJmY2MyYWNkOTkwZDEzZDIwMzlkZjQ4Y2M1YS4uNWU2
M2UxNTQ4NmJmMTY4NGZhY2I0ZDcyZDY0ZDUxMDY5YTE1MWFjNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVE
ZXZpY2VJbXBsLmgKQEAgLTI1LDggKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBIQVZF
KFdFQkdQVV9JTVBMRU1FTlRBVElPTikKLQogI2luY2x1ZGUgIldlYkdQVURldmljZS5oIgogI2lu
Y2x1ZGUgPFdlYkdQVS9XZWJHUFUuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTM2LDYg
KzM0LDcgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdD
b250ZXh0OwogCiBjbGFzcyBEZXZpY2VJbXBsIGZpbmFsIDogcHVibGljIERldmljZSB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxEZXZpY2VJ
bXBsPiBjcmVhdGUoV0dQVURldmljZSBkZXZpY2UsIFJlZjxTdXBwb3J0ZWRGZWF0dXJlcz4mJiBm
ZWF0dXJlcywgUmVmPFN1cHBvcnRlZExpbWl0cz4mJiBsaW1pdHMsIENvbnZlcnRUb0JhY2tpbmdD
b250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKICAgICB7CkBAIC05OCw1ICs5NywzIEBA
IHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBQQUw6OldlYkdQVQotCi0jZW5kaWYgLy8g
SEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVURvd25jYXN0Q29udmVydFRvQmFja2lu
Z0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1w
bC9XZWJHUFVEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmNwcAppbmRleCAxYjg1NGNi
N2VjNTI2N2IyZTU1NGQxMTExMDBiZmZhMGQzNjVkMmQyLi5mNjM3MzQwN2YxNzQ5MjIxMDliNjZk
ZDkxYWY0NGQ3ZDJjYzhhMjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dy
YXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVURvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5jcHAKQEAgLTI2LDggKzI2LDYgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJHUFVEb3duY2FzdENvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0LmgiCiAKLSNpZiBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKLQogI2lu
Y2x1ZGUgIldlYkdQVUFkYXB0ZXJJbXBsLmgiCiAjaW5jbHVkZSAiV2ViR1BVQmluZEdyb3VwSW1w
bC5oIgogI2luY2x1ZGUgIldlYkdQVUJpbmRHcm91cExheW91dEltcGwuaCIKQEAgLTE1OSw1ICsx
NTcsMyBAQCBXR1BVVGV4dHVyZVZpZXcgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6
Y29udmVydFRvQmFja2luZyhjb25zdCBUZXh0dXJlVgogfQogCiB9IC8vIG5hbWVzcGFjZSBQQUw6
OldlYkdQVQotCi0jZW5kaWYgLy8gSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVURv
d25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Z3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4
dC5oCmluZGV4IGJkMGZjYTE2MmUxYWU5MDUxMWUzZGZiNmY1ZTNjZmM3YzMxNDIwNTYuLjdiODc1
ZmU0YzNmZTA5NDk2ZWFiZjY3Mjk5MjJhNzdjYWYxZmFkMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRG93bmNhc3RDb252ZXJ0
VG9CYWNraW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3Mv
V2ViR1BVL0ltcGwvV2ViR1BVRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oCkBAIC0y
NSwxMyArMjUsMTIgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBIQVZFKFdFQkdQVV9JTVBMRU1F
TlRBVElPTikKLQogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAK
IG5hbWVzcGFjZSBQQUw6OldlYkdQVSB7CiAKIGNsYXNzIERvd25jYXN0Q29udmVydFRvQmFja2lu
Z0NvbnRleHQgZmluYWwgOiBwdWJsaWMgQ29udmVydFRvQmFja2luZ0NvbnRleHQgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8RG93bmNhc3RD
b252ZXJ0VG9CYWNraW5nQ29udGV4dD4gY3JlYXRlKCkKICAgICB7CkBAIC02OSw1ICs2OCwzIEBA
IHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBQQUw6OldlYkdQVQotCi0jZW5kaWYgLy8g
SEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUV4dGVybmFsVGV4dHVyZUltcGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVFeHRl
cm5hbFRleHR1cmVJbXBsLmNwcAppbmRleCAzNjVkYzAyOTQyMmIyNzVjZWRmMDY5MDQ0Njg1ODU3
MzBkNGVmOGZmLi4zZTU1YzlkYTM3Y2VkMDBkMmNlNGFlYjEzMDMxMTUxMGMxMmIzZDQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQ
VUV4dGVybmFsVGV4dHVyZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3Jh
cGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRXh0ZXJuYWxUZXh0dXJlSW1wbC5jcHAKQEAgLTI2LDgg
KzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJHUFVFeHRlcm5hbFRl
eHR1cmVJbXBsLmgiCiAKLSNpZiBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKLQogI2luY2x1
ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8V2ViR1BVL1dl
YkdQVUV4dC5oPgogCkBAIC00Nyw1ICs0NSwzIEBAIHZvaWQgRXh0ZXJuYWxUZXh0dXJlSW1wbDo6
c2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmKQogfQogCiB9IC8vIG5hbWVzcGFjZSBQQUw6
OldlYkdQVQotCi0jZW5kaWYgLy8gSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUV4
dGVybmFsVGV4dHVyZUltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2Vi
R1BVL0ltcGwvV2ViR1BVRXh0ZXJuYWxUZXh0dXJlSW1wbC5oCmluZGV4IDJhYWM5N2VhYzU5NWE0
NmVhODlmNDE5NDcwZThmMjYyZWY1NGExNjEuLmNkZTk4ZTQyZDE3NDY3MGNjOTIyNDFjN2Q2MDM2
YmEyN2IwNWUzZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3Mv
V2ViR1BVL0ltcGwvV2ViR1BVRXh0ZXJuYWxUZXh0dXJlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRXh0ZXJuYWxUZXh0dXJlSW1w
bC5oCkBAIC0yNSw4ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgSEFWRShXRUJHUFVf
SU1QTEVNRU5UQVRJT04pCi0KICNpbmNsdWRlICJXZWJHUFVFeHRlcm5hbFRleHR1cmUuaCIKICNp
bmNsdWRlIDxXZWJHUFUvV2ViR1BVLmg+CiAKQEAgLTM1LDYgKzMzLDcgQEAgbmFtZXNwYWNlIFBB
TDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBFeHRl
cm5hbFRleHR1cmVJbXBsIGZpbmFsIDogcHVibGljIEV4dGVybmFsVGV4dHVyZSB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxFeHRlcm5hbFRl
eHR1cmVJbXBsPiBjcmVhdGUoQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tp
bmdDb250ZXh0KQogICAgIHsKQEAgLTU5LDUgKzU4LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBIQVZFKFdFQkdQVV9JTVBMRU1FTlRB
VElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dl
YkdQVS9JbXBsL1dlYkdQVUltcGwuY3BwCmluZGV4IDhjYzQ1ZjBjYjExNjkxNTA2MWU5NDJiNTFj
ZmZiMDkxOWM3NzQwZWUuLmFjNDg1YzU0N2UxMzM0NTNlNmJkMGMzNmFmYWQyZWNmNTZmZjkxMDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJH
UFUvSW1wbC9XZWJHUFVJbXBsLmNwcApAQCAtMjYsMTQgKzI2LDIyIEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiV2ViR1BVSW1wbC5oIgogCi0jaWYgSEFWRShXRUJHUFVfSU1QTEVN
RU5UQVRJT04pCi0KICNpbmNsdWRlICJXZWJHUFVBZGFwdGVySW1wbC5oIgotI2luY2x1ZGUgIldl
YkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVRG93bmNhc3RD
b252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPFdlYkdQVS9XZWJHUFVFeHQuaD4K
IAogbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIAorUmVmUHRyPEdQVUltcGw+IEdQVUltcGw6OmNy
ZWF0ZSgpCit7CisgICAgV0dQVUluc3RhbmNlRGVzY3JpcHRvciBkZXNjcmlwdG9yID0geyBudWxs
cHRyIH07CisgICAgYXV0byBpbnN0YW5jZSA9IHdncHVDcmVhdGVJbnN0YW5jZSgmZGVzY3JpcHRv
cik7CisgICAgaWYgKCFpbnN0YW5jZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0
byBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCA9IERvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRl
eHQ6OmNyZWF0ZSgpOworICAgIHJldHVybiBjcmVhdGUoaW5zdGFuY2UsIGNvbnZlcnRUb0JhY2tp
bmdDb250ZXh0KTsKK30KKwogR1BVSW1wbDo6R1BVSW1wbChXR1BVSW5zdGFuY2UgaW5zdGFuY2Us
IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKICAgICA6
IG1fYmFja2luZyhpbnN0YW5jZSkKICAgICAsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQoY29u
dmVydFRvQmFja2luZ0NvbnRleHQpCkBAIC03NSw1ICs4MywzIEBAIHZvaWQgR1BVSW1wbDo6cmVx
dWVzdEFkYXB0ZXJDYWxsYmFjayhXR1BVUmVxdWVzdEFkYXB0ZXJTdGF0dXMsIFdHUFVBZGFwdGVy
IGFkYXB0CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBIQVZF
KFdFQkdQVV9JTVBMRU1FTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVJbXBsLmgKaW5kZXggYzczNWEyNGUwZmNh
NjQxZTQ5NDkyZGI1ZTU2Njg3OGMzOTNmYTcxMi4uNjM3MDZlZDM2NzI4ZmVlYTk0MmM5MzAxMzNk
MjczZDY0YmJlZDkwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGlj
cy9XZWJHUFUvSW1wbC9XZWJHUFVJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9n
cmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVJbXBsLmgKQEAgLTI1LDggKzI1LDYgQEAKIAogI3By
YWdtYSBvbmNlCiAKLSNpZiBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKLQogI2luY2x1ZGUg
IldlYkdQVS5oIgogI2luY2x1ZGUgPFdlYkdQVS9XZWJHUFUuaD4KICNpbmNsdWRlIDx3dGYvRGVx
dWUuaD4KQEAgLTM2LDcgKzM0LDEwIEBAIG5hbWVzcGFjZSBQQUw6OldlYkdQVSB7CiBjbGFzcyBD
b252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgR1BVSW1wbCBmaW5hbCA6IHB1YmxpYyBH
UFUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgorICAgIFBBTF9FWFBP
UlQgc3RhdGljIFJlZlB0cjxHUFVJbXBsPiBjcmVhdGUoKTsKKwogICAgIHN0YXRpYyBSZWY8R1BV
SW1wbD4gY3JlYXRlKFdHUFVJbnN0YW5jZSBpbnN0YW5jZSwgQ29udmVydFRvQmFja2luZ0NvbnRl
eHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgR1BVSW1wbChpbnN0YW5jZSwgY29udmVydFRvQmFja2luZ0NvbnRleHQpKTsKQEAg
LTY3LDUgKzY4LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFBBTDo6V2ViR1BV
Ci0KLSNlbmRpZiAvLyBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUGlwZWxpbmVM
YXlvdXRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0lt
cGwvV2ViR1BVUGlwZWxpbmVMYXlvdXRJbXBsLmNwcAppbmRleCA2NThkZGJlMjljODcxMjE3NDE1
MjEwMDFhZmQ5YzcxYTA3ZTM0Yjg2Li5iYTM3ZjE2ODk2ODlhZDM5NGQ5Njk5ZDEwN2I4MDMzY2E3
OGIwMjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQ
VS9JbXBsL1dlYkdQVVBpcGVsaW5lTGF5b3V0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVQaXBlbGluZUxheW91dEltcGwuY3Bw
CkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViR1BV
UGlwZWxpbmVMYXlvdXRJbXBsLmgiCiAKLSNpZiBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikK
LQogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8
V2ViR1BVL1dlYkdQVUV4dC5oPgogCkBAIC01MCw1ICs0OCwzIEBAIHZvaWQgUGlwZWxpbmVMYXlv
dXRJbXBsOjpzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBIQVZFKFdFQkdQVV9JTVBMRU1FTlRB
VElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVUGlwZWxpbmVMYXlvdXRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVBpcGVsaW5lTGF5b3V0SW1wbC5oCmluZGV4IDAw
OWMyYjVjODE0MTk3YWYwZGI2ZWRlMGIyODVjZjYxYWVlODQ1OTYuLmVlZjFkNmY2MTA3ZjE0MmMy
YTk5YzcxYmVjZmVjYWQxYTE1NzA1OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUGlwZWxpbmVMYXlvdXRJbXBsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVQaXBlbGlu
ZUxheW91dEltcGwuaApAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIEhB
VkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQotCiAjaW5jbHVkZSAiV2ViR1BVUGlwZWxpbmVMYXlv
dXQuaCIKICNpbmNsdWRlIDxXZWJHUFUvV2ViR1BVLmg+CiAKQEAgLTM1LDYgKzMzLDcgQEAgbmFt
ZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBj
bGFzcyBQaXBlbGluZUxheW91dEltcGwgZmluYWwgOiBwdWJsaWMgUGlwZWxpbmVMYXlvdXQgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UGlw
ZWxpbmVMYXlvdXRJbXBsPiBjcmVhdGUoV0dQVVBpcGVsaW5lTGF5b3V0IHBpcGVsaW5lTGF5b3V0
LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCiAgICAg
ewpAQCAtNjIsNSArNjEsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgUEFMOjpX
ZWJHUFUKLQotI2VuZGlmIC8vIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVRdWVy
eVNldEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1w
bC9XZWJHUFVRdWVyeVNldEltcGwuY3BwCmluZGV4IDU1Y2FmNDQzM2Y5MzY4ZGRmNDFkZDk0Zjc4
NmUzOTYxMzhmZWNjMTQuLmI0YTRiOGI0ZTBhODgxODNiYjQ2NjdiNTJjNzk4NmRkYmY0ZjYxZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVUXVlcnlTZXRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBo
aWNzL1dlYkdQVS9JbXBsL1dlYkdQVVF1ZXJ5U2V0SW1wbC5jcHAKQEAgLTI2LDggKzI2LDYgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJHUFVRdWVyeVNldEltcGwuaCIKIAot
I2lmIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQotCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVy
dFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxXZWJHUFUvV2ViR1BVRXh0Lmg+CiAKQEAg
LTU1LDUgKzUzLDMgQEAgdm9pZCBRdWVyeVNldEltcGw6OnNldExhYmVsSW50ZXJuYWwoY29uc3Qg
U3RyaW5nJiBsYWJlbCkKIH0KIAogfSAvLyBuYW1lc3BhY2UgUEFMOjpXZWJHUFUKLQotI2VuZGlm
IC8vIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVRdWVyeVNldEltcGwuaCBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUXVlcnlTZXRJ
bXBsLmgKaW5kZXggODk5YWE3MzFiNjBhNTVhOTc5YWRkY2VlYTU3OWFiYjEwZjViOTU0Yy4uN2Fj
ODUyMTU4ZDQwMDQ1ZDk4NTYxNzIzNjE3OTYwNjRmZDU1NzQxZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVRdWVyeVNldEltcGwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQ
VVF1ZXJ5U2V0SW1wbC5oCkBAIC0yNSw4ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYg
SEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCi0KICNpbmNsdWRlICJXZWJHUFVRdWVyeVNldC5o
IgogI2luY2x1ZGUgPFdlYkdQVS9XZWJHUFUuaD4KIApAQCAtMzUsNiArMzMsNyBAQCBuYW1lc3Bh
Y2UgUEFMOjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNz
IFF1ZXJ5U2V0SW1wbCBmaW5hbCA6IHB1YmxpYyBRdWVyeVNldCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxRdWVyeVNldEltcGw+IGNyZWF0
ZShXR1BVUXVlcnlTZXQgcXVlcnlTZXQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0
VG9CYWNraW5nQ29udGV4dCkKICAgICB7CkBAIC02NCw1ICs2MywzIEBAIHByaXZhdGU6CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBQQUw6OldlYkdQVQotCi0jZW5kaWYgLy8gSEFWRShXRUJHUFVfSU1Q
TEVNRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNz
L1dlYkdQVS9JbXBsL1dlYkdQVVF1ZXVlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVF1ZXVlSW1wbC5jcHAKaW5kZXggNjM5ZmE0YWJl
NjZkYmQxM2RkZjhjNDQ1NGYzOGYwNjNmYzU1MTkwOC4uODc4M2FjYzNmNWFiNGUwYTRhZmYzNDNl
OWE0NWZiNGFmMTU2ZDJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFw
aGljcy9XZWJHUFUvSW1wbC9XZWJHUFVRdWV1ZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUXVldWVJbXBsLmNwcApAQCAtMjYs
OCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkdQVVF1ZXVlSW1w
bC5oIgogCi0jaWYgSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCi0KICNpbmNsdWRlICJXZWJH
UFVCdWZmZXJJbXBsLmgiCiAjaW5jbHVkZSAiV2ViR1BVQ29tbWFuZEJ1ZmZlckltcGwuaCIKICNp
bmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgpAQCAtMTM0LDUgKzEzMiwz
IEBAIHZvaWQgUXVldWVJbXBsOjpzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwp
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBIQVZFKFdFQkdQ
VV9JTVBMRU1FTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3Jh
cGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUXVldWVJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVF1ZXVlSW1wbC5oCmluZGV4IGRkOTFmOGMx
YTczMmNlMWM0ZTA2YTkzNzkwNTliYWY2OTZmMGUwNzQuLjZkOWNkMTY5Y2EwZWZjODRkMTQ3ZDcz
YzlkMjc1MTBiNzQ3ZWI2MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3Jh
cGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUXVldWVJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVRdWV1ZUltcGwuaApAQCAtMjUsOCAr
MjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9O
KQotCiAjaW5jbHVkZSAiV2ViR1BVUXVldWUuaCIKICNpbmNsdWRlIDxXZWJHUFUvV2ViR1BVLmg+
CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CkBAIC0zNiw2ICszNCw3IEBAIG5hbWVzcGFjZSBQQUw6
OldlYkdQVSB7CiBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUXVldWVJ
bXBsIGZpbmFsIDogcHVibGljIFF1ZXVlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFF1ZXVlSW1wbD4gY3JlYXRlKFdHUFVRdWV1ZSBxdWV1
ZSwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQogICAg
IHsKQEAgLTkzLDUgKzkyLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFBBTDo6
V2ViR1BVCi0KLSNlbmRpZiAvLyBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUmVu
ZGVyQnVuZGxlRW5jb2RlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGlj
cy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJCdW5kbGVFbmNvZGVySW1wbC5jcHAKaW5kZXggZWYx
OGI1MDNlYWQxYzczODU4ZGQzMTM4ODk0NzIwNGZhOWVmOTY5MC4uZDhkYmYyZGM4YmQyZWJiNDZk
ODU1ZmYyZGNkNjI1YmNiYmExMzdmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJCdW5kbGVFbmNvZGVySW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVS
ZW5kZXJCdW5kbGVFbmNvZGVySW1wbC5jcHAKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJXZWJHUFVSZW5kZXJCdW5kbGVFbmNvZGVySW1wbC5oIgogCi0j
aWYgSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCi0KICNpbmNsdWRlICJXZWJHUFVCaW5kR3Jv
dXBJbXBsLmgiCiAjaW5jbHVkZSAiV2ViR1BVQnVmZmVySW1wbC5oIgogI2luY2x1ZGUgIldlYkdQ
VUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCkBAIC0xMzgsNSArMTM2LDMgQEAgdm9pZCBSZW5k
ZXJCdW5kbGVFbmNvZGVySW1wbDo6c2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmIGxhYmVs
KQogfQogCiB9IC8vIG5hbWVzcGFjZSBQQUw6OldlYkdQVQotCi0jZW5kaWYgLy8gSEFWRShXRUJH
UFVfSU1QTEVNRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dy
YXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlckJ1bmRsZUVuY29kZXJJbXBsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlckJ1bmRs
ZUVuY29kZXJJbXBsLmgKaW5kZXggMzE3ZDFjNGZmODg2ZGUxNzUyNzdmMjU4MmY5ZmY1OGNiMWI0
MWU5ZC4uMjBlYmIzM2JmZGRhYTBlMjlmYTZjOTJlZTA4M2UzZjkxMTE4ODlhMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5k
ZXJCdW5kbGVFbmNvZGVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhp
Y3MvV2ViR1BVL0ltcGwvV2ViR1BVUmVuZGVyQnVuZGxlRW5jb2RlckltcGwuaApAQCAtMjUsOCAr
MjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9O
KQotCiAjaW5jbHVkZSAiV2ViR1BVUmVuZGVyQnVuZGxlRW5jb2Rlci5oIgogI2luY2x1ZGUgPFdl
YkdQVS9XZWJHUFUuaD4KIApAQCAtMzUsNiArMzMsNyBAQCBuYW1lc3BhY2UgUEFMOjpXZWJHUFUg
ewogY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbmRlckJ1bmRsZUVu
Y29kZXJJbXBsIGZpbmFsIDogcHVibGljIFJlbmRlckJ1bmRsZUVuY29kZXIgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UmVuZGVyQnVuZGxl
RW5jb2RlckltcGw+IGNyZWF0ZShXR1BVUmVuZGVyQnVuZGxlRW5jb2RlciByZW5kZXJCdW5kbGVF
bmNvZGVyLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQp
CiAgICAgewpAQCAtOTIsNSArOTEsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
UEFMOjpXZWJHUFUKLQotI2VuZGlmIC8vIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJH
UFVSZW5kZXJCdW5kbGVJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3Mv
V2ViR1BVL0ltcGwvV2ViR1BVUmVuZGVyQnVuZGxlSW1wbC5jcHAKaW5kZXggMDk2YmU2ODZiYmNh
NzNmMWJjNTljMjc3MzFjMTlmOTA3OGUyNjViMi4uYzZlYzNjYTAyYzg2OGNjY2Q2M2U2Njc3NjU2
NTBlNmFkMTg3NjYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGlj
cy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJCdW5kbGVJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlckJ1bmRsZUltcGwu
Y3BwCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2Vi
R1BVUmVuZGVyQnVuZGxlSW1wbC5oIgogCi0jaWYgSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04p
Ci0KICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUg
PFdlYkdQVS9XZWJHUFVFeHQuaD4KIApAQCAtNTAsNSArNDgsMyBAQCB2b2lkIFJlbmRlckJ1bmRs
ZUltcGw6OnNldExhYmVsSW50ZXJuYWwoY29uc3QgU3RyaW5nJiBsYWJlbCkKIH0KIAogfSAvLyBu
YW1lc3BhY2UgUEFMOjpXZWJHUFUKLQotI2VuZGlmIC8vIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFU
SU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUv
SW1wbC9XZWJHUFVSZW5kZXJCdW5kbGVJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dy
YXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlckJ1bmRsZUltcGwuaAppbmRleCBkMjY2NWYx
OWI3MTk5M2RkYTBjNTQzMzU1OTE0MTViYzNhNDYyMTU5Li45ZGFkNmMzNTIzZjliM2YyNGI2OGIz
NjQwYmY0MTE5Y2IyZmQ4ZDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dy
YXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlckJ1bmRsZUltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlckJ1bmRsZUlt
cGwuaApAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIEhBVkUoV0VCR1BV
X0lNUExFTUVOVEFUSU9OKQotCiAjaW5jbHVkZSAiV2ViR1BVUmVuZGVyQnVuZGxlLmgiCiAjaW5j
bHVkZSA8V2ViR1BVL1dlYkdQVS5oPgogCkBAIC0zNSw2ICszMyw3IEBAIG5hbWVzcGFjZSBQQUw6
OldlYkdQVSB7CiBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUmVuZGVy
QnVuZGxlSW1wbCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCdW5kbGUgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UmVuZGVyQnVuZGxlSW1wbD4g
Y3JlYXRlKFdHUFVSZW5kZXJCdW5kbGUgcmVuZGVyQnVuZGxlLCBDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCiAgICAgewpAQCAtNjIsNSArNjEsMyBAQCBw
cml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgUEFMOjpXZWJHUFUKLQotI2VuZGlmIC8vIEhB
VkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJQYXNzRW5jb2RlckltcGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5k
ZXJQYXNzRW5jb2RlckltcGwuY3BwCmluZGV4IDVhMWY5MjQ2NmViYjgyMmYwNzcxOWRlN2RlYjQz
ZjhmMDgzZThjZjcuLjEwMGRjOWM0ZDM1MjQ4ZTBmMTQzZjc1NjQ1MjFhNzcwYWJlOWNmMDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVUmVuZGVyUGFzc0VuY29kZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlclBhc3NFbmNvZGVySW1wbC5jcHAKQEAg
LTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJHUFVSZW5k
ZXJQYXNzRW5jb2RlckltcGwuaCIKIAotI2lmIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQot
CiAjaW5jbHVkZSAiV2ViR1BVQmluZEdyb3VwSW1wbC5oIgogI2luY2x1ZGUgIldlYkdQVUJ1ZmZl
ckltcGwuaCIKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgpAQCAt
MTg2LDUgKzE4NCwzIEBAIHZvaWQgUmVuZGVyUGFzc0VuY29kZXJJbXBsOjpzZXRMYWJlbEludGVy
bmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFBBTDo6V2ViR1BV
Ci0KLSNlbmRpZiAvLyBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUmVuZGVyUGFz
c0VuY29kZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9J
bXBsL1dlYkdQVVJlbmRlclBhc3NFbmNvZGVySW1wbC5oCmluZGV4IDljNGUxMDE2ZTRiNTdiMThh
ODM2MzYxYjQ1MjRkNTA5NThjOWQ5YTcuLmUxM2ZiZDI5NGQ5YzViZmRiODk4MTRlNjQyYzA1OThm
MTYzYzkzOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2Vi
R1BVL0ltcGwvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcklt
cGwuaApAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIEhBVkUoV0VCR1BV
X0lNUExFTUVOVEFUSU9OKQotCiAjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaCIK
ICNpbmNsdWRlIDxXZWJHUFUvV2ViR1BVLmg+CiAKQEAgLTM1LDYgKzMzLDcgQEAgbmFtZXNwYWNl
IFBBTDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBS
ZW5kZXJQYXNzRW5jb2RlckltcGwgZmluYWwgOiBwdWJsaWMgUmVuZGVyUGFzc0VuY29kZXIgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UmVu
ZGVyUGFzc0VuY29kZXJJbXBsPiBjcmVhdGUoV0dQVVJlbmRlclBhc3NFbmNvZGVyIHJlbmRlclBh
c3NFbmNvZGVyLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRl
eHQpCiAgICAgewpAQCAtMTA5LDUgKzEwOCwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBQQUw6OldlYkdQVQotCi0jZW5kaWYgLy8gSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBs
L1dlYkdQVVJlbmRlclBpcGVsaW5lSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dy
YXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlclBpcGVsaW5lSW1wbC5jcHAKaW5kZXggZDI2
MTdkZGRmNWYxODZkNDI3M2E1MThjY2I0ZjJmZDg3OTM0NTMyYS4uNGYxNzM4ZGRmZDUwNzAyNTU4
NWFjYzBiMTQ1YzIzMGNlODE3Njk2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJQaXBlbGluZUltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUmVuZGVy
UGlwZWxpbmVJbXBsLmNwcApAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIldlYkdQVVJlbmRlclBpcGVsaW5lSW1wbC5oIgogCi0jaWYgSEFWRShXRUJHUFVf
SU1QTEVNRU5UQVRJT04pCi0KICNpbmNsdWRlICJXZWJHUFVCaW5kR3JvdXBMYXlvdXRJbXBsLmgi
CiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxX
ZWJHUFUvV2ViR1BVRXh0Lmg+CkBAIC01Niw1ICs1NCwzIEBAIHZvaWQgUmVuZGVyUGlwZWxpbmVJ
bXBsOjpzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElP
TikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0lt
cGwvV2ViR1BVUmVuZGVyUGlwZWxpbmVJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dy
YXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlclBpcGVsaW5lSW1wbC5oCmluZGV4IDRmM2Zi
Zjg5YjM5MTY4ODZjNDg5NzE0OTJlZmVkMDYxNTBkZjk2ZmYuLjI3YTY1N2Q4YjExYjU5ODI2NjE4
ODg2OTk2NTBlNGQxYWRmMjk3NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Z3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUmVuZGVyUGlwZWxpbmVJbXBsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJQaXBl
bGluZUltcGwuaApAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIEhBVkUo
V0VCR1BVX0lNUExFTUVOVEFUSU9OKQotCiAjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGlwZWxpbmUu
aCIKICNpbmNsdWRlIDxXZWJHUFUvV2ViR1BVLmg+CiAKQEAgLTM1LDYgKzMzLDcgQEAgbmFtZXNw
YWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFz
cyBSZW5kZXJQaXBlbGluZUltcGwgZmluYWwgOiBwdWJsaWMgUmVuZGVyUGlwZWxpbmUgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UmVuZGVy
UGlwZWxpbmVJbXBsPiBjcmVhdGUoV0dQVVJlbmRlclBpcGVsaW5lIHJlbmRlclBpcGVsaW5lLCBD
b252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCiAgICAgewpA
QCAtNjQsNSArNjMsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgUEFMOjpXZWJH
UFUKLQotI2VuZGlmIC8vIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVTYW1wbGVy
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dl
YkdQVVNhbXBsZXJJbXBsLmNwcAppbmRleCA5YzYxOTkwOWFhZGVkYTg4NmE0YTUwM2ZlNjEwODRi
NjFjMjFlOWMzLi5mZTdhODIzMmExMzEyY2EyOTEwNTJlOTA1MjVkZjNjMTAwNWQ1ZjdhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQ
VVNhbXBsZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dl
YkdQVS9JbXBsL1dlYkdQVVNhbXBsZXJJbXBsLmNwcApAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkdQVVNhbXBsZXJJbXBsLmgiCiAKLSNpZiBIQVZF
KFdFQkdQVV9JTVBMRU1FTlRBVElPTikKLQogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tp
bmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8V2ViR1BVL1dlYkdQVUV4dC5oPgogCkBAIC01MCw1ICs0
OCwzIEBAIHZvaWQgU2FtcGxlckltcGw6OnNldExhYmVsSW50ZXJuYWwoY29uc3QgU3RyaW5nJiBs
YWJlbCkKIH0KIAogfSAvLyBuYW1lc3BhY2UgUEFMOjpXZWJHUFUKLQotI2VuZGlmIC8vIEhBVkUo
V0VCR1BVX0lNUExFTUVOVEFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVTYW1wbGVySW1wbC5oIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVTYW1wbGVySW1wbC5oCmluZGV4
IGFmNDM2Y2MwNmY2ZjA2MDEwZDljODJjZjExOGU2MmE0MGMxMzgwOWEuLjY0OWI3Y2UwZGNjOGQw
YmQ1OTU2ZmVjYzFmZmQ4YmEyN2VmMzE5NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVU2FtcGxlckltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVNhbXBsZXJJbXBs
LmgKQEAgLTI1LDggKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBIQVZFKFdFQkdQVV9J
TVBMRU1FTlRBVElPTikKLQogI2luY2x1ZGUgIldlYkdQVVNhbXBsZXIuaCIKICNpbmNsdWRlIDxX
ZWJHUFUvV2ViR1BVLmg+CiAKQEAgLTM1LDYgKzMzLDcgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BV
IHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBTYW1wbGVySW1wbCBm
aW5hbCA6IHB1YmxpYyBTYW1wbGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmPFNhbXBsZXJJbXBsPiBjcmVhdGUoV0dQVVNhbXBsZXIgc2Ft
cGxlciwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQog
ICAgIHsKQEAgLTYyLDUgKzYxLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFBB
TDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BV
U2hhZGVyTW9kdWxlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dl
YkdQVS9JbXBsL1dlYkdQVVNoYWRlck1vZHVsZUltcGwuY3BwCmluZGV4IGI3YzZkMjVjMGVjOWVj
NTAzNDgxODMzZjNjMTdhY2RmZTkyM2U5ZTkuLjAzZWYxZWFmMjJkMTAxZmI4YzEzNTRkM2VkZmUw
OWEyOTZkZGEyZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3Mv
V2ViR1BVL0ltcGwvV2ViR1BVU2hhZGVyTW9kdWxlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVTaGFkZXJNb2R1bGVJbXBsLmNw
cApAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkdQ
VVNoYWRlck1vZHVsZUltcGwuaCIKIAotI2lmIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQot
CiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxX
ZWJHUFUvV2ViR1BVRXh0Lmg+CiAKQEAgLTU0LDUgKzUyLDMgQEAgdm9pZCBTaGFkZXJNb2R1bGVJ
bXBsOjpzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElP
TikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0lt
cGwvV2ViR1BVU2hhZGVyTW9kdWxlSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFw
aGljcy9XZWJHUFUvSW1wbC9XZWJHUFVTaGFkZXJNb2R1bGVJbXBsLmgKaW5kZXggMjAxNTZkZWM2
YTFjODY5YzY4MWI3NWRiMDg1YzIxZWY2YjVmYTY2NC4uNjViNWJhNmMxNmNkNDBhZDE2NGEyNmNk
Mzg3ZWViYmNkNWQwOTI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFw
aGljcy9XZWJHUFUvSW1wbC9XZWJHUFVTaGFkZXJNb2R1bGVJbXBsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVTaGFkZXJNb2R1bGVJbXBs
LmgKQEAgLTI1LDggKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBIQVZFKFdFQkdQVV9J
TVBMRU1FTlRBVElPTikKLQogI2luY2x1ZGUgIldlYkdQVVNoYWRlck1vZHVsZS5oIgogI2luY2x1
ZGUgPFdlYkdQVS9XZWJHUFUuaD4KIApAQCAtMzUsNiArMzMsNyBAQCBuYW1lc3BhY2UgUEFMOjpX
ZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFNoYWRlck1v
ZHVsZUltcGwgZmluYWwgOiBwdWJsaWMgU2hhZGVyTW9kdWxlIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFNoYWRlck1vZHVsZUltcGw+IGNy
ZWF0ZShXR1BVU2hhZGVyTW9kdWxlIHNoYWRlck1vZHVsZSwgQ29udmVydFRvQmFja2luZ0NvbnRl
eHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQogICAgIHsKQEAgLTY0LDUgKzYzLDMgQEAgcHJp
dmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBIQVZF
KFdFQkdQVV9JTVBMRU1FTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVVGV4dHVyZUltcGwuY3BwIGIvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVUZXh0dXJlSW1wbC5jcHAK
aW5kZXggNDA3NzU2YjQ0NzFjZDE0OGJlYzY0MzkwYzkwNjNkNjc0ODdkMTlkYi4uYWU2MGNiNGYz
MGFhNTViMzVhZWNkYTFiNzgxMGRkNjg0YTBjMzkwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVUZXh0dXJlSW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVUZXh0
dXJlSW1wbC5jcHAKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJXZWJHUFVUZXh0dXJlSW1wbC5oIgogCi0jaWYgSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJ
T04pCi0KICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1
ZGUgIldlYkdQVVRleHR1cmVWaWV3LmgiCiAjaW5jbHVkZSAiV2ViR1BVVGV4dHVyZVZpZXdEZXNj
cmlwdG9yLmgiCkBAIC05MCw1ICs4OCwzIEBAIHZvaWQgVGV4dHVyZUltcGw6OnNldExhYmVsSW50
ZXJuYWwoY29uc3QgU3RyaW5nJiBsYWJlbCkKIH0KIAogfSAvLyBuYW1lc3BhY2UgUEFMOjpXZWJH
UFUKLQotI2VuZGlmIC8vIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVUZXh0dXJl
SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJH
UFVUZXh0dXJlSW1wbC5oCmluZGV4IDMzODNlYTEzNjk0Y2M5ZjA3OTQ1MzBlMDhiMGIyYzI0YTU2
Y2Q4YTAuLmVlNTJlNzU5YzBjN2JlNWRmNDIwYmQzZTBhYmQ1ODc1YTkyMzhiYjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVVGV4
dHVyZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9J
bXBsL1dlYkdQVVRleHR1cmVJbXBsLmgKQEAgLTI1LDggKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNl
CiAKLSNpZiBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKLQogI2luY2x1ZGUgIldlYkdQVUlu
dGVncmFsVHlwZXMuaCIKICNpbmNsdWRlICJXZWJHUFVUZXh0dXJlLmgiCiAjaW5jbHVkZSAiV2Vi
R1BVVGV4dHVyZURpbWVuc2lvbi5oIgpAQCAtMzgsNiArMzYsNyBAQCBuYW1lc3BhY2UgUEFMOjpX
ZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFRleHR1cmVJ
bXBsIGZpbmFsIDogcHVibGljIFRleHR1cmUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8VGV4dHVyZUltcGw+IGNyZWF0ZShXR1BVVGV4dHVy
ZSB0ZXh0dXJlLCBUZXh0dXJlRm9ybWF0IGZvcm1hdCwgVGV4dHVyZURpbWVuc2lvbiBkaW1lbnNp
b24sIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKICAg
ICB7CkBAIC03Miw1ICs3MSwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBQQUw6
OldlYkdQVQotCi0jZW5kaWYgLy8gSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVRl
eHR1cmVWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQ
VS9JbXBsL1dlYkdQVVRleHR1cmVWaWV3SW1wbC5jcHAKaW5kZXggYTE4ODgxM2E4ZTE4YTA4OTUw
M2FjOTg2OThlNWNlNDE4NTZhZGQwYi4uYmYyN2M1ZjcwZjljYmVlYzExZTIwZTU3MWJhYmM4Njc5
NjlhZjE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJH
UFUvSW1wbC9XZWJHUFVUZXh0dXJlVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVVGV4dHVyZVZpZXdJbXBsLmNwcApAQCAt
MjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkdQVVRleHR1
cmVWaWV3SW1wbC5oIgogCi0jaWYgSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCi0KICNpbmNs
dWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPFdlYkdQVS9X
ZWJHUFVFeHQuaD4KIApAQCAtNTAsNSArNDgsMyBAQCB2b2lkIFRleHR1cmVWaWV3SW1wbDo6c2V0
TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmIGxhYmVsKQogfQogCiB9IC8vIG5hbWVzcGFjZSBQ
QUw6OldlYkdQVQotCi0jZW5kaWYgLy8gSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQ
VVRleHR1cmVWaWV3SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJH
UFUvSW1wbC9XZWJHUFVUZXh0dXJlVmlld0ltcGwuaAppbmRleCA2ZDg1NjgzMDg3ZGE2MTdlMTYz
ZWI4NWNmMzVlODE2NjhjNWVmYzU2Li45NDc4ZGQ0Mzk0ZDgzOTgyNmY3NjUzZmVmYTk0OTk5MmRh
MjA0NzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQ
VS9JbXBsL1dlYkdQVVRleHR1cmVWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVVGV4dHVyZVZpZXdJbXBsLmgKQEAgLTI1LDgg
KzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElP
TikKLQogI2luY2x1ZGUgIldlYkdQVVRleHR1cmVWaWV3LmgiCiAjaW5jbHVkZSA8V2ViR1BVL1dl
YkdQVS5oPgogCkBAIC0zNSw2ICszMyw3IEBAIG5hbWVzcGFjZSBQQUw6OldlYkdQVSB7CiBjbGFz
cyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgVGV4dHVyZVZpZXdJbXBsIGZpbmFs
IDogcHVibGljIFRleHR1cmVWaWV3IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmPFRleHR1cmVWaWV3SW1wbD4gY3JlYXRlKFdHUFVUZXh0dXJl
VmlldyB0ZXh0dXJlVmlldywgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tp
bmdDb250ZXh0KQogICAgIHsKQEAgLTYyLDUgKzYxLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBIQVZFKFdFQkdQVV9JTVBMRU1FTlRB
VElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRleCBjMTNmNmNmOWQ2ZTE3ODdlYTYwNTg5ZmU0
NmEyZTE3N2Q5Mzc0ODFkLi4yMmIwMGRkOTRkYWZhZjI1NTE4ODk5OTk2NmYxZjNiZmYzNDAwNDgw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCkBAIC01NDYsNiArNTQ2LDExIEBAIFJlZlB0cjxHcmFw
aGljc0NvbnRleHRHTD4gQ2hyb21lOjpjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFw
aGljc0NvbnRleHRHCiB9CiAjZW5kaWYKIAorUmVmUHRyPFBBTDo6V2ViR1BVOjpHUFU+IENocm9t
ZTo6Y3JlYXRlR1BVRm9yV2ViR1BVKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jbGllbnQuY3Jl
YXRlR1BVRm9yV2ViR1BVKCk7Cit9CisKIFBsYXRmb3JtRGlzcGxheUlEIENocm9tZTo6ZGlzcGxh
eUlEKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wYWdlLmRpc3BsYXlJRCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lLmgKaW5kZXggMzcyMTgyZmVjNjIwZmVkOWRmZTczZGE4OTIyNDZhZjkxM2M1NTMzZS4uMTI0
MzljMTBjYzNmYzI2Mjg0OWM3NzhmZWE2OTZlOGZkNDI5MzU1MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9DaHJvbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5o
CkBAIC0zMiw2ICszMiwxMCBAQAogT0JKQ19DTEFTUyBOU1ZpZXc7CiAjZW5kaWYKIAorbmFtZXNw
YWNlIFBBTDo6V2ViR1BVIHsKK2NsYXNzIEdQVTsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBDaHJvbWVDbGllbnQ7CkBAIC05MSw2ICs5NSw4IEBAIHB1YmxpYzoKICAgICBSZWZQ
dHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyYpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCiAKKyAgICBS
ZWZQdHI8UEFMOjpXZWJHUFU6OkdQVT4gY3JlYXRlR1BVRm9yV2ViR1BVKCkgY29uc3Q7CisKICAg
ICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lk
IHdpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCwgc3RkOjpvcHRpb25hbDxG
cmFtZXNQZXJTZWNvbmQ+KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgK
aW5kZXggZjIzOTE0NTcwNmQwYjE5MDU0MTBhZDhlNjZjZmU5OTAwY2RjNzZlZS4uZjExNjQzOTBi
MzhhZjgxMzA5MjdiNWYzMzFlMzNiMGY4MWE5NDBmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiU2VhcmNoUG9wdXBNZW51LmgiCiAj
aW5jbHVkZSAiV2ViQ29yZUtleWJvYXJkVUlNb2RlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvQ29uc29sZVR5cGVzLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFUu
aD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9u
SGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC0zNTYsNiArMzU3LDggQEAg
cHVibGljOgogICAgIHZpcnR1YWwgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFw
aGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBXZWJDb3Jl
OjpQbGF0Zm9ybURpc3BsYXlJRCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlmCiAK
KyAgICB2aXJ0dWFsIFJlZlB0cjxQQUw6OldlYkdQVTo6R1BVPiBjcmVhdGVHUFVGb3JXZWJHUFUo
KSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CisKICAgICAvLyBQYXNzIG51bGxwdHIgYXMgdGhl
IEdyYXBoaWNzTGF5ZXIgdG8gZGV0YXRjaCB0aGUgcm9vdCBsYXllci4KICAgICB2aXJ0dWFsIHZv
aWQgYXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUmLCBHcmFwaGljc0xheWVyKikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hWaWV3T3ZlcmxheUdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NM
YXllciopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAppbmRleCA2ZjE5YjJlYjNiZTQ3
OTg2NWU1YzU0NGVkMDQ1Y2U0N2M0ZmQxM2JjLi5mNWJkNGIwYTZlZjJiNTBlN2QyNGZjOTFkZGM3
NzAwZjllMjAzOWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCkBAIC0zNCw2ICszNCw3
IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1
ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiR1BVLmgiCiAjaW5jbHVkZSAiR2Vv
bG9jYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUg
IkxvYWRlclN0cmF0ZWd5LmgiCkBAIC0zNDcsNCArMzQ4LDI0IEBAIHZvaWQgTmF2aWdhdG9yOjpn
ZXRTdG9yYWdlVXBkYXRlcygpCiB7CiB9CiAKK0dQVSogTmF2aWdhdG9yOjpncHUoKQoreworICAg
IGlmICghbV9ncHVGb3JXZWJHUFUpIHsKKyAgICAgICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFt
ZSgpOworICAgICAgICBpZiAoIWZyYW1lKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgIGF1dG8qIHBhZ2UgPSBmcmFtZS0+cGFnZSgpOworICAgICAgICBpZiAoIXBhZ2UpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgYXV0byBncHUgPSBwYWdlLT5jaHJv
bWUoKS5jcmVhdGVHUFVGb3JXZWJHUFUoKTsKKyAgICAgICAgaWYgKCFncHUpCisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBtX2dwdUZvcldlYkdQVSA9IEdQVTo6Y3JlYXRl
KCk7CisgICAgICAgIG1fZ3B1Rm9yV2ViR1BVLT5zZXRCYWNraW5nKCpncHUpOworICAgIH0KKwor
ICAgIHJldHVybiBtX2dwdUZvcldlYkdQVS5nZXQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgKaW5kZXggYmRkMDQ2NDdiZDI4N2I2NjZmNmRhNzM1
MTBlNWQzZDJhN2Y1MWZkOC4uYmFjNDliMzQxMWJkYzhjNmNlZGI1ODJiMzliNjk0MzRhMGQ5NDQ2
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oCkBAIC02NCw2ICs2NCw4IEBAIHB1YmxpYzoKICAg
ICBpbnQgbWF4VG91Y2hQb2ludHMoKSBjb25zdCB7IHJldHVybiAwOyB9CiAjZW5kaWYKIAorICAg
IEdQVSogZ3B1KCk7CisKIHByaXZhdGU6CiAgICAgdm9pZCBzaG93U2hhcmVEYXRhKEV4Y2VwdGlv
bk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAg
ICAgZXhwbGljaXQgTmF2aWdhdG9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBET01XaW5kb3cm
KTsKQEAgLTc2LDUgKzc4LDYgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIFJlZlB0cjxET01NaW1l
VHlwZUFycmF5PiBtX21pbWVUeXBlczsKICAgICBtdXRhYmxlIFN0cmluZyBtX3VzZXJBZ2VudDsK
ICAgICBtdXRhYmxlIFN0cmluZyBtX3BsYXRmb3JtOworICAgIFJlZlB0cjxHUFU+IG1fZ3B1Rm9y
V2ViR1BVOwogfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9y
QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmgKaW5kZXggYjUxMjJh
NGJkYWUzMDY5YWViMzdmZGFiYzFhNmQ2NjRhMmM0NmNlZS4uZDVjYjU2ZTMzN2FhNGE0ZDRhYTI2
NGFlYTcyZjFjNjQ3YWRjY2EwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZp
Z2F0b3JCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmgKQEAg
LTYzLDcgKzYzLDYgQEAgcHVibGljOgogCiAgICAgU3RvcmFnZU1hbmFnZXImIHN0b3JhZ2UoKTsK
ICAgICBXZWJMb2NrTWFuYWdlciYgbG9ja3MoKTsKLSAgICBHUFUmIGdwdSgpIHsgcmV0dXJuICpt
X2dwdUZvcldlYkdQVTsgfTsKIAogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IE5hdmlnYXRvckJh
c2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwpAQCAtNzEsNyArNzAsNiBAQCBwcm90ZWN0ZWQ6
CiBwcml2YXRlOgogICAgIFJlZlB0cjxTdG9yYWdlTWFuYWdlcj4gbV9zdG9yYWdlTWFuYWdlcjsK
ICAgICBSZWZQdHI8V2ViTG9ja01hbmFnZXI+IG1fd2ViTG9ja01hbmFnZXI7Ci0gICAgUmVmUHRy
PEdQVT4gbV9ncHVGb3JXZWJHUFU7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiBwdWJs
aWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dvcmtlck5hdmlnYXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dvcmtlck5hdmlnYXRvci5jcHAKaW5kZXggNTVkZTAwNGIw
MDA0NGRkM2RhZDM0NTI3NzM0ODBjZjhhZTFhZTQ1Ny4uMDA0MTI0ZmRiYjJmN2VjZDVkODE3NTMy
MDVkOGU1YzQ1OTljYzUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Xb3JrZXJO
YXZpZ2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV29ya2VyTmF2aWdhdG9yLmNw
cApAQCAtMjcsNiArMjcsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldvcmtl
ck5hdmlnYXRvci5oIgogCisjaW5jbHVkZSAiR1BVLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogV29ya2VyTmF2aWdhdG9yOjpXb3JrZXJOYXZpZ2F0b3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGJvb2wgaXNPbmxpbmUpCkBAIC00
Niw0ICs0OCwxNCBAQCBib29sIFdvcmtlck5hdmlnYXRvcjo6b25MaW5lKCkgY29uc3QKICAgICBy
ZXR1cm4gbV9pc09ubGluZTsKIH0KIAorR1BVKiBXb3JrZXJOYXZpZ2F0b3I6OmdwdSgpCit7Cisg
ICAgaWYgKCFtX2dwdUZvcldlYkdQVSkgeworICAgICAgICAvLyBGSVhNRTogU3RhcnQgdGhlIHBy
b2Nlc3Mgb2Ygc2V0dGluZyB0aGUgYmFja2luZy4KKyAgICAgICAgbV9ncHVGb3JXZWJHUFUgPSBH
UFU6OmNyZWF0ZSgpOworICAgIH0KKworICAgIHJldHVybiBtX2dwdUZvcldlYkdQVS5nZXQoKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Xb3JrZXJOYXZpZ2F0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV29ya2VyTmF2aWdh
dG9yLmgKaW5kZXggNDVlY2Y2NmM3ZDIwYzgyYmQ1MmNmNTVkMWZiOTRhOGMzMmI0YjQ1MC4uYzU3
YmZmNGFlOTg0MWI1ZTU5ZTE2NWM4NjlhMzVmYzBhZDc1NjFmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Xb3JrZXJOYXZpZ2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1dvcmtlck5hdmlnYXRvci5oCkBAIC0zOSwxMSArMzksMTQgQEAgcHVibGljOgogICAgIGJvb2wg
b25MaW5lKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzZXRJc09ubGluZShib29sIGlzT25saW5l
KSB7IG1faXNPbmxpbmUgPSBpc09ubGluZTsgfQogCisgICAgR1BVKiBncHUoKTsKKwogcHJpdmF0
ZToKICAgICBleHBsaWNpdCBXb3JrZXJOYXZpZ2F0b3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IGNvbnN0IFN0cmluZyYsIGJvb2wgaXNPbmxpbmUpOwogCiAgICAgU3RyaW5nIG1fdXNlckFnZW50
OwogICAgIGJvb2wgbV9pc09ubGluZTsKKyAgICBSZWZQdHI8R1BVPiBtX2dwdUZvcldlYkdQVTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CmluZGV4IGMzMjk3
NGE4NGIyYTY2OTQwNzM4ZjBkNGYzYzJiZjllNjEwYmMwMmIuLjBkY2ZlZDQ1ZTE5Y2Y3YmYyMzFm
ZjBhMjViOWJjMjBiODkxNWM4ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dApAQCAtMjYxLDYgKzI2MSw4
IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKICAgICBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5CiAgICAgV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5CiAKKyAgICBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVUHJveHkKKwogICAgIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5lcgogICAgIFdlYlByb2Nlc3MvR1BVL21lZGlhL01l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZQogICAgIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhU291
cmNlUHJpdmF0ZVJlbW90ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Db25maWd1cmF0aW9u
cy9CYXNlVGFyZ2V0LnhjY29uZmlnIGIvU291cmNlL1dlYktpdC9Db25maWd1cmF0aW9ucy9CYXNl
VGFyZ2V0LnhjY29uZmlnCmluZGV4IDIwMjE1ODViYjBjNGFlYWNlMTcxYWIyZWI5N2UzZTFlNmJm
MGI3OTUuLjNiMWMyYzM2MTkyODUzZDM3YjkwODEzN2FmY2E4ZGJkZjYwNWQyNDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ29uZmlndXJhdGlvbnMvQmFzZVRhcmdldC54Y2NvbmZpZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL0Jhc2VUYXJnZXQueGNjb25maWcKQEAgLTQ3
LDcgKzQ3LDcgQEAgR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICQoREVCVUdfREVGSU5F
UykgJChXS19FTkFCTEVfRVhQRVJJTUVOVEFMX0ZFQVRVUkUKIFdFQktJVEFERElUSU9OU19IRUFE
RVJfU0VBUkNIX1BBVEhTID0gJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRl
L1dlYktpdEFkZGl0aW9ucyAkKFNES1JPT1QpL3Vzci9sb2NhbC9pbmNsdWRlL1dlYktpdEFkZGl0
aW9uczsKIExJQldFQlJUQ19IRUFERVJfU0VBUkNIX1BBVEhTID0gJChCVUlMVF9QUk9EVUNUU19E
SVIpL3Vzci9sb2NhbC9pbmNsdWRlL3dlYnJ0YyAkKFNES1JPT1QpL3Vzci9sb2NhbC9pbmNsdWRl
L3dlYnJ0YzsKIAotSEVBREVSX1NFQVJDSF9QQVRIUyA9ICQoQlVJTFRfUFJPRFVDVFNfRElSKS91
c3IvbG9jYWwvaW5jbHVkZSAiJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0ZvcndhcmRp
bmdIZWFkZXJzIiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0MiAk
KFdFQktJVEFERElUSU9OU19IRUFERVJfU0VBUkNIX1BBVEhTKSAkKExJQldFQlJUQ19IRUFERVJf
U0VBUkNIX1BBVEhTKSAkKFNSQ1JPT1QpICQoSEVBREVSX1NFQVJDSF9QQVRIUyk7CitIRUFERVJf
U0VBUkNIX1BBVEhTID0gJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRlICIk
KFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvRm9yd2FyZGluZ0hlYWRlcnMiICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyICIkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvdXNyL2xvY2FsL2luY2x1ZGUvcGFsL2dyYXBoaWNzL1dlYkdQVSIgJChXRUJLSVRBRERJVElP
TlNfSEVBREVSX1NFQVJDSF9QQVRIUykgJChMSUJXRUJSVENfSEVBREVSX1NFQVJDSF9QQVRIUykg
JChTUkNST09UKSAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpOwogCiBPVEhFUl9DRkxBR1MgPSAkKGlu
aGVyaXRlZCkgLWlmcmFtZXdvcmsgJChTREtST09UKSQoU1lTVEVNX0xJQlJBUllfRElSKS9Qcml2
YXRlRnJhbWV3b3JrczsKIE9USEVSX0NQTFVTUExVU0ZMQUdTID0gJChPVEhFUl9DRkxBR1MpIC1p
c3lzdGVtICQoU0RLUk9PVCkvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TeXN0ZW0uZnJhbWV3
b3JrL1ByaXZhdGVIZWFkZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291
cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1
dC54Y2ZpbGVsaXN0CmluZGV4IDc5OWFkNzViMmExYWIyMTBkMDgxZDU5ZmQ1YjRiMDJkOGI2ZGFl
YjQuLmE3ODk3Yjk2MWEzOWRhZjkyN2M1NGQxMmVmYTNjODk3MTQ5N2IwMmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTE3NCw2ICsxNzQs
NyBAQCAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1h
bmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nl
c3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pF
Q1RfRElSKS9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVHUFVQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCiAkKFBST0pF
Q1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVNvdXJjZVByaXZhdGVSZW1vdGUubWVz
c2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlv
SGFyZHdhcmVMaXN0ZW5lci5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggYTY1ZmMzNjE4NGNmZjhmNzc1MmQ2ODUyNzk4
NjE1NGI2YWY4MDFjNC4uOTNhNjE0NmQ2YjEzOWNiOGExNmExNzFiYjc3ZDQ0YmQzYjU4YjY1YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlz
dAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBA
IC0yNDIsNiArMjQyLDkgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlTWVzc2FnZXNSZXBsaWUKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdQVU1lc3NhZ2VSZWNlaXZlci5j
cHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdQ
VU1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
L1JlbW90ZUdQVU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHUFVQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdQVVByb3h5TWVz
c2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVt
b3RlR1BVUHJveHlNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlUmVjZWl2ZXIu
Y3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXNSZXBsaWVzLmgK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBkZGU1YzYzZmUzZjRiMzE1Mjk3ZGI0YjY4
NDg5YzI5ZGU1YmJhNDVjLi40NTc0Mzg2NWE0YWM4MzJkM2U1ZGJkNGFmZDQzOGJkNzUzMmNkOTIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291
cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xODYsNiArMTg2LDcgQEAgTUVTU0FH
RV9SRUNFSVZFUlMgPSBcCiAJV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24gXAog
CVdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSBcCiAJ
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSBcCisJ
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5IFwKIAlXZWJQcm9j
ZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzIFwKIAlXZWJQcm9jZXNzL0dQVS93ZWJydGMv
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIFwKIAlXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBs
YXllclByaXZhdGVSZW1vdGUgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDUyYWU4ODE5MzcxYTNlZGQ2MGNk
NzIwY2QwODRiYjNjODU3ZmE3Y2QuLjVlYzk3M2ExYjU3MDM4MmU5MTgyNDNiYWJiY2UwYWVkZjA0
YzZhYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJSZW1vdGVB
dWRpb0hhcmR3YXJlTGlzdGVuZXJQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5oIgogI2luY2x1ZGUgIlJlbW90
ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlck1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSAiUmVtb3RlR1BVLmgiCiAjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgpA
QCAtNjMsMTAgKzY0LDEyIEBACiAjaW5jbHVkZSAiUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JU
cmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1
ZGUgIldlYkVycm9ycy5oIgorI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0xvZ0luaXRpYWxpemF0
aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvTm93UGxheWluZ01hbmFnZXIuaD4KKyNpbmNsdWRlIDxwYWwv
Z3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVSW1wbC5oPgogI2luY2x1ZGUgPHd0Zi9MYW5ndWFn
ZS5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC01NTUsNiArNTU4LDE5IEBAIHZvaWQgR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMRm9yVGVzdGlu
ZyhHcmFwaGljc0NvbnRlCiB9CiAjZW5kaWYKIAordm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpjcmVhdGVSZW1vdGVHUFUoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgSVBDOjpTdHJl
YW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtKQoreworICAgIGF1dG8gaXQgPSBtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRNYXAuZmluZChyZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CisgICAg
aWYgKGl0ID09IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcC5lbmQoKSkKKyAgICAgICAgcmV0
dXJuOworICAgIGF1dG8qIHJlbmRlcmluZ0JhY2tlbmQgPSBpdC0+dmFsdWUuZ2V0KCk7CisKKyAg
ICBhdXRvIGFkZFJlc3VsdCA9IG1fcmVtb3RlR1BVTWFwLmVuc3VyZShpZGVudGlmaWVyLCBbJl0o
KSB7CisgICAgICAgIHJldHVybiBJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUg
eyBSZW1vdGVHUFU6OmNyZWF0ZShpZGVudGlmaWVyLCAqdGhpcywgKnJlbmRlcmluZ0JhY2tlbmQs
IFdURk1vdmUoc3RyZWFtKSkgfTsKKyAgICB9KTsKKyAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3Vs
dCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOworfQorCiB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNsZWFyTm93UGxheWluZ0luZm8oKQogewogICAgIG1faXNBY3RpdmVOb3dQbGF5aW5n
UHJvY2VzcyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggYWU3OTUwNTI1ODYwZGUzY2Y2YTJiMTc4OGZl
MzVhNWVhYmRhNTY3ZC4uZTQzY2Y3NjQxZmRjNjk5YTQ5ZDZlNzQ3NjUxMjdjYzg3NDBkYTM3NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oCkBAIC0zMiw5ICszMiwxMSBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlck1h
cC5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5lcklkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJSZW1vdGVBdWRpb1Nlc3Npb25JZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUmVt
b3RlR1BVLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVySWRlbnRpZmll
ci5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oIgorI2luY2x1ZGUgIldlYkdQVUlkZW50
aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0xpYldlYlJUQ0VudW1UcmFpdHMuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL05vd1BsYXlpbmdNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdl
SWRlbnRpZmllci5oPgpAQCAtMjEyLDYgKzIxNCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVh
dGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMs
IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIs
IElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsKICAgICB2b2lkIHJlbGVhc2VHcmFwaGlj
c0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwogI2VuZGlmCisgICAgdm9p
ZCBjcmVhdGVSZW1vdGVHUFUoV2ViR1BVSWRlbnRpZmllciwgUmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXIsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsKIAogICAgIHZvaWQgY2xlYXJO
b3dQbGF5aW5nSW5mbygpOwogICAgIHZvaWQgc2V0Tm93UGxheWluZ0luZm8oV2ViQ29yZTo6Tm93
UGxheWluZ0luZm8mJik7CkBAIC0zMDgsNiArMzExLDggQEAgcHJpdmF0ZToKICAgICB1c2luZyBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcCA9IEhhc2hNYXA8R3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCBJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w+PjsKICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcCBtX3JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMTWFwOwogI2VuZGlmCisgICAgdXNpbmcgUmVtb3RlR1BVTWFwID0gSGFz
aE1hcDxXZWJHUFVJZGVudGlmaWVyLCBJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVl
dWU8UmVtb3RlR1BVPj47CisgICAgUmVtb3RlR1BVTWFwIG1fcmVtb3RlR1BVTWFwOwogI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUZhY3Rv
cnlQcm94eT4gbV9jZG1GYWN0b3J5UHJveHk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4KaW5kZXggMzkxYzE5ZmU5ZDg1MTRmNzRmYzFhNDM4ODY0OTBiNmFhZDNhNWFlNS4uOTE5
YjVkMzBlMTBmZTUwYTliMGE2OWQyOTlhMDZlODMwYTU4OTRhNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KQEAgLTI5LDYgKzI5LDcgQEAgbWVzc2FnZXMgLT4gR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyBXYW50c0Rpc3BhdGNoTWVzc2FnZSB7CiAgICAgdm9pZCBDcmVhdGVHcmFwaGlj
c0NvbnRleHRHTChzdHJ1Y3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0
dHJpYnV0ZXMsIFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyIHN0cmVh
bSkKICAgICB2b2lkIFJlbGVhc2VHcmFwaGljc0NvbnRleHRHTChXZWJLaXQ6OkdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCiAjZW5kaWYKKyAg
ICB2b2lkIENyZWF0ZVJlbW90ZUdQVShXZWJLaXQ6OldlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmll
ciwgV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllciwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyIHN0cmVhbSkKICAgICB2b2lkIENs
ZWFyTm93UGxheWluZ0luZm8oKQogICAgIHZvaWQgU2V0Tm93UGxheWluZ0luZm8oc3RydWN0IFdl
YkNvcmU6Ok5vd1BsYXlpbmdJbmZvIG5vd1BsYXlpbmdJbmZvKQogI2lmIFVTRShBVURJT19TRVNT
SU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVBZGFwdGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZUFkYXB0ZXIuaAppbmRleCAxZWEyYzEwMTg2ZTFiNmY4OGIwYTMyY2UwNDI3ODVi
ZmMyOGFmMzJhLi41MTU2MzZmYmExZWI0OTNkMjUxYmQ4ZjYyYjkwNGYzZDIxZTM1ODBkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUFk
YXB0ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZUFkYXB0ZXIuaApAQCAtNDcsNiArNDcsNyBAQCBzdHJ1Y3QgU3VwcG9ydGVkTGltaXRzOwog
fQogCiBjbGFzcyBSZW1vdGVBZGFwdGVyIGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2Fn
ZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmPFJlbW90ZUFkYXB0ZXI+IGNyZWF0ZShQQUw6OldlYkdQVTo6QWRhcHRlciYgYWRh
cHRlciwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2Jq
ZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlQmluZEdyb3VwLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZUJpbmRHcm91cC5oCmluZGV4IGNlMTQwOGM2N2Q1NDgxMmQ5ZGQ0YzE3ZTYzZGQwYjBi
MjQ2NzBmNWYuLjE3ZmJmZmE0MGIwM2FjZmVlYTVmNDY5NDllNTc0ZjEwMjBkMzk4MDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmlu
ZEdyb3VwLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVCaW5kR3JvdXAuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBPYmplY3RSZWdpc3RyeTsK
IH0KIAogY2xhc3MgUmVtb3RlQmluZEdyb3VwIGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVz
c2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUmVmPFJlbW90ZUJpbmRHcm91cD4gY3JlYXRlKFBBTDo6V2ViR1BVOjpCaW5kR3Jv
dXAmIGJpbmRHcm91cCwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdl
YkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlQmluZEdyb3VwTGF5b3V0LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExheW91dC5oCmluZGV4IDI4ZDBiZTRiYjQz
OTA4NzU1YmJmODkzOGVkMjA4ZTY3ZmRmY2ZjODcuLmZlMjlmODk4ZWE0OWY4MTg0NWVhODc0Yjc5
OTBmNTc5OGEwM2ZiYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwTGF5b3V0LmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBMYXlvdXQuaApAQCAtNDQs
NiArNDQsNyBAQCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKIH0KIAogY2xhc3MgUmVtb3RlQmluZEdy
b3VwTGF5b3V0IGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlbW90
ZUJpbmRHcm91cExheW91dD4gY3JlYXRlKFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXQmIGJp
bmRHcm91cExheW91dCwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdl
YkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlQnVmZmVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZUJ1ZmZlci5oCmluZGV4IGE1ZmFkNWIyZWZkMDgxMzZjMDJjZWI4NTlmYWQz
N2UyNWMzMjNmMzMuLjI3ZDU1Njk3MGM4ZTA2MGRlODc0ZGRhMWFlZDAwYmZkZjdhMTgyYzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVCdWZmZXIuaApAQCAtNDksNiArNDksNyBAQCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKIH0K
IAogY2xhc3MgUmVtb3RlQnVmZmVyIGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJl
Y2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmPFJlbW90ZUJ1ZmZlcj4gY3JlYXRlKFBBTDo6V2ViR1BVOjpCdWZmZXImIGJ1ZmZlciwg
V2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVh
cCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29t
bWFuZEJ1ZmZlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVDb21tYW5kQnVmZmVyLmgKaW5kZXggMTQwYzFhNDhhMTFkZWY5Y2FiYWM5YTUxYzg0YTFj
ZGRjNzQyZDg1ZC4uY2I2NGI3MGU5OGM4YjhjMGNjMzhlNTJjN2JjZDcyNGMzYWU1ZDg3ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVD
b21tYW5kQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVDb21tYW5kQnVmZmVyLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgT2JqZWN0
UmVnaXN0cnk7CiB9CiAKIGNsYXNzIFJlbW90ZUNvbW1hbmRCdWZmZXIgZmluYWwgOiBwdWJsaWMg
SVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UmVtb3RlQ29tbWFuZEJ1ZmZlcj4gY3JlYXRlKFBB
TDo6V2ViR1BVOjpDb21tYW5kQnVmZmVyJiBjb21tYW5kQnVmZmVyLCBXZWJHUFU6Ok9iamVjdFJl
Z2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBX
ZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kRW5jb2Rlci5oIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kRW5j
b2Rlci5oCmluZGV4IGJiNjA0YWE3YzhhZGRiNGMxZjBiOWUwMDBkY2JiYWFmNDk4NzIyNzYuLjQz
NjNhNmUzZjc3NTY4ZDMwYzYxY2Y1NWNmNWU0YjM5M2EwZjI0ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEVuY29kZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNv
bW1hbmRFbmNvZGVyLmgKQEAgLTUxLDYgKzUxLDcgQEAgc3RydWN0IFJlbmRlclBhc3NEZXNjcmlw
dG9yOwogfQogCiBjbGFzcyBSZW1vdGVDb21tYW5kRW5jb2RlciBmaW5hbCA6IHB1YmxpYyBJUEM6
OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZW1vdGVDb21tYW5kRW5jb2Rlcj4gY3JlYXRlKFBBTDo6
V2ViR1BVOjpDb21tYW5kRW5jb2RlciYgY29tbWFuZEVuY29kZXIsIFdlYkdQVTo6T2JqZWN0UmVn
aXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdl
YkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlci5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRl
UGFzc0VuY29kZXIuaAppbmRleCAwMGY5ZGQzMGQ3MTY1ZWJmOThkM2JhNWE3ZmVhOGEwMWI2MGU5
OGI2Li5jYjhjZTY2YWFiMDY4YmRmOWY0MjkzNmE1MDU5OWYxOGNlNTY2N2UwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQ
YXNzRW5jb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgY2xhc3MgT2Jq
ZWN0UmVnaXN0cnk7CiB9CiAKIGNsYXNzIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlciBmaW5hbCA6
IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZW1vdGVDb21wdXRlUGFzc0VuY29k
ZXI+IGNyZWF0ZShQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyJiBjb21wdXRlUGFzc0Vu
Y29kZXIsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9i
amVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZUNvbXB1dGVQaXBlbGluZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVDb21wdXRlUGlwZWxpbmUuaAppbmRleCA4NGRhYWI4NmNjNjlkYjRmMzM1
MWUxZmMxMGVmMzQ2M2JhNzc3ZGI3Li41OWU3MTZiOWIwYWNiZjFiMTExY2VkM2QwMDI0NzMwNTMy
ODhmNmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZUNvbXB1dGVQaXBlbGluZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBpcGVsaW5lLmgKQEAgLTQ0LDYgKzQ0LDcg
QEAgY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiB9CiAKIGNsYXNzIFJlbW90ZUNvbXB1dGVQaXBlbGlu
ZSBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZW1vdGVDb21wdXRl
UGlwZWxpbmU+IGNyZWF0ZShQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lJiBjb21wdXRlUGlw
ZWxpbmUsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9i
amVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZURldmljZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVEZXZpY2UuaAppbmRleCA0OTdjZGEwOTYxNGVlNDZhZDBjMTU3OTI4ZDE2YTIyYWI2MGJl
NzZhLi41MDY2MjFmZmNkOWVhNWJlYzQ2NzQyZTc3OTg1MjljNDA3NGI2N2QzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZURldmljZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRGV2
aWNlLmgKQEAgLTYwLDYgKzYwLDcgQEAgc3RydWN0IFRleHR1cmVEZXNjcmlwdG9yOwogfQogCiBj
bGFzcyBSZW1vdGVEZXZpY2UgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2
ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8UmVtb3RlRGV2aWNlPiBjcmVhdGUoUEFMOjpXZWJHUFU6OkRldmljZSYgZGV2aWNlLCBXZWJH
UFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBv
YmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVFeHRlcm5h
bFRleHR1cmUuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlRXh0ZXJuYWxUZXh0dXJlLmgKaW5kZXggMzFkMWM1NDM5OTJiYmJiZWYxMzQ2MmJkMTAzYmI4
MjhlMWZmOTYwZi4uZWQ5NjZhZWNiMDkwZmRhMWIzY2UzYzRlYjE1ZDhhMWEzMDYwMGEyZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVF
eHRlcm5hbFRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4dHVyZS5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIE9i
amVjdFJlZ2lzdHJ5OwogfQogCiBjbGFzcyBSZW1vdGVFeHRlcm5hbFRleHR1cmUgZmluYWwgOiBw
dWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UmVtb3RlRXh0ZXJuYWxUZXh0dXJlPiBj
cmVhdGUoUEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZSYgZXh0ZXJuYWxUZXh0dXJlLCBXZWJH
UFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBv
YmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUuY3Bw
CmluZGV4IGQ3MmVlZTlhODU3NDYwZmI3YTViZDcxNTkyMjQ5OWM5ZTRiMmM4OTAuLmYxNTliNTFl
OTM4ZmVhNmNmZjRjNzU5Njk4OWNjMjAxM2MzYjY4NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5jcHAKQEAgLTI4LDQz
ICsyOCw5MSBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlJlbW90ZUFkYXB0ZXIuaCIKKyNpbmNs
dWRlICJSZW1vdGVHUFVNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZUdQVVByb3h5TWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgiCiAjaW5jbHVkZSAiV2Vi
R1BVT2JqZWN0SGVhcC5oIgogI2luY2x1ZGUgIldlYkdQVU9iamVjdFJlZ2lzdHJ5LmgiCisjaW5j
bHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUltcGwuaD4KICNpbmNsdWRlIDxw
YWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVS5oPgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJH
UFUvV2ViR1BVQWRhcHRlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlR1BVOjpS
ZW1vdGVHUFUoUEFMOjpXZWJHUFU6OkdQVSYgZ3B1LCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBv
YmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCi0gICAgOiBtX2JhY2tpbmcoZ3B1KQotICAgICwgbV9vYmplY3RS
ZWdpc3RyeShvYmplY3RSZWdpc3RyeSkKLSAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQor
UmVtb3RlR1BVOjpSZW1vdGVHUFUoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kJiByZW5kZXJpbmdCYWNrZW5kLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXImJiBzdHJlYW0pCisgICAgOiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2VzcykKKyAgICAsIG1fd29ya1F1ZXVlKElQQzo6U3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZTo6Y3JlYXRlKCJXZWJHUFUgd29yayBxdWV1ZSIpKQorICAgICwgbV9zdHJlYW1D
b25uZWN0aW9uKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbjo6Y3JlYXRlKGdwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLCBXVEZNb3ZlKHN0cmVhbSksIG1fd29ya1F1ZXVl
KSkKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICwgbV9yZW5kZXJpbmdCYWNr
ZW5kKHJlbmRlcmluZ0JhY2tlbmQpCiB7Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5hZGRPYmplY3Qo
bV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOworICAgIGluaXRpYWxpemUoKTsKIH0KIAogUmVtb3Rl
R1BVOjp+UmVtb3RlR1BVKCkKIHsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdCht
X2lkZW50aWZpZXIpOworICAgIC8vIEZJWE1FOiBIYW5kbGUgdGhyZWFkaW5nLgorICAgIC8vIFRo
aXMgbWlnaHQgYmUgZGVzdHJveWVkIG9uIG1haW4gdGhyZWFkIG9yIHN0cmVhbSBwcm9jZXNzaW5n
IHRocmVhZC4KKyAgICBtX29iamVjdEhlYXAub2JqZWN0UmVnaXN0cnkoKS5yZW1vdmVPYmplY3Qo
bV9pZGVudGlmaWVyKTsKKyAgICBtX3N0cmVhbVRocmVhZC5yZXNldCgpOworfQorCit2b2lkIFJl
bW90ZUdQVTo6aW5pdGlhbGl6ZSgpCit7CisgICAgYXNzZXJ0SXNNYWluUnVuTG9vcCgpOworICAg
IG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKCkg
bXV0YWJsZSB7CisgICAgICAgIHByb3RlY3RlZFRoaXMtPndvcmtRdWV1ZUluaXRpYWxpemUoKTsK
KyAgICB9KTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXMo
KnRoaXMsIE1lc3NhZ2VzOjpSZW1vdGVHUFU6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVu
dGlmaWVyLnRvVUludDY0KCkpOworfQorCit2b2lkIFJlbW90ZUdQVTo6c3RvcExpc3RlbmluZ0Zv
cklQQyhSZWY8UmVtb3RlR1BVPiYmIHJlZkZyb21Db25uZWN0aW9uKQoreworICAgIGFzc2VydElz
TWFpblJ1bkxvb3AoKTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0b3BSZWNlaXZpbmdNZXNz
YWdlcyhNZXNzYWdlczo6UmVtb3RlR1BVOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRp
Zmllci50b1VJbnQ2NCgpKTsKKyAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRo
aXMgPSBXVEZNb3ZlKHJlZkZyb21Db25uZWN0aW9uKV0oKSB7CisgICAgICAgIHByb3RlY3RlZFRo
aXMtPndvcmtRdWV1ZVVuaW5pdGlhbGl6ZSgpOworICAgIH0pOworfQorCit2b2lkIFJlbW90ZUdQ
VTo6d29ya1F1ZXVlSW5pdGlhbGl6ZSgpCit7CisgICAgbV9zdHJlYW1UaHJlYWQucmVzZXQoKTsK
KyAgICBhc3NlcnRJc0N1cnJlbnQobV9zdHJlYW1UaHJlYWQpOworICAgIGF1dG8gYmFja2luZyA9
IFBBTDo6V2ViR1BVOjpHUFVJbXBsOjpjcmVhdGUoKTsKKyAgICBpZiAoYmFja2luZykgeworICAg
ICAgICBtX2JhY2tpbmcgPSBiYWNraW5nLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIG1fb2Jq
ZWN0SGVhcC5vYmplY3RSZWdpc3RyeSgpLmFkZE9iamVjdChtX2lkZW50aWZpZXIsICptX2JhY2tp
bmcpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHUFVQcm94eTo6V2FzQ3JlYXRlZCh0
cnVlLCBtX3dvcmtRdWV1ZS0+d2FrZVVwU2VtYXBob3JlKCkpKTsKKyAgICB9IGVsc2UKKyAgICAg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR1BVUHJveHk6Oldhc0NyZWF0ZWQoZmFsc2UsIG1fd29y
a1F1ZXVlLT53YWtlVXBTZW1hcGhvcmUoKSkpOworfQorCit2b2lkIFJlbW90ZUdQVTo6d29ya1F1
ZXVlVW5pbml0aWFsaXplKCkKK3sKKyAgICBhc3NlcnRJc0N1cnJlbnQobV9zdHJlYW1UaHJlYWQp
OworICAgIG1fc3RyZWFtQ29ubmVjdGlvbiA9IG51bGxwdHI7CiB9CiAKIHZvaWQgUmVtb3RlR1BV
OjpyZXF1ZXN0QWRhcHRlcihjb25zdCBXZWJHUFU6OlJlcXVlc3RBZGFwdGVyT3B0aW9ucyYgb3B0
aW9ucywgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RyaW5nJiYsIFdlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXMmJiwgV2ViR1BVOjpTdXBw
b3J0ZWRMaW1pdHMmJiwgYm9vbCk+JiYgY2FsbGJhY2spCiB7Ci0gICAgYXV0byBjb252ZXJ0ZWRP
cHRpb25zID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcob3B0aW9ucyk7Cisg
ICAgYXNzZXJ0SXNDdXJyZW50KG1fc3RyZWFtVGhyZWFkKTsKKworICAgIGF1dG8gY29udmVydGVk
T3B0aW9ucyA9IG1fb2JqZWN0SGVhcC5vYmplY3RSZWdpc3RyeSgpLmNvbnZlcnRGcm9tQmFja2lu
ZyhvcHRpb25zKTsKICAgICBBU1NFUlQoY29udmVydGVkT3B0aW9ucyk7CiAgICAgaWYgKCFjb252
ZXJ0ZWRPcHRpb25zKSB7CiAgICAgICAgIGNhbGxiYWNrKFN0cmluZ0ltcGw6OmVtcHR5KCksIHsg
eyB9IH0sIHsgfSwgZmFsc2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9iYWNr
aW5nLT5yZXF1ZXN0QWRhcHRlcigqY29udmVydGVkT3B0aW9ucywgW2NhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayksIHdlYWtPYmplY3RIZWFwID0gV2Vha1B0cjxXZWJHUFU6Ok9iamVjdEhlYXA+
KG1fb2JqZWN0SGVhcCksIG9iamVjdFJlZ2lzdHJ5ID0gbV9vYmplY3RSZWdpc3RyeSwgaWRlbnRp
Zmllcl0gKFJlZlB0cjxQQUw6OldlYkdQVTo6QWRhcHRlcj4mJiBhZGFwdGVyKSBtdXRhYmxlIHsK
KyAgICBtX2JhY2tpbmctPnJlcXVlc3RBZGFwdGVyKCpjb252ZXJ0ZWRPcHRpb25zLCBbY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgd2Vha09iamVjdEhlYXAgPSBXZWFrUHRyPFdlYkdQVTo6
T2JqZWN0SGVhcD4obV9vYmplY3RIZWFwKSwgaWRlbnRpZmllcl0gKFJlZlB0cjxQQUw6OldlYkdQ
VTo6QWRhcHRlcj4mJiBhZGFwdGVyKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrT2JqZWN0
SGVhcCB8fCAhYWRhcHRlcikgewogICAgICAgICAgICAgLy8gRklYTUU6IERlYWwgd2l0aCBmYWls
dXJlIGhlcmUuCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgYXV0byBy
ZW1vdGVBZGFwdGVyID0gUmVtb3RlQWRhcHRlcjo6Y3JlYXRlKCphZGFwdGVyLCBvYmplY3RSZWdp
c3RyeSwgKndlYWtPYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAgICAgICAgYXV0byByZW1vdGVB
ZGFwdGVyID0gUmVtb3RlQWRhcHRlcjo6Y3JlYXRlKCphZGFwdGVyLCB3ZWFrT2JqZWN0SGVhcC0+
b2JqZWN0UmVnaXN0cnkoKSwgKndlYWtPYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKICAgICAgICAg
d2Vha09iamVjdEhlYXAtPmFkZE9iamVjdChyZW1vdGVBZGFwdGVyKTsKICAgICAgICAgYXV0byBu
YW1lID0gYWRhcHRlci0+bmFtZSgpOwogICAgICAgICBjb25zdCBhdXRvJiBmZWF0dXJlcyA9IGFk
YXB0ZXItPmZlYXR1cmVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUuaAppbmRleCA3NTg1NTQzMzQ1NjBjMTIzYzNlMWZmYjlh
ODQxOTc4NGViYWZkMDc5Li42ZDFkN2RmMmFiZGFlMzhiMzc2ZGU0YWU1ODE3NzI0MDE2YTVmZWNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZUdQVS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlR1BVLmgKQEAgLTI3LDEyICsyNywxNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KQogCisjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oIgogI2luY2x1ZGUgIlN0
cmVhbU1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlN0cmVhbVNlcnZlckNvbm5lY3Rpb24u
aCIKICNpbmNsdWRlICJXZWJHUFVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0
SGVhcC5oIgogI2luY2x1ZGUgIldlYkdQVVN1cHBvcnRlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAi
V2ViR1BVU3VwcG9ydGVkTGltaXRzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRp
Zmllci5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkQXNzZXJ0aW9ucy5oPgogCiBuYW1lc3BhY2Ug
UEFMOjpXZWJHUFUgewogY2xhc3MgR1BVOwpAQCAtNDAsNiArNDUsOSBAQCBjbGFzcyBHUFU7CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwor
Y2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDsKKwogbmFtZXNwYWNlIFdlYkdQVSB7CiBjbGFz
cyBPYmplY3RIZWFwOwogY2xhc3MgT2JqZWN0UmVnaXN0cnk7CkBAIC00NywzMiArNTUsNTAgQEAg
c3RydWN0IFJlcXVlc3RBZGFwdGVyT3B0aW9uczsKIH0KIAogY2xhc3MgUmVtb3RlR1BVIGZpbmFs
IDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZUdQVT4gY3JlYXRlKFBB
TDo6V2ViR1BVOjpHUFUmIGdwdSwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0
cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVu
dGlmaWVyKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlR1BVPiBjcmVhdGUoV2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW5kZXJpbmdCYWNrZW5kLCBJUEM6
OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW0pCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBSZW1vdGVHUFUoZ3B1LCBvYmplY3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwg
aWRlbnRpZmllcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVHUFUoaWRl
bnRpZmllciwgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgcmVuZGVyaW5nQmFja2VuZCwgV1RG
TW92ZShzdHJlYW0pKSk7CiAgICAgfQogCisgICAgdm9pZCBzdG9wTGlzdGVuaW5nRm9ySVBDKFJl
ZjxSZW1vdGVHUFU+JiYgcmVmRnJvbUNvbm5lY3Rpb24pOworCiAgICAgdmlydHVhbCB+UmVtb3Rl
R1BVKCk7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIE9iamVjdFJlZ2lzdHJ5OwogCi0g
ICAgUmVtb3RlR1BVKFBBTDo6V2ViR1BVOjpHUFUmLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5Jiwg
V2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7CisgICAgUmVtb3RlR1BVKFdl
YkdQVUlkZW50aWZpZXIsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kJiwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYpOwogCiAgICAgUmVtb3Rl
R1BVKGNvbnN0IFJlbW90ZUdQVSYpID0gZGVsZXRlOwogICAgIFJlbW90ZUdQVShSZW1vdGVHUFUm
JikgPSBkZWxldGU7CiAgICAgUmVtb3RlR1BVJiBvcGVyYXRvcj0oY29uc3QgUmVtb3RlR1BVJikg
PSBkZWxldGU7CiAgICAgUmVtb3RlR1BVJiBvcGVyYXRvcj0oUmVtb3RlR1BVJiYpID0gZGVsZXRl
OwogCisgICAgdm9pZCBpbml0aWFsaXplKCk7CisgICAgdm9pZCB3b3JrUXVldWVJbml0aWFsaXpl
KCk7CisgICAgdm9pZCB3b3JrUXVldWVVbmluaXRpYWxpemUoKTsKKworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CisgICAgYm9vbCBzZW5kKFQmJiBtZXNzYWdlKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fc3RyZWFtQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoV1RGTW92ZSht
ZXNzYWdlKSwgbV9pZGVudGlmaWVyKTsKKyAgICB9CisKICAgICB2b2lkIGRpZFJlY2VpdmVTdHJl
YW1NZXNzYWdlKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UmLCBJUEM6OkRlY29kZXIm
KSBmaW5hbDsKIAogICAgIHZvaWQgcmVxdWVzdEFkYXB0ZXIoY29uc3QgV2ViR1BVOjpSZXF1ZXN0
QWRhcHRlck9wdGlvbnMmLCBXZWJHUFVJZGVudGlmaWVyLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RyaW5nJiYsIFdlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXMmJiwgV2ViR1BVOjpTdXBw
b3J0ZWRMaW1pdHMmJiwgYm9vbCk+JiYpOwogCi0gICAgUmVmPFBBTDo6V2ViR1BVOjpHUFU+IG1f
YmFja2luZzsKLSAgICBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBtX29iamVjdFJlZ2lzdHJ5Owot
ICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFwOworICAgIFdlYWtQdHI8R1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworICAgIFJl
ZjxJUEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU+IG1fd29ya1F1ZXVlOworICAgIFJlZlB0
cjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+IG1fc3RyZWFtQ29ubmVjdGlvbjsKKyAgICBS
ZWZQdHI8UEFMOjpXZWJHUFU6OkdQVT4gbV9iYWNraW5nIFdURl9HVUFSREVEX0JZX0xPQ0sobV9z
dHJlYW1UaHJlYWQpOworICAgIFdlYkdQVTo6T2JqZWN0SGVhcCBtX29iamVjdEhlYXA7IC8vIEZJ
WE1FOiBUaGlzIHNob3VsZCBiZSBndWFyZGVkIGJ5IHRoZSBsb2NrLgogICAgIFdlYkdQVUlkZW50
aWZpZXIgbV9pZGVudGlmaWVyOworICAgIFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBtX3Jl
bmRlcmluZ0JhY2tlbmQ7CisgICAgTk9fVU5JUVVFX0FERFJFU1MgVGhyZWFkQXNzZXJ0aW9uIG1f
c3RyZWFtVGhyZWFkOworICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fd2ViUHJvY2Vz
c0lkZW50aWZpZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUGlwZWxpbmVMYXlv
dXQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUGlw
ZWxpbmVMYXlvdXQuaAppbmRleCAyM2JjYWViNjA2NDEyMGI1MzIwNzJjNzM2MmE4NmYwZjZjNjdm
MjBlLi42YmFkMzUyZTM2MzUwNTAwNmVmMDA3YTM3OGFhZGNjNzQ0MWE0YWI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVBpcGVsaW5l
TGF5b3V0LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVQaXBlbGluZUxheW91dC5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIE9iamVjdFJlZ2lz
dHJ5OwogfQogCiBjbGFzcyBSZW1vdGVQaXBlbGluZUxheW91dCBmaW5hbCA6IHB1YmxpYyBJUEM6
OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZW1vdGVQaXBlbGluZUxheW91dD4gY3JlYXRlKFBBTDo6
V2ViR1BVOjpQaXBlbGluZUxheW91dCYgcGlwZWxpbmVMYXlvdXQsIFdlYkdQVTo6T2JqZWN0UmVn
aXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdl
YkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0LmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0LmgKaW5kZXgg
ZTE3ZDczYzMyZWYzZWYwZjM3ZDZhYmVhNTU1OTBmOWQwNTEyNjM4YS4uMzM3OWEyMjViMzA3NTY4
MTliNmI0NDIyODY2ODc5ZGNiMzNkZDJjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWVyeVNldC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVlcnlTZXQuaApAQCAtNDQsNiAr
NDQsNyBAQCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKIH0KIAogY2xhc3MgUmVtb3RlUXVlcnlTZXQg
ZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UmVtb3RlUXVlcnlTZXQ+
IGNyZWF0ZShQQUw6OldlYkdQVTo6UXVlcnlTZXQmIHF1ZXJ5U2V0LCBXZWJHUFU6Ok9iamVjdFJl
Z2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBX
ZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWV1ZS5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWV1ZS5oCmluZGV4IGE1MGFm
ODI0NTFmYjlmYmVkYTk3YzEwNjVlNjkzNjVmMzlmN2IzODYuLjY3Y2YyZDU0NzE2MDg1MzM4MTE4
ZDUzMjQ4YmRmNzk4Y2IzNzc0NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXVlLmgKQEAgLTUzLDYgKzUzLDcgQEAgY2xh
c3MgT2JqZWN0UmVnaXN0cnk7CiB9CiAKIGNsYXNzIFJlbW90ZVF1ZXVlIGZpbmFsIDogcHVibGlj
IElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlbW90ZVF1ZXVlPiBjcmVhdGUoUEFMOjpXZWJH
UFU6OlF1ZXVlJiBxdWV1ZSwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnks
IFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZS5oCmluZGV4IDZiODBkNTliYTcyNzI4
MjJkZTA3NmEyYTU3N2M2MTdlMTg5YTFjYWYuLjNkZjc2NDRkMDE4NzdiOTg5NmNiZGY3ZGU4NjE4
MDZlNWQ3YmM2OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGUuaApAQCAtNDQsNiArNDQsNyBA
QCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKIH0KIAogY2xhc3MgUmVtb3RlUmVuZGVyQnVuZGxlIGZp
bmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlckJ1bmRs
ZT4gY3JlYXRlKFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGUmIHJlbmRlckJ1bmRsZSwgV2ViR1BV
OjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2Jq
ZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVu
ZGxlRW5jb2Rlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyLmgKaW5kZXggZjg3YjczZTAxYzdhYTRiMWI2NmQ0YzVh
NzZhYWJiNTUzZDc3MTYzMi4uOGQyYWQyOGUxOTZlMTg5OWIyNTY0MTA4MTQzZmY5MzNjNjM1ZjE2
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyLmgKQEAgLTQ3LDYgKzQ3
LDcgQEAgc3RydWN0IFJlbmRlckJ1bmRsZURlc2NyaXB0b3I7CiB9CiAKIGNsYXNzIFJlbW90ZVJl
bmRlckJ1bmRsZUVuY29kZXIgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2
ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcj4gY3JlYXRlKFBBTDo6V2ViR1BVOjpSZW5kZXJC
dW5kbGVFbmNvZGVyJiByZW5kZXJCdW5kbGVFbmNvZGVyLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5
JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQYXNzRW5jb2Rlci5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQYXNzRW5j
b2Rlci5oCmluZGV4IGZiNmQzZGI1OWE5MzIxNGFkOGQ0MDRmZGFkYzVkYzcxYTkzZWFjZWMuLjc0
ODg1ZDRiODg3YjhhZmIyOWU4NTZjMWNiMTJlYzIxZjYwYWRjNDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0VuY29k
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZVJlbmRlclBhc3NFbmNvZGVyLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgY2xhc3MgT2JqZWN0UmVnaXN0
cnk7CiB9CiAKIGNsYXNzIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyIGZpbmFsIDogcHVibGljIElQ
Qzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyPiBjcmVhdGUo
UEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyJiByZW5kZXJQYXNzRW5jb2RlciwgV2ViR1BV
OjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2Jq
ZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGlw
ZWxpbmUuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
UmVuZGVyUGlwZWxpbmUuaAppbmRleCBiYzZiOTY1NzVkY2NkM2JmOWMwNmMyODkyMWNmOTVkNjBj
ODY2NTgwLi45YWE5NjcyNjk4OTFhZTljMjIzN2Q2NWNmYTIyMDc3YzhmYWIxNTUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRl
clBpcGVsaW5lLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVSZW5kZXJQaXBlbGluZS5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIE9iamVjdFJl
Z2lzdHJ5OwogfQogCiBjbGFzcyBSZW1vdGVSZW5kZXJQaXBlbGluZSBmaW5hbCA6IHB1YmxpYyBJ
UEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZW1vdGVSZW5kZXJQaXBlbGluZT4gY3JlYXRlKFBB
TDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZSYgcmVuZGVyUGlwZWxpbmUsIFdlYkdQVTo6T2JqZWN0
UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAs
IFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNhbXBsZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2FtcGxlci5oCmluZGV4
IGFjOTAzOGE1YjljYTg3ZWNiZjViZmU0MWY4NzQ2MDQzZTAwMGNhMzMuLmZkM2U3ZTFjYmU3MDg2
ZjI0ZjA1MTc3ZDE4ZGI3MTA3NDg4NDkyNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2FtcGxlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2FtcGxlci5oCkBAIC00NCw2ICs0
NCw3IEBAIGNsYXNzIE9iamVjdFJlZ2lzdHJ5OwogfQogCiBjbGFzcyBSZW1vdGVTYW1wbGVyIGZp
bmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlbW90ZVNhbXBsZXI+IGNy
ZWF0ZShQQUw6OldlYkdQVTo6U2FtcGxlciYgc2FtcGxlciwgV2ViR1BVOjpPYmplY3RSZWdpc3Ry
eSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BV
SWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2hhZGVyTW9kdWxlLmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNoYWRlck1vZHVsZS5oCmlu
ZGV4IGY5N2YwMTk2YmIwNjdlZGJjYjkyMzVjZGVjMTA2NGVjMzQxNjcyYmIuLmM4MDQxNTYxMGQ5
ODU0MTg1ZTk0NzY2NzdkOGQ5NjEzZjE5ZDJiOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2hhZGVyTW9kdWxlLmgKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGUu
aApAQCAtNDcsNiArNDcsNyBAQCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKIH0KIAogY2xhc3MgUmVt
b3RlU2hhZGVyTW9kdWxlIGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVy
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVm
PFJlbW90ZVNoYWRlck1vZHVsZT4gY3JlYXRlKFBBTDo6V2ViR1BVOjpTaGFkZXJNb2R1bGUmIHNo
YWRlck1vZHVsZSwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQ
VTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlVGV4dHVyZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVUZXh0dXJlLmgKaW5kZXggZGZlY2Y5ZGFmNzA5MWU4OTgwZTkzZmYwZTZjYWMw
ZTY1MGFhODVjZS4uNGE4YzA3YjY4MTg5MGMxOWRhMTlhOGY5ZGQzY2M3MDYwNmZhYjYwNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVU
ZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVUZXh0dXJlLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgc3RydWN0IFRleHR1cmVWaWV3RGVzY3Jp
cHRvcjsKIH0KIAogY2xhc3MgUmVtb3RlVGV4dHVyZSBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVh
bU1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFJlZjxSZW1vdGVUZXh0dXJlPiBjcmVhdGUoUEFMOjpXZWJHUFU6OlRleHR1
cmUmIHRleHR1cmUsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJH
UFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikK
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZVRleHR1cmVWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZVRleHR1cmVWaWV3LmgKaW5kZXggNDY4N2MzYjgzMzk5ZjQzNjY0ZDky
MTJmZjNhODc4NDQzOWNiZjZjNy4uM2VjMjdkNzJlMmE1ZDBkY2ZiM2IwNDc5ZDViOTk5OTcxYWRj
NzlmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVUZXh0dXJlVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVZpZXcuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBP
YmplY3RSZWdpc3RyeTsKIH0KIAogY2xhc3MgUmVtb3RlVGV4dHVyZVZpZXcgZmluYWwgOiBwdWJs
aWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UmVtb3RlVGV4dHVyZVZpZXc+IGNyZWF0ZShQ
QUw6OldlYkdQVTo6VGV4dHVyZVZpZXcmIHRleHR1cmVWaWV3LCBXZWJHUFU6Ok9iamVjdFJlZ2lz
dHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJH
UFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVPYmplY3RIZWFwLmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9iamVjdEhlYXAuaAppbmRl
eCBhMTZjZDI2Njk4MTM3N2NhOTE4ZTUxMGI2OGZjODVmMzhlNDE5ZDkyLi4zZDQzN2QwMTI2YWVh
YmE4OWZlYTc3MGM2OTZmYmRiZTlkZTM3NWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9iamVjdEhlYXAuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9iamVjdEhlYXAuaApAQCAt
NjIsMTAgKzYyLDEzIEBAIGNsYXNzIFJlbW90ZVRleHR1cmVWaWV3OwogbmFtZXNwYWNlIFdlYktp
dDo6V2ViR1BVIHsKIAogY2xhc3MgT2JqZWN0SGVhcCBmaW5hbCA6IHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxPYmplY3RIZWFwPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgT2JqZWN0SGVhcCgpOwogICAgIH5PYmplY3RIZWFwKCk7CiAKKyAgICBPYmplY3RSZWdp
c3RyeSYgb2JqZWN0UmVnaXN0cnkoKSB7IHJldHVybiBtX29iamVjdFJlZ2lzdHJ5OyB9CisKICAg
ICB2b2lkIGFkZE9iamVjdChSZW1vdGVBZGFwdGVyJik7CiAgICAgdm9pZCBhZGRPYmplY3QoUmVt
b3RlQmluZEdyb3VwJik7CiAgICAgdm9pZCBhZGRPYmplY3QoUmVtb3RlQmluZEdyb3VwTGF5b3V0
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktp
dC9Tb3VyY2VzLnR4dAppbmRleCBkYzJkYmQ1MjZkNWI4YWE0ZTkxMTkwMWI3MjA0NjdmMGUyM2Qz
Mjk1Li42YjQ1ZWQ4MGVjOTlhZWE1MmIxYzU1M2ZiN2U4M2E3M2U4ZTY1ZDhmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQKQEAgLTg1OCw2ICs4NTgsNyBAQCBSZW1vdGVDb21wdXRlUGlwZWxpbmVNZXNzYWdlUmVjZWl2
ZXIuY3BwCiBSZW1vdGVEZXZpY2VNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVFeHRlcm5hbFRl
eHR1cmVNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVHUFVNZXNzYWdlUmVjZWl2ZXIuY3BwCitS
ZW1vdGVHUFVQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZVBpcGVsaW5lTGF5b3V0TWVz
c2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlUXVlcnlTZXRNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1v
dGVRdWV1ZU1lc3NhZ2VSZWNlaXZlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY1MmMyYmUzYjhiZjBkNmFjZmRlNzhlYjBjOTAx
NTUwYjU5YWQxNGYuLjhjNGE4Y2JhODhjOTE5OTc5OTJmYzQwYWYzYTVmNjE5MzViZmNkMmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MzE3MSw2ICszMTcxLDcgQEAKIAkJMUNCRDc1M0QyNzQ3QUEzMTAwNEZBMEZGIC8qIFdlYkdQVU9i
amVjdEhlYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVT2JqZWN0SGVhcC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQ0JGOTAxMjI3MTAxOEI1MDAwQzQ1N0QgLyogUXVhbGlmaWVk
UmVzb3VyY2VIZWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1YWxpZmllZFJlc291cmNlSGVhcC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0M1NEFGRDI3MEY5NjU0MDA1QkY4QkUgLyog
UXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1
YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxQ0Q0MTJFNzI3NTFFMEVDMDBDQTJFMjIgLyogUmVtb3RlR1BVUHJveHkubWVz
c2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gUmVtb3RlR1BVUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFDRjE4RjNFMjZCQjVEOTAwMDRCMTcyMiAvKiBMb2dJbml0aWFsaXph
dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2dJbml0aWFsaXphdGlvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEMDUzMEM5MjU4RUFCNDQwMEU0MzZGNyAvKiBjb21i
aW5lLWZlYXR1cmUtZmxhZ3MtcGxpc3QucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSAiY29tYmluZS1m
ZWF0dXJlLWZsYWdzLXBsaXN0LnB5Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUQw
NTMwRDEyNTkxNjJDODAwRTQzNkY3IC8qIFdlYktpdC1pb3MucGxpc3QgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnhtbDsgcGF0aCA9
ICJXZWJLaXQtaW9zLnBsaXN0Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc0NDcs
NiArNzQ0OCw3IEBACiAJCQkJMUNCNzQ2MjUyNzQzNkVFNjAwRjE5ODc0IC8qIFJlbW90ZUV4dGVy
bmFsVGV4dHVyZVByb3h5LmggKi8sCiAJCQkJMUNCNzQ2NjIyNzQzOUExQTAwRjE5ODc0IC8qIFJl
bW90ZUdQVVByb3h5LmNwcCAqLywKIAkJCQkxQ0I3NDY2MzI3NDM5QTFBMDBGMTk4NzQgLyogUmVt
b3RlR1BVUHJveHkuaCAqLywKKwkJCQkxQ0Q0MTJFNzI3NTFFMEVDMDBDQTJFMjIgLyogUmVtb3Rl
R1BVUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJMUNCNzQ2MjcyNzQzNkVFNjAwRjE5ODc0IC8q
IFJlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHkuY3BwICovLAogCQkJCTFDQjc0NjJGMjc0MzZFRTgw
MEYxOTg3NCAvKiBSZW1vdGVQaXBlbGluZUxheW91dFByb3h5LmggKi8sCiAJCQkJMUNCNzQ2Mzcy
NzQzNkVFOTAwRjE5ODc0IC8qIFJlbW90ZVF1ZXJ5U2V0UHJveHkuY3BwICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQWRh
cHRlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVBZGFwdGVyUHJveHkuaAppbmRleCA5YzNkOTU3MTVmZjQxM2RiOWM1Mzk0MjVjN2I1
OTZlZmUzNjY3OWNkLi43ZTZmY2E5MmQxNzQzYmEzMzBlOGY3NWJhMjE1ZjAwYzI3NDVmNmRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVBZGFwdGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVBZGFwdGVyUHJveHkuaApAQCAtMzIsMTIgKzMyLDE2IEBACiAj
aW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVBZGFwdGVyLmg+CiAjaW5jbHVkZSA8
d3RmL0RlcXVlLmg+CiAKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgUmVtb3RlR1BVUHJveHk7
Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKIGNsYXNzIENvbnZlcnRUb0JhY2tp
bmdDb250ZXh0OwotY2xhc3MgUmVtb3RlR1BVUHJveHk7CiAKIGNsYXNzIFJlbW90ZUFkYXB0ZXJQ
cm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6QWRhcHRlciB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZW1vdGVBZGFwdGVyUHJv
eHk+IGNyZWF0ZShTdHJpbmcmJiBuYW1lLCBQQUw6OldlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXMm
IGZlYXR1cmVzLCBQQUw6OldlYkdQVTo6U3VwcG9ydGVkTGltaXRzJiBsaW1pdHMsIGJvb2wgaXNG
YWxsYmFja0FkYXB0ZXIsIFJlbW90ZUdQVVByb3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdD
b250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExheW91dFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94
eS5oCmluZGV4IGQ0N2Q3ZWM3MGI4YTZkMWY5YmExNTA3MTg1MWJiZWM3YzJkNjliYmQuLmRjYjUy
NmE0ODUyNzAyMjVjM2EyMjUzNjc5NTM3NzY4ZmQxMjVjZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExheW91
dFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHkuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3Bh
Y2UgV2ViS2l0OjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNs
YXNzIFJlbW90ZUJpbmRHcm91cExheW91dFByb3h5IGZpbmFsIDogcHVibGljIFBBTDo6V2ViR1BV
OjpCaW5kR3JvdXBMYXlvdXQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIHN0YXRpYyBSZWY8UmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHk+IGNyZWF0ZShSZW1v
dGVEZXZpY2VQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRv
QmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVCaW5kR3JvdXBQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwUHJveHkuaAppbmRleCA4ZGNhMTJiOGM3MTZjMjE4OGU2
YThjZTQwYTY4MzRmZGZmOTBmMTJiLi43ZWY5NjYxMDEwZWM2ODZiZTIyZThhZTE1MGJjM2I3MTcz
MTZhYjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cFByb3h5LmgKQEAgLTM2LDYg
KzM2LDcgQEAgbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tp
bmdDb250ZXh0OwogCiBjbGFzcyBSZW1vdGVCaW5kR3JvdXBQcm94eSBmaW5hbCA6IHB1YmxpYyBQ
QUw6OldlYkdQVTo6QmluZEdyb3VwIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlbW90ZUJpbmRHcm91cFByb3h5PiBjcmVhdGUoUmVtb3Rl
RGV2aWNlUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
QnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZUJ1ZmZlclByb3h5LmgKaW5kZXggNDA5MzAwYTU0OGFlMjI2ZjdmYTE2OWI0MmY4
NzM3YzYwZDVmYjAyZC4uYmQwYTFjNzdkMGNmZDk2Yjc3ZWE0OGE5NWY4N2IxZWE2NjUyOWY5OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlQnVmZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZmZXJQcm94eS5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQ6OldlYkdQVSB7CiBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAog
Y2xhc3MgUmVtb3RlQnVmZmVyUHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OkJ1ZmZl
ciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZjxSZW1vdGVCdWZmZXJQcm94eT4gY3JlYXRlKFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQsIENv
bnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRl
bnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRCdWZmZXJQcm94eS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFu
ZEJ1ZmZlclByb3h5LmgKaW5kZXggMzNhYzUzNDNkMDZiODk5MzQ1YjI2YmFiMDFlYTEwYmZmZjI4
MTYzYy4uNzc5YzQ4NjhmODMxYzBkNTRhOWYxOTQ0MWI2MDcwNDFkYmFmNmQ1YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29t
bWFuZEJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5LmgKQEAgLTM2LDYgKzM2LDcgQEAg
bmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0
OwogCiBjbGFzcyBSZW1vdGVDb21tYW5kQnVmZmVyUHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpX
ZWJHUFU6OkNvbW1hbmRCdWZmZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8UmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5PiBjcmVhdGUoUmVt
b3RlRGV2aWNlUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRU
b0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlQ29tbWFuZEVuY29kZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eS5oCmluZGV4IDgzYjVkMGJm
MDkyZmEzNjBjYjdlNDEwNWU3YmM5NmUzN2I1YjJhMWYuLjk5YWE2ZDdkYTk0M2I5YjMwZDgyNjI4
YjM1ZTk3NDY2MDBmYTAyOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kRW5j
b2RlclByb3h5LmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsK
IGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBSZW1vdGVDb21tYW5kRW5j
b2RlclByb3h5IGZpbmFsIDogcHVibGljIFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2RlciB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZW1v
dGVDb21tYW5kRW5jb2RlclByb3h5PiBjcmVhdGUoUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCwg
Q29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5LmgKaW5kZXggZDY5ODBiODcyNGNjYmI2NjU1NWJlMTUy
ZmQxNDg0MmJkZjYyODVmNi4uYWNiNDcwNDY5ZGFlY2JkNDY3NDAyMjYyODFhOTM0M2Y5YTU0Nzcw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94
eS5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiBjbGFzcyBD
b252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVy
UHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2RlciB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZW1v
dGVDb21wdXRlUGFzc0VuY29kZXJQcm94eT4gY3JlYXRlKFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJv
eHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250
ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBp
cGVsaW5lUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZUNvbXB1dGVQaXBlbGluZVByb3h5LmgKaW5kZXggNmI3M2I5ZDYwNGQ1ODEyMmI1
ZTg3Nzc4ZGNmMzk0MGJiZTlkZjQ2MS4uODIzMjBhYWFkYWY1OGNmOThmYThiMGExYjE4NTgzZjU2
MjRmOGZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94
eS5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiBjbGFzcyBD
b252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJv
eHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZSB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZW1vdGVDb21w
dXRlUGlwZWxpbmVQcm94eT4gY3JlYXRlKFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQsIENvbnZl
cnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRp
ZmllciBpZGVudGlmaWVyKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZURldmljZVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVEZXZpY2VQcm94eS5oCmlu
ZGV4IDhlYmUzNWM1ZDkwOWI0ZTU2YTFlY2IyYTI5MzU0NzlkMWVlMjY3N2IuLmE3Nzg0MjBlNDgx
MDc0ZDdhZTJhOWJlZTA5Y2NhOWIzMzlmMjkzZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZURldmljZVByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRGV2aWNl
UHJveHkuaApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogY2xh
c3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90ZURldmljZVByb3h5IGZp
bmFsIDogcHVibGljIFBBTDo6V2ViR1BVOjpEZXZpY2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UmVtb3RlRGV2aWNlUHJveHk+IGNyZWF0
ZShSZWY8UEFMOjpXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVzPiYmIGZlYXR1cmVzLCBSZWY8UEFM
OjpXZWJHUFU6OlN1cHBvcnRlZExpbWl0cz4mJiBsaW1pdHMsIFJlbW90ZUFkYXB0ZXJQcm94eSYg
cGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQs
IFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVFeHRlcm5hbFRleHR1
cmVQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHkuaAppbmRleCBmZTRiOGMzOWM2Zjc2MDYxMjYwOTk1
ZTlmMTJkMTgwMzFjZjVkYzZlLi4zYzQ3OWI5MjQ2M2NlMzEzYzgxOTdiNGJlNjExMDVhOGY0NGY4
NjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4dHVyZVByb3h5LmgK
QEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIGNsYXNzIENvbnZl
cnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBSZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eSBm
aW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlbW90ZUV4dGVybmFs
VGV4dHVyZVByb3h5PiBjcmVhdGUoUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCwgQ29udmVydFRv
QmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVy
IGlkZW50aWZpZXIpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVUHJveHkuY3BwCmluZGV4IDY0
OTIyODM4ZDljNmFlYzNlMWI4YmRlMTM2Mjc3MWY4YWQ1NzI2ZDMuLmFhNjM3OTBiNjQ3YzI1YTBm
YTY3YTZkMWFiM2NjMDkwMDkyZGFhZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFVQcm94eS5jcHAK
QEAgLTI4LDQzICsyOCw5NCBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVk
ZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJSZW1vdGVBZGFwdGVyUHJveHkuaCIKICNpbmNs
dWRlICJSZW1vdGVHUFVNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZUdQVVByb3h5TWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1
ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVU3VwcG9ydGVkRmVhdHVyZXMuaD4KICNpbmNs
dWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVN1cHBvcnRlZExpbWl0cy5oPgogCi1uYW1l
c3BhY2UgV2ViS2l0OjpXZWJHUFUgeworbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0YXRpYyBjb25z
dGV4cHIgc2l6ZV90IGRlZmF1bHRTdHJlYW1TaXplID0gMSA8PCAyMTsKIAotUmVtb3RlR1BVUHJv
eHk6OlJlbW90ZUdQVVByb3h5KEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVj
dGlvbiwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBX
ZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCitSZW1vdGVHUFVQcm94eTo6UmVtb3RlR1BVUHJv
eHkoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBXZWJHUFU6OkNv
bnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRl
bnRpZmllciBpZGVudGlmaWVyLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdC
YWNrZW5kKQogICAgIDogbV9iYWNraW5nKGlkZW50aWZpZXIpCiAgICAgLCBtX2NvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgICwgbV9ncHVQcm9jZXNz
Q29ubmVjdGlvbigmZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCiAgICAgLCBtX3N0cmVhbUNvbm5lY3Rp
b24oZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLCBkZWZhdWx0U3RyZWFtU2l6ZSkK
IHsKKyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5hZGRDbGllbnQoKnRoaXMpOworICAgIG1f
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPm1lc3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6UmVtb3RlR1BVUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRl
bnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZVJlbW90ZUdQVShpZGVudGlmaWVy
LCByZW5kZXJpbmdCYWNrZW5kLCBtX3N0cmVhbUNvbm5lY3Rpb24uc3RyZWFtQnVmZmVyKCkpLCAw
LCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNS
ZXBseSk7CisgICAgLy8gVE9ETzogV2UgbXVzdCB3YWl0IHVudGlsIGluaXRpYWxpemVkLCBiZWNh
dXNlIGF0IHRoZSBtb21lbnQgd2UgY2Fubm90IHJlY2VpdmUgSVBDIG1lc3NhZ2VzCisgICAgLy8g
ZHVyaW5nIHdhaXQgd2hpbGUgaW4gc3luY2hyb25vdXMgc3RyZWFtIHNlbmQuIFNob3VsZCBiZSBm
aXhlZCBhcyBwYXJ0IG9mIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTcyMTEuCisgICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsKIH0KIAogUmVtb3RlR1BVUHJveHk6
On5SZW1vdGVHUFVQcm94eSgpCiB7CiB9CiAKK3ZvaWQgUmVtb3RlR1BVUHJveHk6OmdwdVByb2Nl
c3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit7
CisgICAgQVNTRVJUKG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pOworICAgIEFTU0VSVCgmY29ubmVj
dGlvbiA9PSBtX2dwdVByb2Nlc3NDb25uZWN0aW9uKTsKKyAgICBhYmFuZG9uR1BVUHJvY2Vzcygp
OworfQorCit2b2lkIFJlbW90ZUdQVVByb3h5OjphYmFuZG9uR1BVUHJvY2VzcygpCit7CisgICAg
YXV0byBncHVQcm9jZXNzQ29ubmVjdGlvbiA9IHN0ZDo6ZXhjaGFuZ2UobV9ncHVQcm9jZXNzQ29u
bmVjdGlvbiwgbnVsbHB0cik7CisgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPnJlbW92ZUNsaWVu
dCgqdGhpcyk7CisgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPm1lc3NhZ2VSZWNlaXZlck1hcCgp
LnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlR1BVUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgbV9iYWNraW5nLnRvVUludDY0KCkpOworICAgIG1fZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb24gPSBudWxscHRyOworICAgIG1fbG9zdCA9IHRydWU7Cit9CisKK3ZvaWQgUmVtb3Rl
R1BVUHJveHk6Ondhc0NyZWF0ZWQoYm9vbCBkaWRTdWNjZWVkLCBJUEM6OlNlbWFwaG9yZSYmIHNl
bWFwaG9yZSkKK3sKKyAgICBBU1NFUlQoIW1fZGlkSW5pdGlhbGl6ZSk7CisgICAgbV9zdHJlYW1D
b25uZWN0aW9uLnNldFdha2VVcFNlbWFwaG9yZShXVEZNb3ZlKHNlbWFwaG9yZSkpOworICAgIG1f
ZGlkSW5pdGlhbGl6ZSA9IHRydWU7CisgICAgbV9sb3N0ID0gIWRpZFN1Y2NlZWQ7Cit9CisKK3Zv
aWQgUmVtb3RlR1BVUHJveHk6OndhaXRVbnRpbEluaXRpYWxpemVkKCkKK3sKKyAgICBpZiAobV9k
aWRJbml0aWFsaXplKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGNvbm5lY3Rpb24oKS53YWl0
Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6UmVtb3RlR1BVUHJveHk6Oldhc0Ny
ZWF0ZWQ+KG1fYmFja2luZywgZGVmYXVsdFNlbmRUaW1lb3V0KSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIG1fbG9zdCA9IHRydWU7Cit9CisKIHZvaWQgUmVtb3RlR1BVUHJveHk6OnJlcXVlc3RBZGFw
dGVyKGNvbnN0IFBBTDo6V2ViR1BVOjpSZXF1ZXN0QWRhcHRlck9wdGlvbnMmIG9wdGlvbnMsIFdU
Rjo6RnVuY3Rpb248dm9pZChSZWZQdHI8UEFMOjpXZWJHUFU6OkFkYXB0ZXI+JiYpPiYmIGNhbGxi
YWNrKQogeworICAgIGlmIChtX2xvc3QpIHsKKyAgICAgICAgY2FsbGJhY2sobnVsbHB0cik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBhdXRvIGNvbnZlcnRlZE9wdGlvbnMgPSBtX2Nv
bnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKG9wdGlvbnMpOwogICAgIEFT
U0VSVChjb252ZXJ0ZWRPcHRpb25zKTsKLSAgICBpZiAoIWNvbnZlcnRlZE9wdGlvbnMpCisgICAg
aWYgKCFjb252ZXJ0ZWRPcHRpb25zKSB7CisgICAgICAgIGNhbGxiYWNrKG51bGxwdHIpOwogICAg
ICAgICByZXR1cm47CisgICAgfQogCiAgICAgYXV0byBpZGVudGlmaWVyID0gV2ViR1BVSWRlbnRp
Zmllcjo6Z2VuZXJhdGUoKTsKICAgICBTdHJpbmcgbmFtZTsKLSAgICBTdXBwb3J0ZWRGZWF0dXJl
cyBzdXBwb3J0ZWRGZWF0dXJlczsKLSAgICBTdXBwb3J0ZWRMaW1pdHMgc3VwcG9ydGVkTGltaXRz
OworICAgIFdlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXMgc3VwcG9ydGVkRmVhdHVyZXM7CisgICAg
V2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHMgc3VwcG9ydGVkTGltaXRzOwogICAgIGJvb2wgaXNGYWxs
YmFja0FkYXB0ZXI7CiAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdQVTo6UmVxdWVzdEFkYXB0ZXIoKmNvbnZlcnRlZE9wdGlvbnMsIGlkZW50aWZpZXIpLCB7
IG5hbWUsIHN1cHBvcnRlZEZlYXR1cmVzLCBzdXBwb3J0ZWRMaW1pdHMsIGlzRmFsbGJhY2tBZGFw
dGVyIH0pOwotICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICBpZiAoIXNlbmRSZXN1bHQpIHsKKyAg
ICAgICAgY2FsbGJhY2sobnVsbHB0cik7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBh
dXRvIHJlc3VsdFN1cHBvcnRlZEZlYXR1cmVzID0gUEFMOjpXZWJHUFU6OlN1cHBvcnRlZEZlYXR1
cmVzOjpjcmVhdGUoV1RGTW92ZShzdXBwb3J0ZWRGZWF0dXJlcy5mZWF0dXJlcykpOwogICAgIGF1
dG8gcmVzdWx0U3VwcG9ydGVkTGltaXRzID0gUEFMOjpXZWJHUFU6OlN1cHBvcnRlZExpbWl0czo6
Y3JlYXRlKApAQCAtOTUsOSArMTQ2LDkgQEAgdm9pZCBSZW1vdGVHUFVQcm94eTo6cmVxdWVzdEFk
YXB0ZXIoY29uc3QgUEFMOjpXZWJHUFU6OlJlcXVlc3RBZGFwdGVyT3B0aW9ucyYgb3AKICAgICAg
ICAgc3VwcG9ydGVkTGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBTaXplWiwKICAgICAgICAgc3Vw
cG9ydGVkTGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBzUGVyRGltZW5zaW9uCiAgICAgKTsKLSAg
ICBjYWxsYmFjayhSZW1vdGVBZGFwdGVyUHJveHk6OmNyZWF0ZShXVEZNb3ZlKG5hbWUpLCBXVEZN
b3ZlKHJlc3VsdFN1cHBvcnRlZEZlYXR1cmVzKSwgV1RGTW92ZShyZXN1bHRTdXBwb3J0ZWRMaW1p
dHMpLCBpc0ZhbGxiYWNrQWRhcHRlciwgKnRoaXMsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQs
IGlkZW50aWZpZXIpKTsKKyAgICBjYWxsYmFjayhXZWJHUFU6OlJlbW90ZUFkYXB0ZXJQcm94eTo6
Y3JlYXRlKFdURk1vdmUobmFtZSksIFdURk1vdmUocmVzdWx0U3VwcG9ydGVkRmVhdHVyZXMpLCBX
VEZNb3ZlKHJlc3VsdFN1cHBvcnRlZExpbWl0cyksIGlzRmFsbGJhY2tBZGFwdGVyLCAqdGhpcywg
bV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgaWRlbnRpZmllcikpOwogfQogCi19IC8vIG5hbWVz
cGFjZSBXZWJLaXQ6OldlYkdQVQorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBF
TkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFVQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVUHJveHkuaAppbmRleCAwZmZlYTM4
Y2Y4YzZmYmE3ODhhYTkwZWNiYWJkYTNmMjA1NjA0ODkwLi5iMDA2ODQzODEyMjM1MzNlMzdjZDZh
OWNiZTBlZTUyYmE3MzIxNWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5LmgKQEAgLTI3LDYg
KzI3LDggQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIkdQVVByb2Nl
c3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJTdHJlYW1DbGllbnRDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViR1BVSWRl
bnRpZmllci5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVLmg+CkBAIC0z
NiwxNSArMzgsMTkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBHUFVQcm9jZXNzQ29ubmVj
dGlvbjsKIH0KIAotbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKK25hbWVzcGFjZSBXZWJLaXQg
ewogCituYW1lc3BhY2UgV2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Owor
Y2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKK30KIAotY2xhc3MgUmVtb3Rl
R1BVUHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OkdQVSB7CitjbGFzcyBSZW1vdGVH
UFVQcm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6R1BVLCBwcml2YXRlIElQQzo6TWVz
c2FnZVJlY2VpdmVyLCBwcml2YXRlIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpDbGllbnQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3Rl
R1BVUHJveHk+IGNyZWF0ZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rp
b24sIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2Vi
R1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlR1BVUHJveHk+
IGNyZWF0ZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIFdlYkdQ
VTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJH
UFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRl
cmluZ0JhY2tlbmQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVH
UFVQcm94eShncHVQcm9jZXNzQ29ubmVjdGlvbiwgY29udmVydFRvQmFja2luZ0NvbnRleHQsIGlk
ZW50aWZpZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlR1BVUHJveHko
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBpZGVudGlmaWVy
LCByZW5kZXJpbmdCYWNrZW5kKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlR1BVUHJv
eHkoKTsKQEAgLTU0LDE1ICs2MCwyNiBAQCBwdWJsaWM6CiAgICAgSVBDOjpTdHJlYW1DbGllbnRD
b25uZWN0aW9uJiBzdHJlYW1DbGllbnRDb25uZWN0aW9uKCkgeyByZXR1cm4gbV9zdHJlYW1Db25u
ZWN0aW9uOyB9CiAKIHByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIERvd25jYXN0Q29udmVydFRv
QmFja2luZ0NvbnRleHQ7CisgICAgZnJpZW5kIGNsYXNzIFdlYkdQVTo6RG93bmNhc3RDb252ZXJ0
VG9CYWNraW5nQ29udGV4dDsKIAotICAgIFJlbW90ZUdQVVByb3h5KEdQVVByb2Nlc3NDb25uZWN0
aW9uJiwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmLCBXZWJHUFVJZGVudGlmaWVyKTsKKyAgICBS
ZW1vdGVHUFVQcm94eShHUFVQcm9jZXNzQ29ubmVjdGlvbiYsIFdlYkdQVTo6Q29udmVydFRvQmFj
a2luZ0NvbnRleHQmLCBXZWJHUFVJZGVudGlmaWVyLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
cik7CiAKICAgICBSZW1vdGVHUFVQcm94eShjb25zdCBSZW1vdGVHUFVQcm94eSYpID0gZGVsZXRl
OwogICAgIFJlbW90ZUdQVVByb3h5KFJlbW90ZUdQVVByb3h5JiYpID0gZGVsZXRlOwogICAgIFJl
bW90ZUdQVVByb3h5JiBvcGVyYXRvcj0oY29uc3QgUmVtb3RlR1BVUHJveHkmKSA9IGRlbGV0ZTsK
ICAgICBSZW1vdGVHUFVQcm94eSYgb3BlcmF0b3I9KFJlbW90ZUdQVVByb3h5JiYpID0gZGVsZXRl
OwogCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCisgICAgLy8gR1BV
UHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVudAorICAgIHZvaWQgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb25E
aWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZXMg
dG8gYmUgcmVjZWl2ZWQuCisgICAgdm9pZCB3YXNDcmVhdGVkKGJvb2wgZGlkU3VjY2VlZCwgSVBD
OjpTZW1hcGhvcmUmJik7CisKKyAgICB2b2lkIHdhaXRVbnRpbEluaXRpYWxpemVkKCk7CisKICAg
ICBXZWJHUFVJZGVudGlmaWVyIGJhY2tpbmcoKSBjb25zdCB7IHJldHVybiBtX2JhY2tpbmc7IH0K
ICAgICAKICAgICBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBTZWNvbmRzIGRlZmF1bHRTZW5kVGlt
ZW91dCA9IDMwX3M7CkBAIC03NiwxNiArOTMsMjIgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAg
IHJldHVybiByb290KCkuc3RyZWFtQ2xpZW50Q29ubmVjdGlvbigpLnNlbmRTeW5jKFdURk1vdmUo
bWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBiYWNraW5nKCksIGRlZmF1bHRTZW5kVGltZW91dCk7
CiAgICAgfQorICAgIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKTsgfQogCiAgICAgdm9pZCByZXF1
ZXN0QWRhcHRlcihjb25zdCBQQUw6OldlYkdQVTo6UmVxdWVzdEFkYXB0ZXJPcHRpb25zJiwgV1RG
OjpGdW5jdGlvbjx2b2lkKFJlZlB0cjxQQUw6OldlYkdQVTo6QWRhcHRlcj4mJik+JiYpIGZpbmFs
OwogCisgICAgdm9pZCBhYmFuZG9uR1BVUHJvY2VzcygpOworCiAgICAgRGVxdWU8V1RGOjpGdW5j
dGlvbjx2b2lkKFJlZlB0cjxQQUw6OldlYkdQVTo6QWRhcHRlcj4mJik+PiBtX2NhbGxiYWNrczsK
IAogICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5nOwotICAgIFJlZjxDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dD4gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKKyAgICBSZWY8V2ViR1BVOjpD
b252ZXJ0VG9CYWNraW5nQ29udGV4dD4gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKKyAgICBH
UFVQcm9jZXNzQ29ubmVjdGlvbiogbV9ncHVQcm9jZXNzQ29ubmVjdGlvbjsKKyAgICBib29sIG1f
ZGlkSW5pdGlhbGl6ZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2xvc3QgeyBmYWxzZSB9OwogICAg
IElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbiBtX3N0cmVhbUNvbm5lY3Rpb247CiB9OwogCi19
IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNl
bmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFVQcm94eS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVVBy
b3h5Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwMzVlOTU1ZTA2ZjdmZTFmNmYyOGNiY2QyY2E5
ZjQ1MThhYjhiYjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFVQcm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsx
LDI5IEBACisjIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisj
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCisKK21lc3NhZ2VzIC0+IFJlbW90ZUdQVVByb3h5IE5vdFJlZkNvdW50
ZWQgeworICAgIHZvaWQgV2FzQ3JlYXRlZChib29sIGRpZFN1Y2NlZWQsIElQQzo6U2VtYXBob3Jl
IHN0cmVhbVdha2VVcFNlbWFwaG9yZSkKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVQaXBlbGluZUxheW91
dFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVQaXBlbGluZUxheW91dFByb3h5LmgKaW5kZXggMGM5ZDM0N2U4MWI2Mjg2YzNkNzc0YWNi
YjM2M2UyMTc3MWJiYmJlNC4uYzQ5YTFmYzBmNTcwMTdjOGE4ZWZjYjRiODc3ZDYzYzNhN2FhYzZl
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHkuaApAQCAt
MzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRv
QmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHkgZmluYWwg
OiBwdWJsaWMgUEFMOjpXZWJHUFU6OlBpcGVsaW5lTGF5b3V0IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlbW90ZVBpcGVsaW5lTGF5b3V0
UHJveHk+IGNyZWF0ZShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5n
Q29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRp
ZmllcikKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVRdWVyeVNldFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWVyeVNldFByb3h5LmgKaW5kZXggZDhj
NmNhNzE2YWYzOTE3MTllZmRjZmVlMGM0MDdlNjNiOWU4ZTRkMy4uNjZiNDM3MTAyOGI4ZDczZjlj
MzI4ZGU3NTRkODE1NzUzMDc2ZWNkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVlcnlTZXRQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0UHJv
eHkuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogY2xhc3Mg
Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90ZVF1ZXJ5U2V0UHJveHkgZmlu
YWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OlF1ZXJ5U2V0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlbW90ZVF1ZXJ5U2V0UHJveHk+IGNy
ZWF0ZShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYg
Y29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVRdWV1ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVRdWV1ZVByb3h5LmgKaW5kZXggZDgyMzI0ZGUxNTIwY2E0Y2Uy
MTRhNWRiYzc3NjdjNjUxMTE5YThlYS4uY2M5N2U1ZGNiMmQyMjViNjI3ZThiYTBiY2JkMTBmZjRk
Y2EwZWRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlUXVldWVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXVlUHJveHkuaApAQCAtMzcsNiArMzcsNyBA
QCBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRl
eHQ7CiAKIGNsYXNzIFJlbW90ZVF1ZXVlUHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6
OlF1ZXVlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmPFJlbW90ZVF1ZXVlUHJveHk+IGNyZWF0ZShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50
LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQ
VUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVy
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eS5oCmluZGV4IDEwMDQ1YWUyZWJmMjllNDFlZThk
ZWViOTI0ODRhZDE0MTM4N2ExMjMuLjRlNThhY2Y1ZDIyMTE0N2UxMGE2MmIyZTA3YjcwNTA0MmM3
YTYwODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZUVuY29k
ZXJQcm94eS5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiBj
bGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUmVtb3RlUmVuZGVyQnVuZGxl
RW5jb2RlclByb3h5IGZpbmFsIDogcHVibGljIFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNv
ZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UmVmPFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eT4gY3JlYXRlKFJlbW90ZURldmljZVBy
b3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1
bmRsZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVSZW5kZXJCdW5kbGVQcm94eS5oCmluZGV4IDdjMGRjNWVlOWY0ZmQyZDU0YzE3YzFk
MjU3MTAwNzdlZWJhZGJkMTcuLjI5MDdhOWYxMzljZWFkMDZhNDYxMzFlYTMxZWE5OTJkMzE5MjQy
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZVJlbmRlckJ1bmRsZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlUHJveHkuaApAQCAtMzYs
NiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFj
a2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90ZVJlbmRlckJ1bmRsZVByb3h5IGZpbmFsIDogcHVi
bGljIFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyQnVuZGxlUHJveHk+IGNy
ZWF0ZShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYg
Y29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5LmgK
aW5kZXggNzQyNzlkMTk2YTc0ODczNTg4NzMwY2UxOGQxMWUxZWVmZjdlMmZmZS4uN2YyZWQzMGIy
NTNhMTBhZTVmY2I5YjFhODgyY2UwNDlhMDQ0Njc1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHkuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3Bh
Y2UgV2ViS2l0OjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNs
YXNzIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJH
UFU6OlJlbmRlclBhc3NFbmNvZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk+IGNyZWF0
ZShSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250
ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZVJlbmRlclBpcGVsaW5lUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBpcGVsaW5lUHJveHkuaApp
bmRleCAwM2NkNGNjNjk0ZjVmOWRhM2FiMjAzZTA2N2I3MDZmMDFmNDEyMDlhLi5iYzc3ZjlmNWYx
ZWMzOTBhMTZlZWYxMzQxOWY2MTBjNzkwNWEwZjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlUmVuZGVyUGlwZWxpbmVQcm94eS5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJL
aXQ6OldlYkdQVSB7CiBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUmVt
b3RlUmVuZGVyUGlwZWxpbmVQcm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6UmVuZGVy
UGlwZWxpbmUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0
YXRpYyBSZWY8UmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eT4gY3JlYXRlKFJlbW90ZURldmljZVBy
b3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNhbXBsZXJQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlU2FtcGxlclByb3h5LmgKaW5kZXggMWI3MWMwMTgzYTlhYzI5ZTk5ZjkxZDAyZWUwYTlkNjUx
Y2M3MTkyZi4uZjExYzYzMDgzYThkNTI3Mjc0MzE3YzNhZTBmOTFmNWVlZjNhMTU1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
U2FtcGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlU2FtcGxlclByb3h5LmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNl
IFdlYktpdDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFz
cyBSZW1vdGVTYW1wbGVyUHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OlNhbXBsZXIg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8
UmVtb3RlU2FtcGxlclByb3h5PiBjcmVhdGUoUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCwgQ29u
dmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2hhZGVyTW9kdWxlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNoYWRlck1v
ZHVsZVByb3h5LmgKaW5kZXggZjYxYWQ5NTRiY2UzNzFjYWE5YzAyY2U5ZWZiNzgzMTM2MTEwZmNh
MC4uNjNlZjY5ZDE4MWY5ZTVkNzcxNDhiOTE5OWE4MDE1MGU1OTA4Njc4MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2hhZGVy
TW9kdWxlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGVQcm94eS5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQ6OldlYkdQVSB7CiBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAog
Y2xhc3MgUmVtb3RlU2hhZGVyTW9kdWxlUHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6
OlNoYWRlck1vZHVsZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlZjxSZW1vdGVTaGFkZXJNb2R1bGVQcm94eT4gY3JlYXRlKFJlbW90ZURldmlj
ZVByb3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5n
Q29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1
cmVQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlVGV4dHVyZVByb3h5LmgKaW5kZXggOTQ3ZmViMmE5ZTZmNjNkMTE0NjA0ZTc1MGZmMmY4
YjVkM2JiZTA3ZC4uOTE2MTM0NGUzMDc1ODk3NjYxYjQ5ZjQ5ZmM1ZmRhYmQ4NjJmMmQyMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlVGV4dHVyZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVByb3h5LmgKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNw
YWNlIFdlYktpdDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBj
bGFzcyBSZW1vdGVUZXh0dXJlUHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OlRleHR1
cmUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8UmVtb3RlVGV4dHVyZVByb3h5PiBjcmVhdGUoUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCwg
Q29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVZpZXdQcm94eS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVy
ZVZpZXdQcm94eS5oCmluZGV4IDU3YzFjOThkNWM1ZmQ4NjE2ZDMxNDJmM2QyN2VkNmJhNDI0NTY3
NmQuLmViYWQ0YTU1NmUxMmRiOTAxMmVjZTZiNGQ2NjFkMGNmNDEzMmIzMzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1
cmVWaWV3UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVUZXh0dXJlVmlld1Byb3h5LmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNw
YWNlIFdlYktpdDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBj
bGFzcyBSZW1vdGVUZXh0dXJlVmlld1Byb3h5IGZpbmFsIDogcHVibGljIFBBTDo6V2ViR1BVOjpU
ZXh0dXJlVmlldyB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFJlZjxSZW1vdGVUZXh0dXJlVmlld1Byb3h5PiBjcmVhdGUoUmVtb3RlVGV4dHVyZVBy
b3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVURvd25jYXN0
Q29udmVydFRvQmFja2luZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvV2ViR1BVL1dlYkdQVURvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQuaApp
bmRleCA0NDcxZDBlZjA3NDhiNjQ1ZWViZDRlOTUwZjVjZjUwMDA1MzY2OTVkLi4xNDMzYWNlNzFl
MDJiNjU5NDBhNjg4MjMwMDVlZDNhNGE5M2I1MTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVEb3duY2FzdENvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9XZWJHUFUvV2ViR1BVRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oCkBAIC0zMiw3
ICszMiwxMyBAQAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAogY2xhc3MgRG93bmNhc3RD
b252ZXJ0VG9CYWNraW5nQ29udGV4dCBmaW5hbCA6IHB1YmxpYyBDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CisgICAgc3RhdGlj
IFJlZjxEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0PiBjcmVhdGUoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4
dCgpKTsKKyAgICB9CisKICAgICB2aXJ0dWFsIH5Eb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250
ZXh0KCkgPSBkZWZhdWx0OwogCiAgICAgV2ViR1BVSWRlbnRpZmllciBjb252ZXJ0VG9CYWNraW5n
KGNvbnN0IFBBTDo6V2ViR1BVOjpBZGFwdGVyJikgZmluYWw7CkBAIC01Nyw2ICs2Myw5IEBAIHB1
YmxpYzoKICAgICBXZWJHUFVJZGVudGlmaWVyIGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpX
ZWJHUFU6OlNoYWRlck1vZHVsZSYpIGZpbmFsOwogICAgIFdlYkdQVUlkZW50aWZpZXIgY29udmVy
dFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6VGV4dHVyZSYpIGZpbmFsOwogICAgIFdlYkdQ
VUlkZW50aWZpZXIgY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6VGV4dHVyZVZp
ZXcmKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250
ZXh0KCkgPSBkZWZhdWx0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5jcHAKaW5kZXggNDM2YTVhNTIwMzVhMDY1NzU4OWMwZTkwYjA4NDJjNDMz
NjU4MWUzZC4uYWM5ZjRhZDgyMTE1NzRkYjRjMDE2NGU5YWJmNTdhYTQzNDI2MzcyZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJQYWdlQmFubmVyLmgiCiAjaW5jbHVkZSAiUGx1
Z2luVmlldy5oIgorI2luY2x1ZGUgIlJlbW90ZUdQVVByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyQ29weS5oIgog
I2luY2x1ZGUgIlVzZXJEYXRhLmgiCkBAIC01MCw2ICs1MSw3IEBACiAjaW5jbHVkZSAiV2ViRnJh
bWUuaCIKICNpbmNsdWRlICJXZWJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIldlYkZ1
bGxTY3JlZW5NYW5hZ2VyLmgiCisjaW5jbHVkZSAiV2ViR1BVRG93bmNhc3RDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIldlYkhpdFRlc3RSZXN1bHREYXRhLmgiCiAjaW5jbHVk
ZSAiV2ViSW1hZ2UuaCIKICNpbmNsdWRlICJXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oIgpA
QCAtOTAsNiArOTIsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dElu
ZGljYXRvci5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVJbXBs
Lmg+CiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZX0FNU19VSSkKICNpbmNsdWRlIDxXZWJDb3JlL0Fw
cGxlUGF5QU1TVUlSZXF1ZXN0Lmg+CkBAIC05NDgsNiArOTUxLDE1IEBAIFJlZlB0cjxHcmFwaGlj
c0NvbnRleHRHTD4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25z
dCBHcmFwaGljCiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCiAKK1JlZlB0cjxQQUw6
OldlYkdQVTo6R1BVPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUdQVUZvcldlYkdQVSgpIGNvbnN0
Cit7CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIHJldHVybiBSZW1vdGVHUFVQcm94eTo6
Y3JlYXRlKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9u
KCksIFdlYkdQVTo6RG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y3JlYXRlKCksIFdl
YkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCksIG1fcGFnZS5lbnN1cmVSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkoKS5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKTsKKyNlbHNlCisgICAgcmV0dXJu
IFBBTDo6V2ViR1BVOjpHUFVJbXBsOjpjcmVhdGUoKTsKKyNlbmRpZgorfQorCiB2b2lkIFdlYkNo
cm9tZUNsaWVudDo6YXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUmLCBHcmFwaGljc0xheWVy
KiBsYXllcikKIHsKICAgICBpZiAobGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggMmZlMzI5
MDM0MzQ3Y2VkMjhmODEwNTdkYTNmZWMyMzMwN2FlNzA4NC4uOWFlY2M0YzI3Mzk2MjQ1YWU5MjIw
MmYwZDQ1OTM0NzMxNzY2ZmU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMjUyLDYgKzI1Miw3
IEBAIHByaXZhdGU6CiAjZW5kaWYKICNlbmRpZgogCisgICAgUmVmUHRyPFBBTDo6V2ViR1BVOjpH
UFU+IGNyZWF0ZUdQVUZvcldlYkdQVSgpIGNvbnN0IGZpbmFsOwogCiAgICAgQ29tcG9zaXRpbmdU
cmlnZ2VyRmxhZ3MgYWxsb3dlZENvbXBvc2l0aW5nVHJpZ2dlcnMoKSBjb25zdCBmaW5hbAogICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NvbmZpZ3VyYXRpb25zL1dl
YktpdExlZ2FjeS54Y2NvbmZpZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NvbmZpZ3VyYXRp
b25zL1dlYktpdExlZ2FjeS54Y2NvbmZpZwppbmRleCBmYjU1ZGE3NzZlMGY4MjI2ZGE5ZmMzMjY2
MjMwOWI0NjczNTdhYzk3Li5mNzg0OTY2NTFkMGViOTNiYzBkM2UzZTNlYTVmOTc5ODdlNGY3MDQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Db25maWd1cmF0aW9ucy9XZWJL
aXRMZWdhY3kueGNjb25maWcKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ29uZmlndXJh
dGlvbnMvV2ViS2l0TGVnYWN5LnhjY29uZmlnCkBAIC01OCw3ICs1OCw3IEBAIEdDQ19QUkVQUk9D
RVNTT1JfREVGSU5JVElPTlMgPSAkKERFQlVHX0RFRklORVMpIEJVSUxESU5HX1dFQktJVCBGUkFN
RVdPUktfTkFNRT1XCiBXRUJLSVRBRERJVElPTlNfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5jbHVkZS9XZWJLaXRBZGRpdGlvbnMgJChTREtS
T09UKS91c3IvbG9jYWwvaW5jbHVkZS9XZWJLaXRBZGRpdGlvbnM7CiBMSUJXRUJSVENfSEVBREVS
X1NFQVJDSF9QQVRIUyA9ICQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5jbHVkZS93
ZWJydGMgJChTREtST09UKS91c3IvbG9jYWwvaW5jbHVkZS93ZWJydGM7CiAKLUhFQURFUl9TRUFS
Q0hfUEFUSFMgPSAiJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0ZvcndhcmRpbmdIZWFk
ZXJzIiAiJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdExlZ2FjeSIg
IiQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5jbHVkZSIgJChXRUJLSVRBRERJVElP
TlNfSEVBREVSX1NFQVJDSF9QQVRIUykgJChMSUJXRUJSVENfSEVBREVSX1NFQVJDSF9QQVRIUykg
JChIRUFERVJfU0VBUkNIX1BBVEhTKSAkKFNSQ1JPT1QpOworSEVBREVSX1NFQVJDSF9QQVRIUyA9
ICIkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvRm9yd2FyZGluZ0hlYWRlcnMiICIkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0TGVnYWN5IiAiJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRlIiAiJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vz
ci9sb2NhbC9pbmNsdWRlL3BhbC9ncmFwaGljcy9XZWJHUFUiICQoV0VCS0lUQURESVRJT05TX0hF
QURFUl9TRUFSQ0hfUEFUSFMpICQoTElCV0VCUlRDX0hFQURFUl9TRUFSQ0hfUEFUSFMpICQoSEVB
REVSX1NFQVJDSF9QQVRIUykgJChTUkNST09UKTsKIElORk9QTElTVF9GSUxFID0gbWFjL0luZm8u
cGxpc3Q7CiBJTlNUQUxMX1BBVEggPSAkKElOU1RBTExfUEFUSF9DT0NPQV9UT1VDSF8kKFdLX0lT
X0NPQ09BX1RPVUNIKSk7CiBJTlNUQUxMX1BBVEhfQ09DT0FfVE9VQ0hfWUVTID0gJChXS19BTFRF
Uk5BVEVfV0VCS0lUX1NES19QQVRIKSQoU1lTVEVNX0xJQlJBUllfRElSKS9Qcml2YXRlRnJhbWV3
b3JrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggYTM2NWQ4ZDg2NGEyMDY5ZTRmYTgyMjFmYTg4Mzky
NDYzYmUwNjY2OS4uNDQ5MTMwNjQ0NzRkMTNjMmI5MzliYjg0MGExNDlmYzY3NTJhZjljNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmgKQEAgLTI1NSw2ICsyNTUsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hh
bmdlVW5pdmVyc2FsQWNjZXNzWm9vbUZvY3VzKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JikgZmluYWw7CiAjZW5kaWYKIAorICAgIFJlZlB0cjxQQUw6Oldl
YkdQVTo6R1BVPiBjcmVhdGVHUFVGb3JXZWJHUFUoKSBjb25zdCBmaW5hbDsKKwogI2lmIEVOQUJM
RShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKICAgICBib29sIG1fbW9ja1ZpZGVvUHJlc2VudGF0
aW9uTW9kZUVuYWJsZWQgeyBmYWxzZSB9OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KaW5kZXgg
YTE3NTFiMDI5ODRmNzdlN2E3YzZkNTViNTk0ZmZiODgwMDA5OGZhZi4uYTQxMTZmN2IwMjdjYzJk
YzkxNjI1ODFkNTI4MGY1Y2YyMzcwZDZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQpAQCAtODcsNiAr
ODcsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9Vbml2ZXJzYWxBY2Nlc3Nab29tLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1dpZGdldC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XaW5kb3dGZWF0dXJlcy5oPgor
I2ltcG9ydCA8cGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUltcGwuaD4KICNpbXBvcnQg
PHBhbC9zcGkvbWFjL05TVmlld1NQSS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlv
bnMuaD4KICNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KQEAgLTExNTMsMyArMTE1NCw4IEBAIHZvaWQg
V2ViQ2hyb21lQ2xpZW50OjpjaGFuZ2VVbml2ZXJzYWxBY2Nlc3Nab29tRm9jdXMoY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgdmllCiAgICAgV2ViQ29yZTo6Y2hhbmdlVW5pdmVyc2FsQWNjZXNzWm9v
bUZvY3VzKHZpZXdSZWN0LCBzZWxlY3Rpb25SZWN0KTsKIH0KICNlbmRpZgorCitSZWZQdHI8UEFM
OjpXZWJHUFU6OkdQVT4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVHUFVGb3JXZWJHUFUoKSBjb25z
dAoreworICAgIHJldHVybiBQQUw6OldlYkdQVTo6R1BVSW1wbDo6Y3JlYXRlKCk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445232</attachid>
            <date>2021-11-27 21:22:18 -0800</date>
            <delta_ts>2021-11-27 23:14:27 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-233534-20211127212216.patch</filename>
            <type>text/plain</type>
            <size>297478</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGVhYjNiMjBkYTVmNDFhMjYwMTM4NDhj
OTViMmViNTZmMzFjZDE3ODEuLmY1Mjg2YjVmZTEzZGYzMjhhY2YxMTRkYmM1NzIzYzgxNmJkZDBk
MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMTEtMjcgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViR1BVXSBIb29rIHVwIGZpcnN0IEFQ
SSBmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMzNTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzLnlhbWw6CisKIDIwMjEtMTEt
MTkgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW01vZGVs
XSBhZGQgYXVkaW8gc3VwcG9ydApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDE4MGZkNzlmYWRhYzNlZmU1MDNmMzNm
NTY2MWMzN2U4OGFmNGJiMjQuLmFhZmJkNTU3Y2E5ZWVlMzM1MzA1NjE5OTIxNjczMmEyNjdhYjJh
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAyMS0xMS0yNyAgTXlsZXMgQy4gTWF4
ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJHUFVdIEhvb2sgdXAg
Zmlyc3QgQVBJIGZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzM1MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNjb25maWc6CisgICAgICAgICog
TW9kdWxlcy9XZWJHUFUvR1BVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdQVTo6c2V0QmFja2lu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpHUFU6OnJlcXVlc3RBZGFwdGVyKToKKyAgICAgICAgKiBN
b2R1bGVzL1dlYkdQVS9HUFUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdQVTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdQVTo6YmFja2luZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHUFU6OmJhY2tpbmcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R1BVOjpH
UFUpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNocm9tZTo6Y3JlYXRlR1BVRm9yV2ViR1BVIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0No
cm9tZS5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpDaHJvbWVDbGllbnQ6OmNyZWF0ZUdQVUZvcldlYkdQVSBjb25zdCk6CisgICAgICAgICogcGFn
ZS9OYXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpncHUpOgorICAg
ICAgICAqIHBhZ2UvTmF2aWdhdG9yLmg6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3JCYXNlLmg6
CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JCYXNlOjpncHUpOiBEZWxldGVkLgorICAgICAg
ICAqIHBhZ2UvV29ya2VyTmF2aWdhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck5h
dmlnYXRvcjo6Z3B1KToKKyAgICAgICAgKiBwYWdlL1dvcmtlck5hdmlnYXRvci5oOgorCiAyMDIx
LTExLTI2ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFtH
UFUgUHJvY2Vzc10gTWFrZSBGaWx0ZXJFZmZlY3RzIGNyZWF0ZSBGaWx0ZXJFZmZlY3RBcHBsaWVy
cyB3aGljaCB3aWxsIGJlIHVzZWQgYnkgRmlsdGVyRWZmZWN0OjphcHBseSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5n
ZUxvZwppbmRleCA1ZDZkNjc3MDI5ZGMyMDZjZDFlNGFkMDBlNjAzMWM5ODAyYjVkMjY5Li5kYmMx
YTUyNjViNjgxMmY4NDA2ZGMyOWMzOWVmMzNiNmY3ZmU3OGU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw2MSBAQAorMjAyMS0xMS0yNyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4Zmll
bGRAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJHUFVdIEhvb2sgdXAgZmlyc3QgQVBJIGZ1bmN0
aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM1
MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBB
TC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJH
UFUvSW1wbC9XZWJHUFVBZGFwdGVySW1wbC5jcHA6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dl
YkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dl
YkdQVS9JbXBsL1dlYkdQVUJpbmRHcm91cEltcGwuY3BwOgorICAgICAgICAqIHBhbC9ncmFwaGlj
cy9XZWJHUFUvSW1wbC9XZWJHUFVCaW5kR3JvdXBJbXBsLmg6CisgICAgICAgICogcGFsL2dyYXBo
aWNzL1dlYkdQVS9JbXBsL1dlYkdQVUJpbmRHcm91cExheW91dEltcGwuY3BwOgorICAgICAgICAq
IHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCaW5kR3JvdXBMYXlvdXRJbXBsLmg6Cisg
ICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUJ1ZmZlckltcGwuY3BwOgor
ICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCdWZmZXJJbXBsLmg6Cisg
ICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbW1hbmRCdWZmZXJJbXBs
LmNwcDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tbWFuZEJ1
ZmZlckltcGwuaDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29t
bWFuZEVuY29kZXJJbXBsLmNwcDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVQ29tbWFuZEVuY29kZXJJbXBsLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQ
VS9JbXBsL1dlYkdQVUNvbXB1dGVQYXNzRW5jb2RlckltcGwuY3BwOgorICAgICAgICAqIHBhbC9n
cmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXJJbXBsLmg6CisgICAg
ICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbXB1dGVQaXBlbGluZUltcGwu
Y3BwOgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb21wdXRlUGlw
ZWxpbmVJbXBsLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNv
bnZlcnRUb0JhY2tpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaDoKKyAgICAgICAgKiBwYWwvZ3Jh
cGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNlSW1wbC5jcHA6CisgICAgICAgICogcGFsL2dy
YXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVURldmljZUltcGwuaDoKKyAgICAgICAgKiBwYWwvZ3Jh
cGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5j
cHA6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVURvd25jYXN0Q29u
dmVydFRvQmFja2luZ0NvbnRleHQuaDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0lt
cGwvV2ViR1BVRXh0ZXJuYWxUZXh0dXJlSW1wbC5jcHA6CisgICAgICAgICogcGFsL2dyYXBoaWNz
L1dlYkdQVS9JbXBsL1dlYkdQVUV4dGVybmFsVGV4dHVyZUltcGwuaDoKKyAgICAgICAgKiBwYWwv
Z3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVSW1wbC5jcHA6CisgICAgICAgIChQQUw6OldlYkdQ
VTo6R1BVSW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVSW1wbC5oOgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVQ
aXBlbGluZUxheW91dEltcGwuY3BwOgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1w
bC9XZWJHUFVQaXBlbGluZUxheW91dEltcGwuaDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2Vi
R1BVL0ltcGwvV2ViR1BVUXVlcnlTZXRJbXBsLmNwcDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3Mv
V2ViR1BVL0ltcGwvV2ViR1BVUXVlcnlTZXRJbXBsLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNz
L1dlYkdQVS9JbXBsL1dlYkdQVVF1ZXVlSW1wbC5jcHA6CisgICAgICAgICogcGFsL2dyYXBoaWNz
L1dlYkdQVS9JbXBsL1dlYkdQVVF1ZXVlSW1wbC5oOgorICAgICAgICAqIHBhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJCdW5kbGVFbmNvZGVySW1wbC5jcHA6CisgICAgICAgICog
cGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlckJ1bmRsZUVuY29kZXJJbXBsLmg6
CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlckJ1bmRsZUlt
cGwuY3BwOgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJC
dW5kbGVJbXBsLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJl
bmRlclBhc3NFbmNvZGVySW1wbC5jcHA6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9J
bXBsL1dlYkdQVVJlbmRlclBhc3NFbmNvZGVySW1wbC5oOgorICAgICAgICAqIHBhbC9ncmFwaGlj
cy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJQaXBlbGluZUltcGwuY3BwOgorICAgICAgICAqIHBh
bC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJQaXBlbGluZUltcGwuaDoKKyAgICAg
ICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVU2FtcGxlckltcGwuY3BwOgorICAg
ICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVTYW1wbGVySW1wbC5oOgorICAg
ICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVTaGFkZXJNb2R1bGVJbXBsLmNw
cDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVU2hhZGVyTW9kdWxl
SW1wbC5oOgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVUZXh0dXJl
SW1wbC5jcHA6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVRleHR1
cmVJbXBsLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVRleHR1
cmVWaWV3SW1wbC5jcHA6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQ
VVRleHR1cmVWaWV3SW1wbC5oOgorCiAyMDIxLTExLTI1ICBLaW1tbyBLaW5udW5lbiAgPGtraW5u
dW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgQU5HTEUgTWV0YWw6IFRoZSBtZW1vcnkgYmFja2lu
ZyBJT1N1cmZhY2VzIG9mIGZvcm1lciBjbGllbnQgYnVmZmVyIHBidWZmZXJzIGlzIGxlYWtlZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCBhZDhlNjg4MGYwNTU5ODE2YTQ3MGQ3NTUwNWIxODllZjE5MmE2ODU0Li5kOGVk
ZjY5YjRkMTY5Y2I4MzgzZWE2ZjhhNWI5N2EwNjUxZWVjMjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDkwIEBACisyMDIxLTExLTI3ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5j
b20+CisKKyAgICAgICAgW1dlYkdQVV0gSG9vayB1cCBmaXJzdCBBUEkgZnVuY3Rpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzUzNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogQ29uZmlndXJhdGlvbnMvQmFzZVRhcmdldC54Y2NvbmZpZzoKKyAgICAg
ICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6
CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVtb3RlR1BV
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46
CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQWRhcHRlci5oOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cC5oOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExheW91
dC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZlci5o
OgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRCdWZm
ZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5k
RW5jb2Rlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNv
bXB1dGVQYXNzRW5jb2Rlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZUNvbXB1dGVQaXBlbGluZS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZURldmljZS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZUV4dGVybmFsVGV4dHVyZS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZUdQVS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdQVTo6UmVt
b3RlR1BVKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR1BVOjp+UmVtb3RlR1BVKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR1BVOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR1BVOjpzdG9wTGlzdGVuaW5nRm9ySVBDKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR1BV
Ojp3b3JrUXVldWVJbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR1BVOjp3b3Jr
UXVldWVVbmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHUFU6OnJlcXVlc3RB
ZGFwdGVyKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUu
aDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVQaXBlbGluZUxh
eW91dC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5
U2V0Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVldWUu
aDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5k
bGUuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJC
dW5kbGVFbmNvZGVyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlUmVuZGVyUGFzc0VuY29kZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZVNhbXBsZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGUuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlVGV4dHVyZVZpZXcuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9XZWJHUFVPYmplY3RIZWFwLmg6CisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUFkYXB0ZXJQcm94eS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBMYXlvdXRQ
cm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVC
aW5kR3JvdXBQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVCdWZmZXJQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVDb21tYW5kQnVmZmVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFzc0VuY29k
ZXJQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVDb21wdXRlUGlwZWxpbmVQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVEZXZpY2VQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFVQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdQVVByb3h5OjpSZW1vdGVHUFVQcm94eSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdQVVByb3h5OjpncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR1BVUHJveHk6OmFiYW5kb25HUFVQcm9jZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR1BVUHJveHk6Ondhc0NyZWF0ZWQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHUFVQcm94eTo6d2FpdFVudGlsSW5pdGlhbGl6ZWQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHUFVQcm94eTo6cmVxdWVzdEFkYXB0ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJH
UFU6OlJlbW90ZUdQVVByb3h5OjpSZW1vdGVHUFVQcm94eSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYkdQVTo6UmVtb3RlR1BVUHJveHk6On5SZW1vdGVHUFVQcm94eSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlR1BVUHJveHk6OnJlcXVlc3RBZGFwdGVy
KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlR1BVUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlR1BVUHJveHkubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVQaXBlbGluZUxheW91dFByb3h5Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0UHJveHkuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVldWVQcm94
eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5k
ZXJCdW5kbGVFbmNvZGVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBlbGlu
ZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZVNhbXBsZXJQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVTaGFkZXJNb2R1bGVQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVZpZXdQcm94eS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVEb3duY2FzdENvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0
ZUdQVUZvcldlYkdQVSBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaDoKKwogMjAyMS0xMS0yNiAgQWRyaWFuIFBlcmV6IGRlIENhc3Ry
byAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFVwZGF0ZSBPcHRp
b25zV1BFLmNtYWtlIGFuZCBORVdTIGZvciB0aGUgMi4zNS4xIHJlbGVhc2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwppbmRleCA1MDFkNTAxYWIzODAxN2YxZDhmOWU4MWM5YmVmZGMyZDdmNmYx
NmZlLi4xMmE1Y2FhZjQ3ODdlN2NkYzU0NTUzNTg2Y2FjYmM0MDhmNzM0MDc3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMTEtMjcgIE15bGVzIEMu
IE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViR1BVXSBIb29r
IHVwIGZpcnN0IEFQSSBmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMzNTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9XZWJLaXRMZWdhY3kueGNjb25maWc6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50
OjpjcmVhdGVHUFVGb3JXZWJHUFUgY29uc3QpOgorCiAyMDIxLTExLTI0ICBEYXZpZCBLaWx6ZXIg
IDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgQ29tcGlsZXIgc2hvdWxkIGJlIGFibGUg
dG8gY2hlY2sgbG9jYWxpemVkIGZvcm1hdCBzdHJpbmdzIGZvciBjb25zaXN0ZW5jeQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzLnlhbWwg
Yi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbAppbmRl
eCBlYzgyYmY1YjVhMjk5ZDcxMjA3MDM0OGVjNDFiYmQ5YjYzNjc2OWUyLi41NzNlMDI1ZDhkOWY3
MDM2ZGJiMzgyZjUwZmI0MTUyNTJlN2E4N2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1Njcmlw
dHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbAorKysgYi9Tb3VyY2UvV1RGL1Njcmlw
dHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbApAQCAtMjU1MSwxMSArMjU1MSwxMSBA
QCBXZWJHUFU6CiAgIHR5cGU6IGJvb2wKICAgZGVmYXVsdFZhbHVlOgogICAgIFdlYktpdExlZ2Fj
eToKLSAgICAgIGRlZmF1bHQ6IGZhbHNlCisgICAgICBkZWZhdWx0OiB0cnVlCiAgICAgV2ViS2l0
OgotICAgICAgZGVmYXVsdDogZmFsc2UKKyAgICAgIGRlZmF1bHQ6IHRydWUKICAgICBXZWJDb3Jl
OgotICAgICAgZGVmYXVsdDogZmFsc2UKKyAgICAgIGRlZmF1bHQ6IHRydWUKIAogV2ViU2VjdXJp
dHlFbmFibGVkOgogICB0eXBlOiBib29sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Db25m
aWd1cmF0aW9ucy9XZWJDb3JlLnhjY29uZmlnIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlv
bnMvV2ViQ29yZS54Y2NvbmZpZwppbmRleCBiOGJhNGM2YTY0YWRiYzg4OWY3NmJmZmFmZDg0OTcx
YzZhYzhhMmNkLi42Y2VmMjQ0N2QwNzA4ZDVhYTkzMmQ4ZjZiMzhkN2Y5NmE4NzEyNWIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9XZWJDb3JlLnhjY29uZmlnCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNjb25maWcKQEAgLTcz
LDYgKzczLDggQEAgVU5FWFBPUlRFRF9TWU1CT0xTX0ZJTEUgPSBDb25maWd1cmF0aW9ucy9XZWJD
b3JlLnVuZXhwOwogCiBXS19BTkdMRV9MREZMQUdTID0gLXdlYWstbEFOR0xFLXNoYXJlZDsKIAor
V0tfV0VCR1BVX0xERkxBR1MgPSAtd2Vha19mcmFtZXdvcmsgV2ViR1BVOworCiBXS19BUFBLSVRf
TERGTEFHUyA9ICQoV0tfQVBQS0lUX0xERkxBR1NfJChXS19QTEFURk9STV9OQU1FKSk7CiBXS19B
UFBLSVRfTERGTEFHU19tYWNvc3ggPSAtZnJhbWV3b3JrIEFwcEtpdDsKIFdLX0FQUEtJVF9MREZM
QUdTX21hY2NhdGFseXN0ID0gLWZyYW1ld29yayBBcHBLaXQ7CkBAIC0xMzAsNyArMTMyLDcgQEAg
V0tfU0NFTkVLSVRfTERGTEFHUyA9ICQoV0tfU0NFTkVLSVRfTERGTEFHU18kKFdLX1BMQVRGT1JN
X05BTUUpKTsKIFdLX1NDRU5FS0lUX0xERkxBR1NfbWFjb3N4ID0gLXdlYWtfZnJhbWV3b3JrIFNj
ZW5lS2l0OwogCiAvLyBGSVhNRTogUmVkdWNlIHRoZSBudW1iZXIgb2YgYWxsb3dhYmxlX2NsaWVu
dHMgPHJkYXI6Ly9wcm9ibGVtLzMxODIzOTY5PgotT1RIRVJfTERGTEFHUyA9ICQoaW5oZXJpdGVk
KSAkKFdLX1JFTE9DQVRBQkxFX0ZSQU1FV09SS19MREZMQUdTKSAtbHNxbGl0ZTMgLWxvYmpjIC1h
bGxvd2FibGVfY2xpZW50IFdlYkNvcmVUZXN0U3VwcG9ydCAtYWxsb3dhYmxlX2NsaWVudCBXZWJL
aXRMZWdhY3kgLWZvcmNlX2xvYWQgJChCVUlMVF9QUk9EVUNUU19ESVIpL2xpYlBBTC5hIC1mcmFt
ZXdvcmsgQ0ZOZXR3b3JrIC1mcmFtZXdvcmsgQ29yZUF1ZGlvIC1mcmFtZXdvcmsgQ29yZUdyYXBo
aWNzIC1mcmFtZXdvcmsgQ29yZVRleHQgLWZyYW1ld29yayBGb3VuZGF0aW9uIC1mcmFtZXdvcmsg
SU9TdXJmYWNlIC1mcmFtZXdvcmsgSW1hZ2VJTyAtZnJhbWV3b3JrIE1ldGFsICQoT1RIRVJfTERG
TEFHU19QTEFURk9STV8kKFdLX0NPQ09BX1RPVUNIKSkgJChPVEhFUl9MREZMQUdTX1BMQVRGT1JN
XyQoV0tfUExBVEZPUk1fTkFNRSkpICQoV0tfQU5HTEVfTERGTEFHUykgJChXS19BUFBLSVRfTERG
TEFHUykgJChXS19BUFBTVVBQT1JUX0xERkxBR1MpICQoV0tfQVVESU9fVU5JVF9MREZMQUdTKSAk
KFdLX0NBUkJPTl9MREZMQUdTKSAkKFdLX0NPUkVfVUlfTERGTEFHUykgJChXS19EQVRBX0RFVEVD
VE9SU19DT1JFX0xERkxBR1MpICQoV0tfR1JBUEhJQ1NfU0VSVklDRVNfTERGTEFHUykgJChXS19J
T1NVUkZBQ0VfQUNDRUxFUkFUT1JfTERGTEFHUykgJChXS19MSUJXRUJSVENfTERGTEFHUykgJChX
S19NT0JJTEVfQ09SRV9TRVJWSUNFU19MREZMQUdTKSAkKFdLX01PQklMRV9HRVNUQUxUX0xERkxB
R1MpICQoV0tfTkVUV09SS19FWFRFTlNJT05fTERfRkxBR1MpICQoV0tfU1lTVEVNX0NPTkZJR1VS
QVRJT05fTERGTEFHUykgJChXS19DT1JFX0lNQUdFX0xERkxBR1MpICQoV0tfVVJMX0ZPUk1BVFRJ
TkdfTERGTEFHUykgJChXS19TQ0VORUtJVF9MREZMQUdTKTsKK09USEVSX0xERkxBR1MgPSAkKGlu
aGVyaXRlZCkgJChXS19SRUxPQ0FUQUJMRV9GUkFNRVdPUktfTERGTEFHUykgLWxzcWxpdGUzIC1s
b2JqYyAtYWxsb3dhYmxlX2NsaWVudCBXZWJDb3JlVGVzdFN1cHBvcnQgLWFsbG93YWJsZV9jbGll
bnQgV2ViS2l0TGVnYWN5IC1mb3JjZV9sb2FkICQoQlVJTFRfUFJPRFVDVFNfRElSKS9saWJQQUwu
YSAtZnJhbWV3b3JrIENGTmV0d29yayAtZnJhbWV3b3JrIENvcmVBdWRpbyAtZnJhbWV3b3JrIENv
cmVHcmFwaGljcyAtZnJhbWV3b3JrIENvcmVUZXh0IC1mcmFtZXdvcmsgRm91bmRhdGlvbiAtZnJh
bWV3b3JrIElPU3VyZmFjZSAtZnJhbWV3b3JrIEltYWdlSU8gLWZyYW1ld29yayBNZXRhbCAkKE9U
SEVSX0xERkxBR1NfUExBVEZPUk1fJChXS19DT0NPQV9UT1VDSCkpICQoT1RIRVJfTERGTEFHU19Q
TEFURk9STV8kKFdLX1BMQVRGT1JNX05BTUUpKSAkKFdLX0FOR0xFX0xERkxBR1MpICQoV0tfV0VC
R1BVX0xERkxBR1MpICQoV0tfQVBQS0lUX0xERkxBR1MpICQoV0tfQVBQU1VQUE9SVF9MREZMQUdT
KSAkKFdLX0FVRElPX1VOSVRfTERGTEFHUykgJChXS19DQVJCT05fTERGTEFHUykgJChXS19DT1JF
X1VJX0xERkxBR1MpICQoV0tfREFUQV9ERVRFQ1RPUlNfQ09SRV9MREZMQUdTKSAkKFdLX0dSQVBI
SUNTX1NFUlZJQ0VTX0xERkxBR1MpICQoV0tfSU9TVVJGQUNFX0FDQ0VMRVJBVE9SX0xERkxBR1Mp
ICQoV0tfTElCV0VCUlRDX0xERkxBR1MpICQoV0tfTU9CSUxFX0NPUkVfU0VSVklDRVNfTERGTEFH
UykgJChXS19NT0JJTEVfR0VTVEFMVF9MREZMQUdTKSAkKFdLX05FVFdPUktfRVhURU5TSU9OX0xE
X0ZMQUdTKSAkKFdLX1NZU1RFTV9DT05GSUdVUkFUSU9OX0xERkxBR1MpICQoV0tfQ09SRV9JTUFH
RV9MREZMQUdTKSAkKFdLX1VSTF9GT1JNQVRUSU5HX0xERkxBR1MpICQoV0tfU0NFTkVLSVRfTERG
TEFHUyk7CiAKIE9USEVSX0xERkxBR1NfUExBVEZPUk1fY29jb2F0b3VjaCA9IC1hbGxvd2FibGVf
Y2xpZW50IFdlYktpdCAtYWxsb3dhYmxlX2NsaWVudCBpVHVuZXNVIC1hbGxvd2FibGVfY2xpZW50
IENhc2FibGFuY2EgLWFsbG93YWJsZV9jbGllbnQgUmVtb3RlIC1hbGxvd2FibGVfY2xpZW50IFRW
Qm9va3MgLWFsbG93YWJsZV9jbGllbnQgRHVtcFJlbmRlclRyZWUgLWFsbG93YWJsZV9jbGllbnQg
V2ViS2l0VGVzdFJ1bm5lciAtYWxsb3dhYmxlX2NsaWVudCBUZXN0V2ViS2l0QVBJOwogT1RIRVJf
TERGTEFHU19QTEFURk9STV9tYWNvc3ggPSAtc3ViX2xpYnJhcnkgbGlib2JqYyAtdW1icmVsbGEg
V2ViS2l0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVS5jcHAKaW5kZXggMjYxM2YyZjc4
OTRmZTBiM2ExZGQzZGYzODBmZTNkYmEyNGI3MGZhZC4uMzhmZWY4ZjdhOWRjZjJmNzIxOTdhMTFh
NzE0ZmY5OWVjNjA3NjAxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJH
UFUvR1BVLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFUuY3BwCkBA
IC0zOCw4ICszOCwyMiBAQCBzdGF0aWMgUEFMOjpXZWJHUFU6OlJlcXVlc3RBZGFwdGVyT3B0aW9u
cyBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IHN0ZDo6b3B0aW9uYWw8RwogICAgIHJldHVybiBvcHRp
b25zLT5jb252ZXJ0VG9CYWNraW5nKCk7CiB9CiAKK3ZvaWQgR1BVOjpzZXRCYWNraW5nKFBBTDo6
V2ViR1BVOjpHUFUmIGJhY2tpbmcpCit7CisgICAgbV9iYWNraW5nID0gJmJhY2tpbmc7CisgICAg
d2hpbGUgKCFtX3BlbmRpbmdSZXF1ZXN0QWRhcHRlckFyZ3VtZW50cy5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgYXV0byBhcmd1bWVudHMgPSBtX3BlbmRpbmdSZXF1ZXN0QWRhcHRlckFyZ3VtZW50cy50
YWtlRmlyc3QoKTsKKyAgICAgICAgcmVxdWVzdEFkYXB0ZXIoYXJndW1lbnRzLm9wdGlvbnMsIFdU
Rk1vdmUoYXJndW1lbnRzLnByb21pc2UpKTsKKyAgICB9Cit9CisKIHZvaWQgR1BVOjpyZXF1ZXN0
QWRhcHRlcihjb25zdCBzdGQ6Om9wdGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4mIG9w
dGlvbnMsIFJlcXVlc3RBZGFwdGVyUHJvbWlzZSYmIHByb21pc2UpCiB7CisgICAgaWYgKCFtX2Jh
Y2tpbmcpIHsKKyAgICAgICAgbV9wZW5kaW5nUmVxdWVzdEFkYXB0ZXJBcmd1bWVudHMuYXBwZW5k
KHsgb3B0aW9ucywgV1RGTW92ZShwcm9taXNlKSB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KwogICAgIG1fYmFja2luZy0+cmVxdWVzdEFkYXB0ZXIoY29udmVydFRvQmFja2luZyhvcHRpb25z
KSwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoUmVmUHRyPFBBTDo6V2ViR1BVOjpBZGFw
dGVyPiYmIGFkYXB0ZXIpIG11dGFibGUgewogICAgICAgICBpZiAoIWFkYXB0ZXIpCiAgICAgICAg
ICAgICBwcm9taXNlLnJlc29sdmUobnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL1dlYkdQVS9HUFUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQ
VS5oCmluZGV4IDE2ZTQ3NzRiMzFjOGQ2ZTJhZWM4NzE4Njc5MDE1N2E3ZWZlZmUwNzAuLmQzMDRl
OGU4ZjdhMTUzNWI3OGI5MzBmN2UxYzY4YjA2MzM1Yjk1NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
V2ViR1BVL0dQVS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVm
ZXJyZWQuaCIKICNpbmNsdWRlIDxvcHRpb25hbD4KICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2Vi
R1BVL1dlYkdQVS5oPgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWYu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCkBAIC0zNywyNCArMzgsMjUgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHUFUgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFU+IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEdQVT4gY3JlYXRlKFJlZjxQQUw6OldlYkdQVTo6R1BV
PiYmIGJhY2tpbmcpCisgICAgc3RhdGljIFJlZjxHUFU+IGNyZWF0ZSgpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHUFUoV1RGTW92ZShiYWNraW5nKSkpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBHUFUoKSk7CiAgICAgfQogCiAgICAgdXNpbmcgUmVxdWVzdEFk
YXB0ZXJQcm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVkPElETE51bGxhYmxlPElETEludGVyZmFj
ZTxHUFVBZGFwdGVyPj4+OwogICAgIHZvaWQgcmVxdWVzdEFkYXB0ZXIoY29uc3Qgc3RkOjpvcHRp
b25hbDxHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM+JiwgUmVxdWVzdEFkYXB0ZXJQcm9taXNlJiYp
OwogCi0gICAgUEFMOjpXZWJHUFU6OkdQVSYgYmFja2luZygpIHsgcmV0dXJuIG1fYmFja2luZzsg
fQotICAgIGNvbnN0IFBBTDo6V2ViR1BVOjpHUFUmIGJhY2tpbmcoKSBjb25zdCB7IHJldHVybiBt
X2JhY2tpbmc7IH0KKyAgICB2b2lkIHNldEJhY2tpbmcoUEFMOjpXZWJHUFU6OkdQVSYpOwogCiBw
cml2YXRlOgotICAgIEdQVShSZWY8UEFMOjpXZWJHUFU6OkdQVT4mJiBiYWNraW5nKQotICAgICAg
ICA6IG1fYmFja2luZyhXVEZNb3ZlKGJhY2tpbmcpKQotICAgIHsKLSAgICB9Ci0KLSAgICBSZWY8
UEFMOjpXZWJHUFU6OkdQVT4gbV9iYWNraW5nOworICAgIEdQVSgpID0gZGVmYXVsdDsKKworICAg
IHN0cnVjdCBQZW5kaW5nUmVxdWVzdEFkYXB0ZXJBcmd1bWVudHMgeworICAgICAgICBzdGQ6Om9w
dGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4gb3B0aW9uczsKKyAgICAgICAgUmVxdWVz
dEFkYXB0ZXJQcm9taXNlIHByb21pc2U7CisgICAgfTsKKyAgICBEZXF1ZTxQZW5kaW5nUmVxdWVz
dEFkYXB0ZXJBcmd1bWVudHM+IG1fcGVuZGluZ1JlcXVlc3RBZGFwdGVyQXJndW1lbnRzOworICAg
IFJlZlB0cjxQQUw6OldlYkdQVTo6R1BVPiBtX2JhY2tpbmc7CiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWU2OTk3
NWZiYmI2Y2NiOWI2MWU0NzA3N2ExYTI1M2JjZGMzYWRiMC4uZDM0OGJmNzY2OTJkNDY3MTBkYzYx
ZTJiOGE0ZDMxMTdmMGYyZTIxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQxLDYgKzE0MSw3IEBACiAJCTFDQzNBQ0U4MjJC
RDdFQzUwMEYzNjBGMCAvKiBNZXRhbFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUNDM0FDRTcyMkJEN0VCODAwRjM2MEYwIC8qIE1ldGFsU1BJLmgg
Ki87IH07CiAJCTFDQ0VFNEY1MjBEODcxOTMwMDQ3QjA5NyAvKiBDb3JlVUlTUEkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQ0VFNEY0MjBEODcxOTMw
MDQ3QjA5NyAvKiBDb3JlVUlTUEkuaCAqLzsgfTsKIAkJMUNDRUU0RjcyMEQ4NzQzRjAwNDdCMDk3
IC8qIE5TQXBwZWFyYW5jZVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUNDRUU0RjYyMEQ4NzQzRjAwNDdCMDk3IC8qIE5TQXBwZWFyYW5jZVNQSS5o
ICovOyB9OworCQkxQ0Q0MTJFODI3NTFFNERDMDBDQTJFMjIgLyogV2ViR1BVSW1wbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMxOUU2OUIyNzNGNDI0
MjAwNEIxN0IwIC8qIFdlYkdQVUltcGwuaCAqLzsgfTsKIAkJMUNFRkExQzMyNzM3QTRDODAwRjBE
QTk1IC8qIFdlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQzVFNDZFMjczNzQ5NDgwMDZGNkZGNCAvKiBXZWJH
UFVCaW5kR3JvdXBEZXNjcmlwdG9yLmggKi87IH07CiAJCTFDRUZBMUM0MjczN0E0QzgwMEYwREE5
NSAvKiBXZWJHUFVTYW1wbGVyRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUNDNUU0MjMyNzM3NDkyQzAwNkY2RkY0IC8qIFdlYkdQVVNh
bXBsZXJEZXNjcmlwdG9yLmggKi87IH07CiAJCTFDRUZBMUM1MjczN0E0QzgwMEYwREE5NSAvKiBX
ZWJHUFVTdG9yYWdlVGV4dHVyZUFjY2Vzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUNDNUU0MjAyNzM3NDkyQzAwNkY2RkY0IC8qIFdlYkdQVVN0b3Jh
Z2VUZXh0dXJlQWNjZXNzLmggKi87IH07CkBAIC0xNjI0LDYgKzE2MjUsNyBAQAogCQkJCTFDRUZB
MjMyMjczN0E0QzgwMEYwREE5NSAvKiBXZWJHUFVJbWFnZUNvcHlUZXh0dXJlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQ0VGQTIzRjI3MzdBNEM4MDBGMERBOTUgLyogV2ViR1BVSW1hZ2VDb3B5VGV4
dHVyZVRhZ2dlZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUNFRkEyM0IyNzM3QTRDODAwRjBEQTk1
IC8qIFdlYkdQVUltYWdlRGF0YUxheW91dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUNENDEyRTgy
NzUxRTREQzAwQ0EyRTIyIC8qIFdlYkdQVUltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDRUZB
MjA3MjczN0E0QzgwMEYwREE5NSAvKiBXZWJHUFVJbmRleEZvcm1hdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUNFRkEyMTQyNzM3QTRDODAwRjBEQTk1IC8qIFdlYkdQVUludGVncmFsVHlwZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTFDRUZBMjFEMjczN0E0QzgwMEYwREE5NSAvKiBXZWJHUFVMb2Fk
T3AuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9n
cmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVBZGFwdGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmNwcAppbmRl
eCA3ZDViMTY1NGVlZDA3NmMxNzYwMjY4ZGYwMDI2ZGI3MjIwNjU3YjhjLi44MzUzNmI0YzVlNTQw
ZGVlMzUxNmMxZWUzMWI5NmMxMWU5NDlmMGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJ
bXBsLmNwcApAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IldlYkdQVUFkYXB0ZXJJbXBsLmgiCiAKLSNpZiBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikK
LQogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAi
V2ViR1BVRGV2aWNlSW1wbC5oIgogI2luY2x1ZGUgPFdlYkdQVS9XZWJHUFVFeHQuaD4KQEAgLTIx
NSw1ICsyMTMsMyBAQCB2b2lkIEFkYXB0ZXJJbXBsOjpyZXF1ZXN0RGV2aWNlQ2FsbGJhY2soV0dQ
VVJlcXVlc3REZXZpY2VTdGF0dXMsIFdHUFVEZXZpY2UgZGV2aQogfQogCiB9IC8vIG5hbWVzcGFj
ZSBQQUw6OldlYkdQVQotCi0jZW5kaWYgLy8gSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dl
YkdQVUFkYXB0ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQ
VS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmgKaW5kZXggODE0YTI1NzBiMjhlYWU3YmJkY2E5ZmY2
YTI4Yzc4NzdiNWVkMzljNy4uN2M2NDc1YmQ5ODE5OThlMGMwODI1MDUyODcwYTg4NDQzNjkxZWQ0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1w
bC9XZWJHUFVBZGFwdGVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhp
Y3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwuaApAQCAtMjUsOCArMjUsNiBAQAogCiAj
cHJhZ21hIG9uY2UKIAotI2lmIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQotCiAjaW5jbHVk
ZSAiV2ViR1BVQWRhcHRlci5oIgogI2luY2x1ZGUgPFdlYkdQVS9XZWJHUFUuaD4KICNpbmNsdWRl
IDx3dGYvRGVxdWUuaD4KQEAgLTM2LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsK
IGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBBZGFwdGVySW1wbCBmaW5h
bCA6IHB1YmxpYyBBZGFwdGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmPEFkYXB0ZXJJbXBsPiBjcmVhdGUoV0dQVUFkYXB0ZXIgYWRhcHRl
ciwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQogICAg
IHsKQEAgLTY3LDUgKzY2LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFBBTDo6
V2ViR1BVCi0KLSNlbmRpZiAvLyBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQmlu
ZEdyb3VwSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9J
bXBsL1dlYkdQVUJpbmRHcm91cEltcGwuY3BwCmluZGV4IGIzYmUyOTM1NzE2ZDk4OWZhMTY3MjYw
NDQxYmUxYzA0NjM4ZTdiZGMuLjk0MmI5ZTFiZWFkN2I4MTlhMjIzNDYwYWQ0N2QzZDU3ZWYwNmZj
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0lt
cGwvV2ViR1BVQmluZEdyb3VwSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9n
cmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCaW5kR3JvdXBJbXBsLmNwcApAQCAtMjYsOCArMjYs
NiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkdQVUJpbmRHcm91cEltcGwu
aCIKIAotI2lmIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQotCiAjaW5jbHVkZSAiV2ViR1BV
Q29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxXZWJHUFUvV2ViR1BVRXh0Lmg+
CiAKQEAgLTUwLDUgKzQ4LDMgQEAgdm9pZCBCaW5kR3JvdXBJbXBsOjpzZXRMYWJlbEludGVybmFs
KGNvbnN0IFN0cmluZyYgbGFiZWwpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFBBTDo6V2ViR1BVCi0K
LSNlbmRpZiAvLyBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQmluZEdyb3VwSW1w
bC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVC
aW5kR3JvdXBJbXBsLmgKaW5kZXggMzVhZDQzMzFlYWQ5OTBiZTJjN2MxMTQzYmFlZDcyZmNjZTU5
ZTA2ZS4uOGFhYTAwMzM5NWE4OWFlNzc4MzQ2NDdjZWRjMDg1MjNhYTg2YTJiOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCaW5k
R3JvdXBJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUv
SW1wbC9XZWJHUFVCaW5kR3JvdXBJbXBsLmgKQEAgLTI1LDggKzI1LDYgQEAKIAogI3ByYWdtYSBv
bmNlCiAKLSNpZiBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKLQogI2luY2x1ZGUgIldlYkdQ
VUJpbmRHcm91cC5oIgogI2luY2x1ZGUgPFdlYkdQVS9XZWJHUFUuaD4KIApAQCAtMzUsNiArMzMs
NyBAQCBuYW1lc3BhY2UgUEFMOjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRl
eHQ7CiAKIGNsYXNzIEJpbmRHcm91cEltcGwgZmluYWwgOiBwdWJsaWMgQmluZEdyb3VwIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEJpbmRH
cm91cEltcGw+IGNyZWF0ZShXR1BVQmluZEdyb3VwIGJpbmRHcm91cCwgQ29udmVydFRvQmFja2lu
Z0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQogICAgIHsKQEAgLTYyLDUgKzYxLDMg
QEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAv
LyBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQmluZEdyb3VwTGF5b3V0SW1wbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUJp
bmRHcm91cExheW91dEltcGwuY3BwCmluZGV4IGZkYzc5NWY4NTE5NDBkNDJlYzUwNGFiOGQ0MDlk
NjkyY2VlMTc0NDYuLjdmNTY3OTFiNDQ4ZmI4OTU2NzFlZDc1YWI3ZTc0MTQ0NjJmMjc5NTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVQmluZEdyb3VwTGF5b3V0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9n
cmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCaW5kR3JvdXBMYXlvdXRJbXBsLmNwcApAQCAtMjYs
OCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkdQVUJpbmRHcm91
cExheW91dEltcGwuaCIKIAotI2lmIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQotCiAjaW5j
bHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxXZWJHUFUv
V2ViR1BVRXh0Lmg+CiAKQEAgLTUwLDUgKzQ4LDMgQEAgdm9pZCBCaW5kR3JvdXBMYXlvdXRJbXBs
OjpzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVQmluZEdyb3VwTGF5b3V0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFw
aGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCaW5kR3JvdXBMYXlvdXRJbXBsLmgKaW5kZXggODY1Y2Rj
OTgyMDgzYjJlMzZiNDcyNjMzYTAxMTIzNTYyNDBkNjI5MS4uOWMyMTY4NTI5NmJhOGIyNTRmMmI2
NWQ5ZjdkODkyZWRkZWUwNzc0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9n
cmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCaW5kR3JvdXBMYXlvdXRJbXBsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCaW5kR3JvdXBM
YXlvdXRJbXBsLmgKQEAgLTI1LDggKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBIQVZF
KFdFQkdQVV9JTVBMRU1FTlRBVElPTikKLQogI2luY2x1ZGUgIldlYkdQVUJpbmRHcm91cExheW91
dC5oIgogI2luY2x1ZGUgPFdlYkdQVS9XZWJHUFUuaD4KIApAQCAtMzUsNiArMzMsNyBAQCBuYW1l
c3BhY2UgUEFMOjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNs
YXNzIEJpbmRHcm91cExheW91dEltcGwgZmluYWwgOiBwdWJsaWMgQmluZEdyb3VwTGF5b3V0IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEJp
bmRHcm91cExheW91dEltcGw+IGNyZWF0ZShXR1BVQmluZEdyb3VwTGF5b3V0IGJpbmRHcm91cExh
eW91dCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQog
ICAgIHsKQEAgLTYyLDUgKzYxLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFBB
TDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BV
QnVmZmVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9J
bXBsL1dlYkdQVUJ1ZmZlckltcGwuY3BwCmluZGV4IGQ5YTljZTVjYWQ4ZDlhNWY5MTZmYjYwZWNl
OTJjMTI3ZjNiZjg1ZGUuLmEwYTg3YjgxM2JiYmRmMzg0ODgxNjk0YTBmYjM0ZmVhYWU3ZTBmNjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVQnVmZmVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGlj
cy9XZWJHUFUvSW1wbC9XZWJHUFVCdWZmZXJJbXBsLmNwcApAQCAtMjYsOCArMjYsNiBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkdQVUJ1ZmZlckltcGwuaCIKIAotI2lmIEhB
VkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQotCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFj
a2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxXZWJHUFUvV2ViR1BVRXh0Lmg+CiAKQEAgLTk4LDUg
Kzk2LDMgQEAgdm9pZCBCdWZmZXJJbXBsOjpzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYg
bGFiZWwpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBIQVZF
KFdFQkdQVV9JTVBMRU1FTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQnVmZmVySW1wbC5oIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCdWZmZXJJbXBsLmgKaW5kZXgg
YzM2N2U3YmM3MzlmNzczZWU2MjI0ODNjY2M3MTVlNTBjNDNhYzUyNy4uZjkzNTNhOTBlMmY0OGJh
YzgxOTVhZTZiMmRhMDUzZWUyNzBkNGMyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCdWZmZXJJbXBsLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCdWZmZXJJbXBsLmgK
QEAgLTI1LDggKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBIQVZFKFdFQkdQVV9JTVBM
RU1FTlRBVElPTikKLQogI2luY2x1ZGUgIldlYkdQVUJ1ZmZlci5oIgogI2luY2x1ZGUgPFdlYkdQ
VS9XZWJHUFUuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTM2LDYgKzM0LDcgQEAgbmFt
ZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBj
bGFzcyBCdWZmZXJJbXBsIGZpbmFsIDogcHVibGljIEJ1ZmZlciB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxCdWZmZXJJbXBsPiBjcmVhdGUo
V0dQVUJ1ZmZlciBidWZmZXIsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCkKICAgICB7CkBAIC03Myw1ICs3MiwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBQQUw6OldlYkdQVQotCi0jZW5kaWYgLy8gSEFWRShXRUJHUFVfSU1QTEVNRU5U
QVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQ
VS9JbXBsL1dlYkdQVUNvbW1hbmRCdWZmZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tbWFuZEJ1ZmZlckltcGwuY3BwCmluZGV4
IDQ4NDc2ZjdmYzczZmM3ZGU3ODQ5N2EyYjI3YTY4OGUwNmFmNGJkYWYuLjc5YzVlMmUwM2M2NTM5
ZWVkOGRkYjQxM2MwNTQ3MTAwNDhiZjUzNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tbWFuZEJ1ZmZlckltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29t
bWFuZEJ1ZmZlckltcGwuY3BwCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiV2ViR1BVQ29tbWFuZEJ1ZmZlckltcGwuaCIKIAotI2lmIEhBVkUoV0VCR1BV
X0lNUExFTUVOVEFUSU9OKQotCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRl
eHQuaCIKICNpbmNsdWRlIDxXZWJHUFUvV2ViR1BVRXh0Lmg+CiAKQEAgLTUwLDUgKzQ4LDMgQEAg
dm9pZCBDb21tYW5kQnVmZmVySW1wbDo6c2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmIGxh
YmVsKQogfQogCiB9IC8vIG5hbWVzcGFjZSBQQUw6OldlYkdQVQotCi0jZW5kaWYgLy8gSEFWRShX
RUJHUFVfSU1QTEVNRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbW1hbmRCdWZmZXJJbXBsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbW1hbmRCdWZmZXJJ
bXBsLmgKaW5kZXggNGJjM2MxZWQ3YzNiNDhlODAzN2E5NTcxMTEzYzZmNWI4MDU0OWEzYS4uM2U0
N2NhN2E5OTIyMjI1OTZkZWIzODE2NzQ3ZWU3MWY4NDVmZWRkOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb21tYW5kQnVmZmVy
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVQ29tbWFuZEJ1ZmZlckltcGwuaApAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2lmIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQotCiAjaW5jbHVkZSAiV2ViR1BV
Q29tbWFuZEJ1ZmZlci5oIgogI2luY2x1ZGUgPFdlYkdQVS9XZWJHUFUuaD4KIApAQCAtMzUsNiAr
MzMsNyBAQCBuYW1lc3BhY2UgUEFMOjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFja2luZ0Nv
bnRleHQ7CiAKIGNsYXNzIENvbW1hbmRCdWZmZXJJbXBsIGZpbmFsIDogcHVibGljIENvbW1hbmRC
dWZmZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRp
YyBSZWY8Q29tbWFuZEJ1ZmZlckltcGw+IGNyZWF0ZShXR1BVQ29tbWFuZEJ1ZmZlciBjb21tYW5k
QnVmZmVyLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQp
CiAgICAgewpAQCAtNjIsNSArNjEsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
UEFMOjpXZWJHUFUKLQotI2VuZGlmIC8vIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJH
UFVDb21tYW5kRW5jb2RlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGlj
cy9XZWJHUFUvSW1wbC9XZWJHUFVDb21tYW5kRW5jb2RlckltcGwuY3BwCmluZGV4IGE4NTM2YmNl
Y2QyNGQ1NzIwN2QyMTc0NTYwOWY4MjBlYTljYmQ5YjYuLjcxMGViYWU4Njk0MjFmZGY0ZTVjOGNi
NjA0MDk2ODc2NDUwYzNkNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3Jh
cGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tbWFuZEVuY29kZXJJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbW1hbmRFbmNv
ZGVySW1wbC5jcHAKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJXZWJHUFVDb21tYW5kRW5jb2RlckltcGwuaCIKIAotI2lmIEhBVkUoV0VCR1BVX0lNUExF
TUVOVEFUSU9OKQotCiAjaW5jbHVkZSAiV2ViR1BVQnVmZmVySW1wbC5oIgogI2luY2x1ZGUgIldl
YkdQVUNvbW1hbmRCdWZmZXJJbXBsLmgiCiAjaW5jbHVkZSAiV2ViR1BVQ29tcHV0ZVBhc3NFbmNv
ZGVySW1wbC5oIgpAQCAtMjc3LDUgKzI3NSwzIEBAIHZvaWQgQ29tbWFuZEVuY29kZXJJbXBsOjpz
ZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVQ29tbWFuZEVuY29kZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNz
L1dlYkdQVS9JbXBsL1dlYkdQVUNvbW1hbmRFbmNvZGVySW1wbC5oCmluZGV4IGY1NTY2MmRjNDRl
ZjZmZjQwYzQ3NTA5OGRjZWRmZTdkYzBlM2EzODUuLmU1ZWFhMTIzMmI2NTI2ZGIzOWQyZjdjMmYx
ZjI1ZTI0MjViMmM1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhp
Y3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tbWFuZEVuY29kZXJJbXBsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb21tYW5kRW5jb2Rlcklt
cGwuaApAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIEhBVkUoV0VCR1BV
X0lNUExFTUVOVEFUSU9OKQotCiAjaW5jbHVkZSAiV2ViR1BVQ29tbWFuZEVuY29kZXIuaCIKICNp
bmNsdWRlIDxXZWJHUFUvV2ViR1BVLmg+CiAKQEAgLTM1LDYgKzMzLDcgQEAgbmFtZXNwYWNlIFBB
TDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBDb21t
YW5kRW5jb2RlckltcGwgZmluYWwgOiBwdWJsaWMgQ29tbWFuZEVuY29kZXIgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8Q29tbWFuZEVuY29k
ZXJJbXBsPiBjcmVhdGUoV0dQVUNvbW1hbmRFbmNvZGVyIENvbW1hbmRFbmNvZGVyLCBDb252ZXJ0
VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCiAgICAgewpAQCAtMTA3
LDUgKzEwNiwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBQQUw6OldlYkdQVQot
Ci0jZW5kaWYgLy8gSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbXB1dGVQYXNz
RW5jb2RlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUv
SW1wbC9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXJJbXBsLmNwcAppbmRleCBmYTI2Njc1YWMzNjJj
M2ZhMmFlYmU1NjIxODE5YmY4ZGJlMmE5NTg5Li41ZTE5OTUxMmU4MGRkNWYwYWM2OGRkMmVmMjBk
NjZkYTdmMWUyODc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNz
L1dlYkdQVS9JbXBsL1dlYkdQVUNvbXB1dGVQYXNzRW5jb2RlckltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tcHV0ZVBhc3NF
bmNvZGVySW1wbC5jcHAKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJXZWJHUFVDb21wdXRlUGFzc0VuY29kZXJJbXBsLmgiCiAKLSNpZiBIQVZFKFdFQkdQ
VV9JTVBMRU1FTlRBVElPTikKLQogI2luY2x1ZGUgIldlYkdQVUJpbmRHcm91cEltcGwuaCIKICNp
bmNsdWRlICJXZWJHUFVCdWZmZXJJbXBsLmgiCiAjaW5jbHVkZSAiV2ViR1BVQ29tcHV0ZVBpcGVs
aW5lSW1wbC5oIgpAQCAtMTE3LDUgKzExNSwzIEBAIHZvaWQgQ29tcHV0ZVBhc3NFbmNvZGVySW1w
bDo6c2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmIGxhYmVsKQogfQogCiB9IC8vIG5hbWVz
cGFjZSBQQUw6OldlYkdQVQotCi0jZW5kaWYgLy8gSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBs
L1dlYkdQVUNvbXB1dGVQYXNzRW5jb2RlckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Z3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVySW1wbC5oCmluZGV4
IDJiNTc2MmVhNzUzYWU1YjljNGZhNWZhMWFkM2Y5NTg4OGY4MmQ4M2QuLjg0ZGJlM2Q0M2EzZTFl
OGRkM2RhYzM0NjUzYjZhZDM0MGM5Nzc5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVySW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BV
Q29tcHV0ZVBhc3NFbmNvZGVySW1wbC5oCkBAIC0yNSw4ICsyNSw2IEBACiAKICNwcmFnbWEgb25j
ZQogCi0jaWYgSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCi0KICNpbmNsdWRlICJXZWJHUFVD
b21wdXRlUGFzc0VuY29kZXIuaCIKICNpbmNsdWRlIDxXZWJHUFUvV2ViR1BVLmg+CiAKQEAgLTM1
LDYgKzMzLDcgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tp
bmdDb250ZXh0OwogCiBjbGFzcyBDb21wdXRlUGFzc0VuY29kZXJJbXBsIGZpbmFsIDogcHVibGlj
IENvbXB1dGVQYXNzRW5jb2RlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxDb21wdXRlUGFzc0VuY29kZXJJbXBsPiBjcmVhdGUoV0dQVUNv
bXB1dGVQYXNzRW5jb2RlciBjb21wdXRlUGFzc0VuY29kZXIsIENvbnZlcnRUb0JhY2tpbmdDb250
ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKICAgICB7CkBAIC04NCw1ICs4MywzIEBAIHBy
aXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBQQUw6OldlYkdQVQotCi0jZW5kaWYgLy8gSEFW
RShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbXB1dGVQaXBlbGluZUltcGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb21wdXRl
UGlwZWxpbmVJbXBsLmNwcAppbmRleCA0ODY4ZjNkZTk4NzZlZjI1ODY5Y2Y0ZWRjZDBkMTU5MGEy
NDJjZGJmLi4wNGNhMmZlNWM3NDkwZTIzNmUyZWRiYmZmZjVhNjNjNmE0ZGMxZWMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNv
bXB1dGVQaXBlbGluZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhp
Y3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lSW1wbC5jcHAKQEAgLTI2LDggKzI2
LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJHUFVDb21wdXRlUGlwZWxp
bmVJbXBsLmgiCiAKLSNpZiBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKLQogI2luY2x1ZGUg
IldlYkdQVUJpbmRHcm91cExheW91dEltcGwuaCIKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9C
YWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPFdlYkdQVS9XZWJHUFVFeHQuaD4KQEAgLTU2LDUg
KzU0LDMgQEAgdm9pZCBDb21wdXRlUGlwZWxpbmVJbXBsOjpzZXRMYWJlbEludGVybmFsKGNvbnN0
IFN0cmluZyYgbGFiZWwpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRp
ZiAvLyBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lSW1w
bC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVD
b21wdXRlUGlwZWxpbmVJbXBsLmgKaW5kZXggYzg5OGM5OWFlN2M0MWVkMGFlYjVkYTlkY2I0OGMw
MTFlNTg1MDc1MC4uZjM0MTkwYmJmMWVmZWUwZjI1NTY5ZjM3MmJmYjNhODJmMzA5MzM4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJH
UFVDb21wdXRlUGlwZWxpbmVJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFw
aGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb21wdXRlUGlwZWxpbmVJbXBsLmgKQEAgLTI1LDggKzI1
LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikK
LQogI2luY2x1ZGUgIldlYkdQVUNvbXB1dGVQaXBlbGluZS5oIgogI2luY2x1ZGUgPFdlYkdQVS9X
ZWJHUFUuaD4KIApAQCAtMzUsNiArMzMsNyBAQCBuYW1lc3BhY2UgUEFMOjpXZWJHUFUgewogY2xh
c3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIENvbXB1dGVQaXBlbGluZUltcGwg
ZmluYWwgOiBwdWJsaWMgQ29tcHV0ZVBpcGVsaW5lIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPENvbXB1dGVQaXBlbGluZUltcGw+IGNyZWF0
ZShXR1BVQ29tcHV0ZVBpcGVsaW5lIGNvbXB1dGVQaXBlbGluZSwgQ29udmVydFRvQmFja2luZ0Nv
bnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQogICAgIHsKQEAgLTY0LDUgKzYzLDMgQEAg
cHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBI
QVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVD
b252ZXJ0VG9CYWNraW5nQ29udGV4dC5jcHAKaW5kZXggMGZiZmI0ZWNkNmI2NWM0NDFmNzE1NDMz
ZDJjNjUwOWQ4ZGU0MjNhYS4uZjlmYmI0YTlkMmIyOGM0NTAxY2QzMWNiMzBmZDAzMmQxMmEwNDc1
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1w
bC9XZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4
dC5jcHAKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJX
ZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogCi0jaWYgSEFWRShXRUJHUFVfSU1QTEVN
RU5UQVRJT04pCi0KICNpbmNsdWRlICJXZWJHUFVBZGRyZXNzTW9kZS5oIgogI2luY2x1ZGUgIldl
YkdQVUJsZW5kRmFjdG9yLmgiCiAjaW5jbHVkZSAiV2ViR1BVQmxlbmRPcGVyYXRpb24uaCIKQEAg
LTgzNSw1ICs4MzMsMyBAQCBXR1BVT3JpZ2luM0QgQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNv
bnZlcnRUb0JhY2tpbmcoY29uc3QgT3JpZ2luM0QmIG9yaWdpbjNEKQogfQogCiB9IC8vIG5hbWVz
cGFjZSBQQUw6OldlYkdQVQotCi0jZW5kaWYgLy8gSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBs
L1dlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgKaW5k
ZXggM2M5YjVjN2I0ZDU4M2QyYTY3MjhiYmQ3MjczYjViYjI2MGM2MmQzOS4uMWY1NDI3YzYxODky
ZDhiN2E4MDZjMThiZjQ1MmM3ZDZkNmI1YmQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaApAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2lmIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQotCiAjaW5jbHVkZSAiV2Vi
R1BVQnVmZmVyVXNhZ2UuaCIKICNpbmNsdWRlICJXZWJHUFVDb2xvci5oIgogI2luY2x1ZGUgIldl
YkdQVUNvbG9yV3JpdGUuaCIKQEAgLTkzLDYgKzkxLDcgQEAgZW51bSBjbGFzcyBWZXJ0ZXhGb3Jt
YXQgOiB1aW50OF90OwogZW51bSBjbGFzcyBWZXJ0ZXhTdGVwTW9kZSA6IHVpbnQ4X3Q7CiAKIGNs
YXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0IDogcHVibGljIFJlZkNvdW50ZWQ8Q29udmVydFRv
QmFja2luZ0NvbnRleHQ+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5Db252ZXJ0VG9CYWNraW5nQ29udGV4dCgpID0gZGVmYXVsdDsKIApAQCAt
MTYwLDUgKzE1OSwzIEBAIHB1YmxpYzoKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFBBTDo6V2ViR1BV
Ci0KLSNlbmRpZiAvLyBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNlSW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQ
VURldmljZUltcGwuY3BwCmluZGV4IGIzZjU1NWRiMzE3ODVlMmRiNmQ2NDE2YzJmOTI5NmVmNDI0
MGQ4M2IuLjhlNGZkZGNmOTc3MmQ0ZjdiNDRkOTQ4ZDE2NzY5MzhhMmQzN2MwZWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2
aWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUv
SW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcApAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIldlYkdQVURldmljZUltcGwuaCIKIAotI2lmIEhBVkUoV0VCR1BV
X0lNUExFTUVOVEFUSU9OKQotCiAjaW5jbHVkZSAiV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5o
IgogI2luY2x1ZGUgIldlYkdQVUJpbmRHcm91cEltcGwuaCIKICNpbmNsdWRlICJXZWJHUFVCaW5k
R3JvdXBMYXlvdXREZXNjcmlwdG9yLmgiCkBAIC02MTQsNSArNjEyLDMgQEAgdm9pZCBEZXZpY2VJ
bXBsOjpzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElP
TikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0lt
cGwvV2ViR1BVRGV2aWNlSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmgKaW5kZXggNjI0OTM2YmU5NzI0YTJmY2MyYWNk
OTkwZDEzZDIwMzlkZjQ4Y2M1YS4uNWU2M2UxNTQ4NmJmMTY4NGZhY2I0ZDcyZDY0ZDUxMDY5YTE1
MWFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUv
SW1wbC9XZWJHUFVEZXZpY2VJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFw
aGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmgKQEAgLTI1LDggKzI1LDYgQEAKIAog
I3ByYWdtYSBvbmNlCiAKLSNpZiBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKLQogI2luY2x1
ZGUgIldlYkdQVURldmljZS5oIgogI2luY2x1ZGUgPFdlYkdQVS9XZWJHUFUuaD4KICNpbmNsdWRl
IDx3dGYvRGVxdWUuaD4KQEAgLTM2LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsK
IGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBEZXZpY2VJbXBsIGZpbmFs
IDogcHVibGljIERldmljZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFJlZjxEZXZpY2VJbXBsPiBjcmVhdGUoV0dQVURldmljZSBkZXZpY2UsIFJl
ZjxTdXBwb3J0ZWRGZWF0dXJlcz4mJiBmZWF0dXJlcywgUmVmPFN1cHBvcnRlZExpbWl0cz4mJiBs
aW1pdHMsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkK
ICAgICB7CkBAIC05OCw1ICs5NywzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBQ
QUw6OldlYkdQVQotCi0jZW5kaWYgLy8gSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQ
VURvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdD
b250ZXh0LmNwcAppbmRleCAxYjg1NGNiN2VjNTI2N2IyZTU1NGQxMTExMDBiZmZhMGQzNjVkMmQy
Li5mNjM3MzQwN2YxNzQ5MjIxMDliNjZkZDkxYWY0NGQ3ZDJjYzhhMjkyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVURvd25jYXN0
Q29udmVydFRvQmFja2luZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Z3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4
dC5jcHAKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJX
ZWJHUFVEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAKLSNpZiBIQVZFKFdFQkdQ
VV9JTVBMRU1FTlRBVElPTikKLQogI2luY2x1ZGUgIldlYkdQVUFkYXB0ZXJJbXBsLmgiCiAjaW5j
bHVkZSAiV2ViR1BVQmluZEdyb3VwSW1wbC5oIgogI2luY2x1ZGUgIldlYkdQVUJpbmRHcm91cExh
eW91dEltcGwuaCIKQEAgLTE1OSw1ICsxNTcsMyBAQCBXR1BVVGV4dHVyZVZpZXcgRG93bmNhc3RD
b252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBUZXh0dXJlVgog
fQogCiB9IC8vIG5hbWVzcGFjZSBQQUw6OldlYkdQVQotCi0jZW5kaWYgLy8gSEFWRShXRUJHUFVf
SU1QTEVNRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBo
aWNzL1dlYkdQVS9JbXBsL1dlYkdQVURvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQuaCBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRG93bmNh
c3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oCmluZGV4IGJkMGZjYTE2MmUxYWU5MDUxMWUzZGZi
NmY1ZTNjZmM3YzMxNDIwNTYuLjdiODc1ZmU0YzNmZTA5NDk2ZWFiZjY3Mjk5MjJhNzdjYWYxZmFk
MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0lt
cGwvV2ViR1BVRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRG93bmNhc3RDb252ZXJ0
VG9CYWNraW5nQ29udGV4dC5oCkBAIC0yNSwxMyArMjUsMTIgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpZiBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKLQogI2luY2x1ZGUgIldlYkdQVUNvbnZl
cnRUb0JhY2tpbmdDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBQQUw6OldlYkdQVSB7CiAKIGNsYXNz
IERvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQgZmluYWwgOiBwdWJsaWMgQ29udmVydFRv
QmFja2luZ0NvbnRleHQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIHN0YXRpYyBSZWY8RG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dD4gY3JlYXRlKCkK
ICAgICB7CkBAIC02OSw1ICs2OCwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBQ
QUw6OldlYkdQVQotCi0jZW5kaWYgLy8gSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQ
VUV4dGVybmFsVGV4dHVyZUltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGlj
cy9XZWJHUFUvSW1wbC9XZWJHUFVFeHRlcm5hbFRleHR1cmVJbXBsLmNwcAppbmRleCAzNjVkYzAy
OTQyMmIyNzVjZWRmMDY5MDQ0Njg1ODU3MzBkNGVmOGZmLi4zZTU1YzlkYTM3Y2VkMDBkMmNlNGFl
YjEzMDMxMTUxMGMxMmIzZDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dy
YXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUV4dGVybmFsVGV4dHVyZUltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRXh0ZXJuYWxU
ZXh0dXJlSW1wbC5jcHAKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJXZWJHUFVFeHRlcm5hbFRleHR1cmVJbXBsLmgiCiAKLSNpZiBIQVZFKFdFQkdQVV9J
TVBMRU1FTlRBVElPTikKLQogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0
LmgiCiAjaW5jbHVkZSA8V2ViR1BVL1dlYkdQVUV4dC5oPgogCkBAIC00Nyw1ICs0NSwzIEBAIHZv
aWQgRXh0ZXJuYWxUZXh0dXJlSW1wbDo6c2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmKQog
fQogCiB9IC8vIG5hbWVzcGFjZSBQQUw6OldlYkdQVQotCi0jZW5kaWYgLy8gSEFWRShXRUJHUFVf
SU1QTEVNRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBo
aWNzL1dlYkdQVS9JbXBsL1dlYkdQVUV4dGVybmFsVGV4dHVyZUltcGwuaCBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRXh0ZXJuYWxUZXh0dXJlSW1w
bC5oCmluZGV4IDJhYWM5N2VhYzU5NWE0NmVhODlmNDE5NDcwZThmMjYyZWY1NGExNjEuLmNkZTk4
ZTQyZDE3NDY3MGNjOTIyNDFjN2Q2MDM2YmEyN2IwNWUzZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRXh0ZXJuYWxUZXh0dXJl
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVRXh0ZXJuYWxUZXh0dXJlSW1wbC5oCkBAIC0yNSw4ICsyNSw2IEBACiAKICNwcmFnbWEg
b25jZQogCi0jaWYgSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCi0KICNpbmNsdWRlICJXZWJH
UFVFeHRlcm5hbFRleHR1cmUuaCIKICNpbmNsdWRlIDxXZWJHUFUvV2ViR1BVLmg+CiAKQEAgLTM1
LDYgKzMzLDcgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tp
bmdDb250ZXh0OwogCiBjbGFzcyBFeHRlcm5hbFRleHR1cmVJbXBsIGZpbmFsIDogcHVibGljIEV4
dGVybmFsVGV4dHVyZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlZjxFeHRlcm5hbFRleHR1cmVJbXBsPiBjcmVhdGUoQ29udmVydFRvQmFja2lu
Z0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQogICAgIHsKQEAgLTU5LDUgKzU4LDMg
QEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAv
LyBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVSW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUltcGwuY3BwCmluZGV4IDhj
YzQ1ZjBjYjExNjkxNTA2MWU5NDJiNTFjZmZiMDkxOWM3NzQwZWUuLmFjNDg1YzU0N2UxMzM0NTNl
NmJkMGMzNmFmYWQyZWNmNTZmZjkxMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVJbXBsLmNwcApAQCAtMjYsMTQg
KzI2LDIyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViR1BVSW1wbC5oIgog
Ci0jaWYgSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCi0KICNpbmNsdWRlICJXZWJHUFVBZGFw
dGVySW1wbC5oIgotI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCisj
aW5jbHVkZSAiV2ViR1BVRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1
ZGUgPFdlYkdQVS9XZWJHUFVFeHQuaD4KIAogbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIAorUmVm
UHRyPEdQVUltcGw+IEdQVUltcGw6OmNyZWF0ZSgpCit7CisgICAgV0dQVUluc3RhbmNlRGVzY3Jp
cHRvciBkZXNjcmlwdG9yID0geyBudWxscHRyIH07CisgICAgYXV0byBpbnN0YW5jZSA9IHdncHVD
cmVhdGVJbnN0YW5jZSgmZGVzY3JpcHRvcik7CisgICAgaWYgKCFpbnN0YW5jZSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgYXV0byBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCA9IERvd25j
YXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNyZWF0ZSgpOworICAgIHJldHVybiBjcmVhdGUo
aW5zdGFuY2UsIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KTsKK30KKwogR1BVSW1wbDo6R1BVSW1w
bChXR1BVSW5zdGFuY2UgaW5zdGFuY2UsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0
VG9CYWNraW5nQ29udGV4dCkKICAgICA6IG1fYmFja2luZyhpbnN0YW5jZSkKICAgICAsIG1fY29u
dmVydFRvQmFja2luZ0NvbnRleHQoY29udmVydFRvQmFja2luZ0NvbnRleHQpCkBAIC03NSw1ICs4
MywzIEBAIHZvaWQgR1BVSW1wbDo6cmVxdWVzdEFkYXB0ZXJDYWxsYmFjayhXR1BVUmVxdWVzdEFk
YXB0ZXJTdGF0dXMsIFdHUFVBZGFwdGVyIGFkYXB0CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFBBTDo6
V2ViR1BVCi0KLSNlbmRpZiAvLyBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVSW1w
bC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVJ
bXBsLmgKaW5kZXggYzczNWEyNGUwZmNhNjQxZTQ5NDkyZGI1ZTU2Njg3OGMzOTNmYTcxMi4uNjM3
MDZlZDM2NzI4ZmVlYTk0MmM5MzAxMzNkMjczZDY0YmJlZDkwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVJbXBsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVJbXBsLmgK
QEAgLTI1LDggKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBIQVZFKFdFQkdQVV9JTVBM
RU1FTlRBVElPTikKLQogI2luY2x1ZGUgIldlYkdQVS5oIgogI2luY2x1ZGUgPFdlYkdQVS9XZWJH
UFUuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTM2LDcgKzM0LDEwIEBAIG5hbWVzcGFj
ZSBQQUw6OldlYkdQVSB7CiBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3Mg
R1BVSW1wbCBmaW5hbCA6IHB1YmxpYyBHUFUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgorICAgIFBBTF9FWFBPUlQgc3RhdGljIFJlZlB0cjxHUFVJbXBsPiBjcmVhdGUo
KTsKKwogICAgIHN0YXRpYyBSZWY8R1BVSW1wbD4gY3JlYXRlKFdHUFVJbnN0YW5jZSBpbnN0YW5j
ZSwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQogICAg
IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR1BVSW1wbChpbnN0YW5jZSwgY29udmVy
dFRvQmFja2luZ0NvbnRleHQpKTsKQEAgLTY3LDUgKzY4LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBIQVZFKFdFQkdQVV9JTVBMRU1F
TlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2Vi
R1BVL0ltcGwvV2ViR1BVUGlwZWxpbmVMYXlvdXRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUGlwZWxpbmVMYXlvdXRJbXBsLmNwcApp
bmRleCA2NThkZGJlMjljODcxMjE3NDE1MjEwMDFhZmQ5YzcxYTA3ZTM0Yjg2Li5iYTM3ZjE2ODk2
ODlhZDM5NGQ5Njk5ZDEwN2I4MDMzY2E3OGIwMjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVBpcGVsaW5lTGF5b3V0SW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJH
UFVQaXBlbGluZUxheW91dEltcGwuY3BwCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiV2ViR1BVUGlwZWxpbmVMYXlvdXRJbXBsLmgiCiAKLSNpZiBIQVZF
KFdFQkdQVV9JTVBMRU1FTlRBVElPTikKLQogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tp
bmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8V2ViR1BVL1dlYkdQVUV4dC5oPgogCkBAIC01MCw1ICs0
OCwzIEBAIHZvaWQgUGlwZWxpbmVMYXlvdXRJbXBsOjpzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0
cmluZyYgbGFiZWwpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAv
LyBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUGlwZWxpbmVMYXlvdXRJbXBsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVBpcGVs
aW5lTGF5b3V0SW1wbC5oCmluZGV4IDAwOWMyYjVjODE0MTk3YWYwZGI2ZWRlMGIyODVjZjYxYWVl
ODQ1OTYuLmVlZjFkNmY2MTA3ZjE0MmMyYTk5YzcxYmVjZmVjYWQxYTE1NzA1OTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUGlw
ZWxpbmVMYXlvdXRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVQaXBlbGluZUxheW91dEltcGwuaApAQCAtMjUsOCArMjUsNiBAQAog
CiAjcHJhZ21hIG9uY2UKIAotI2lmIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQotCiAjaW5j
bHVkZSAiV2ViR1BVUGlwZWxpbmVMYXlvdXQuaCIKICNpbmNsdWRlIDxXZWJHUFUvV2ViR1BVLmg+
CiAKQEAgLTM1LDYgKzMzLDcgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNzIENvbnZl
cnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBQaXBlbGluZUxheW91dEltcGwgZmluYWwgOiBw
dWJsaWMgUGlwZWxpbmVMYXlvdXQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8UGlwZWxpbmVMYXlvdXRJbXBsPiBjcmVhdGUoV0dQVVBpcGVs
aW5lTGF5b3V0IHBpcGVsaW5lTGF5b3V0LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVy
dFRvQmFja2luZ0NvbnRleHQpCiAgICAgewpAQCAtNjIsNSArNjEsMyBAQCBwcml2YXRlOgogfTsK
IAogfSAvLyBuYW1lc3BhY2UgUEFMOjpXZWJHUFUKLQotI2VuZGlmIC8vIEhBVkUoV0VCR1BVX0lN
UExFTUVOVEFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGlj
cy9XZWJHUFUvSW1wbC9XZWJHUFVRdWVyeVNldEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVRdWVyeVNldEltcGwuY3BwCmluZGV4IDU1
Y2FmNDQzM2Y5MzY4ZGRmNDFkZDk0Zjc4NmUzOTYxMzhmZWNjMTQuLmI0YTRiOGI0ZTBhODgxODNi
YjQ2NjdiNTJjNzk4NmRkYmY0ZjYxZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUXVlcnlTZXRJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVF1ZXJ5U2V0SW1w
bC5jcHAKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJX
ZWJHUFVRdWVyeVNldEltcGwuaCIKIAotI2lmIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQot
CiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxX
ZWJHUFUvV2ViR1BVRXh0Lmg+CiAKQEAgLTU1LDUgKzUzLDMgQEAgdm9pZCBRdWVyeVNldEltcGw6
OnNldExhYmVsSW50ZXJuYWwoY29uc3QgU3RyaW5nJiBsYWJlbCkKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgUEFMOjpXZWJHUFUKLQotI2VuZGlmIC8vIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9X
ZWJHUFVRdWVyeVNldEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2Vi
R1BVL0ltcGwvV2ViR1BVUXVlcnlTZXRJbXBsLmgKaW5kZXggODk5YWE3MzFiNjBhNTVhOTc5YWRk
Y2VlYTU3OWFiYjEwZjViOTU0Yy4uN2FjODUyMTU4ZDQwMDQ1ZDk4NTYxNzIzNjE3OTYwNjRmZDU1
NzQxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUv
SW1wbC9XZWJHUFVRdWVyeVNldEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dy
YXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVF1ZXJ5U2V0SW1wbC5oCkBAIC0yNSw4ICsyNSw2IEBA
CiAKICNwcmFnbWEgb25jZQogCi0jaWYgSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCi0KICNp
bmNsdWRlICJXZWJHUFVRdWVyeVNldC5oIgogI2luY2x1ZGUgPFdlYkdQVS9XZWJHUFUuaD4KIApA
QCAtMzUsNiArMzMsNyBAQCBuYW1lc3BhY2UgUEFMOjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRv
QmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFF1ZXJ5U2V0SW1wbCBmaW5hbCA6IHB1YmxpYyBRdWVy
eVNldCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFJlZjxRdWVyeVNldEltcGw+IGNyZWF0ZShXR1BVUXVlcnlTZXQgcXVlcnlTZXQsIENvbnZlcnRU
b0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKICAgICB7CkBAIC02NCw1
ICs2MywzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBQQUw6OldlYkdQVQotCi0j
ZW5kaWYgLy8gSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVF1ZXVlSW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVF1ZXVl
SW1wbC5jcHAKaW5kZXggNjM5ZmE0YWJlNjZkYmQxM2RkZjhjNDQ1NGYzOGYwNjNmYzU1MTkwOC4u
ODc4M2FjYzNmNWFiNGUwYTRhZmYzNDNlOWE0NWZiNGFmMTU2ZDJmYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVRdWV1ZUltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVUXVldWVJbXBsLmNwcApAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIldlYkdQVVF1ZXVlSW1wbC5oIgogCi0jaWYgSEFWRShXRUJHUFVfSU1QTEVNRU5U
QVRJT04pCi0KICNpbmNsdWRlICJXZWJHUFVCdWZmZXJJbXBsLmgiCiAjaW5jbHVkZSAiV2ViR1BV
Q29tbWFuZEJ1ZmZlckltcGwuaCIKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dC5oIgpAQCAtMTM0LDUgKzEzMiwzIEBAIHZvaWQgUXVldWVJbXBsOjpzZXRMYWJlbEludGVy
bmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFBBTDo6V2ViR1BV
Ci0KLSNlbmRpZiAvLyBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUXVldWVJbXBs
LmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVF1
ZXVlSW1wbC5oCmluZGV4IGRkOTFmOGMxYTczMmNlMWM0ZTA2YTkzNzkwNTliYWY2OTZmMGUwNzQu
LjZkOWNkMTY5Y2EwZWZjODRkMTQ3ZDczYzlkMjc1MTBiNzQ3ZWI2MTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUXVldWVJbXBs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJH
UFVRdWV1ZUltcGwuaApAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIEhB
VkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQotCiAjaW5jbHVkZSAiV2ViR1BVUXVldWUuaCIKICNp
bmNsdWRlIDxXZWJHUFUvV2ViR1BVLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CkBAIC0zNiw2
ICszNCw3IEBAIG5hbWVzcGFjZSBQQUw6OldlYkdQVSB7CiBjbGFzcyBDb252ZXJ0VG9CYWNraW5n
Q29udGV4dDsKIAogY2xhc3MgUXVldWVJbXBsIGZpbmFsIDogcHVibGljIFF1ZXVlIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFF1ZXVlSW1w
bD4gY3JlYXRlKFdHUFVRdWV1ZSBxdWV1ZSwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZl
cnRUb0JhY2tpbmdDb250ZXh0KQogICAgIHsKQEAgLTkzLDUgKzkyLDMgQEAgcHJpdmF0ZToKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBIQVZFKFdFQkdQVV9J
TVBMRU1FTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhp
Y3MvV2ViR1BVL0ltcGwvV2ViR1BVUmVuZGVyQnVuZGxlRW5jb2RlckltcGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJCdW5kbGVF
bmNvZGVySW1wbC5jcHAKaW5kZXggZWYxOGI1MDNlYWQxYzczODU4ZGQzMTM4ODk0NzIwNGZhOWVm
OTY5MC4uZDhkYmYyZGM4YmQyZWJiNDZkODU1ZmYyZGNkNjI1YmNiYmExMzdmOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5k
ZXJCdW5kbGVFbmNvZGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFw
aGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJCdW5kbGVFbmNvZGVySW1wbC5jcHAKQEAgLTI2
LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJHUFVSZW5kZXJC
dW5kbGVFbmNvZGVySW1wbC5oIgogCi0jaWYgSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCi0K
ICNpbmNsdWRlICJXZWJHUFVCaW5kR3JvdXBJbXBsLmgiCiAjaW5jbHVkZSAiV2ViR1BVQnVmZmVy
SW1wbC5oIgogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCkBAIC0x
MzgsNSArMTM2LDMgQEAgdm9pZCBSZW5kZXJCdW5kbGVFbmNvZGVySW1wbDo6c2V0TGFiZWxJbnRl
cm5hbChjb25zdCBTdHJpbmcmIGxhYmVsKQogfQogCiB9IC8vIG5hbWVzcGFjZSBQQUw6OldlYkdQ
VQotCi0jZW5kaWYgLy8gSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlckJ1
bmRsZUVuY29kZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQ
VS9JbXBsL1dlYkdQVVJlbmRlckJ1bmRsZUVuY29kZXJJbXBsLmgKaW5kZXggMzE3ZDFjNGZmODg2
ZGUxNzUyNzdmMjU4MmY5ZmY1OGNiMWI0MWU5ZC4uMjBlYmIzM2JmZGRhYTBlMjlmYTZjOTJlZTA4
M2UzZjkxMTE4ODlhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGlj
cy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJCdW5kbGVFbmNvZGVySW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUmVuZGVyQnVuZGxl
RW5jb2RlckltcGwuaApAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIEhB
VkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQotCiAjaW5jbHVkZSAiV2ViR1BVUmVuZGVyQnVuZGxl
RW5jb2Rlci5oIgogI2luY2x1ZGUgPFdlYkdQVS9XZWJHUFUuaD4KIApAQCAtMzUsNiArMzMsNyBA
QCBuYW1lc3BhY2UgUEFMOjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7
CiAKIGNsYXNzIFJlbmRlckJ1bmRsZUVuY29kZXJJbXBsIGZpbmFsIDogcHVibGljIFJlbmRlckJ1
bmRsZUVuY29kZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IHN0YXRpYyBSZWY8UmVuZGVyQnVuZGxlRW5jb2RlckltcGw+IGNyZWF0ZShXR1BVUmVuZGVyQnVu
ZGxlRW5jb2RlciByZW5kZXJCdW5kbGVFbmNvZGVyLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYg
Y29udmVydFRvQmFja2luZ0NvbnRleHQpCiAgICAgewpAQCAtOTIsNSArOTEsMyBAQCBwcml2YXRl
OgogfTsKIAogfSAvLyBuYW1lc3BhY2UgUEFMOjpXZWJHUFUKLQotI2VuZGlmIC8vIEhBVkUoV0VC
R1BVX0lNUExFTUVOVEFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9n
cmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJCdW5kbGVJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUmVuZGVyQnVuZGxlSW1w
bC5jcHAKaW5kZXggMDk2YmU2ODZiYmNhNzNmMWJjNTljMjc3MzFjMTlmOTA3OGUyNjViMi4uYzZl
YzNjYTAyYzg2OGNjY2Q2M2U2Njc3NjU2NTBlNmFkMTg3NjYyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJCdW5kbGVJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBs
L1dlYkdQVVJlbmRlckJ1bmRsZUltcGwuY3BwCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViR1BVUmVuZGVyQnVuZGxlSW1wbC5oIgogCi0jaWYgSEFW
RShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCi0KICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPFdlYkdQVS9XZWJHUFVFeHQuaD4KIApAQCAtNTAsNSAr
NDgsMyBAQCB2b2lkIFJlbmRlckJ1bmRsZUltcGw6OnNldExhYmVsSW50ZXJuYWwoY29uc3QgU3Ry
aW5nJiBsYWJlbCkKIH0KIAogfSAvLyBuYW1lc3BhY2UgUEFMOjpXZWJHUFUKLQotI2VuZGlmIC8v
IEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJCdW5kbGVJbXBsLmggYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlckJ1
bmRsZUltcGwuaAppbmRleCBkMjY2NWYxOWI3MTk5M2RkYTBjNTQzMzU1OTE0MTViYzNhNDYyMTU5
Li45ZGFkNmMzNTIzZjliM2YyNGI2OGIzNjQwYmY0MTE5Y2IyZmQ4ZDkzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlckJ1
bmRsZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9J
bXBsL1dlYkdQVVJlbmRlckJ1bmRsZUltcGwuaApAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2lmIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQotCiAjaW5jbHVkZSAiV2Vi
R1BVUmVuZGVyQnVuZGxlLmgiCiAjaW5jbHVkZSA8V2ViR1BVL1dlYkdQVS5oPgogCkBAIC0zNSw2
ICszMyw3IEBAIG5hbWVzcGFjZSBQQUw6OldlYkdQVSB7CiBjbGFzcyBDb252ZXJ0VG9CYWNraW5n
Q29udGV4dDsKIAogY2xhc3MgUmVuZGVyQnVuZGxlSW1wbCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJC
dW5kbGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRp
YyBSZWY8UmVuZGVyQnVuZGxlSW1wbD4gY3JlYXRlKFdHUFVSZW5kZXJCdW5kbGUgcmVuZGVyQnVu
ZGxlLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCiAg
ICAgewpAQCAtNjIsNSArNjEsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgUEFM
OjpXZWJHUFUKLQotI2VuZGlmIC8vIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVS
ZW5kZXJQYXNzRW5jb2RlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGlj
cy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJQYXNzRW5jb2RlckltcGwuY3BwCmluZGV4IDVhMWY5
MjQ2NmViYjgyMmYwNzcxOWRlN2RlYjQzZjhmMDgzZThjZjcuLjEwMGRjOWM0ZDM1MjQ4ZTBmMTQz
Zjc1NjQ1MjFhNzcwYWJlOWNmMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Z3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXJJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRl
clBhc3NFbmNvZGVySW1wbC5jcHAKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJXZWJHUFVSZW5kZXJQYXNzRW5jb2RlckltcGwuaCIKIAotI2lmIEhBVkUo
V0VCR1BVX0lNUExFTUVOVEFUSU9OKQotCiAjaW5jbHVkZSAiV2ViR1BVQmluZEdyb3VwSW1wbC5o
IgogI2luY2x1ZGUgIldlYkdQVUJ1ZmZlckltcGwuaCIKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0
VG9CYWNraW5nQ29udGV4dC5oIgpAQCAtMTg2LDUgKzE4NCwzIEBAIHZvaWQgUmVuZGVyUGFzc0Vu
Y29kZXJJbXBsOjpzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBIQVZFKFdFQkdQVV9JTVBMRU1F
TlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2Vi
R1BVL0ltcGwvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlclBhc3NFbmNvZGVySW1wbC5o
CmluZGV4IDljNGUxMDE2ZTRiNTdiMThhODM2MzYxYjQ1MjRkNTA5NThjOWQ5YTcuLmUxM2ZiZDI5
NGQ5YzViZmRiODk4MTRlNjQyYzA1OThmMTYzYzkzOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXJJ
bXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9X
ZWJHUFVSZW5kZXJQYXNzRW5jb2RlckltcGwuaApAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2lmIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQotCiAjaW5jbHVkZSAiV2Vi
R1BVUmVuZGVyUGFzc0VuY29kZXIuaCIKICNpbmNsdWRlIDxXZWJHUFUvV2ViR1BVLmg+CiAKQEAg
LTM1LDYgKzMzLDcgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0OwogCiBjbGFzcyBSZW5kZXJQYXNzRW5jb2RlckltcGwgZmluYWwgOiBwdWJs
aWMgUmVuZGVyUGFzc0VuY29kZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8UmVuZGVyUGFzc0VuY29kZXJJbXBsPiBjcmVhdGUoV0dQVVJl
bmRlclBhc3NFbmNvZGVyIHJlbmRlclBhc3NFbmNvZGVyLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4
dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCiAgICAgewpAQCAtMTA5LDUgKzEwOCwzIEBAIHBy
aXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBQQUw6OldlYkdQVQotCi0jZW5kaWYgLy8gSEFW
RShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlclBpcGVsaW5lSW1wbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlclBp
cGVsaW5lSW1wbC5jcHAKaW5kZXggZDI2MTdkZGRmNWYxODZkNDI3M2E1MThjY2I0ZjJmZDg3OTM0
NTMyYS4uNGYxNzM4ZGRmZDUwNzAyNTU4NWFjYzBiMTQ1YzIzMGNlODE3Njk2ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5k
ZXJQaXBlbGluZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3Mv
V2ViR1BVL0ltcGwvV2ViR1BVUmVuZGVyUGlwZWxpbmVJbXBsLmNwcApAQCAtMjYsOCArMjYsNiBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkdQVVJlbmRlclBpcGVsaW5lSW1w
bC5oIgogCi0jaWYgSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCi0KICNpbmNsdWRlICJXZWJH
UFVCaW5kR3JvdXBMYXlvdXRJbXBsLmgiCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2lu
Z0NvbnRleHQuaCIKICNpbmNsdWRlIDxXZWJHUFUvV2ViR1BVRXh0Lmg+CkBAIC01Niw1ICs1NCwz
IEBAIHZvaWQgUmVuZGVyUGlwZWxpbmVJbXBsOjpzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmlu
ZyYgbGFiZWwpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBI
QVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUmVuZGVyUGlwZWxpbmVJbXBsLmggYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlclBp
cGVsaW5lSW1wbC5oCmluZGV4IDRmM2ZiZjg5YjM5MTY4ODZjNDg5NzE0OTJlZmVkMDYxNTBkZjk2
ZmYuLjI3YTY1N2Q4YjExYjU5ODI2NjE4ODg2OTk2NTBlNGQxYWRmMjk3NjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUmVuZGVy
UGlwZWxpbmVJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJH
UFUvSW1wbC9XZWJHUFVSZW5kZXJQaXBlbGluZUltcGwuaApAQCAtMjUsOCArMjUsNiBAQAogCiAj
cHJhZ21hIG9uY2UKIAotI2lmIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQotCiAjaW5jbHVk
ZSAiV2ViR1BVUmVuZGVyUGlwZWxpbmUuaCIKICNpbmNsdWRlIDxXZWJHUFUvV2ViR1BVLmg+CiAK
QEAgLTM1LDYgKzMzLDcgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRU
b0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBSZW5kZXJQaXBlbGluZUltcGwgZmluYWwgOiBwdWJs
aWMgUmVuZGVyUGlwZWxpbmUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIHN0YXRpYyBSZWY8UmVuZGVyUGlwZWxpbmVJbXBsPiBjcmVhdGUoV0dQVVJlbmRlclBp
cGVsaW5lIHJlbmRlclBpcGVsaW5lLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRv
QmFja2luZ0NvbnRleHQpCiAgICAgewpAQCAtNjQsNSArNjMsMyBAQCBwcml2YXRlOgogfTsKIAog
fSAvLyBuYW1lc3BhY2UgUEFMOjpXZWJHUFUKLQotI2VuZGlmIC8vIEhBVkUoV0VCR1BVX0lNUExF
TUVOVEFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVTYW1wbGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVNhbXBsZXJJbXBsLmNwcAppbmRleCA5YzYxOTkw
OWFhZGVkYTg4NmE0YTUwM2ZlNjEwODRiNjFjMjFlOWMzLi5mZTdhODIzMmExMzEyY2EyOTEwNTJl
OTA1MjVkZjNjMTAwNWQ1ZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dy
YXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVNhbXBsZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVNhbXBsZXJJbXBsLmNwcApA
QCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkdQVVNh
bXBsZXJJbXBsLmgiCiAKLSNpZiBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKLQogI2luY2x1
ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8V2ViR1BVL1dl
YkdQVUV4dC5oPgogCkBAIC01MCw1ICs0OCwzIEBAIHZvaWQgU2FtcGxlckltcGw6OnNldExhYmVs
SW50ZXJuYWwoY29uc3QgU3RyaW5nJiBsYWJlbCkKIH0KIAogfSAvLyBuYW1lc3BhY2UgUEFMOjpX
ZWJHUFUKLQotI2VuZGlmIC8vIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVTYW1w
bGVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9X
ZWJHUFVTYW1wbGVySW1wbC5oCmluZGV4IGFmNDM2Y2MwNmY2ZjA2MDEwZDljODJjZjExOGU2MmE0
MGMxMzgwOWEuLjY0OWI3Y2UwZGNjOGQwYmQ1OTU2ZmVjYzFmZmQ4YmEyN2VmMzE5NWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BV
U2FtcGxlckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQ
VS9JbXBsL1dlYkdQVVNhbXBsZXJJbXBsLmgKQEAgLTI1LDggKzI1LDYgQEAKIAogI3ByYWdtYSBv
bmNlCiAKLSNpZiBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKLQogI2luY2x1ZGUgIldlYkdQ
VVNhbXBsZXIuaCIKICNpbmNsdWRlIDxXZWJHUFUvV2ViR1BVLmg+CiAKQEAgLTM1LDYgKzMzLDcg
QEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0
OwogCiBjbGFzcyBTYW1wbGVySW1wbCBmaW5hbCA6IHB1YmxpYyBTYW1wbGVyIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFNhbXBsZXJJbXBs
PiBjcmVhdGUoV0dQVVNhbXBsZXIgc2FtcGxlciwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNv
bnZlcnRUb0JhY2tpbmdDb250ZXh0KQogICAgIHsKQEAgLTYyLDUgKzYxLDMgQEAgcHJpdmF0ZToK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBIQVZFKFdFQkdQ
VV9JTVBMRU1FTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3Jh
cGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVU2hhZGVyTW9kdWxlSW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVNoYWRlck1vZHVsZUltcGwu
Y3BwCmluZGV4IGI3YzZkMjVjMGVjOWVjNTAzNDgxODMzZjNjMTdhY2RmZTkyM2U5ZTkuLjAzZWYx
ZWFmMjJkMTAxZmI4YzEzNTRkM2VkZmUwOWEyOTZkZGEyZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVU2hhZGVyTW9kdWxlSW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9X
ZWJHUFVTaGFkZXJNb2R1bGVJbXBsLmNwcApAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIldlYkdQVVNoYWRlck1vZHVsZUltcGwuaCIKIAotI2lmIEhBVkUo
V0VCR1BVX0lNUExFTUVOVEFUSU9OKQotCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2lu
Z0NvbnRleHQuaCIKICNpbmNsdWRlIDxXZWJHUFUvV2ViR1BVRXh0Lmg+CiAKQEAgLTU0LDUgKzUy
LDMgQEAgdm9pZCBTaGFkZXJNb2R1bGVJbXBsOjpzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmlu
ZyYgbGFiZWwpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBI
QVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVU2hhZGVyTW9kdWxlSW1wbC5oIGIvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVTaGFkZXJNb2R1
bGVJbXBsLmgKaW5kZXggMjAxNTZkZWM2YTFjODY5YzY4MWI3NWRiMDg1YzIxZWY2YjVmYTY2NC4u
NjViNWJhNmMxNmNkNDBhZDE2NGEyNmNkMzg3ZWViYmNkNWQwOTI1NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVTaGFkZXJNb2R1
bGVJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1w
bC9XZWJHUFVTaGFkZXJNb2R1bGVJbXBsLmgKQEAgLTI1LDggKzI1LDYgQEAKIAogI3ByYWdtYSBv
bmNlCiAKLSNpZiBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKLQogI2luY2x1ZGUgIldlYkdQ
VVNoYWRlck1vZHVsZS5oIgogI2luY2x1ZGUgPFdlYkdQVS9XZWJHUFUuaD4KIApAQCAtMzUsNiAr
MzMsNyBAQCBuYW1lc3BhY2UgUEFMOjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFja2luZ0Nv
bnRleHQ7CiAKIGNsYXNzIFNoYWRlck1vZHVsZUltcGwgZmluYWwgOiBwdWJsaWMgU2hhZGVyTW9k
dWxlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UmVmPFNoYWRlck1vZHVsZUltcGw+IGNyZWF0ZShXR1BVU2hhZGVyTW9kdWxlIHNoYWRlck1vZHVs
ZSwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQogICAg
IHsKQEAgLTY0LDUgKzYzLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFBBTDo6
V2ViR1BVCi0KLSNlbmRpZiAvLyBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVVGV4
dHVyZUltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1w
bC9XZWJHUFVUZXh0dXJlSW1wbC5jcHAKaW5kZXggNDA3NzU2YjQ0NzFjZDE0OGJlYzY0MzkwYzkw
NjNkNjc0ODdkMTlkYi4uYWU2MGNiNGYzMGFhNTViMzVhZWNkYTFiNzgxMGRkNjg0YTBjMzkwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9X
ZWJHUFVUZXh0dXJlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGlj
cy9XZWJHUFUvSW1wbC9XZWJHUFVUZXh0dXJlSW1wbC5jcHAKQEAgLTI2LDggKzI2LDYgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJHUFVUZXh0dXJlSW1wbC5oIgogCi0jaWYg
SEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCi0KICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9C
YWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIldlYkdQVVRleHR1cmVWaWV3LmgiCiAjaW5jbHVk
ZSAiV2ViR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yLmgiCkBAIC05MCw1ICs4OCwzIEBAIHZvaWQg
VGV4dHVyZUltcGw6OnNldExhYmVsSW50ZXJuYWwoY29uc3QgU3RyaW5nJiBsYWJlbCkKIH0KIAog
fSAvLyBuYW1lc3BhY2UgUEFMOjpXZWJHUFUKLQotI2VuZGlmIC8vIEhBVkUoV0VCR1BVX0lNUExF
TUVOVEFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVUZXh0dXJlSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9n
cmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVUZXh0dXJlSW1wbC5oCmluZGV4IDMzODNlYTEzNjk0
Y2M5ZjA3OTQ1MzBlMDhiMGIyYzI0YTU2Y2Q4YTAuLmVlNTJlNzU5YzBjN2JlNWRmNDIwYmQzZTBh
YmQ1ODc1YTkyMzhiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhp
Y3MvV2ViR1BVL0ltcGwvV2ViR1BVVGV4dHVyZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVRleHR1cmVJbXBsLmgKQEAgLTI1LDgg
KzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElP
TikKLQogI2luY2x1ZGUgIldlYkdQVUludGVncmFsVHlwZXMuaCIKICNpbmNsdWRlICJXZWJHUFVU
ZXh0dXJlLmgiCiAjaW5jbHVkZSAiV2ViR1BVVGV4dHVyZURpbWVuc2lvbi5oIgpAQCAtMzgsNiAr
MzYsNyBAQCBuYW1lc3BhY2UgUEFMOjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFja2luZ0Nv
bnRleHQ7CiAKIGNsYXNzIFRleHR1cmVJbXBsIGZpbmFsIDogcHVibGljIFRleHR1cmUgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8VGV4dHVy
ZUltcGw+IGNyZWF0ZShXR1BVVGV4dHVyZSB0ZXh0dXJlLCBUZXh0dXJlRm9ybWF0IGZvcm1hdCwg
VGV4dHVyZURpbWVuc2lvbiBkaW1lbnNpb24sIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252
ZXJ0VG9CYWNraW5nQ29udGV4dCkKICAgICB7CkBAIC03Miw1ICs3MSwzIEBAIHByaXZhdGU6CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBQQUw6OldlYkdQVQotCi0jZW5kaWYgLy8gSEFWRShXRUJHUFVf
SU1QTEVNRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBo
aWNzL1dlYkdQVS9JbXBsL1dlYkdQVVRleHR1cmVWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVRleHR1cmVWaWV3SW1wbC5jcHAK
aW5kZXggYTE4ODgxM2E4ZTE4YTA4OTUwM2FjOTg2OThlNWNlNDE4NTZhZGQwYi4uYmYyN2M1Zjcw
ZjljYmVlYzExZTIwZTU3MWJhYmM4Njc5NjlhZjE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVUZXh0dXJlVmlld0ltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BV
VGV4dHVyZVZpZXdJbXBsLmNwcApAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIldlYkdQVVRleHR1cmVWaWV3SW1wbC5oIgogCi0jaWYgSEFWRShXRUJHUFVf
SU1QTEVNRU5UQVRJT04pCi0KICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4
dC5oIgogI2luY2x1ZGUgPFdlYkdQVS9XZWJHUFVFeHQuaD4KIApAQCAtNTAsNSArNDgsMyBAQCB2
b2lkIFRleHR1cmVWaWV3SW1wbDo6c2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmIGxhYmVs
KQogfQogCiB9IC8vIG5hbWVzcGFjZSBQQUw6OldlYkdQVQotCi0jZW5kaWYgLy8gSEFWRShXRUJH
UFVfSU1QTEVNRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dy
YXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVRleHR1cmVWaWV3SW1wbC5oIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVUZXh0dXJlVmlld0ltcGwuaApp
bmRleCA2ZDg1NjgzMDg3ZGE2MTdlMTYzZWI4NWNmMzVlODE2NjhjNWVmYzU2Li45NDc4ZGQ0Mzk0
ZDgzOTgyNmY3NjUzZmVmYTk0OTk5MmRhMjA0NzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVRleHR1cmVWaWV3SW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVVGV4
dHVyZVZpZXdJbXBsLmgKQEAgLTI1LDggKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBI
QVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKLQogI2luY2x1ZGUgIldlYkdQVVRleHR1cmVWaWV3
LmgiCiAjaW5jbHVkZSA8V2ViR1BVL1dlYkdQVS5oPgogCkBAIC0zNSw2ICszMyw3IEBAIG5hbWVz
cGFjZSBQQUw6OldlYkdQVSB7CiBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xh
c3MgVGV4dHVyZVZpZXdJbXBsIGZpbmFsIDogcHVibGljIFRleHR1cmVWaWV3IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFRleHR1cmVWaWV3
SW1wbD4gY3JlYXRlKFdHUFVUZXh0dXJlVmlldyB0ZXh0dXJlVmlldywgQ29udmVydFRvQmFja2lu
Z0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQogICAgIHsKQEAgLTYyLDUgKzYxLDMg
QEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAv
LyBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRleCBj
MTNmNmNmOWQ2ZTE3ODdlYTYwNTg5ZmU0NmEyZTE3N2Q5Mzc0ODFkLi4yMmIwMGRkOTRkYWZhZjI1
NTE4ODk5OTk2NmYxZjNiZmYzNDAwNDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCkBAIC01NDYs
NiArNTQ2LDExIEBAIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gQ2hyb21lOjpjcmVhdGVHcmFw
aGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHCiB9CiAjZW5kaWYKIAorUmVmUHRy
PFBBTDo6V2ViR1BVOjpHUFU+IENocm9tZTo6Y3JlYXRlR1BVRm9yV2ViR1BVKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9jbGllbnQuY3JlYXRlR1BVRm9yV2ViR1BVKCk7Cit9CisKIFBsYXRmb3Jt
RGlzcGxheUlEIENocm9tZTo6ZGlzcGxheUlEKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wYWdl
LmRpc3BsYXlJRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKaW5kZXggMzcyMTgyZmVjNjIwZmVkOWRmZTcz
ZGE4OTIyNDZhZjkxM2M1NTMzZS4uMTI0MzljMTBjYzNmYzI2Mjg0OWM3NzhmZWE2OTZlOGZkNDI5
MzU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCkBAIC0zMiw2ICszMiwxMCBAQAogT0JKQ19DTEFTUyBO
U1ZpZXc7CiAjZW5kaWYKIAorbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKK2NsYXNzIEdQVTsKK30K
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDaHJvbWVDbGllbnQ7CkBAIC05MSw2ICs5
NSw4IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZUdyYXBo
aWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpIGNvbnN0IG92
ZXJyaWRlOwogI2VuZGlmCiAKKyAgICBSZWZQdHI8UEFMOjpXZWJHUFU6OkdQVT4gY3JlYXRlR1BV
Rm9yV2ViR1BVKCkgY29uc3Q7CisKICAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBj
b25zdCBvdmVycmlkZTsKICAgICB2b2lkIHdpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURp
c3BsYXlJRCwgc3RkOjpvcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+KSBvdmVycmlkZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggZjIzOTE0NTcwNmQwYjE5MDU0MTBhZDhlNjZj
ZmU5OTAwY2RjNzZlZS4uZjExNjQzOTBiMzhhZjgxMzA5MjdiNWYzMzFlMzNiMGY4MWE5NDBmMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVk
ZSAiU2VhcmNoUG9wdXBNZW51LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUtleWJvYXJkVUlNb2RlLmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29sZVR5cGVzLmg+CisjaW5jbHVkZSA8cGFs
L2dyYXBoaWNzL1dlYkdQVS9XZWJHUFUuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgog
I2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CkBAIC0zNTYsNiArMzU3LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgUmVmUHRyPEdyYXBo
aWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMmLCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCkgY29uc3QgeyByZXR1
cm4gbnVsbHB0cjsgfQogI2VuZGlmCiAKKyAgICB2aXJ0dWFsIFJlZlB0cjxQQUw6OldlYkdQVTo6
R1BVPiBjcmVhdGVHUFVGb3JXZWJHUFUoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CisKICAg
ICAvLyBQYXNzIG51bGxwdHIgYXMgdGhlIEdyYXBoaWNzTGF5ZXIgdG8gZGV0YXRjaCB0aGUgcm9v
dCBsYXllci4KICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUm
LCBHcmFwaGljc0xheWVyKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hWaWV3T3Zlcmxh
eUdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllciopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9y
LmNwcAppbmRleCA2ZjE5YjJlYjNiZTQ3OTg2NWU1YzU0NGVkMDQ1Y2U0N2M0ZmQxM2JjLi5mNWJk
NGIwYTZlZjJiNTBlN2QyNGZjOTFkZGM3NzAwZjllMjAzOWNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZp
Z2F0b3IuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRl
ICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVk
ZSAiR1BVLmgiCiAjaW5jbHVkZSAiR2VvbG9jYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVByb21p
c2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCkBAIC0zNDcsNCArMzQ4
LDI0IEBAIHZvaWQgTmF2aWdhdG9yOjpnZXRTdG9yYWdlVXBkYXRlcygpCiB7CiB9CiAKK0dQVSog
TmF2aWdhdG9yOjpncHUoKQoreworICAgIGlmICghbV9ncHVGb3JXZWJHUFUpIHsKKyAgICAgICAg
YXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgICAgICBpZiAoIWZyYW1lKQorICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGF1dG8qIHBhZ2UgPSBmcmFtZS0+cGFnZSgp
OworICAgICAgICBpZiAoIXBhZ2UpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgYXV0byBncHUgPSBwYWdlLT5jaHJvbWUoKS5jcmVhdGVHUFVGb3JXZWJHUFUoKTsKKyAgICAg
ICAgaWYgKCFncHUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBtX2dw
dUZvcldlYkdQVSA9IEdQVTo6Y3JlYXRlKCk7CisgICAgICAgIG1fZ3B1Rm9yV2ViR1BVLT5zZXRC
YWNraW5nKCpncHUpOworICAgIH0KKworICAgIHJldHVybiBtX2dwdUZvcldlYkdQVS5nZXQoKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9OYXZpZ2F0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgKaW5kZXgg
YmRkMDQ2NDdiZDI4N2I2NjZmNmRhNzM1MTBlNWQzZDJhN2Y1MWZkOC4uYmFjNDliMzQxMWJkYzhj
NmNlZGI1ODJiMzliNjk0MzRhMGQ5NDQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9OYXZpZ2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oCkBAIC02
NCw2ICs2NCw4IEBAIHB1YmxpYzoKICAgICBpbnQgbWF4VG91Y2hQb2ludHMoKSBjb25zdCB7IHJl
dHVybiAwOyB9CiAjZW5kaWYKIAorICAgIEdQVSogZ3B1KCk7CisKIHByaXZhdGU6CiAgICAgdm9p
ZCBzaG93U2hhcmVEYXRhKEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPiwgUmVm
PERlZmVycmVkUHJvbWlzZT4mJik7CiAgICAgZXhwbGljaXQgTmF2aWdhdG9yKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBET01XaW5kb3cmKTsKQEAgLTc2LDUgKzc4LDYgQEAgcHJpdmF0ZToKICAg
ICBtdXRhYmxlIFJlZlB0cjxET01NaW1lVHlwZUFycmF5PiBtX21pbWVUeXBlczsKICAgICBtdXRh
YmxlIFN0cmluZyBtX3VzZXJBZ2VudDsKICAgICBtdXRhYmxlIFN0cmluZyBtX3BsYXRmb3JtOwor
ICAgIFJlZlB0cjxHUFU+IG1fZ3B1Rm9yV2ViR1BVOwogfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZp
Z2F0b3JCYXNlLmgKaW5kZXggYjUxMjJhNGJkYWUzMDY5YWViMzdmZGFiYzFhNmQ2NjRhMmM0NmNl
ZS4uZDVjYjU2ZTMzN2FhNGE0ZDRhYTI2NGFlYTcyZjFjNjQ3YWRjY2EwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9OYXZpZ2F0b3JCYXNlLmgKQEAgLTYzLDcgKzYzLDYgQEAgcHVibGljOgogCiAgICAgU3Rv
cmFnZU1hbmFnZXImIHN0b3JhZ2UoKTsKICAgICBXZWJMb2NrTWFuYWdlciYgbG9ja3MoKTsKLSAg
ICBHUFUmIGdwdSgpIHsgcmV0dXJuICptX2dwdUZvcldlYkdQVTsgfTsKIAogcHJvdGVjdGVkOgog
ICAgIGV4cGxpY2l0IE5hdmlnYXRvckJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwpAQCAt
NzEsNyArNzAsNiBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIFJlZlB0cjxTdG9yYWdlTWFu
YWdlcj4gbV9zdG9yYWdlTWFuYWdlcjsKICAgICBSZWZQdHI8V2ViTG9ja01hbmFnZXI+IG1fd2Vi
TG9ja01hbmFnZXI7Ci0gICAgUmVmUHRyPEdQVT4gbV9ncHVGb3JXZWJHUFU7CiAKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1dvcmtlck5hdmlnYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dvcmtlck5hdmln
YXRvci5jcHAKaW5kZXggNTVkZTAwNGIwMDA0NGRkM2RhZDM0NTI3NzM0ODBjZjhhZTFhZTQ1Ny4u
MDA0MTI0ZmRiYjJmN2VjZDVkODE3NTMyMDVkOGU1YzQ1OTljYzUxYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9Xb3JrZXJOYXZpZ2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvV29ya2VyTmF2aWdhdG9yLmNwcApAQCAtMjcsNiArMjcsOCBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIldvcmtlck5hdmlnYXRvci5oIgogCisjaW5jbHVkZSAiR1BVLmgi
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV29ya2VyTmF2aWdhdG9yOjpXb3JrZXJOYXZpZ2F0
b3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB1c2VyQWdl
bnQsIGJvb2wgaXNPbmxpbmUpCkBAIC00Niw0ICs0OCwxNCBAQCBib29sIFdvcmtlck5hdmlnYXRv
cjo6b25MaW5lKCkgY29uc3QKICAgICByZXR1cm4gbV9pc09ubGluZTsKIH0KIAorR1BVKiBXb3Jr
ZXJOYXZpZ2F0b3I6OmdwdSgpCit7CisgICAgaWYgKCFtX2dwdUZvcldlYkdQVSkgeworICAgICAg
ICAvLyBGSVhNRTogU3RhcnQgdGhlIHByb2Nlc3Mgb2Ygc2V0dGluZyB0aGUgYmFja2luZy4KKyAg
ICAgICAgbV9ncHVGb3JXZWJHUFUgPSBHUFU6OmNyZWF0ZSgpOworICAgIH0KKworICAgIHJldHVy
biBtX2dwdUZvcldlYkdQVS5nZXQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Xb3JrZXJOYXZpZ2F0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvV29ya2VyTmF2aWdhdG9yLmgKaW5kZXggNDVlY2Y2NmM3ZDIwYzgyYmQ1MmNm
NTVkMWZiOTRhOGMzMmI0YjQ1MC4uYzU3YmZmNGFlOTg0MWI1ZTU5ZTE2NWM4NjlhMzVmYzBhZDc1
NjFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Xb3JrZXJOYXZpZ2F0b3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dvcmtlck5hdmlnYXRvci5oCkBAIC0zOSwxMSArMzks
MTQgQEAgcHVibGljOgogICAgIGJvb2wgb25MaW5lKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBz
ZXRJc09ubGluZShib29sIGlzT25saW5lKSB7IG1faXNPbmxpbmUgPSBpc09ubGluZTsgfQogCisg
ICAgR1BVKiBncHUoKTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXb3JrZXJOYXZpZ2F0b3Io
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYsIGJvb2wgaXNPbmxpbmUpOwog
CiAgICAgU3RyaW5nIG1fdXNlckFnZW50OwogICAgIGJvb2wgbV9pc09ubGluZTsKKyAgICBSZWZQ
dHI8R1BVPiBtX2dwdUZvcldlYkdQVTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0L0NN
YWtlTGlzdHMudHh0CmluZGV4IGMzMjk3NGE4NGIyYTY2OTQwNzM4ZjBkNGYzYzJiZjllNjEwYmMw
MmIuLjBkY2ZlZDQ1ZTE5Y2Y3YmYyMzFmZjBhMjViOWJjMjBiODkxNWM4ZDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9DTWFrZUxp
c3RzLnR4dApAQCAtMjYxLDYgKzI2MSw4IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMK
ICAgICBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
CiAgICAgV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
CiAKKyAgICBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVUHJveHkKKwog
ICAgIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5lcgogICAg
IFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZQogICAgIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL01lZGlhU291cmNlUHJpdmF0ZVJlbW90ZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9Db25maWd1cmF0aW9ucy9CYXNlVGFyZ2V0LnhjY29uZmlnIGIvU291cmNlL1dl
YktpdC9Db25maWd1cmF0aW9ucy9CYXNlVGFyZ2V0LnhjY29uZmlnCmluZGV4IDIwMjE1ODViYjBj
NGFlYWNlMTcxYWIyZWI5N2UzZTFlNmJmMGI3OTUuLjNiMWMyYzM2MTkyODUzZDM3YjkwODEzN2Fm
Y2E4ZGJkZjYwNWQyNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ29uZmlndXJhdGlvbnMv
QmFzZVRhcmdldC54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL0Jh
c2VUYXJnZXQueGNjb25maWcKQEAgLTQ3LDcgKzQ3LDcgQEAgR0NDX1BSRVBST0NFU1NPUl9ERUZJ
TklUSU9OUyA9ICQoREVCVUdfREVGSU5FUykgJChXS19FTkFCTEVfRVhQRVJJTUVOVEFMX0ZFQVRV
UkUKIFdFQktJVEFERElUSU9OU19IRUFERVJfU0VBUkNIX1BBVEhTID0gJChCVUlMVF9QUk9EVUNU
U19ESVIpL3Vzci9sb2NhbC9pbmNsdWRlL1dlYktpdEFkZGl0aW9ucyAkKFNES1JPT1QpL3Vzci9s
b2NhbC9pbmNsdWRlL1dlYktpdEFkZGl0aW9uczsKIExJQldFQlJUQ19IRUFERVJfU0VBUkNIX1BB
VEhTID0gJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRlL3dlYnJ0YyAkKFNE
S1JPT1QpL3Vzci9sb2NhbC9pbmNsdWRlL3dlYnJ0YzsKIAotSEVBREVSX1NFQVJDSF9QQVRIUyA9
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5jbHVkZSAiJChXRUJDT1JFX1BSSVZB
VEVfSEVBREVSU19ESVIpL0ZvcndhcmRpbmdIZWFkZXJzIiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0MiAkKFdFQktJVEFERElUSU9OU19IRUFERVJfU0VBUkNIX1BB
VEhTKSAkKExJQldFQlJUQ19IRUFERVJfU0VBUkNIX1BBVEhTKSAkKFNSQ1JPT1QpICQoSEVBREVS
X1NFQVJDSF9QQVRIUyk7CitIRUFERVJfU0VBUkNIX1BBVEhTID0gJChCVUlMVF9QUk9EVUNUU19E
SVIpL3Vzci9sb2NhbC9pbmNsdWRlICIkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvRm9y
d2FyZGluZ0hlYWRlcnMiICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyICIkKEJVSUxUX1BST0RVQ1RTX0RJUikvdXNyL2xvY2FsL2luY2x1ZGUvcGFsL2dyYXBoaWNz
L1dlYkdQVSIgJChXRUJLSVRBRERJVElPTlNfSEVBREVSX1NFQVJDSF9QQVRIUykgJChMSUJXRUJS
VENfSEVBREVSX1NFQVJDSF9QQVRIUykgJChTUkNST09UKSAkKEhFQURFUl9TRUFSQ0hfUEFUSFMp
OwogCiBPVEhFUl9DRkxBR1MgPSAkKGluaGVyaXRlZCkgLWlmcmFtZXdvcmsgJChTREtST09UKSQo
U1lTVEVNX0xJQlJBUllfRElSKS9Qcml2YXRlRnJhbWV3b3JrczsKIE9USEVSX0NQTFVTUExVU0ZM
QUdTID0gJChPVEhFUl9DRkxBR1MpIC1pc3lzdGVtICQoU0RLUk9PVCkvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9TeXN0ZW0uZnJhbWV3b3JrL1ByaXZhdGVIZWFkZXJzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IDc5OWFkNzViMmExYWIy
MTBkMDgxZDU5ZmQ1YjRiMDJkOGI2ZGFlYjQuLmE3ODk3Yjk2MWEzOWRhZjkyN2M1NGQxMmVmYTNj
ODk3MTQ5N2IwMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5w
dXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0Lnhj
ZmlsZWxpc3QKQEAgLTE3NCw2ICsxNzQsNyBAQCAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0Z1
bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIp
L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pF
Q1RfRElSKS9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFVQcm94eS5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRp
YVNvdXJjZVByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5lci5tZXNzYWdlcy5pbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBi
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggYTY1
ZmMzNjE4NGNmZjhmNzc1MmQ2ODUyNzk4NjE1NGI2YWY4MDFjNC4uOTNhNjE0NmQ2YjEzOWNiOGEx
NmExNzFiYjc3ZDQ0YmQzYjU4YjY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVk
U291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3Vy
Y2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0yNDIsNiArMjQyLDkgQEAgJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlTWVzc2Fn
ZXNSZXBsaWUKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1Jl
bW90ZUdQVU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1JlbW90ZUdQVU1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdQVU1lc3NhZ2VzUmVwbGllcy5oCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHUFVQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyL1JlbW90ZUdQVVByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlR1BVUHJveHlNZXNzYWdlc1JlcGxpZXMuaAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMTWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBk
ZGU1YzYzZmUzZjRiMzE1Mjk3ZGI0YjY4NDg5YzI5ZGU1YmJhNDVjLi40NTc0Mzg2NWE0YWM4MzJk
M2U1ZGJkNGFmZDQzOGJkNzUzMmNkOTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBA
IC0xODYsNiArMTg2LDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJV2ViUHJvY2Vzcy9HUFUv
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eSBcCiAJV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eSBcCisJV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZUdQVVByb3h5IFwKIAlXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzIFwK
IAlXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIFwKIAlXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmlu
ZGV4IDUyYWU4ODE5MzcxYTNlZGQ2MGNkNzIwY2QwODRiYjNjODU3ZmE3Y2QuLjVlYzk3M2ExYjU3
MDM4MmU5MTgyNDNiYWJiY2UwYWVkZjA0YzZhYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTQzLDYgKzQz
LDcgQEAKICNpbmNsdWRlICJSZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVuZXJQcm94eS5oIgogI2lu
Y2x1ZGUgIlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFu
YWdlci5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50
ZXJuYWxVbml0TWFuYWdlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlR1BVLmgiCiAjaW5j
bHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHlNZXNzYWdlcy5oIgpAQCAtNjMsMTAgKzY0LDEyIEBACiAjaW5jbHVkZSAiUmVt
b3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgIldlYkNvcmVB
cmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgorI2luY2x1ZGUgIldlYkdQ
VU9iamVjdEhlYXAuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0xvZ0luaXRpYWxpemF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm93UGxheWluZ01h
bmFnZXIuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVSW1wbC5o
PgogI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC01
NTUsNiArNTU4LDE5IEBAIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVsZWFzZUdy
YXBoaWNzQ29udGV4dEdMRm9yVGVzdGluZyhHcmFwaGljc0NvbnRlCiB9CiAjZW5kaWYKIAordm9p
ZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVSZW1vdGVHUFUoV2ViR1BVSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllciwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtKQorewor
ICAgIGF1dG8gaXQgPSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAuZmluZChyZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllcik7CisgICAgaWYgKGl0ID09IG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZE1hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8qIHJlbmRlcmluZ0JhY2tlbmQg
PSBpdC0+dmFsdWUuZ2V0KCk7CisKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmVtb3RlR1BVTWFw
LmVuc3VyZShpZGVudGlmaWVyLCBbJl0oKSB7CisgICAgICAgIHJldHVybiBJUEM6OlNjb3BlZEFj
dGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUgeyBSZW1vdGVHUFU6OmNyZWF0ZShpZGVudGlmaWVyLCAq
dGhpcywgKnJlbmRlcmluZ0JhY2tlbmQsIFdURk1vdmUoc3RyZWFtKSkgfTsKKyAgICB9KTsKKyAg
ICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOworfQorCiB2
b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNsZWFyTm93UGxheWluZ0luZm8oKQogewog
ICAgIG1faXNBY3RpdmVOb3dQbGF5aW5nUHJvY2VzcyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggYWU3
OTUwNTI1ODYwZGUzY2Y2YTJiMTc4OGZlMzVhNWVhYmRhNTY3ZC4uZTQzY2Y3NjQxZmRjNjk5YTQ5
ZDZlNzQ3NjUxMjdjYzg3NDBkYTM3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0zMiw5ICszMiwxMSBAQAogI2lu
Y2x1ZGUgIk1lc3NhZ2VSZWNlaXZlck1hcC5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvSGFyZHdh
cmVMaXN0ZW5lcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb1Nlc3Npb25JZGVu
dGlmaWVyLmgiCisjaW5jbHVkZSAiUmVtb3RlR1BVLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVtb3Rl
Q29tbWFuZExpc3RlbmVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5o
IgorI2luY2x1ZGUgIldlYkdQVUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0xpYldl
YlJUQ0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vd1BsYXlpbmdNYW5hZ2VyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgpAQCAtMjEyLDYgKzIxNCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgUmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsK
ICAgICB2b2lkIHJlbGVhc2VHcmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOwogI2VuZGlmCisgICAgdm9pZCBjcmVhdGVSZW1vdGVHUFUoV2ViR1BVSWRlbnRpZmll
ciwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
ciYmKTsKIAogICAgIHZvaWQgY2xlYXJOb3dQbGF5aW5nSW5mbygpOwogICAgIHZvaWQgc2V0Tm93
UGxheWluZ0luZm8oV2ViQ29yZTo6Tm93UGxheWluZ0luZm8mJik7CkBAIC0zMDgsNiArMzExLDgg
QEAgcHJpdmF0ZToKICAgICB1c2luZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcCA9IEhhc2hN
YXA8R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VS
ZWNlaXZlUXVldWU8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+PjsKICAgICBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTE1hcCBtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwOwogI2VuZGlmCisgICAg
dXNpbmcgUmVtb3RlR1BVTWFwID0gSGFzaE1hcDxXZWJHUFVJZGVudGlmaWVyLCBJUEM6OlNjb3Bl
ZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlR1BVPj47CisgICAgUmVtb3RlR1BVTWFw
IG1fcmVtb3RlR1BVTWFwOwogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4gbV9jZG1GYWN0b3J5UHJveHk7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMzkxYzE5ZmU5ZDg1MTRmNzRmYzFh
NDM4ODY0OTBiNmFhZDNhNWFlNS4uOTE5YjVkMzBlMTBmZTUwYTliMGE2OWQyOTlhMDZlODMwYTU4
OTRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTI5LDYgKzI5LDcgQEAgbWVz
c2FnZXMgLT4gR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBXYW50c0Rpc3BhdGNoTWVzc2FnZSB7
CiAgICAgdm9pZCBDcmVhdGVHcmFwaGljc0NvbnRleHRHTChzdHJ1Y3QgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIFdlYktpdDo6R3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgV2ViS2l0OjpSZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgSVBDOjpTdHJl
YW1Db25uZWN0aW9uQnVmZmVyIHN0cmVhbSkKICAgICB2b2lkIFJlbGVhc2VHcmFwaGljc0NvbnRl
eHRHTChXZWJLaXQ6OkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpCiAjZW5kaWYKKyAgICB2b2lkIENyZWF0ZVJlbW90ZUdQVShXZWJLaXQ6Oldl
YkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRp
ZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVm
ZmVyIHN0cmVhbSkKICAgICB2b2lkIENsZWFyTm93UGxheWluZ0luZm8oKQogICAgIHZvaWQgU2V0
Tm93UGxheWluZ0luZm8oc3RydWN0IFdlYkNvcmU6Ok5vd1BsYXlpbmdJbmZvIG5vd1BsYXlpbmdJ
bmZvKQogI2lmIFVTRShBVURJT19TRVNTSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVBZGFwdGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQWRhcHRlci5jcHAKaW5kZXggNDFi
ZGYxNjUyMDZiMDk2OTlhYjE1MzYyMWFkM2MyZWUxZTg2ODg0OC4uNTljMGQxN2Y2NDBjMzc0NjEw
NTk1MGIxYzBhODI0MmFjMTIzZWI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVBZGFwdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUFkYXB0ZXIuY3BwCkBAIC0zMSw3ICsz
MSw2IEBACiAjaW5jbHVkZSAiUmVtb3RlRGV2aWNlLmgiCiAjaW5jbHVkZSAiV2ViR1BVRGV2aWNl
RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKLSNpbmNsdWRlICJX
ZWJHUFVPYmplY3RSZWdpc3RyeS5oIgogI2luY2x1ZGUgIldlYkdQVVN1cHBvcnRlZEZlYXR1cmVz
LmgiCiAjaW5jbHVkZSAiV2ViR1BVU3VwcG9ydGVkTGltaXRzLmgiCiAjaW5jbHVkZSA8cGFsL2dy
YXBoaWNzL1dlYkdQVS9XZWJHUFVBZGFwdGVyLmg+CkBAIC0zOSwzNCArMzgsMjkgQEAKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90ZUFkYXB0ZXI6OlJlbW90ZUFkYXB0ZXIoUEFMOjpXZWJH
UFU6OkFkYXB0ZXImIGFkYXB0ZXIsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lz
dHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRl
bnRpZmllcikKK1JlbW90ZUFkYXB0ZXI6OlJlbW90ZUFkYXB0ZXIoUEFMOjpXZWJHUFU6OkFkYXB0
ZXImIGFkYXB0ZXIsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRp
ZmllciBpZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5nKGFkYXB0ZXIpCi0gICAgLCBtX29iamVj
dFJlZ2lzdHJ5KG9iamVjdFJlZ2lzdHJ5KQogICAgICwgbV9vYmplY3RIZWFwKG9iamVjdEhlYXAp
CiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKLSAgICBtX29iamVjdFJlZ2lzdHJ5
LmFkZE9iamVjdChtX2lkZW50aWZpZXIsIG1fYmFja2luZyk7CiB9CiAKLVJlbW90ZUFkYXB0ZXI6
On5SZW1vdGVBZGFwdGVyKCkKLXsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdCht
X2lkZW50aWZpZXIpOwotfQorUmVtb3RlQWRhcHRlcjo6flJlbW90ZUFkYXB0ZXIoKSA9IGRlZmF1
bHQ7CiAKIHZvaWQgUmVtb3RlQWRhcHRlcjo6cmVxdWVzdERldmljZShjb25zdCBXZWJHUFU6OkRl
dmljZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwg
V1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXMmJiwg
V2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHMmJik+JiYgY2FsbGJhY2spCiB7Ci0gICAgYXV0byBjb252
ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoZGVz
Y3JpcHRvcik7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RIZWFwLmNv
bnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKICAgICBBU1NFUlQoY29udmVydGVkRGVzY3Jp
cHRvcik7CiAgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKSB7CiAgICAgICAgIGNhbGxiYWNr
KHsgeyB9IH0sIHsgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2JhY2tpbmct
PnJlcXVlc3REZXZpY2UoKmNvbnZlcnRlZERlc2NyaXB0b3IsIFtjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spLCB3ZWFrT2JqZWN0SGVhcCA9IFdlYWtQdHI8V2ViR1BVOjpPYmplY3RIZWFwPiht
X29iamVjdEhlYXApLCBvYmplY3RSZWdpc3RyeSA9IG1fb2JqZWN0UmVnaXN0cnksIGlkZW50aWZp
ZXJdIChSZWY8UEFMOjpXZWJHUFU6OkRldmljZT4mJiBkZXZpY2UpIG11dGFibGUgeworICAgIG1f
YmFja2luZy0+cmVxdWVzdERldmljZSgqY29udmVydGVkRGVzY3JpcHRvciwgW2NhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayksIHdlYWtPYmplY3RIZWFwID0gV2Vha1B0cjxXZWJHUFU6Ok9iamVj
dEhlYXA+KG1fb2JqZWN0SGVhcCksIGlkZW50aWZpZXIgPSBtX2lkZW50aWZpZXJdIChSZWY8UEFM
OjpXZWJHUFU6OkRldmljZT4mJiBkZXZpY2UpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtP
YmplY3RIZWFwKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBhdXRvIHJlbW90ZURldmlj
ZSA9IFJlbW90ZURldmljZTo6Y3JlYXRlKGRldmljZSwgb2JqZWN0UmVnaXN0cnksICp3ZWFrT2Jq
ZWN0SGVhcCwgaWRlbnRpZmllcik7Ci0gICAgICAgIHdlYWtPYmplY3RIZWFwLT5hZGRPYmplY3Qo
cmVtb3RlRGV2aWNlKTsKKyAgICAgICAgYXV0byByZW1vdGVEZXZpY2UgPSBSZW1vdGVEZXZpY2U6
OmNyZWF0ZShkZXZpY2UsICp3ZWFrT2JqZWN0SGVhcCwgaWRlbnRpZmllcik7CisgICAgICAgIHdl
YWtPYmplY3RIZWFwLT5hZGRPYmplY3QoaWRlbnRpZmllciwgcmVtb3RlRGV2aWNlKTsKICAgICAg
ICAgY29uc3QgYXV0byYgZmVhdHVyZXMgPSBkZXZpY2UtPmZlYXR1cmVzKCk7CiAgICAgICAgIGNv
bnN0IGF1dG8mIGxpbWl0cyA9IGRldmljZS0+bGltaXRzKCk7CiAgICAgICAgIGNhbGxiYWNrKFdl
YkdQVTo6U3VwcG9ydGVkRmVhdHVyZXMgeyBmZWF0dXJlcy5mZWF0dXJlcygpIH0sIFdlYkdQVTo6
U3VwcG9ydGVkTGltaXRzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlQWRhcHRlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVBZGFwdGVyLmgKaW5kZXggMWVhMmMxMDE4NmUxYjZmODhi
MGEzMmNlMDQyNzg1YmZjMjhhZjMyYS4uNzgzMTk4M2I0Mjc1ZjNiMjE3Nzg5MTIyNzNlOTQ1ODVl
MjEyZjI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVBZGFwdGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVBZGFwdGVyLmgKQEAgLTQxLDI0ICs0MSwyNCBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIG5hbWVzcGFjZSBXZWJHUFUgewogc3RydWN0IERldmljZURlc2NyaXB0b3I7CiBj
bGFzcyBPYmplY3RIZWFwOwotY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiBzdHJ1Y3QgU3VwcG9ydGVk
RmVhdHVyZXM7CiBzdHJ1Y3QgU3VwcG9ydGVkTGltaXRzOwogfQogCiBjbGFzcyBSZW1vdGVBZGFw
dGVyIGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZUFkYXB0
ZXI+IGNyZWF0ZShQQUw6OldlYkdQVTo6QWRhcHRlciYgYWRhcHRlciwgV2ViR1BVOjpPYmplY3RS
ZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwg
V2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlQWRhcHRl
cj4gY3JlYXRlKFBBTDo6V2ViR1BVOjpBZGFwdGVyJiBhZGFwdGVyLCBXZWJHUFU6Ok9iamVjdEhl
YXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUFkYXB0ZXIoYWRhcHRlciwgb2JqZWN0UmVn
aXN0cnksIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgUmVtb3RlQWRhcHRlcihhZGFwdGVyLCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CiAg
ICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlQWRhcHRlcigpOwogCi1wcml2YXRlOgotICAgIGZy
aWVuZCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKKyAgICBQQUw6OldlYkdQVTo6QWRhcHRlciYgYmFj
a2luZygpIHsgcmV0dXJuIG1fYmFja2luZzsgfQogCi0gICAgUmVtb3RlQWRhcHRlcihQQUw6Oldl
YkdQVTo6QWRhcHRlciYsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmLCBXZWJHUFU6Ok9iamVjdEhl
YXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKK3ByaXZhdGU6CisgICAgUmVtb3RlQWRhcHRlcihQQUw6
OldlYkdQVTo6QWRhcHRlciYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIp
OwogCiAgICAgUmVtb3RlQWRhcHRlcihjb25zdCBSZW1vdGVBZGFwdGVyJikgPSBkZWxldGU7CiAg
ICAgUmVtb3RlQWRhcHRlcihSZW1vdGVBZGFwdGVyJiYpID0gZGVsZXRlOwpAQCAtNzAsNyArNzAs
NiBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVxdWVzdERldmljZShjb25zdCBXZWJHUFU6OkRldmlj
ZURlc2NyaXB0b3ImLCBXZWJHUFVJZGVudGlmaWVyLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViR1BVOjpTdXBwb3J0ZWRGZWF0dXJlcyYmLCBXZWJHUFU6OlN1cHBvcnRlZExpbWl0cyYm
KT4mJik7CiAKICAgICBSZWY8UEFMOjpXZWJHUFU6OkFkYXB0ZXI+IG1fYmFja2luZzsKLSAgICBX
ZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBtX29iamVjdFJlZ2lzdHJ5OwogICAgIFdlYkdQVTo6T2Jq
ZWN0SGVhcCYgbV9vYmplY3RIZWFwOwogICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVy
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlQmluZEdyb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwLmNwcAppbmRleCAwODVmNDk1Mzg0ZTNlZjNjYzQ0YTUz
MmM1Njg4NWI0MTlmZjQxNzVkLi44NDk1NTJkNDljNjRlYjMzMDQ2NGRlMzg0OTI5ZDJjMDAyN2M3
NDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZUJpbmRHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXAuY3BwCkBAIC0yOSwyNCArMjksMTggQEAKICNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCi0jaW5j
bHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2Vi
R1BVL1dlYkdQVUJpbmRHcm91cC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlQmlu
ZEdyb3VwOjpSZW1vdGVCaW5kR3JvdXAoUEFMOjpXZWJHUFU6OkJpbmRHcm91cCYgYmluZEdyb3Vw
LCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RI
ZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCitSZW1vdGVCaW5k
R3JvdXA6OlJlbW90ZUJpbmRHcm91cChQQUw6OldlYkdQVTo6QmluZEdyb3VwJiBiaW5kR3JvdXAs
IFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyKQogICAgIDogbV9iYWNraW5nKGJpbmRHcm91cCkKLSAgICAsIG1fb2JqZWN0UmVnaXN0cnko
b2JqZWN0UmVnaXN0cnkpCiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkKICAgICAsIG1f
aWRlbnRpZmllcihpZGVudGlmaWVyKQogewotICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0
KG1faWRlbnRpZmllciwgbV9iYWNraW5nKTsKIH0KIAotUmVtb3RlQmluZEdyb3VwOjp+UmVtb3Rl
QmluZEdyb3VwKCkKLXsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdChtX2lkZW50
aWZpZXIpOwotfQorUmVtb3RlQmluZEdyb3VwOjp+UmVtb3RlQmluZEdyb3VwKCkgPSBkZWZhdWx0
OwogCiB2b2lkIFJlbW90ZUJpbmRHcm91cDo6c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZUJpbmRHcm91cC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVCaW5kR3JvdXAuaAppbmRleCBjZTE0MDhjNjdkNTQ4MTJkOWRkNGMxN2U2M2RkMGIwYjI0
NjcwZjVmLi4wY2FlOGFlMTI5MDlhZDY2YTA2MjNhY2NjYWM0YThiZmRlMDYwNzA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRH
cm91cC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlQmluZEdyb3VwLmgKQEAgLTQwLDIyICs0MCwyMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
bmFtZXNwYWNlIFdlYkdQVSB7CiBjbGFzcyBPYmplY3RIZWFwOwotY2xhc3MgT2JqZWN0UmVnaXN0
cnk7CiB9CiAKIGNsYXNzIFJlbW90ZUJpbmRHcm91cCBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVh
bU1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVCaW5kR3JvdXA+IGNyZWF0ZShQQUw6OldlYkdQVTo6Qmlu
ZEdyb3VwJiBiaW5kR3JvdXAsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5
LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRp
ZmllcikKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUJpbmRHcm91cD4gY3JlYXRlKFBBTDo6V2ViR1BV
OjpCaW5kR3JvdXAmIGJpbmRHcm91cCwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBX
ZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBSZW1vdGVCaW5kR3JvdXAoYmluZEdyb3VwLCBvYmplY3RSZWdpc3RyeSwgb2JqZWN0
SGVhcCwgaWRlbnRpZmllcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVC
aW5kR3JvdXAoYmluZEdyb3VwLCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAg
ICAgdmlydHVhbCB+UmVtb3RlQmluZEdyb3VwKCk7CiAKLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNs
YXNzIE9iamVjdFJlZ2lzdHJ5OworICAgIFBBTDo6V2ViR1BVOjpCaW5kR3JvdXAmIGJhY2tpbmco
KSB7IHJldHVybiBtX2JhY2tpbmc7IH0KIAotICAgIFJlbW90ZUJpbmRHcm91cChQQUw6OldlYkdQ
VTo6QmluZEdyb3VwJiwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0SGVh
cCYsIFdlYkdQVUlkZW50aWZpZXIpOworcHJpdmF0ZToKKyAgICBSZW1vdGVCaW5kR3JvdXAoUEFM
OjpXZWJHUFU6OkJpbmRHcm91cCYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZp
ZXIpOwogCiAgICAgUmVtb3RlQmluZEdyb3VwKGNvbnN0IFJlbW90ZUJpbmRHcm91cCYpID0gZGVs
ZXRlOwogICAgIFJlbW90ZUJpbmRHcm91cChSZW1vdGVCaW5kR3JvdXAmJikgPSBkZWxldGU7CkBA
IC02Nyw3ICs2Nyw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7CiAK
ICAgICBSZWY8UEFMOjpXZWJHUFU6OkJpbmRHcm91cD4gbV9iYWNraW5nOwotICAgIFdlYkdQVTo6
T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7CiAgICAgV2ViR1BVOjpPYmplY3RIZWFw
JiBtX29iamVjdEhlYXA7CiAgICAgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVCaW5kR3JvdXBMYXlvdXQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBMYXlvdXQuY3BwCmluZGV4IDBiMTZmZjI5ODdkMTU0MmEz
YWFhMmFlZDA2NDJlZWFmMmU3ZDUxOTIuLmE5YTg4YTI2OGZhNWE5YmNhZWMxMTcwOGYyMTE3MDY5
NzViNzk1MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlQmluZEdyb3VwTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExheW91dC5jcHAKQEAgLTI5LDI0
ICsyOSwxOCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVU9i
amVjdEhlYXAuaCIKLSNpbmNsdWRlICJXZWJHUFVPYmplY3RSZWdpc3RyeS5oIgogI2luY2x1ZGUg
PHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQmluZEdyb3VwTGF5b3V0Lmg+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi1SZW1vdGVCaW5kR3JvdXBMYXlvdXQ6OlJlbW90ZUJpbmRHcm91cExheW91
dChQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0JiBiaW5kR3JvdXBMYXlvdXQsIFdlYkdQVTo6
T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVj
dEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK1JlbW90ZUJpbmRHcm91cExheW91
dDo6UmVtb3RlQmluZEdyb3VwTGF5b3V0KFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXQmIGJp
bmRHcm91cExheW91dCwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2JhY2tpbmcoYmluZEdyb3VwTGF5b3V0KQotICAg
ICwgbV9vYmplY3RSZWdpc3RyeShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChv
YmplY3RIZWFwKQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7Ci0gICAgbV9vYmpl
Y3RSZWdpc3RyeS5hZGRPYmplY3QobV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOwogfQogCi1SZW1v
dGVCaW5kR3JvdXBMYXlvdXQ6On5SZW1vdGVCaW5kR3JvdXBMYXlvdXQoKQotewotICAgIG1fb2Jq
ZWN0UmVnaXN0cnkucmVtb3ZlT2JqZWN0KG1faWRlbnRpZmllcik7Ci19CitSZW1vdGVCaW5kR3Jv
dXBMYXlvdXQ6On5SZW1vdGVCaW5kR3JvdXBMYXlvdXQoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVt
b3RlQmluZEdyb3VwTGF5b3V0OjpzZXRMYWJlbChTdHJpbmcmJiBsYWJlbCkKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdy
b3VwTGF5b3V0LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZUJpbmRHcm91cExheW91dC5oCmluZGV4IDI4ZDBiZTRiYjQzOTA4NzU1YmJmODkzOGVkMjA4
ZTY3ZmRmY2ZjODcuLmRkMjczZWI4YzkwODY4MjEyZWQ2N2U4NjkzMTkwN2Y0YTI5MjY5YzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
QmluZEdyb3VwTGF5b3V0LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBMYXlvdXQuaApAQCAtNDAsMjIgKzQwLDIyIEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIGNsYXNzIE9iamVjdEhlYXA7Ci1j
bGFzcyBPYmplY3RSZWdpc3RyeTsKIH0KIAogY2xhc3MgUmVtb3RlQmluZEdyb3VwTGF5b3V0IGZp
bmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZUJpbmRHcm91cExh
eW91dD4gY3JlYXRlKFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXQmIGJpbmRHcm91cExheW91
dCwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0
SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIHN0YXRp
YyBSZWY8UmVtb3RlQmluZEdyb3VwTGF5b3V0PiBjcmVhdGUoUEFMOjpXZWJHUFU6OkJpbmRHcm91
cExheW91dCYgYmluZEdyb3VwTGF5b3V0LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAs
IFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFJlbW90ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXQsIG9iamVjdFJl
Z2lzdHJ5LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFJlbW90ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXQsIG9iamVjdEhlYXAs
IGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVCaW5kR3JvdXBMYXlv
dXQoKTsKIAotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgT2JqZWN0UmVnaXN0cnk7CisgICAg
UEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dCYgYmFja2luZygpIHsgcmV0dXJuIG1fYmFja2lu
ZzsgfQogCi0gICAgUmVtb3RlQmluZEdyb3VwTGF5b3V0KFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBM
YXlvdXQmLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2Vi
R1BVSWRlbnRpZmllcik7Citwcml2YXRlOgorICAgIFJlbW90ZUJpbmRHcm91cExheW91dChQQUw6
OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRl
bnRpZmllcik7CiAKICAgICBSZW1vdGVCaW5kR3JvdXBMYXlvdXQoY29uc3QgUmVtb3RlQmluZEdy
b3VwTGF5b3V0JikgPSBkZWxldGU7CiAgICAgUmVtb3RlQmluZEdyb3VwTGF5b3V0KFJlbW90ZUJp
bmRHcm91cExheW91dCYmKSA9IGRlbGV0ZTsKQEAgLTY3LDcgKzY3LDYgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6QmluZEdy
b3VwTGF5b3V0PiBtX2JhY2tpbmc7Ci0gICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgbV9vYmpl
Y3RSZWdpc3RyeTsKICAgICBXZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKICAgICBX
ZWJHUFVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZlci5jcHAKaW5kZXgg
YzY2NGIzODM5OThiNzNjMmQ3Y2JjYTMxMmY1OWY5YjdlNGJkMjdkNy4uMTg5M2JhZGJlNGQ1MDVl
NjlkOWVjNWNmOWVjMzUzYTc3YTg3NTY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVyLmNwcApAQCAtMjksMjMg
KzI5LDE3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVT2Jq
ZWN0SGVhcC5oIgotI2luY2x1ZGUgIldlYkdQVU9iamVjdFJlZ2lzdHJ5LmgiCiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi1SZW1vdGVCdWZmZXI6OlJlbW90ZUJ1ZmZlcihQQUw6OldlYkdQVTo6QnVm
ZmVyJiBidWZmZXIsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJH
UFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikK
K1JlbW90ZUJ1ZmZlcjo6UmVtb3RlQnVmZmVyKFBBTDo6V2ViR1BVOjpCdWZmZXImIGJ1ZmZlciwg
V2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCiAgICAgOiBtX2JhY2tpbmcoYnVmZmVyKQotICAgICwgbV9vYmplY3RSZWdpc3RyeShvYmpl
Y3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQogICAgICwgbV9pZGVu
dGlmaWVyKGlkZW50aWZpZXIpCiB7Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5hZGRPYmplY3QobV9p
ZGVudGlmaWVyLCBtX2JhY2tpbmcpOwogfQogCi1SZW1vdGVCdWZmZXI6On5SZW1vdGVCdWZmZXIo
KQotewotICAgIG1fb2JqZWN0UmVnaXN0cnkucmVtb3ZlT2JqZWN0KG1faWRlbnRpZmllcik7Ci19
CitSZW1vdGVCdWZmZXI6On5SZW1vdGVCdWZmZXIoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVtb3Rl
QnVmZmVyOjptYXBBc3luYyhQQUw6OldlYkdQVTo6TWFwTW9kZUZsYWdzIG1hcE1vZGVGbGFncywg
c3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0PiBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8
UEFMOjpXZWJHUFU6OlNpemU2ND4gc2l6ZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiYmKT4mJiBjYWxsYmFjaykKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVy
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZl
ci5oCmluZGV4IGE1ZmFkNWIyZWZkMDgxMzZjMDJjZWI4NTlmYWQzN2UyNWMzMjNmMzMuLjE5MTZk
MzU5ZWVlZmVhOWVjMTY4MTQzNGI2Mzk3YjYyMzkxMjFmNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZmZXIuaApAQCAt
NDUsMjIgKzQ1LDIyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgV2ViR1BVIHsK
IGNsYXNzIE9iamVjdEhlYXA7Ci1jbGFzcyBPYmplY3RSZWdpc3RyeTsKIH0KIAogY2xhc3MgUmVt
b3RlQnVmZmVyIGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90
ZUJ1ZmZlcj4gY3JlYXRlKFBBTDo6V2ViR1BVOjpCdWZmZXImIGJ1ZmZlciwgV2ViR1BVOjpPYmpl
Y3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVh
cCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlQnVm
ZmVyPiBjcmVhdGUoUEFMOjpXZWJHUFU6OkJ1ZmZlciYgYnVmZmVyLCBXZWJHUFU6Ok9iamVjdEhl
YXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUJ1ZmZlcihidWZmZXIsIG9iamVjdFJlZ2lz
dHJ5LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFJlbW90ZUJ1ZmZlcihidWZmZXIsIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKICAgICB9
CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVCdWZmZXIoKTsKIAotcHJpdmF0ZToKLSAgICBmcmllbmQg
Y2xhc3MgT2JqZWN0UmVnaXN0cnk7CisgICAgUEFMOjpXZWJHUFU6OkJ1ZmZlciYgYmFja2luZygp
IHsgcmV0dXJuIG1fYmFja2luZzsgfQogCi0gICAgUmVtb3RlQnVmZmVyKFBBTDo6V2ViR1BVOjpC
dWZmZXImLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2Vi
R1BVSWRlbnRpZmllcik7Citwcml2YXRlOgorICAgIFJlbW90ZUJ1ZmZlcihQQUw6OldlYkdQVTo6
QnVmZmVyJiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBS
ZW1vdGVCdWZmZXIoY29uc3QgUmVtb3RlQnVmZmVyJikgPSBkZWxldGU7CiAgICAgUmVtb3RlQnVm
ZmVyKFJlbW90ZUJ1ZmZlciYmKSA9IGRlbGV0ZTsKQEAgLTc3LDcgKzc3LDYgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6QnVm
ZmVyPiBtX2JhY2tpbmc7Ci0gICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgbV9vYmplY3RSZWdp
c3RyeTsKICAgICBXZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKICAgICBXZWJHUFVJ
ZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBib29sIG1faXNNYXBwZWQgeyBmYWxzZSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVDb21tYW5kQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlQ29tbWFuZEJ1ZmZlci5jcHAKaW5kZXggYTljNmEyYjZlNjAzZjQwNzgwY2Fl
YTAwN2I1NzNiMmU0ZDZkNGEzNS4uN2MyYTg3Y2QxNGM5YmRjYzA3MDJlZWI3ZDdjOTU2ZTI0ZTI1
ODE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVDb21tYW5kQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRCdWZmZXIuY3BwCkBAIC0yOSwyNCArMjksMTgg
QEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFw
LmgiCi0jaW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIKICNpbmNsdWRlIDxwYWwvZ3Jh
cGhpY3MvV2ViR1BVL1dlYkdQVUNvbW1hbmRCdWZmZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKLVJlbW90ZUNvbW1hbmRCdWZmZXI6OlJlbW90ZUNvbW1hbmRCdWZmZXIoUEFMOjpXZWJHUFU6
OkNvbW1hbmRCdWZmZXImIGNvbW1hbmRCdWZmZXIsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9i
amVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50
aWZpZXIgaWRlbnRpZmllcikKK1JlbW90ZUNvbW1hbmRCdWZmZXI6OlJlbW90ZUNvbW1hbmRCdWZm
ZXIoUEFMOjpXZWJHUFU6OkNvbW1hbmRCdWZmZXImIGNvbW1hbmRCdWZmZXIsIFdlYkdQVTo6T2Jq
ZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDog
bV9iYWNraW5nKGNvbW1hbmRCdWZmZXIpCi0gICAgLCBtX29iamVjdFJlZ2lzdHJ5KG9iamVjdFJl
Z2lzdHJ5KQogICAgICwgbV9vYmplY3RIZWFwKG9iamVjdEhlYXApCiAgICAgLCBtX2lkZW50aWZp
ZXIoaWRlbnRpZmllcikKIHsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LmFkZE9iamVjdChtX2lkZW50
aWZpZXIsIG1fYmFja2luZyk7CiB9CiAKLVJlbW90ZUNvbW1hbmRCdWZmZXI6On5SZW1vdGVDb21t
YW5kQnVmZmVyKCkKLXsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdChtX2lkZW50
aWZpZXIpOwotfQorUmVtb3RlQ29tbWFuZEJ1ZmZlcjo6flJlbW90ZUNvbW1hbmRCdWZmZXIoKSA9
IGRlZmF1bHQ7CiAKIHZvaWQgUmVtb3RlQ29tbWFuZEJ1ZmZlcjo6c2V0TGFiZWwoU3RyaW5nJiYg
bGFiZWwpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZUNvbW1hbmRCdWZmZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEJ1ZmZlci5oCmluZGV4IDE0MGMxYTQ4YTExZGVm
OWNhYmFjOWE1MWM4NGExY2RkYzc0MmQ4NWQuLjUzNWUyY2M0ZTc4NDJjYmVjZWU5YWFlZmUzNWI2
YmI0MTg3NmVkMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlQ29tbWFuZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEJ1ZmZlci5oCkBAIC00MCwyMiArNDAs
MjIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogY2xhc3MgT2Jq
ZWN0SGVhcDsKLWNsYXNzIE9iamVjdFJlZ2lzdHJ5OwogfQogCiBjbGFzcyBSZW1vdGVDb21tYW5k
QnVmZmVyIGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZUNv
bW1hbmRCdWZmZXI+IGNyZWF0ZShQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZlciYgY29tbWFuZEJ1
ZmZlciwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2Jq
ZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIHN0
YXRpYyBSZWY8UmVtb3RlQ29tbWFuZEJ1ZmZlcj4gY3JlYXRlKFBBTDo6V2ViR1BVOjpDb21tYW5k
QnVmZmVyJiBjb21tYW5kQnVmZmVyLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdl
YkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFJlbW90ZUNvbW1hbmRCdWZmZXIoY29tbWFuZEJ1ZmZlciwgb2JqZWN0UmVnaXN0cnks
IG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
UmVtb3RlQ29tbWFuZEJ1ZmZlcihjb21tYW5kQnVmZmVyLCBvYmplY3RIZWFwLCBpZGVudGlmaWVy
KSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlQ29tbWFuZEJ1ZmZlcigpOwogCi1wcml2
YXRlOgotICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKKyAgICBQQUw6OldlYkdQVTo6
Q29tbWFuZEJ1ZmZlciYgYmFja2luZygpIHsgcmV0dXJuIG1fYmFja2luZzsgfQogCi0gICAgUmVt
b3RlQ29tbWFuZEJ1ZmZlcihQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZlciYsIFdlYkdQVTo6T2Jq
ZWN0UmVnaXN0cnkmLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKK3By
aXZhdGU6CisgICAgUmVtb3RlQ29tbWFuZEJ1ZmZlcihQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZl
ciYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3Rl
Q29tbWFuZEJ1ZmZlcihjb25zdCBSZW1vdGVDb21tYW5kQnVmZmVyJikgPSBkZWxldGU7CiAgICAg
UmVtb3RlQ29tbWFuZEJ1ZmZlcihSZW1vdGVDb21tYW5kQnVmZmVyJiYpID0gZGVsZXRlOwpAQCAt
NjcsNyArNjcsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCiAg
ICAgUmVmPFBBTDo6V2ViR1BVOjpDb21tYW5kQnVmZmVyPiBtX2JhY2tpbmc7Ci0gICAgV2ViR1BV
OjpPYmplY3RSZWdpc3RyeSYgbV9vYmplY3RSZWdpc3RyeTsKICAgICBXZWJHUFU6Ok9iamVjdEhl
YXAmIG1fb2JqZWN0SGVhcDsKICAgICBXZWJHUFVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZUNvbW1hbmRFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlQ29tbWFuZEVuY29kZXIuY3BwCmluZGV4IGFjOTQ5ZWZhNGI2YjRlY2Uy
MmYyMTZjY2ExNjUzZTU3NjAwYjBkODIuLmZjNDU0OTE2NmIwYjgxMzllNDU1ZjRmZTlkYTQ5NjUz
Y2NjNDlkMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlQ29tbWFuZEVuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEVuY29kZXIuY3BwCkBAIC0zMyw0MiAr
MzMsMzYgQEAKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlci5oIgogI2luY2x1ZGUg
IldlYkdQVUNvbXB1dGVQYXNzRGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhl
YXAuaCIKLSNpbmNsdWRlICJXZWJHUFVPYmplY3RSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHBhbC9n
cmFwaGljcy9XZWJHUFUvV2ViR1BVQ29tbWFuZEVuY29kZXIuaD4KIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKLVJlbW90ZUNvbW1hbmRFbmNvZGVyOjpSZW1vdGVDb21tYW5kRW5jb2RlcihQQUw6Oldl
YkdQVTo6Q29tbWFuZEVuY29kZXImIGNvbW1hbmRFbmNvZGVyLCBXZWJHUFU6Ok9iamVjdFJlZ2lz
dHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJH
UFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCitSZW1vdGVDb21tYW5kRW5jb2Rlcjo6UmVtb3RlQ29t
bWFuZEVuY29kZXIoUEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyJiBjb21tYW5kRW5jb2Rlciwg
V2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCiAgICAgOiBtX2JhY2tpbmcoY29tbWFuZEVuY29kZXIpCi0gICAgLCBtX29iamVjdFJlZ2lz
dHJ5KG9iamVjdFJlZ2lzdHJ5KQogICAgICwgbV9vYmplY3RIZWFwKG9iamVjdEhlYXApCiAgICAg
LCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LmFkZE9i
amVjdChtX2lkZW50aWZpZXIsIG1fYmFja2luZyk7CiB9CiAKLVJlbW90ZUNvbW1hbmRFbmNvZGVy
Ojp+UmVtb3RlQ29tbWFuZEVuY29kZXIoKQotewotICAgIG1fb2JqZWN0UmVnaXN0cnkucmVtb3Zl
T2JqZWN0KG1faWRlbnRpZmllcik7Ci19CitSZW1vdGVDb21tYW5kRW5jb2Rlcjo6flJlbW90ZUNv
bW1hbmRFbmNvZGVyKCkgPSBkZWZhdWx0OwogCiB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyOjpi
ZWdpblJlbmRlclBhc3MoY29uc3QgV2ViR1BVOjpSZW5kZXJQYXNzRGVzY3JpcHRvciYgZGVzY3Jp
cHRvciwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGF1dG8gY29udmVydGVk
RGVzY3JpcHRvciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0
b3IpOworICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0
RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7CiAgICAgQVNTRVJUKGNvbnZlcnRlZERlc2NyaXB0b3Ip
OwogICAgIGlmICghY29udmVydGVkRGVzY3JpcHRvcikKICAgICAgICAgcmV0dXJuOwogCiAgICAg
YXV0byByZW5kZXJQYXNzRW5jb2RlciA9IG1fYmFja2luZy0+YmVnaW5SZW5kZXJQYXNzKCpjb252
ZXJ0ZWREZXNjcmlwdG9yKTsKLSAgICBhdXRvIHJlbW90ZVJlbmRlclBhc3NFbmNvZGVyID0gUmVt
b3RlUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0ZShyZW5kZXJQYXNzRW5jb2RlciwgbV9vYmplY3RS
ZWdpc3RyeSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKLSAgICBtX29iamVjdEhlYXAuYWRk
T2JqZWN0KHJlbW90ZVJlbmRlclBhc3NFbmNvZGVyKTsKKyAgICBhdXRvIHJlbW90ZVJlbmRlclBh
c3NFbmNvZGVyID0gUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0ZShyZW5kZXJQYXNzRW5j
b2RlciwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVjdEhlYXAuYWRkT2Jq
ZWN0KGlkZW50aWZpZXIsIHJlbW90ZVJlbmRlclBhc3NFbmNvZGVyKTsKIH0KIAogdm9pZCBSZW1v
dGVDb21tYW5kRW5jb2Rlcjo6YmVnaW5Db21wdXRlUGFzcyhjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkdQVTo6Q29tcHV0ZVBhc3NEZXNjcmlwdG9yPiYgZGVzY3JpcHRvciwgV2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyKQogewogICAgIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkNvbXB1dGVQ
YXNzRGVzY3JpcHRvcj4gY29udmVydGVkRGVzY3JpcHRvcjsKICAgICBpZiAoZGVzY3JpcHRvcikg
ewotICAgICAgICBhdXRvIHJlc3VsdERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZl
cnRGcm9tQmFja2luZygqZGVzY3JpcHRvcik7CisgICAgICAgIGF1dG8gcmVzdWx0RGVzY3JpcHRv
ciA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0RnJvbUJhY2tpbmcoKmRlc2NyaXB0b3IpOwogICAgICAg
ICBBU1NFUlQocmVzdWx0RGVzY3JpcHRvcik7CiAgICAgICAgIGNvbnZlcnRlZERlc2NyaXB0b3Ig
PSBXVEZNb3ZlKHJlc3VsdERlc2NyaXB0b3IpOwogICAgICAgICBpZiAoIWNvbnZlcnRlZERlc2Ny
aXB0b3IpCkBAIC03Niw4ICs3MCw4IEBAIHZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXI6OmJlZ2lu
Q29tcHV0ZVBhc3MoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJHUFU6OkNvbXB1dGVQCiAgICAgfQog
CiAgICAgYXV0byBjb21wdXRlUGFzc0VuY29kZXIgPSBtX2JhY2tpbmctPmJlZ2luQ29tcHV0ZVBh
c3MoKmNvbnZlcnRlZERlc2NyaXB0b3IpOwotICAgIGF1dG8gY29tcHV0ZVJlbmRlclBhc3NFbmNv
ZGVyID0gUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpjcmVhdGUoY29tcHV0ZVBhc3NFbmNvZGVy
LCBtX29iamVjdFJlZ2lzdHJ5LCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIpOwotICAgIG1fb2Jq
ZWN0SGVhcC5hZGRPYmplY3QoY29tcHV0ZVJlbmRlclBhc3NFbmNvZGVyKTsKKyAgICBhdXRvIGNv
bXB1dGVSZW5kZXJQYXNzRW5jb2RlciA9IFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6Y3JlYXRl
KGNvbXB1dGVQYXNzRW5jb2RlciwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAgICBtX29i
amVjdEhlYXAuYWRkT2JqZWN0KGlkZW50aWZpZXIsIGNvbXB1dGVSZW5kZXJQYXNzRW5jb2Rlcik7
CiB9CiAKIHZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXI6OmNvcHlCdWZmZXJUb0J1ZmZlcigKQEAg
LTg3LDkgKzgxLDkgQEAgdm9pZCBSZW1vdGVDb21tYW5kRW5jb2Rlcjo6Y29weUJ1ZmZlclRvQnVm
ZmVyKAogICAgIFBBTDo6V2ViR1BVOjpTaXplNjQgZGVzdGluYXRpb25PZmZzZXQsCiAgICAgUEFM
OjpXZWJHUFU6OlNpemU2NCBzaXplKQogewotICAgIGF1dG8gY29udmVydGVkU291cmNlID0gbV9v
YmplY3RSZWdpc3RyeS5jb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoc291cmNlKTsKKyAgICBhdXRv
IGNvbnZlcnRlZFNvdXJjZSA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmco
c291cmNlKTsKICAgICBBU1NFUlQoY29udmVydGVkU291cmNlKTsKLSAgICBhdXRvIGNvbnZlcnRl
ZERlc3RpbmF0aW9uID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmco
c291cmNlKTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc3RpbmF0aW9uID0gbV9vYmplY3RIZWFwLmNv
bnZlcnRCdWZmZXJGcm9tQmFja2luZyhzb3VyY2UpOwogICAgIEFTU0VSVChjb252ZXJ0ZWREZXN0
aW5hdGlvbik7CiAgICAgaWYgKCFjb252ZXJ0ZWRTb3VyY2UgfHwgIWNvbnZlcnRlZERlc3RpbmF0
aW9uKQogICAgICAgICByZXR1cm47CkBAIC0xMDIsMTEgKzk2LDExIEBAIHZvaWQgUmVtb3RlQ29t
bWFuZEVuY29kZXI6OmNvcHlCdWZmZXJUb1RleHR1cmUoCiAgICAgY29uc3QgV2ViR1BVOjpJbWFn
ZUNvcHlUZXh0dXJlJiBkZXN0aW5hdGlvbiwKICAgICBjb25zdCBXZWJHUFU6OkV4dGVudDNEJiBj
b3B5U2l6ZSkKIHsKLSAgICBhdXRvIGNvbnZlcnRlZFNvdXJjZSA9IG1fb2JqZWN0UmVnaXN0cnku
Y29udmVydEZyb21CYWNraW5nKHNvdXJjZSk7CisgICAgYXV0byBjb252ZXJ0ZWRTb3VyY2UgPSBt
X29iamVjdEhlYXAuY29udmVydEZyb21CYWNraW5nKHNvdXJjZSk7CiAgICAgQVNTRVJUKGNvbnZl
cnRlZFNvdXJjZSk7Ci0gICAgYXV0byBjb252ZXJ0ZWREZXN0aW5hdGlvbiA9IG1fb2JqZWN0UmVn
aXN0cnkuY29udmVydEZyb21CYWNraW5nKGRlc3RpbmF0aW9uKTsKKyAgICBhdXRvIGNvbnZlcnRl
ZERlc3RpbmF0aW9uID0gbV9vYmplY3RIZWFwLmNvbnZlcnRGcm9tQmFja2luZyhkZXN0aW5hdGlv
bik7CiAgICAgQVNTRVJUKGNvbnZlcnRlZERlc3RpbmF0aW9uKTsKLSAgICBhdXRvIGNvbnZlcnRl
ZENvcHlTaXplID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoY29weVNpemUp
OworICAgIGF1dG8gY29udmVydGVkQ29weVNpemUgPSBtX29iamVjdEhlYXAuY29udmVydEZyb21C
YWNraW5nKGNvcHlTaXplKTsKICAgICBBU1NFUlQoY29udmVydGVkQ29weVNpemUpOwogICAgIGlm
ICghY29udmVydGVkU291cmNlIHx8ICFjb252ZXJ0ZWREZXN0aW5hdGlvbiB8fCAhY29udmVydGVk
Q29weVNpemUpCiAgICAgICAgIHJldHVybjsKQEAgLTExOSwxMSArMTEzLDExIEBAIHZvaWQgUmVt
b3RlQ29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9CdWZmZXIoCiAgICAgY29uc3QgV2ViR1BV
OjpJbWFnZUNvcHlCdWZmZXImIGRlc3RpbmF0aW9uLAogICAgIGNvbnN0IFdlYkdQVTo6RXh0ZW50
M0QmIGNvcHlTaXplKQogewotICAgIGF1dG8gY29udmVydGVkU291cmNlID0gbV9vYmplY3RSZWdp
c3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoc291cmNlKTsKKyAgICBhdXRvIGNvbnZlcnRlZFNvdXJj
ZSA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0RnJvbUJhY2tpbmcoc291cmNlKTsKICAgICBBU1NFUlQo
Y29udmVydGVkU291cmNlKTsKLSAgICBhdXRvIGNvbnZlcnRlZERlc3RpbmF0aW9uID0gbV9vYmpl
Y3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzdGluYXRpb24pOworICAgIGF1dG8gY29u
dmVydGVkRGVzdGluYXRpb24gPSBtX29iamVjdEhlYXAuY29udmVydEZyb21CYWNraW5nKGRlc3Rp
bmF0aW9uKTsKICAgICBBU1NFUlQoY29udmVydGVkRGVzdGluYXRpb24pOwotICAgIGF1dG8gY29u
dmVydGVkQ29weVNpemUgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhjb3B5
U2l6ZSk7CisgICAgYXV0byBjb252ZXJ0ZWRDb3B5U2l6ZSA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0
RnJvbUJhY2tpbmcoY29weVNpemUpOwogICAgIEFTU0VSVChjb252ZXJ0ZWRDb3B5U2l6ZSk7CiAg
ICAgaWYgKCFjb252ZXJ0ZWRTb3VyY2UgfHwgIWNvbnZlcnRlZERlc3RpbmF0aW9uIHx8ICFjb252
ZXJ0ZWRDb3B5U2l6ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTM2LDExICsxMzAsMTEgQEAgdm9p
ZCBSZW1vdGVDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb1RleHR1cmUoCiAgICAgY29uc3Qg
V2ViR1BVOjpJbWFnZUNvcHlUZXh0dXJlJiBkZXN0aW5hdGlvbiwKICAgICBjb25zdCBXZWJHUFU6
OkV4dGVudDNEJiBjb3B5U2l6ZSkKIHsKLSAgICBhdXRvIGNvbnZlcnRlZFNvdXJjZSA9IG1fb2Jq
ZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKHNvdXJjZSk7CisgICAgYXV0byBjb252ZXJ0
ZWRTb3VyY2UgPSBtX29iamVjdEhlYXAuY29udmVydEZyb21CYWNraW5nKHNvdXJjZSk7CiAgICAg
QVNTRVJUKGNvbnZlcnRlZFNvdXJjZSk7Ci0gICAgYXV0byBjb252ZXJ0ZWREZXN0aW5hdGlvbiA9
IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGRlc3RpbmF0aW9uKTsKKyAgICBh
dXRvIGNvbnZlcnRlZERlc3RpbmF0aW9uID0gbV9vYmplY3RIZWFwLmNvbnZlcnRGcm9tQmFja2lu
ZyhkZXN0aW5hdGlvbik7CiAgICAgQVNTRVJUKGNvbnZlcnRlZERlc3RpbmF0aW9uKTsKLSAgICBh
dXRvIGNvbnZlcnRlZENvcHlTaXplID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tp
bmcoY29weVNpemUpOworICAgIGF1dG8gY29udmVydGVkQ29weVNpemUgPSBtX29iamVjdEhlYXAu
Y29udmVydEZyb21CYWNraW5nKGNvcHlTaXplKTsKICAgICBBU1NFUlQoY29udmVydGVkQ29weVNp
emUpOwogICAgIGlmICghY29udmVydGVkU291cmNlIHx8ICFjb252ZXJ0ZWREZXN0aW5hdGlvbiB8
fCAhY29udmVydGVkQ29weVNpemUpCiAgICAgICAgIHJldHVybjsKQEAgLTE1Myw3ICsxNDcsNyBA
QCB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyOjpmaWxsQnVmZmVyKAogICAgIFBBTDo6V2ViR1BV
OjpTaXplNjQgZGVzdGluYXRpb25PZmZzZXQsCiAgICAgUEFMOjpXZWJHUFU6OlNpemU2NCBzaXpl
KQogewotICAgIGF1dG8gY29udmVydGVkRGVzdGluYXRpb24gPSBtX29iamVjdFJlZ2lzdHJ5LmNv
bnZlcnRCdWZmZXJGcm9tQmFja2luZyhkZXN0aW5hdGlvbik7CisgICAgYXV0byBjb252ZXJ0ZWRE
ZXN0aW5hdGlvbiA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoZGVzdGlu
YXRpb24pOwogICAgIEFTU0VSVChjb252ZXJ0ZWREZXN0aW5hdGlvbik7CiAgICAgaWYgKCFjb252
ZXJ0ZWREZXN0aW5hdGlvbikKICAgICAgICAgcmV0dXJuOwpAQCAtMTc4LDcgKzE3Miw3IEBAIHZv
aWQgUmVtb3RlQ29tbWFuZEVuY29kZXI6Omluc2VydERlYnVnTWFya2VyKFN0cmluZyYmIG1hcmtl
ckxhYmVsKQogCiB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyOjp3cml0ZVRpbWVzdGFtcChXZWJH
UFVJZGVudGlmaWVyIHF1ZXJ5U2V0LCBQQUw6OldlYkdQVTo6U2l6ZTMyIHF1ZXJ5SW5kZXgpCiB7
Ci0gICAgYXV0byBjb252ZXJ0ZWRRdWVyeVNldCA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydFF1
ZXJ5U2V0RnJvbUJhY2tpbmcocXVlcnlTZXQpOworICAgIGF1dG8gY29udmVydGVkUXVlcnlTZXQg
PSBtX29iamVjdEhlYXAuY29udmVydFF1ZXJ5U2V0RnJvbUJhY2tpbmcocXVlcnlTZXQpOwogICAg
IEFTU0VSVChjb252ZXJ0ZWRRdWVyeVNldCk7CiAgICAgaWYgKCFjb252ZXJ0ZWRRdWVyeVNldCkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTkzLDkgKzE4Nyw5IEBAIHZvaWQgUmVtb3RlQ29tbWFuZEVu
Y29kZXI6OnJlc29sdmVRdWVyeVNldCgKICAgICBXZWJHUFVJZGVudGlmaWVyIGRlc3RpbmF0aW9u
LAogICAgIFBBTDo6V2ViR1BVOjpTaXplNjQgZGVzdGluYXRpb25PZmZzZXQpCiB7Ci0gICAgYXV0
byBjb252ZXJ0ZWRRdWVyeVNldCA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydFF1ZXJ5U2V0RnJv
bUJhY2tpbmcocXVlcnlTZXQpOworICAgIGF1dG8gY29udmVydGVkUXVlcnlTZXQgPSBtX29iamVj
dEhlYXAuY29udmVydFF1ZXJ5U2V0RnJvbUJhY2tpbmcocXVlcnlTZXQpOwogICAgIEFTU0VSVChj
b252ZXJ0ZWRRdWVyeVNldCk7Ci0gICAgYXV0byBjb252ZXJ0ZWREZXN0aW5hdGlvbiA9IG1fb2Jq
ZWN0UmVnaXN0cnkuY29udmVydEJ1ZmZlckZyb21CYWNraW5nKGRlc3RpbmF0aW9uKTsKKyAgICBh
dXRvIGNvbnZlcnRlZERlc3RpbmF0aW9uID0gbV9vYmplY3RIZWFwLmNvbnZlcnRCdWZmZXJGcm9t
QmFja2luZyhkZXN0aW5hdGlvbik7CiAgICAgQVNTRVJUKGNvbnZlcnRlZERlc3RpbmF0aW9uKTsK
ICAgICBpZiAoIWNvbnZlcnRlZFF1ZXJ5U2V0IHx8ICFjb252ZXJ0ZWREZXN0aW5hdGlvbikKICAg
ICAgICAgcmV0dXJuOwpAQCAtMjA1LDE0ICsxOTksMTQgQEAgdm9pZCBSZW1vdGVDb21tYW5kRW5j
b2Rlcjo6cmVzb2x2ZVF1ZXJ5U2V0KAogCiB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyOjpmaW5p
c2goY29uc3QgV2ViR1BVOjpDb21tYW5kQnVmZmVyRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgV2Vi
R1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRv
ciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOworICAg
IGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0RnJvbUJhY2tp
bmcoZGVzY3JpcHRvcik7CiAgICAgQVNTRVJUKGNvbnZlcnRlZERlc2NyaXB0b3IpOwogICAgIGlm
ICghY29udmVydGVkRGVzY3JpcHRvcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBjb21t
YW5kQnVmZmVyID0gbV9iYWNraW5nLT5maW5pc2goKmNvbnZlcnRlZERlc2NyaXB0b3IpOwotICAg
IGF1dG8gcmVtb3RlQ29tbWFuZEJ1ZmZlciA9IFJlbW90ZUNvbW1hbmRCdWZmZXI6OmNyZWF0ZShj
b21tYW5kQnVmZmVyLCBtX29iamVjdFJlZ2lzdHJ5LCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIp
OwotICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QocmVtb3RlQ29tbWFuZEJ1ZmZlcik7CisgICAg
YXV0byByZW1vdGVDb21tYW5kQnVmZmVyID0gUmVtb3RlQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKGNv
bW1hbmRCdWZmZXIsIG1fb2JqZWN0SGVhcCwgaWRlbnRpZmllcik7CisgICAgbV9vYmplY3RIZWFw
LmFkZE9iamVjdChpZGVudGlmaWVyLCByZW1vdGVDb21tYW5kQnVmZmVyKTsKIH0KIAogdm9pZCBS
ZW1vdGVDb21tYW5kRW5jb2Rlcjo6c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRF
bmNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZUNvbW1hbmRFbmNvZGVyLmgKaW5kZXggYmI2MDRhYTdjOGFkZGI0YzFmMGI5ZTAwMGRjYmJhYWY0
OTg3MjI3Ni4uMGI3MWE1ODUxMzU3YjI4YjkxZjQ5MTAyNzUwZjNhZDQ1ZjI0NDkwMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21t
YW5kRW5jb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlQ29tbWFuZEVuY29kZXIuaApAQCAtNDYsMjMgKzQ2LDIzIEBAIHN0cnVjdCBDb21w
dXRlUGFzc0Rlc2NyaXB0b3I7CiBzdHJ1Y3QgSW1hZ2VDb3B5QnVmZmVyOwogc3RydWN0IEltYWdl
Q29weVRleHR1cmU7CiBjbGFzcyBPYmplY3RIZWFwOwotY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiBz
dHJ1Y3QgUmVuZGVyUGFzc0Rlc2NyaXB0b3I7CiB9CiAKIGNsYXNzIFJlbW90ZUNvbW1hbmRFbmNv
ZGVyIGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZUNvbW1h
bmRFbmNvZGVyPiBjcmVhdGUoUEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyJiBjb21tYW5kRW5j
b2RlciwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2Jq
ZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIHN0
YXRpYyBSZWY8UmVtb3RlQ29tbWFuZEVuY29kZXI+IGNyZWF0ZShQQUw6OldlYkdQVTo6Q29tbWFu
ZEVuY29kZXImIGNvbW1hbmRFbmNvZGVyLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAs
IFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFJlbW90ZUNvbW1hbmRFbmNvZGVyKGNvbW1hbmRFbmNvZGVyLCBvYmplY3RSZWdp
c3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBSZW1vdGVDb21tYW5kRW5jb2Rlcihjb21tYW5kRW5jb2Rlciwgb2JqZWN0SGVhcCwgaWRl
bnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90ZUNvbW1hbmRFbmNvZGVyKCk7
CiAKLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIE9iamVjdFJlZ2lzdHJ5OworICAgIFBBTDo6
V2ViR1BVOjpDb21tYW5kRW5jb2RlciYgYmFja2luZygpIHsgcmV0dXJuIG1fYmFja2luZzsgfQog
Ci0gICAgUmVtb3RlQ29tbWFuZEVuY29kZXIoUEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyJiwg
V2ViR1BVOjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50
aWZpZXIpOworcHJpdmF0ZToKKyAgICBSZW1vdGVDb21tYW5kRW5jb2RlcihQQUw6OldlYkdQVTo6
Q29tbWFuZEVuY29kZXImLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsK
IAogICAgIFJlbW90ZUNvbW1hbmRFbmNvZGVyKGNvbnN0IFJlbW90ZUNvbW1hbmRFbmNvZGVyJikg
PSBkZWxldGU7CiAgICAgUmVtb3RlQ29tbWFuZEVuY29kZXIoUmVtb3RlQ29tbWFuZEVuY29kZXIm
JikgPSBkZWxldGU7CkBAIC0xMTksNyArMTE5LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExh
YmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6Q29tbWFuZEVuY29kZXI+IG1f
YmFja2luZzsKLSAgICBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBtX29iamVjdFJlZ2lzdHJ5Owog
ICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFwOwogICAgIFdlYkdQVUlkZW50aWZp
ZXIgbV9pZGVudGlmaWVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVy
LmNwcAppbmRleCA4YjEyMzMxNTk3NGRhNjRhYjExOGYyODUyZjI5MGM3YzJkNWJjZGVjLi4wNmU2
YWQ4MDhhNTc1ZDljYTgzNjYwYzRlMTAyM2IwZjk0NDNiZjAwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5jb2Rl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVDb21wdXRlUGFzc0VuY29kZXIuY3BwCkBAIC0yOSwyOCArMjksMjIgQEAKICNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCi0jaW5jbHVkZSAi
V2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dl
YkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3Rl
Q29tcHV0ZVBhc3NFbmNvZGVyOjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXIoUEFMOjpXZWJHUFU6
OkNvbXB1dGVQYXNzRW5jb2RlciYgY29tcHV0ZVBhc3NFbmNvZGVyLCBXZWJHUFU6Ok9iamVjdFJl
Z2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBX
ZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCitSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OlJl
bW90ZUNvbXB1dGVQYXNzRW5jb2RlcihQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyJiBj
b21wdXRlUGFzc0VuY29kZXIsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BV
SWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5nKGNvbXB1dGVQYXNzRW5jb2Rl
cikKLSAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2JqZWN0UmVnaXN0cnkpCiAgICAgLCBtX29iamVj
dEhlYXAob2JqZWN0SGVhcCkKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogewotICAg
IG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1faWRlbnRpZmllciwgbV9iYWNraW5nKTsKIH0K
IAotUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjp+UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyKCkK
LXsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOwotfQor
UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjp+UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyKCkgPSBk
ZWZhdWx0OwogCiB2b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUoV2Vi
R1BVSWRlbnRpZmllciBjb21wdXRlUGlwZWxpbmUpCiB7Ci0gICAgYXV0byBjb252ZXJ0ZWRDb21w
dXRlUGlwZWxpbmUgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRDb21wdXRlUGlwZWxpbmVGcm9t
QmFja2luZyhjb21wdXRlUGlwZWxpbmUpOworICAgIGF1dG8gY29udmVydGVkQ29tcHV0ZVBpcGVs
aW5lID0gbV9vYmplY3RIZWFwLmNvbnZlcnRDb21wdXRlUGlwZWxpbmVGcm9tQmFja2luZyhjb21w
dXRlUGlwZWxpbmUpOwogICAgIEFTU0VSVChjb252ZXJ0ZWRDb21wdXRlUGlwZWxpbmUpOwogICAg
IGlmICghY29udmVydGVkQ29tcHV0ZVBpcGVsaW5lKQogICAgICAgICByZXR1cm47CkBAIC02NSw3
ICs1OSw3IEBAIHZvaWQgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpkaXNwYXRjaChQQUw6Oldl
YkdQVTo6U2l6ZTMyIHgsIHN0ZDo6b3B0aW9uYWw8UEFMCiAKIHZvaWQgUmVtb3RlQ29tcHV0ZVBh
c3NFbmNvZGVyOjpkaXNwYXRjaEluZGlyZWN0KFdlYkdQVUlkZW50aWZpZXIgaW5kaXJlY3RCdWZm
ZXIsIFBBTDo6V2ViR1BVOjpTaXplNjQgaW5kaXJlY3RPZmZzZXQpCiB7Ci0gICAgYXV0byBjb252
ZXJ0ZWRJbmRpcmVjdEJ1ZmZlciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEJ1ZmZlckZyb21C
YWNraW5nKGluZGlyZWN0QnVmZmVyKTsKKyAgICBhdXRvIGNvbnZlcnRlZEluZGlyZWN0QnVmZmVy
ID0gbV9vYmplY3RIZWFwLmNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhpbmRpcmVjdEJ1ZmZlcik7
CiAgICAgQVNTRVJUKGNvbnZlcnRlZEluZGlyZWN0QnVmZmVyKTsKICAgICBpZiAoIWNvbnZlcnRl
ZEluZGlyZWN0QnVmZmVyKQogICAgICAgICByZXR1cm47CkBAIC03NSw3ICs2OSw3IEBAIHZvaWQg
UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpkaXNwYXRjaEluZGlyZWN0KFdlYkdQVUlkZW50aWZp
ZXIgaW5kaXJlY3RCdWZmZXIsCiAKIHZvaWQgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpiZWdp
blBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KFdlYkdQVUlkZW50aWZpZXIgcXVlcnlTZXQsIFBBTDo6
V2ViR1BVOjpTaXplMzIgcXVlcnlJbmRleCkKIHsKLSAgICBhdXRvIGNvbnZlcnRlZFF1ZXJ5U2V0
ID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0UXVlcnlTZXRGcm9tQmFja2luZyhxdWVyeVNldCk7
CisgICAgYXV0byBjb252ZXJ0ZWRRdWVyeVNldCA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0UXVlcnlT
ZXRGcm9tQmFja2luZyhxdWVyeVNldCk7CiAgICAgQVNTRVJUKGNvbnZlcnRlZFF1ZXJ5U2V0KTsK
ICAgICBpZiAoIWNvbnZlcnRlZFF1ZXJ5U2V0KQogICAgICAgICByZXR1cm47CkBAIC05Niw3ICs5
MCw3IEBAIHZvaWQgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjplbmRQYXNzKCkKIHZvaWQgUmVt
b3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpzZXRCaW5kR3JvdXAoUEFMOjpXZWJHUFU6OkluZGV4MzIg
aW5kZXgsIFdlYkdQVUlkZW50aWZpZXIgYmluZEdyb3VwLAogICAgIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFBBTDo6V2ViR1BVOjpCdWZmZXJEeW5hbWljT2Zmc2V0Pj4mJiBvZmZzZXRzKQogewotICAg
IGF1dG8gY29udmVydGVkQmluZEdyb3VwID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0QmluZEdy
b3VwRnJvbUJhY2tpbmcoYmluZEdyb3VwKTsKKyAgICBhdXRvIGNvbnZlcnRlZEJpbmRHcm91cCA9
IG1fb2JqZWN0SGVhcC5jb252ZXJ0QmluZEdyb3VwRnJvbUJhY2tpbmcoYmluZEdyb3VwKTsKICAg
ICBBU1NFUlQoY29udmVydGVkQmluZEdyb3VwKTsKICAgICBpZiAoIWNvbnZlcnRlZEJpbmRHcm91
cCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFzc0VuY29kZXIuaCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyLmgK
aW5kZXggMDBmOWRkMzBkNzE2NWViZjk4ZDNiYTVhN2ZlYThhMDFiNjBlOThiNi4uMzkxMzAyYTc0
NGYwZDBlZDIzM2MzOGRkOWQ4MDIzMjY2YTIyNjlhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFzc0VuY29kZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1
dGVQYXNzRW5jb2Rlci5oCkBAIC00MSwyMiArNDEsMjIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAK
IG5hbWVzcGFjZSBXZWJHUFUgewogY2xhc3MgT2JqZWN0SGVhcDsKLWNsYXNzIE9iamVjdFJlZ2lz
dHJ5OwogfQogCiBjbGFzcyBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXIgZmluYWwgOiBwdWJsaWMg
SVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyPiBjcmVh
dGUoUEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2RlciYgY29tcHV0ZVBhc3NFbmNvZGVyLCBX
ZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFw
JiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgc3RhdGljIFJl
ZjxSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI+IGNyZWF0ZShQQUw6OldlYkdQVTo6Q29tcHV0ZVBh
c3NFbmNvZGVyJiBjb21wdXRlUGFzc0VuY29kZXIsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0
SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyKGNvbXB1dGVQYXNzRW5jb2Rl
ciwgb2JqZWN0UmVnaXN0cnksIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyKGNvbXB1dGVQYXNzRW5j
b2Rlciwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJl
bW90ZUNvbXB1dGVQYXNzRW5jb2RlcigpOwogCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBP
YmplY3RSZWdpc3RyeTsKKyAgICBQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyJiBiYWNr
aW5nKCkgeyByZXR1cm4gbV9iYWNraW5nOyB9CiAKLSAgICBSZW1vdGVDb21wdXRlUGFzc0VuY29k
ZXIoUEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2RlciYsIFdlYkdQVTo6T2JqZWN0UmVnaXN0
cnkmLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKK3ByaXZhdGU6Cisg
ICAgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyKFBBTDo6V2ViR1BVOjpDb21wdXRlUGFzc0VuY29k
ZXImLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90
ZUNvbXB1dGVQYXNzRW5jb2Rlcihjb25zdCBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXImKSA9IGRl
bGV0ZTsKICAgICBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXIoUmVtb3RlQ29tcHV0ZVBhc3NFbmNv
ZGVyJiYpID0gZGVsZXRlOwpAQCAtODQsNyArODQsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0
TGFiZWwoU3RyaW5nJiYpOwogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpDb21wdXRlUGFzc0VuY29k
ZXI+IG1fYmFja2luZzsKLSAgICBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBtX29iamVjdFJlZ2lz
dHJ5OwogICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFwOwogICAgIFdlYkdQVUlk
ZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBpcGVsaW5lLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBpcGVsaW5l
LmNwcAppbmRleCA3MDE2YTFmOTc5MDllYzJiNGI2ZmZkMGYxYjhiMzRiZjRmMTFlNjhmLi40MTQ0
MTVhMzljMjc0OTUyMTZlM2RiYzQwYmRhMmViNTdmODg3NTk2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQaXBlbGluZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVD
b21wdXRlUGlwZWxpbmUuY3BwCkBAIC0zMCwzMSArMzAsMjUgQEAKIAogI2luY2x1ZGUgIlJlbW90
ZUJpbmRHcm91cExheW91dC5oIgogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKLSNpbmNs
dWRlICJXZWJHUFVPYmplY3RSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJH
UFUvV2ViR1BVQmluZEdyb3VwTGF5b3V0Lmg+CiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQ
VS9XZWJHUFVDb21wdXRlUGlwZWxpbmUuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90
ZUNvbXB1dGVQaXBlbGluZTo6UmVtb3RlQ29tcHV0ZVBpcGVsaW5lKFBBTDo6V2ViR1BVOjpDb21w
dXRlUGlwZWxpbmUmIGNvbXB1dGVQaXBlbGluZSwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2Jq
ZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRp
ZmllciBpZGVudGlmaWVyKQorUmVtb3RlQ29tcHV0ZVBpcGVsaW5lOjpSZW1vdGVDb21wdXRlUGlw
ZWxpbmUoUEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZSYgY29tcHV0ZVBpcGVsaW5lLCBXZWJH
UFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikK
ICAgICA6IG1fYmFja2luZyhjb21wdXRlUGlwZWxpbmUpCi0gICAgLCBtX29iamVjdFJlZ2lzdHJ5
KG9iamVjdFJlZ2lzdHJ5KQogICAgICwgbV9vYmplY3RIZWFwKG9iamVjdEhlYXApCiAgICAgLCBt
X2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LmFkZE9iamVj
dChtX2lkZW50aWZpZXIsIG1fYmFja2luZyk7CiB9CiAKLVJlbW90ZUNvbXB1dGVQaXBlbGluZTo6
flJlbW90ZUNvbXB1dGVQaXBlbGluZSgpCi17Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5yZW1vdmVP
YmplY3QobV9pZGVudGlmaWVyKTsKLX0KK1JlbW90ZUNvbXB1dGVQaXBlbGluZTo6flJlbW90ZUNv
bXB1dGVQaXBlbGluZSgpID0gZGVmYXVsdDsKIAogdm9pZCBSZW1vdGVDb21wdXRlUGlwZWxpbmU6
OmdldEJpbmRHcm91cExheW91dCh1aW50MzJfdCBpbmRleCwgV2ViR1BVSWRlbnRpZmllciBpZGVu
dGlmaWVyKQogewogICAgIGF1dG8gYmluZEdyb3VwTGF5b3V0ID0gbV9iYWNraW5nLT5nZXRCaW5k
R3JvdXBMYXlvdXQoaW5kZXgpOwotICAgIGF1dG8gcmVtb3RlQmluZEdyb3VwTGF5b3V0ID0gUmVt
b3RlQmluZEdyb3VwTGF5b3V0OjpjcmVhdGUoYmluZEdyb3VwTGF5b3V0LCBtX29iamVjdFJlZ2lz
dHJ5LCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIpOwotICAgIG1fb2JqZWN0SGVhcC5hZGRPYmpl
Y3QocmVtb3RlQmluZEdyb3VwTGF5b3V0KTsKKyAgICBhdXRvIHJlbW90ZUJpbmRHcm91cExheW91
dCA9IFJlbW90ZUJpbmRHcm91cExheW91dDo6Y3JlYXRlKGJpbmRHcm91cExheW91dCwgbV9vYmpl
Y3RIZWFwLCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KGlkZW50aWZp
ZXIsIHJlbW90ZUJpbmRHcm91cExheW91dCk7CiB9CiAKIHZvaWQgUmVtb3RlQ29tcHV0ZVBpcGVs
aW5lOjpzZXRMYWJlbChTdHJpbmcmJiBsYWJlbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBpcGVsaW5lLmggYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQaXBlbGlu
ZS5oCmluZGV4IDg0ZGFhYjg2Y2M2OWRiNGYzMzUxZTFmYzEwZWYzNDYzYmE3NzdkYjcuLmZmODcx
MWFjZWRhNTc2YTFmZTBlZTVkYmZhNGEwOTdmYTVmNTMyOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBpcGVsaW5lLmgK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21w
dXRlUGlwZWxpbmUuaApAQCAtNDAsMjIgKzQwLDIyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBu
YW1lc3BhY2UgV2ViR1BVIHsKIGNsYXNzIE9iamVjdEhlYXA7Ci1jbGFzcyBPYmplY3RSZWdpc3Ry
eTsKIH0KIAogY2xhc3MgUmVtb3RlQ29tcHV0ZVBpcGVsaW5lIGZpbmFsIDogcHVibGljIElQQzo6
U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZUNvbXB1dGVQaXBlbGluZT4gY3JlYXRlKFBBTDo6
V2ViR1BVOjpDb21wdXRlUGlwZWxpbmUmIGNvbXB1dGVQaXBlbGluZSwgV2ViR1BVOjpPYmplY3RS
ZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwg
V2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlQ29tcHV0
ZVBpcGVsaW5lPiBjcmVhdGUoUEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZSYgY29tcHV0ZVBp
cGVsaW5lLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIg
aWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUNv
bXB1dGVQaXBlbGluZShjb21wdXRlUGlwZWxpbmUsIG9iamVjdFJlZ2lzdHJ5LCBvYmplY3RIZWFw
LCBpZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUNvbXB1
dGVQaXBlbGluZShjb21wdXRlUGlwZWxpbmUsIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKICAg
ICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVDb21wdXRlUGlwZWxpbmUoKTsKIAotcHJpdmF0ZToK
LSAgICBmcmllbmQgY2xhc3MgT2JqZWN0UmVnaXN0cnk7CisgICAgUEFMOjpXZWJHUFU6OkNvbXB1
dGVQaXBlbGluZSYgYmFja2luZygpIHsgcmV0dXJuIG1fYmFja2luZzsgfQogCi0gICAgUmVtb3Rl
Q29tcHV0ZVBpcGVsaW5lKFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmUmLCBXZWJHUFU6Ok9i
amVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7Citw
cml2YXRlOgorICAgIFJlbW90ZUNvbXB1dGVQaXBlbGluZShQQUw6OldlYkdQVTo6Q29tcHV0ZVBp
cGVsaW5lJiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBS
ZW1vdGVDb21wdXRlUGlwZWxpbmUoY29uc3QgUmVtb3RlQ29tcHV0ZVBpcGVsaW5lJikgPSBkZWxl
dGU7CiAgICAgUmVtb3RlQ29tcHV0ZVBpcGVsaW5lKFJlbW90ZUNvbXB1dGVQaXBlbGluZSYmKSA9
IGRlbGV0ZTsKQEAgLTY5LDcgKzY5LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0
cmluZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lPiBtX2JhY2tp
bmc7Ci0gICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgbV9vYmplY3RSZWdpc3RyeTsKICAgICBX
ZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKICAgICBXZWJHUFVJZGVudGlmaWVyIG1f
aWRlbnRpZmllcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZURldmljZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZURldmljZS5jcHAKaW5kZXggODQ1YzQzYjRkMTQxNTIzZGE2
NDA5YmU4MDQ0Mzg2ODFjY2JmM2ViYS4uMDY3ODc5YmVhOWUzYzUyOTQzZGZkYzYxODE5NWFiMWNh
NTMzZTRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVEZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlRGV2aWNlLmNwcApAQCAtNDMsNyArNDMsNiBAQAogI2luY2x1ZGUg
IlJlbW90ZVRleHR1cmUuaCIKICNpbmNsdWRlICJXZWJHUFVDb21tYW5kRW5jb2RlckRlc2NyaXB0
b3IuaCIKICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCi0jaW5jbHVkZSAiV2ViR1BVT2Jq
ZWN0UmVnaXN0cnkuaCIKICNpbmNsdWRlICJXZWJHUFVPdXRPZk1lbW9yeUVycm9yLmgiCiAjaW5j
bHVkZSAiV2ViR1BVVmFsaWRhdGlvbkVycm9yLmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dl
YkdQVS9XZWJHUFVCaW5kR3JvdXAuaD4KQEAgLTc3LDE5ICs3NiwxNCBAQAogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotUmVtb3RlRGV2aWNlOjpSZW1vdGVEZXZpY2UoUEFMOjpXZWJHUFU6OkRldmlj
ZSYgZGV2aWNlLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BV
OjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCitS
ZW1vdGVEZXZpY2U6OlJlbW90ZURldmljZShQQUw6OldlYkdQVTo6RGV2aWNlJiBkZXZpY2UsIFdl
YkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
KQogICAgIDogbV9iYWNraW5nKGRldmljZSkKLSAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2JqZWN0
UmVnaXN0cnkpCiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkKICAgICAsIG1faWRlbnRp
ZmllcihpZGVudGlmaWVyKQogewotICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1faWRl
bnRpZmllciwgbV9iYWNraW5nKTsKIH0KIAotUmVtb3RlRGV2aWNlOjp+UmVtb3RlRGV2aWNlKCkK
LXsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOwotfQor
UmVtb3RlRGV2aWNlOjp+UmVtb3RlRGV2aWNlKCkgPSBkZWZhdWx0OwogCiB2b2lkIFJlbW90ZURl
dmljZTo6ZGVzdHJveSgpCiB7CkBAIC05OCwxNTYgKzkyLDE1NiBAQCB2b2lkIFJlbW90ZURldmlj
ZTo6ZGVzdHJveSgpCiAKIHZvaWQgUmVtb3RlRGV2aWNlOjpjcmVhdGVCdWZmZXIoY29uc3QgV2Vi
R1BVOjpCdWZmZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50
aWZpZXIpCiB7Ci0gICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RSZWdpc3Ry
eS5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgYXV0byBjb252ZXJ0ZWREZXNj
cmlwdG9yID0gbV9vYmplY3RIZWFwLmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKICAg
ICBBU1NFUlQoY29udmVydGVkRGVzY3JpcHRvcik7CiAgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlw
dG9yKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIGJ1ZmZlciA9IG1fYmFja2luZy0+Y3Jl
YXRlQnVmZmVyKCpjb252ZXJ0ZWREZXNjcmlwdG9yKTsKLSAgICBhdXRvIHJlbW90ZUJ1ZmZlciA9
IFJlbW90ZUJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlciwgbV9vYmplY3RSZWdpc3RyeSwgbV9vYmplY3RI
ZWFwLCBpZGVudGlmaWVyKTsKLSAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KHJlbW90ZUJ1ZmZl
cik7CisgICAgYXV0byByZW1vdGVCdWZmZXIgPSBSZW1vdGVCdWZmZXI6OmNyZWF0ZShidWZmZXIs
IG1fb2JqZWN0SGVhcCwgaWRlbnRpZmllcik7CisgICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChp
ZGVudGlmaWVyLCByZW1vdGVCdWZmZXIpOwogfQogCiB2b2lkIFJlbW90ZURldmljZTo6Y3JlYXRl
VGV4dHVyZShjb25zdCBXZWJHUFU6OlRleHR1cmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBXZWJH
UFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9y
ID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7CisgICAg
YXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RIZWFwLmNvbnZlcnRGcm9tQmFja2lu
ZyhkZXNjcmlwdG9yKTsKICAgICBBU1NFUlQoY29udmVydGVkRGVzY3JpcHRvcik7CiAgICAgaWYg
KCFjb252ZXJ0ZWREZXNjcmlwdG9yKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHRleHR1
cmUgPSBtX2JhY2tpbmctPmNyZWF0ZVRleHR1cmUoKmNvbnZlcnRlZERlc2NyaXB0b3IpOwotICAg
IGF1dG8gcmVtb3RlVGV4dHVyZSA9IFJlbW90ZVRleHR1cmU6OmNyZWF0ZSh0ZXh0dXJlLCBtX29i
amVjdFJlZ2lzdHJ5LCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIpOwotICAgIG1fb2JqZWN0SGVh
cC5hZGRPYmplY3QocmVtb3RlVGV4dHVyZSk7CisgICAgYXV0byByZW1vdGVUZXh0dXJlID0gUmVt
b3RlVGV4dHVyZTo6Y3JlYXRlKHRleHR1cmUsIG1fb2JqZWN0SGVhcCwgaWRlbnRpZmllcik7Cisg
ICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChpZGVudGlmaWVyLCByZW1vdGVUZXh0dXJlKTsKIH0K
IAogdm9pZCBSZW1vdGVEZXZpY2U6OmNyZWF0ZVNhbXBsZXIoY29uc3QgV2ViR1BVOjpTYW1wbGVy
RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewot
ICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZy
b21CYWNraW5nKGRlc2NyaXB0b3IpOworICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1f
b2JqZWN0SGVhcC5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7CiAgICAgQVNTRVJUKGNv
bnZlcnRlZERlc2NyaXB0b3IpOwogICAgIGlmICghY29udmVydGVkRGVzY3JpcHRvcikKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgYXV0byBzYW1wbGVyID0gbV9iYWNraW5nLT5jcmVhdGVTYW1wbGVy
KCpjb252ZXJ0ZWREZXNjcmlwdG9yKTsKLSAgICBhdXRvIHJlbW90ZVNhbXBsZXIgPSBSZW1vdGVT
YW1wbGVyOjpjcmVhdGUoc2FtcGxlciwgbV9vYmplY3RSZWdpc3RyeSwgbV9vYmplY3RIZWFwLCBp
ZGVudGlmaWVyKTsKLSAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KHJlbW90ZVNhbXBsZXIpOwor
ICAgIGF1dG8gcmVtb3RlU2FtcGxlciA9IFJlbW90ZVNhbXBsZXI6OmNyZWF0ZShzYW1wbGVyLCBt
X29iamVjdEhlYXAsIGlkZW50aWZpZXIpOworICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QoaWRl
bnRpZmllciwgcmVtb3RlU2FtcGxlcik7CiB9CiAKIHZvaWQgUmVtb3RlRGV2aWNlOjppbXBvcnRF
eHRlcm5hbFRleHR1cmUoY29uc3QgV2ViR1BVOjpFeHRlcm5hbFRleHR1cmVEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBjb252
ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoZGVz
Y3JpcHRvcik7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RIZWFwLmNv
bnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKICAgICBBU1NFUlQoY29udmVydGVkRGVzY3Jp
cHRvcik7CiAgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKQogICAgICAgICByZXR1cm47CiAK
ICAgICBhdXRvIGV4dGVybmFsVGV4dHVyZSA9IG1fYmFja2luZy0+aW1wb3J0RXh0ZXJuYWxUZXh0
dXJlKCpjb252ZXJ0ZWREZXNjcmlwdG9yKTsKLSAgICBhdXRvIHJlbW90ZUV4dGVybmFsVGV4dHVy
ZSA9IFJlbW90ZUV4dGVybmFsVGV4dHVyZTo6Y3JlYXRlKGV4dGVybmFsVGV4dHVyZSwgbV9vYmpl
Y3RSZWdpc3RyeSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKLSAgICBtX29iamVjdEhlYXAu
YWRkT2JqZWN0KHJlbW90ZUV4dGVybmFsVGV4dHVyZSk7CisgICAgYXV0byByZW1vdGVFeHRlcm5h
bFRleHR1cmUgPSBSZW1vdGVFeHRlcm5hbFRleHR1cmU6OmNyZWF0ZShleHRlcm5hbFRleHR1cmUs
IG1fb2JqZWN0SGVhcCwgaWRlbnRpZmllcik7CisgICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChp
ZGVudGlmaWVyLCByZW1vdGVFeHRlcm5hbFRleHR1cmUpOwogfQogCiB2b2lkIFJlbW90ZURldmlj
ZTo6Y3JlYXRlQmluZEdyb3VwTGF5b3V0KGNvbnN0IFdlYkdQVTo6QmluZEdyb3VwTGF5b3V0RGVz
Y3JpcHRvciYgZGVzY3JpcHRvciwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAg
IGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21C
YWNraW5nKGRlc2NyaXB0b3IpOworICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fb2Jq
ZWN0SGVhcC5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7CiAgICAgQVNTRVJUKGNvbnZl
cnRlZERlc2NyaXB0b3IpOwogICAgIGlmICghY29udmVydGVkRGVzY3JpcHRvcikKICAgICAgICAg
cmV0dXJuOwogCiAgICAgYXV0byBiaW5kR3JvdXBMYXlvdXQgPSBtX2JhY2tpbmctPmNyZWF0ZUJp
bmRHcm91cExheW91dCgqY29udmVydGVkRGVzY3JpcHRvcik7Ci0gICAgYXV0byByZW1vdGVCaW5k
R3JvdXBMYXlvdXQgPSBSZW1vdGVCaW5kR3JvdXBMYXlvdXQ6OmNyZWF0ZShiaW5kR3JvdXBMYXlv
dXQsIG1fb2JqZWN0UmVnaXN0cnksIG1fb2JqZWN0SGVhcCwgaWRlbnRpZmllcik7Ci0gICAgbV9v
YmplY3RIZWFwLmFkZE9iamVjdChyZW1vdGVCaW5kR3JvdXBMYXlvdXQpOworICAgIGF1dG8gcmVt
b3RlQmluZEdyb3VwTGF5b3V0ID0gUmVtb3RlQmluZEdyb3VwTGF5b3V0OjpjcmVhdGUoYmluZEdy
b3VwTGF5b3V0LCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIpOworICAgIG1fb2JqZWN0SGVhcC5h
ZGRPYmplY3QoaWRlbnRpZmllciwgcmVtb3RlQmluZEdyb3VwTGF5b3V0KTsKIH0KIAogdm9pZCBS
ZW1vdGVEZXZpY2U6OmNyZWF0ZVBpcGVsaW5lTGF5b3V0KGNvbnN0IFdlYkdQVTo6UGlwZWxpbmVM
YXlvdXREZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIp
CiB7Ci0gICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RSZWdpc3RyeS5jb252
ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9y
ID0gbV9vYmplY3RIZWFwLmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKICAgICBBU1NF
UlQoY29udmVydGVkRGVzY3JpcHRvcik7CiAgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKQog
ICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHBpcGVsaW5lTGF5b3V0ID0gbV9iYWNraW5nLT5j
cmVhdGVQaXBlbGluZUxheW91dCgqY29udmVydGVkRGVzY3JpcHRvcik7Ci0gICAgYXV0byByZW1v
dGVQaXBlbGluZUxheW91dCA9IFJlbW90ZVBpcGVsaW5lTGF5b3V0OjpjcmVhdGUocGlwZWxpbmVM
YXlvdXQsIG1fb2JqZWN0UmVnaXN0cnksIG1fb2JqZWN0SGVhcCwgaWRlbnRpZmllcik7Ci0gICAg
bV9vYmplY3RIZWFwLmFkZE9iamVjdChyZW1vdGVQaXBlbGluZUxheW91dCk7CisgICAgYXV0byBy
ZW1vdGVQaXBlbGluZUxheW91dCA9IFJlbW90ZVBpcGVsaW5lTGF5b3V0OjpjcmVhdGUocGlwZWxp
bmVMYXlvdXQsIG1fb2JqZWN0SGVhcCwgaWRlbnRpZmllcik7CisgICAgbV9vYmplY3RIZWFwLmFk
ZE9iamVjdChpZGVudGlmaWVyLCByZW1vdGVQaXBlbGluZUxheW91dCk7CiB9CiAKIHZvaWQgUmVt
b3RlRGV2aWNlOjpjcmVhdGVCaW5kR3JvdXAoY29uc3QgV2ViR1BVOjpCaW5kR3JvdXBEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0
byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tp
bmcoZGVzY3JpcHRvcik7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RI
ZWFwLmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKICAgICBBU1NFUlQoY29udmVydGVk
RGVzY3JpcHRvcik7CiAgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKQogICAgICAgICByZXR1
cm47CiAKICAgICBhdXRvIGJpbmRHcm91cCA9IG1fYmFja2luZy0+Y3JlYXRlQmluZEdyb3VwKCpj
b252ZXJ0ZWREZXNjcmlwdG9yKTsKLSAgICBhdXRvIHJlbW90ZUJpbmRHcm91cCA9IFJlbW90ZUJp
bmRHcm91cDo6Y3JlYXRlKGJpbmRHcm91cCwgbV9vYmplY3RSZWdpc3RyeSwgbV9vYmplY3RIZWFw
LCBpZGVudGlmaWVyKTsKLSAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KHJlbW90ZUJpbmRHcm91
cCk7CisgICAgYXV0byByZW1vdGVCaW5kR3JvdXAgPSBSZW1vdGVCaW5kR3JvdXA6OmNyZWF0ZShi
aW5kR3JvdXAsIG1fb2JqZWN0SGVhcCwgaWRlbnRpZmllcik7CisgICAgbV9vYmplY3RIZWFwLmFk
ZE9iamVjdChpZGVudGlmaWVyLCByZW1vdGVCaW5kR3JvdXApOwogfQogCiB2b2lkIFJlbW90ZURl
dmljZTo6Y3JlYXRlU2hhZGVyTW9kdWxlKGNvbnN0IFdlYkdQVTo6U2hhZGVyTW9kdWxlRGVzY3Jp
cHRvciYgZGVzY3JpcHRvciwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGF1
dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNr
aW5nKGRlc2NyaXB0b3IpOworICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0
SGVhcC5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7CiAgICAgQVNTRVJUKGNvbnZlcnRl
ZERlc2NyaXB0b3IpOwogICAgIGlmICghY29udmVydGVkRGVzY3JpcHRvcikKICAgICAgICAgcmV0
dXJuOwogCiAgICAgYXV0byBzaGFkZXJNb2R1bGUgPSBtX2JhY2tpbmctPmNyZWF0ZVNoYWRlck1v
ZHVsZSgqY29udmVydGVkRGVzY3JpcHRvcik7Ci0gICAgYXV0byByZW1vdGVTaGFkZXJNb2R1bGUg
PSBSZW1vdGVTaGFkZXJNb2R1bGU6OmNyZWF0ZShzaGFkZXJNb2R1bGUsIG1fb2JqZWN0UmVnaXN0
cnksIG1fb2JqZWN0SGVhcCwgaWRlbnRpZmllcik7Ci0gICAgbV9vYmplY3RIZWFwLmFkZE9iamVj
dChyZW1vdGVTaGFkZXJNb2R1bGUpOworICAgIGF1dG8gcmVtb3RlU2hhZGVyTW9kdWxlID0gUmVt
b3RlU2hhZGVyTW9kdWxlOjpjcmVhdGUoc2hhZGVyTW9kdWxlLCBtX29iamVjdEhlYXAsIGlkZW50
aWZpZXIpOworICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QoaWRlbnRpZmllciwgcmVtb3RlU2hh
ZGVyTW9kdWxlKTsKIH0KIAogdm9pZCBSZW1vdGVEZXZpY2U6OmNyZWF0ZUNvbXB1dGVQaXBlbGlu
ZShjb25zdCBXZWJHUFU6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdl
YkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0
b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKKyAg
ICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdEhlYXAuY29udmVydEZyb21CYWNr
aW5nKGRlc2NyaXB0b3IpOwogICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKICAgICBp
ZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gY29t
cHV0ZVBpcGVsaW5lID0gbV9iYWNraW5nLT5jcmVhdGVDb21wdXRlUGlwZWxpbmUoKmNvbnZlcnRl
ZERlc2NyaXB0b3IpOwotICAgIGF1dG8gcmVtb3RlQ29tcHV0ZVBpcGVsaW5lID0gUmVtb3RlQ29t
cHV0ZVBpcGVsaW5lOjpjcmVhdGUoY29tcHV0ZVBpcGVsaW5lLCBtX29iamVjdFJlZ2lzdHJ5LCBt
X29iamVjdEhlYXAsIGlkZW50aWZpZXIpOwotICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QocmVt
b3RlQ29tcHV0ZVBpcGVsaW5lKTsKKyAgICBhdXRvIHJlbW90ZUNvbXB1dGVQaXBlbGluZSA9IFJl
bW90ZUNvbXB1dGVQaXBlbGluZTo6Y3JlYXRlKGNvbXB1dGVQaXBlbGluZSwgbV9vYmplY3RIZWFw
LCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KGlkZW50aWZpZXIsIHJl
bW90ZUNvbXB1dGVQaXBlbGluZSk7CiB9CiAKIHZvaWQgUmVtb3RlRGV2aWNlOjpjcmVhdGVSZW5k
ZXJQaXBlbGluZShjb25zdCBXZWJHUFU6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3Jp
cHRvciwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGF1dG8gY29udmVydGVk
RGVzY3JpcHRvciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0
b3IpOworICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0
RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7CiAgICAgQVNTRVJUKGNvbnZlcnRlZERlc2NyaXB0b3Ip
OwogICAgIGlmICghY29udmVydGVkRGVzY3JpcHRvcikKICAgICAgICAgcmV0dXJuOwogCiAgICAg
YXV0byByZW5kZXJQaXBlbGluZSA9IG1fYmFja2luZy0+Y3JlYXRlUmVuZGVyUGlwZWxpbmUoKmNv
bnZlcnRlZERlc2NyaXB0b3IpOwotICAgIGF1dG8gcmVtb3RlUmVuZGVyUGlwZWxpbmUgPSBSZW1v
dGVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKHJlbmRlclBpcGVsaW5lLCBtX29iamVjdFJlZ2lzdHJ5
LCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIpOwotICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3Qo
cmVtb3RlUmVuZGVyUGlwZWxpbmUpOworICAgIGF1dG8gcmVtb3RlUmVuZGVyUGlwZWxpbmUgPSBS
ZW1vdGVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKHJlbmRlclBpcGVsaW5lLCBtX29iamVjdEhlYXAs
IGlkZW50aWZpZXIpOworICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QoaWRlbnRpZmllciwgcmVt
b3RlUmVuZGVyUGlwZWxpbmUpOwogfQogCiB2b2lkIFJlbW90ZURldmljZTo6Y3JlYXRlQ29tcHV0
ZVBpcGVsaW5lQXN5bmMoY29uc3QgV2ViR1BVOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQogewotICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRv
ciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOworICAg
IGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0RnJvbUJhY2tp
bmcoZGVzY3JpcHRvcik7CiAgICAgQVNTRVJUKGNvbnZlcnRlZERlc2NyaXB0b3IpOwogICAgIGlm
ICghY29udmVydGVkRGVzY3JpcHRvcikgewogICAgICAgICBjYWxsYmFjaygpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgbV9iYWNraW5nLT5jcmVhdGVDb21wdXRlUGlwZWxpbmVBc3lu
YygqY29udmVydGVkRGVzY3JpcHRvciwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHdl
YWtPYmplY3RIZWFwID0gV2Vha1B0cjxXZWJHUFU6Ok9iamVjdEhlYXA+KG1fb2JqZWN0SGVhcCks
IG9iamVjdFJlZ2lzdHJ5ID0gbV9vYmplY3RSZWdpc3RyeSwgaWRlbnRpZmllcl0gKFJlZjxQQUw6
OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lPiYmIGNvbXB1dGVQaXBlbGluZSkgbXV0YWJsZSB7Cisg
ICAgbV9iYWNraW5nLT5jcmVhdGVDb21wdXRlUGlwZWxpbmVBc3luYygqY29udmVydGVkRGVzY3Jp
cHRvciwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHdlYWtPYmplY3RIZWFwID0gV2Vh
a1B0cjxXZWJHUFU6Ok9iamVjdEhlYXA+KG1fb2JqZWN0SGVhcCksIGlkZW50aWZpZXIgPSBtX2lk
ZW50aWZpZXJdIChSZWY8UEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZT4mJiBjb21wdXRlUGlw
ZWxpbmUpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtPYmplY3RIZWFwKQogICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICBhdXRvIHJlbW90ZUNvbXB1dGVQaXBlbGluZSA9IFJlbW90ZUNv
bXB1dGVQaXBlbGluZTo6Y3JlYXRlKGNvbXB1dGVQaXBlbGluZSwgb2JqZWN0UmVnaXN0cnksICp3
ZWFrT2JqZWN0SGVhcCwgaWRlbnRpZmllcik7Ci0gICAgICAgIHdlYWtPYmplY3RIZWFwLT5hZGRP
YmplY3QocmVtb3RlQ29tcHV0ZVBpcGVsaW5lKTsKKyAgICAgICAgYXV0byByZW1vdGVDb21wdXRl
UGlwZWxpbmUgPSBSZW1vdGVDb21wdXRlUGlwZWxpbmU6OmNyZWF0ZShjb21wdXRlUGlwZWxpbmUs
ICp3ZWFrT2JqZWN0SGVhcCwgaWRlbnRpZmllcik7CisgICAgICAgIHdlYWtPYmplY3RIZWFwLT5h
ZGRPYmplY3QoaWRlbnRpZmllciwgcmVtb3RlQ29tcHV0ZVBpcGVsaW5lKTsKICAgICAgICAgY2Fs
bGJhY2soKTsKICAgICB9KTsKIH0KIAogdm9pZCBSZW1vdGVEZXZpY2U6OmNyZWF0ZVJlbmRlclBp
cGVsaW5lQXN5bmMoY29uc3QgV2ViR1BVOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImIGRlc2Ny
aXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgV1RGOjpDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7Ci0gICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0g
bV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgYXV0
byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RIZWFwLmNvbnZlcnRGcm9tQmFja2luZyhk
ZXNjcmlwdG9yKTsKICAgICBBU1NFUlQoY29udmVydGVkRGVzY3JpcHRvcik7CiAgICAgaWYgKCFj
b252ZXJ0ZWREZXNjcmlwdG9yKSB7CiAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBtX2JhY2tpbmctPmNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmMoKmNv
bnZlcnRlZERlc2NyaXB0b3IsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB3ZWFrT2Jq
ZWN0SGVhcCA9IFdlYWtQdHI8V2ViR1BVOjpPYmplY3RIZWFwPihtX29iamVjdEhlYXApLCBvYmpl
Y3RSZWdpc3RyeSA9IG1fb2JqZWN0UmVnaXN0cnksIGlkZW50aWZpZXJdIChSZWY8UEFMOjpXZWJH
UFU6OlJlbmRlclBpcGVsaW5lPiYmIHJlbmRlclBpcGVsaW5lKSBtdXRhYmxlIHsKKyAgICBtX2Jh
Y2tpbmctPmNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmMoKmNvbnZlcnRlZERlc2NyaXB0b3IsIFtj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB3ZWFrT2JqZWN0SGVhcCA9IFdlYWtQdHI8V2Vi
R1BVOjpPYmplY3RIZWFwPihtX29iamVjdEhlYXApLCBpZGVudGlmaWVyID0gbV9pZGVudGlmaWVy
XSAoUmVmPFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZT4mJiByZW5kZXJQaXBlbGluZSkgbXV0
YWJsZSB7CiAgICAgICAgIGlmICghd2Vha09iamVjdEhlYXApCiAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIGF1dG8gcmVtb3RlUmVuZGVyUGlwZWxpbmUgPSBSZW1vdGVSZW5kZXJQaXBlbGlu
ZTo6Y3JlYXRlKHJlbmRlclBpcGVsaW5lLCBvYmplY3RSZWdpc3RyeSwgKndlYWtPYmplY3RIZWFw
LCBpZGVudGlmaWVyKTsKLSAgICAgICAgd2Vha09iamVjdEhlYXAtPmFkZE9iamVjdChyZW1vdGVS
ZW5kZXJQaXBlbGluZSk7CisgICAgICAgIGF1dG8gcmVtb3RlUmVuZGVyUGlwZWxpbmUgPSBSZW1v
dGVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKHJlbmRlclBpcGVsaW5lLCAqd2Vha09iamVjdEhlYXAs
IGlkZW50aWZpZXIpOworICAgICAgICB3ZWFrT2JqZWN0SGVhcC0+YWRkT2JqZWN0KGlkZW50aWZp
ZXIsIHJlbW90ZVJlbmRlclBpcGVsaW5lKTsKICAgICAgICAgY2FsbGJhY2soKTsKICAgICB9KTsK
IH0KQEAgLTI1NiwzOSArMjUwLDM5IEBAIHZvaWQgUmVtb3RlRGV2aWNlOjpjcmVhdGVDb21tYW5k
RW5jb2Rlcihjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkdQVTo6Q29tbWFuZEVuY29kCiB7CiAgICAg
c3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6Q29tbWFuZEVuY29kZXJEZXNjcmlwdG9yPiBjb252
ZXJ0ZWREZXNjcmlwdG9yOwogICAgIGlmIChkZXNjcmlwdG9yKSB7Ci0gICAgICAgIGF1dG8gcmVz
dWx0RGVzY3JpcHRvciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKCpkZXNj
cmlwdG9yKTsKKyAgICAgICAgYXV0byByZXN1bHREZXNjcmlwdG9yID0gbV9vYmplY3RIZWFwLmNv
bnZlcnRGcm9tQmFja2luZygqZGVzY3JpcHRvcik7CiAgICAgICAgIEFTU0VSVChyZXN1bHREZXNj
cmlwdG9yKTsKICAgICAgICAgY29udmVydGVkRGVzY3JpcHRvciA9IFdURk1vdmUocmVzdWx0RGVz
Y3JpcHRvcik7CiAgICAgICAgIGlmICghY29udmVydGVkRGVzY3JpcHRvcikKICAgICAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgYXV0byBjb21tYW5kRW5jb2RlciA9IG1fYmFja2luZy0+Y3Jl
YXRlQ29tbWFuZEVuY29kZXIoKmNvbnZlcnRlZERlc2NyaXB0b3IpOwotICAgIGF1dG8gcmVtb3Rl
Q29tbWFuZEVuY29kZXIgPSBSZW1vdGVDb21tYW5kRW5jb2Rlcjo6Y3JlYXRlKGNvbW1hbmRFbmNv
ZGVyLCBtX29iamVjdFJlZ2lzdHJ5LCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIpOwotICAgIG1f
b2JqZWN0SGVhcC5hZGRPYmplY3QocmVtb3RlQ29tbWFuZEVuY29kZXIpOworICAgIGF1dG8gcmVt
b3RlQ29tbWFuZEVuY29kZXIgPSBSZW1vdGVDb21tYW5kRW5jb2Rlcjo6Y3JlYXRlKGNvbW1hbmRF
bmNvZGVyLCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIpOworICAgIG1fb2JqZWN0SGVhcC5hZGRP
YmplY3QoaWRlbnRpZmllciwgcmVtb3RlQ29tbWFuZEVuY29kZXIpOwogfQogCiB2b2lkIFJlbW90
ZURldmljZTo6Y3JlYXRlUmVuZGVyQnVuZGxlRW5jb2Rlcihjb25zdCBXZWJHUFU6OlJlbmRlckJ1
bmRsZUVuY29kZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50
aWZpZXIpCiB7Ci0gICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RSZWdpc3Ry
eS5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgYXV0byBjb252ZXJ0ZWREZXNj
cmlwdG9yID0gbV9vYmplY3RIZWFwLmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKICAg
ICBBU1NFUlQoY29udmVydGVkRGVzY3JpcHRvcik7CiAgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlw
dG9yKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHJlbmRlckJ1bmRsZUVuY29kZXIgPSBt
X2JhY2tpbmctPmNyZWF0ZVJlbmRlckJ1bmRsZUVuY29kZXIoKmNvbnZlcnRlZERlc2NyaXB0b3Ip
OwotICAgIGF1dG8gcmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlciA9IFJlbW90ZVJlbmRlckJ1bmRs
ZUVuY29kZXI6OmNyZWF0ZShyZW5kZXJCdW5kbGVFbmNvZGVyLCBtX29iamVjdFJlZ2lzdHJ5LCBt
X29iamVjdEhlYXAsIGlkZW50aWZpZXIpOwotICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QocmVt
b3RlUmVuZGVyQnVuZGxlRW5jb2Rlcik7CisgICAgYXV0byByZW1vdGVSZW5kZXJCdW5kbGVFbmNv
ZGVyID0gUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6Y3JlYXRlKHJlbmRlckJ1bmRsZUVuY29k
ZXIsIG1fb2JqZWN0SGVhcCwgaWRlbnRpZmllcik7CisgICAgbV9vYmplY3RIZWFwLmFkZE9iamVj
dChpZGVudGlmaWVyLCByZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyKTsKIH0KIAogdm9pZCBSZW1v
dGVEZXZpY2U6OmNyZWF0ZVF1ZXJ5U2V0KGNvbnN0IFdlYkdQVTo6UXVlcnlTZXREZXNjcmlwdG9y
JiBkZXNjcmlwdG9yLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBj
b252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmco
ZGVzY3JpcHRvcik7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RIZWFw
LmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKICAgICBBU1NFUlQoY29udmVydGVkRGVz
Y3JpcHRvcik7CiAgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKQogICAgICAgICByZXR1cm47
CiAKICAgICBhdXRvIHF1ZXJ5U2V0ID0gbV9iYWNraW5nLT5jcmVhdGVRdWVyeVNldCgqY29udmVy
dGVkRGVzY3JpcHRvcik7Ci0gICAgYXV0byByZW1vdGVRdWVyeVNldCA9IFJlbW90ZVF1ZXJ5U2V0
OjpjcmVhdGUocXVlcnlTZXQsIG1fb2JqZWN0UmVnaXN0cnksIG1fb2JqZWN0SGVhcCwgaWRlbnRp
Zmllcik7Ci0gICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChyZW1vdGVRdWVyeVNldCk7CisgICAg
YXV0byByZW1vdGVRdWVyeVNldCA9IFJlbW90ZVF1ZXJ5U2V0OjpjcmVhdGUocXVlcnlTZXQsIG1f
b2JqZWN0SGVhcCwgaWRlbnRpZmllcik7CisgICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChpZGVu
dGlmaWVyLCByZW1vdGVRdWVyeVNldCk7CiB9CiAKIHZvaWQgUmVtb3RlRGV2aWNlOjpwdXNoRXJy
b3JTY29wZShQQUw6OldlYkdQVTo6RXJyb3JGaWx0ZXIgZXJyb3JGaWx0ZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZURldmljZS5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVEZXZpY2Uu
aAppbmRleCA0OTdjZGEwOTYxNGVlNDZhZDBjMTU3OTI4ZDE2YTIyYWI2MGJlNzZhLi41YTc1OWNh
ZTAxOGZhZmRiMjU3NGNmNGMwYjAzOTA0ZDY3OThmZDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZURldmljZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRGV2aWNlLmgKQEAgLTQ5
LDcgKzQ5LDYgQEAgc3RydWN0IENvbW1hbmRFbmNvZGVyRGVzY3JpcHRvcjsKIHN0cnVjdCBDb21w
dXRlUGlwZWxpbmVEZXNjcmlwdG9yOwogc3RydWN0IEV4dGVybmFsVGV4dHVyZURlc2NyaXB0b3I7
CiBjbGFzcyBPYmplY3RIZWFwOwotY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiBzdHJ1Y3QgUGlwZWxp
bmVMYXlvdXREZXNjcmlwdG9yOwogc3RydWN0IFF1ZXJ5U2V0RGVzY3JpcHRvcjsKIHN0cnVjdCBS
ZW5kZXJCdW5kbGVFbmNvZGVyRGVzY3JpcHRvcjsKQEAgLTYwLDE4ICs1OSwxOSBAQCBzdHJ1Y3Qg
VGV4dHVyZURlc2NyaXB0b3I7CiB9CiAKIGNsYXNzIFJlbW90ZURldmljZSBmaW5hbCA6IHB1Ymxp
YyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVEZXZpY2U+IGNyZWF0ZShQQUw6Oldl
YkdQVTo6RGV2aWNlJiBkZXZpY2UsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lz
dHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRl
bnRpZmllcikKKyAgICBzdGF0aWMgUmVmPFJlbW90ZURldmljZT4gY3JlYXRlKFBBTDo6V2ViR1BV
OjpEZXZpY2UmIGRldmljZSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBSZW1vdGVEZXZpY2UoZGV2aWNlLCBvYmplY3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRp
ZmllcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVEZXZpY2UoZGV2aWNl
LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgflJlbW90ZURldmljZSgp
OwogCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKKyAgICBQQUw6
OldlYkdQVTo6RGV2aWNlJiBiYWNraW5nKCkgeyByZXR1cm4gbV9iYWNraW5nOyB9CiAKLSAgICBS
ZW1vdGVEZXZpY2UoUEFMOjpXZWJHUFU6OkRldmljZSYsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkm
LCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKK3ByaXZhdGU6CisgICAg
UmVtb3RlRGV2aWNlKFBBTDo6V2ViR1BVOjpEZXZpY2UmLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBX
ZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZURldmljZShjb25zdCBSZW1vdGVEZXZpY2Um
KSA9IGRlbGV0ZTsKICAgICBSZW1vdGVEZXZpY2UoUmVtb3RlRGV2aWNlJiYpID0gZGVsZXRlOwpA
QCAtMTA4LDcgKzEwOCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7
CiAKICAgICBSZWY8UEFMOjpXZWJHUFU6OkRldmljZT4gbV9iYWNraW5nOwotICAgIFdlYkdQVTo6
T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7CiAgICAgV2ViR1BVOjpPYmplY3RIZWFw
JiBtX29iamVjdEhlYXA7CiAgICAgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVFeHRlcm5hbFRleHR1cmUuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVFeHRlcm5hbFRleHR1cmUuY3BwCmluZGV4IDk1M2QwZTRkODBhNmVmOGZk
YjNkNzYxNTdkNzJjYTQ0OWU4NDAyYmEuLjE4YTBmMTU2ZjI2MGNjMDhhZDMxMTdlYzlkZDE1MDI4
NWY4YTBjNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4dHVyZS5jcHAKQEAgLTI5LDI0
ICsyOSwxOCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVU9i
amVjdEhlYXAuaCIKLSNpbmNsdWRlICJXZWJHUFVPYmplY3RSZWdpc3RyeS5oIgogI2luY2x1ZGUg
PHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVRXh0ZXJuYWxUZXh0dXJlLmg+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi1SZW1vdGVFeHRlcm5hbFRleHR1cmU6OlJlbW90ZUV4dGVybmFsVGV4dHVy
ZShQQUw6OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlJiBleHRlcm5hbFRleHR1cmUsIFdlYkdQVTo6
T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVj
dEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK1JlbW90ZUV4dGVybmFsVGV4dHVy
ZTo6UmVtb3RlRXh0ZXJuYWxUZXh0dXJlKFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1cmUmIGV4
dGVybmFsVGV4dHVyZSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2JhY2tpbmcoZXh0ZXJuYWxUZXh0dXJlKQotICAg
ICwgbV9vYmplY3RSZWdpc3RyeShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChv
YmplY3RIZWFwKQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7Ci0gICAgbV9vYmpl
Y3RSZWdpc3RyeS5hZGRPYmplY3QobV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOwogfQogCi1SZW1v
dGVFeHRlcm5hbFRleHR1cmU6On5SZW1vdGVFeHRlcm5hbFRleHR1cmUoKQotewotICAgIG1fb2Jq
ZWN0UmVnaXN0cnkucmVtb3ZlT2JqZWN0KG1faWRlbnRpZmllcik7Ci19CitSZW1vdGVFeHRlcm5h
bFRleHR1cmU6On5SZW1vdGVFeHRlcm5hbFRleHR1cmUoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVt
b3RlRXh0ZXJuYWxUZXh0dXJlOjpzZXRMYWJlbChTdHJpbmcmJiBsYWJlbCkKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRXh0ZXJu
YWxUZXh0dXJlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZUV4dGVybmFsVGV4dHVyZS5oCmluZGV4IDMxZDFjNTQzOTkyYmJiYmVmMTM0NjJiZDEwM2Ji
ODI4ZTFmZjk2MGYuLjBjNDc3YWNkM2RkNzRlYTgxOGJmNzExMzFjZmI1OTVmZTcxMTQ0ZmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
RXh0ZXJuYWxUZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVFeHRlcm5hbFRleHR1cmUuaApAQCAtNDAsMjIgKzQwLDIyIEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIGNsYXNzIE9iamVjdEhlYXA7Ci1j
bGFzcyBPYmplY3RSZWdpc3RyeTsKIH0KIAogY2xhc3MgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlIGZp
bmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZUV4dGVybmFsVGV4
dHVyZT4gY3JlYXRlKFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1cmUmIGV4dGVybmFsVGV4dHVy
ZSwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0
SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIHN0YXRp
YyBSZWY8UmVtb3RlRXh0ZXJuYWxUZXh0dXJlPiBjcmVhdGUoUEFMOjpXZWJHUFU6OkV4dGVybmFs
VGV4dHVyZSYgZXh0ZXJuYWxUZXh0dXJlLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAs
IFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFJlbW90ZUV4dGVybmFsVGV4dHVyZShleHRlcm5hbFRleHR1cmUsIG9iamVjdFJl
Z2lzdHJ5LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFJlbW90ZUV4dGVybmFsVGV4dHVyZShleHRlcm5hbFRleHR1cmUsIG9iamVjdEhlYXAs
IGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVFeHRlcm5hbFRleHR1
cmUoKTsKIAotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgT2JqZWN0UmVnaXN0cnk7CisgICAg
UEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZSYgYmFja2luZygpIHsgcmV0dXJuIG1fYmFja2lu
ZzsgfQogCi0gICAgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlKFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRl
eHR1cmUmLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2Vi
R1BVSWRlbnRpZmllcik7Citwcml2YXRlOgorICAgIFJlbW90ZUV4dGVybmFsVGV4dHVyZShQQUw6
OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlJiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRl
bnRpZmllcik7CiAKICAgICBSZW1vdGVFeHRlcm5hbFRleHR1cmUoY29uc3QgUmVtb3RlRXh0ZXJu
YWxUZXh0dXJlJikgPSBkZWxldGU7CiAgICAgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlKFJlbW90ZUV4
dGVybmFsVGV4dHVyZSYmKSA9IGRlbGV0ZTsKQEAgLTY3LDcgKzY3LDYgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6RXh0ZXJu
YWxUZXh0dXJlPiBtX2JhY2tpbmc7Ci0gICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgbV9vYmpl
Y3RSZWdpc3RyeTsKICAgICBXZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKICAgICBX
ZWJHUFVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5jcHAKaW5kZXggZDcyZWVl
OWE4NTc0NjBmYjdhNWJkNzE1OTIyNDk5YzllNGIyYzg5MC4uNTM5MmI3YzRhOTZhNTAyMTNmZTVl
N2MwMTgzNjM2MjU5ZDllMGQ3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLmNwcApAQCAtMjgsNDggKzI4LDkwIEBACiAK
ICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgiCiAjaW5jbHVkZSAiUmVtb3RlQWRhcHRlci5oIgorI2luY2x1ZGUgIlJlbW90ZUdQ
VU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlR1BVUHJveHlNZXNzYWdlcy5oIgorI2luY2x1
ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCIKICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFw
LmgiCi0jaW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIKKyNpbmNsdWRlIDxwYWwvZ3Jh
cGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVSW1wbC5oPgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9X
ZWJHUFUvV2ViR1BVLmg+CiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVBZGFw
dGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZW1vdGVHUFU6OlJlbW90ZUdQVShQQUw6
OldlYkdQVTo6R1BVJiBncHUsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5
LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRp
ZmllcikKLSAgICA6IG1fYmFja2luZyhncHUpCi0gICAgLCBtX29iamVjdFJlZ2lzdHJ5KG9iamVj
dFJlZ2lzdHJ5KQotICAgICwgbV9vYmplY3RIZWFwKG9iamVjdEhlYXApCitSZW1vdGVHUFU6OlJl
bW90ZUdQVShXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQm
IHJlbmRlcmluZ0JhY2tlbmQsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbSkK
KyAgICA6IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKQorICAgICwgbV93b3JrUXVldWUoSVBDOjpTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjpj
cmVhdGUoIldlYkdQVSB3b3JrIHF1ZXVlIikpCisgICAgLCBtX3N0cmVhbUNvbm5lY3Rpb24oSVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uOjpjcmVhdGUoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jb25uZWN0aW9uKCksIFdURk1vdmUoc3RyZWFtKSwgbV93b3JrUXVldWUpKQogICAgICwgbV9p
ZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAgLCBtX3JlbmRlcmluZ0JhY2tlbmQocmVuZGVyaW5n
QmFja2VuZCkKKyAgICAsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIoZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy53ZWJQcm9jZXNzSWRlbnRpZmllcigpKQogewotICAgIG1fb2JqZWN0UmVnaXN0cnku
YWRkT2JqZWN0KG1faWRlbnRpZmllciwgbV9iYWNraW5nKTsKKyAgICBpbml0aWFsaXplKCk7CiB9
CiAKLVJlbW90ZUdQVTo6flJlbW90ZUdQVSgpCitSZW1vdGVHUFU6On5SZW1vdGVHUFUoKSA9IGRl
ZmF1bHQ7CisKK3ZvaWQgUmVtb3RlR1BVOjppbml0aWFsaXplKCkKIHsKLSAgICBtX29iamVjdFJl
Z2lzdHJ5LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOworICAgIGFzc2VydElzTWFpblJ1bkxv
b3AoKTsKKyAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9XSgpIG11dGFibGUgeworICAgICAgICBwcm90ZWN0ZWRUaGlzLT53b3JrUXVldWVJbml0
aWFsaXplKCk7CisgICAgfSk7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdGFydFJlY2Vpdmlu
Z01lc3NhZ2VzKCp0aGlzLCBNZXNzYWdlczo6UmVtb3RlR1BVOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAotdm9pZCBSZW1vdGVHUFU6OnJlcXVl
c3RBZGFwdGVyKGNvbnN0IFdlYkdQVTo6UmVxdWVzdEFkYXB0ZXJPcHRpb25zJiBvcHRpb25zLCBX
ZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dHJpbmcmJiwgV2ViR1BVOjpTdXBwb3J0ZWRGZWF0dXJlcyYmLCBXZWJHUFU6OlN1cHBvcnRlZExp
bWl0cyYmLCBib29sKT4mJiBjYWxsYmFjaykKK3ZvaWQgUmVtb3RlR1BVOjpzdG9wTGlzdGVuaW5n
Rm9ySVBDKFJlZjxSZW1vdGVHUFU+JiYgcmVmRnJvbUNvbm5lY3Rpb24pCiB7Ci0gICAgYXV0byBj
b252ZXJ0ZWRPcHRpb25zID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcob3B0
aW9ucyk7CisgICAgYXNzZXJ0SXNNYWluUnVuTG9vcCgpOworICAgIG1fc3RyZWFtQ29ubmVjdGlv
bi0+c3RvcFJlY2VpdmluZ01lc3NhZ2VzKE1lc3NhZ2VzOjpSZW1vdGVHUFU6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIG1fd29ya1F1ZXVlLT5k
aXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocmVmRnJvbUNvbm5lY3Rpb24pXSgpIHsK
KyAgICAgICAgcHJvdGVjdGVkVGhpcy0+d29ya1F1ZXVlVW5pbml0aWFsaXplKCk7CisgICAgfSk7
Cit9CisKK3ZvaWQgUmVtb3RlR1BVOjp3b3JrUXVldWVJbml0aWFsaXplKCkKK3sKKyAgICBtX3N0
cmVhbVRocmVhZC5yZXNldCgpOworICAgIGFzc2VydElzQ3VycmVudChtX3N0cmVhbVRocmVhZCk7
CisgICAgYXV0byBiYWNraW5nID0gUEFMOjpXZWJHUFU6OkdQVUltcGw6OmNyZWF0ZSgpOworICAg
IGlmIChiYWNraW5nKSB7CisgICAgICAgIG1fYmFja2luZyA9IGJhY2tpbmcucmVsZWFzZU5vbk51
bGwoKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR1BVUHJveHk6Oldhc0NyZWF0ZWQo
dHJ1ZSwgbV93b3JrUXVldWUtPndha2VVcFNlbWFwaG9yZSgpKSk7CisgICAgfSBlbHNlCisgICAg
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdQVVByb3h5OjpXYXNDcmVhdGVkKGZhbHNlLCBtX3dv
cmtRdWV1ZS0+d2FrZVVwU2VtYXBob3JlKCkpKTsKK30KKwordm9pZCBSZW1vdGVHUFU6OndvcmtR
dWV1ZVVuaW5pdGlhbGl6ZSgpCit7CisgICAgYXNzZXJ0SXNDdXJyZW50KG1fc3RyZWFtVGhyZWFk
KTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24gPSBudWxscHRyOworfQorCit2b2lkIFJlbW90ZUdQ
VTo6cmVxdWVzdEFkYXB0ZXIoY29uc3QgV2ViR1BVOjpSZXF1ZXN0QWRhcHRlck9wdGlvbnMmIG9w
dGlvbnMsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgV1RGOjpDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHN0ZDo6b3B0aW9uYWw8UmVxdWVzdEFkYXB0ZXJSZXNwb25zZT4mJik+JiYgY2FsbGJh
Y2spCit7CisgICAgYXNzZXJ0SXNDdXJyZW50KG1fc3RyZWFtVGhyZWFkKTsKKyAgICBBU1NFUlQo
bV9iYWNraW5nKTsKKworICAgIGF1dG8gY29udmVydGVkT3B0aW9ucyA9IG1fb2JqZWN0SGVhcC5j
b252ZXJ0RnJvbUJhY2tpbmcob3B0aW9ucyk7CiAgICAgQVNTRVJUKGNvbnZlcnRlZE9wdGlvbnMp
OwogICAgIGlmICghY29udmVydGVkT3B0aW9ucykgewotICAgICAgICBjYWxsYmFjayhTdHJpbmdJ
bXBsOjplbXB0eSgpLCB7IHsgfSB9LCB7IH0sIGZhbHNlKTsKKyAgICAgICAgY2FsbGJhY2soc3Rk
OjpudWxsb3B0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fYmFja2luZy0+cmVx
dWVzdEFkYXB0ZXIoKmNvbnZlcnRlZE9wdGlvbnMsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spLCB3ZWFrT2JqZWN0SGVhcCA9IFdlYWtQdHI8V2ViR1BVOjpPYmplY3RIZWFwPihtX29iamVj
dEhlYXApLCBvYmplY3RSZWdpc3RyeSA9IG1fb2JqZWN0UmVnaXN0cnksIGlkZW50aWZpZXJdIChS
ZWZQdHI8UEFMOjpXZWJHUFU6OkFkYXB0ZXI+JiYgYWRhcHRlcikgbXV0YWJsZSB7CisgICAgbV9i
YWNraW5nLT5yZXF1ZXN0QWRhcHRlcigqY29udmVydGVkT3B0aW9ucywgW2NhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayksIHdlYWtPYmplY3RIZWFwID0gV2Vha1B0cjxXZWJHUFU6Ok9iamVjdEhl
YXA+KG1fb2JqZWN0SGVhcCksIGlkZW50aWZpZXJdIChSZWZQdHI8UEFMOjpXZWJHUFU6OkFkYXB0
ZXI+JiYgYWRhcHRlcikgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha09iamVjdEhlYXAgfHwg
IWFkYXB0ZXIpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBEZWFsIHdpdGggZmFpbHVyZSBoZXJl
LgorICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQotICAgICAgICBhdXRvIHJlbW90ZUFkYXB0ZXIgPSBSZW1vdGVBZGFwdGVy
OjpjcmVhdGUoKmFkYXB0ZXIsIG9iamVjdFJlZ2lzdHJ5LCAqd2Vha09iamVjdEhlYXAsIGlkZW50
aWZpZXIpOwotICAgICAgICB3ZWFrT2JqZWN0SGVhcC0+YWRkT2JqZWN0KHJlbW90ZUFkYXB0ZXIp
OworICAgICAgICBhdXRvIHJlbW90ZUFkYXB0ZXIgPSBSZW1vdGVBZGFwdGVyOjpjcmVhdGUoKmFk
YXB0ZXIsICp3ZWFrT2JqZWN0SGVhcCwgaWRlbnRpZmllcik7CisgICAgICAgIHdlYWtPYmplY3RI
ZWFwLT5hZGRPYmplY3QoaWRlbnRpZmllciwgcmVtb3RlQWRhcHRlcik7CiAgICAgICAgIGF1dG8g
bmFtZSA9IGFkYXB0ZXItPm5hbWUoKTsKICAgICAgICAgY29uc3QgYXV0byYgZmVhdHVyZXMgPSBh
ZGFwdGVyLT5mZWF0dXJlcygpOwogICAgICAgICBjb25zdCBhdXRvJiBsaW1pdHMgPSBhZGFwdGVy
LT5saW1pdHMoKTsKLSAgICAgICAgY2FsbGJhY2soV1RGTW92ZShuYW1lKSwgV2ViR1BVOjpTdXBw
b3J0ZWRGZWF0dXJlcyB7IGZlYXR1cmVzLmZlYXR1cmVzKCkgfSwgV2ViR1BVOjpTdXBwb3J0ZWRM
aW1pdHMgeworICAgICAgICBjYWxsYmFjayh7IHsgV1RGTW92ZShuYW1lKSwgV2ViR1BVOjpTdXBw
b3J0ZWRGZWF0dXJlcyB7IGZlYXR1cmVzLmZlYXR1cmVzKCkgfSwgV2ViR1BVOjpTdXBwb3J0ZWRM
aW1pdHMgewogICAgICAgICAgICAgbGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24xRCgpLAogICAg
ICAgICAgICAgbGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24yRCgpLAogICAgICAgICAgICAgbGlt
aXRzLm1heFRleHR1cmVEaW1lbnNpb24zRCgpLApAQCAtOTYsNyArMTM4LDcgQEAgdm9pZCBSZW1v
dGVHUFU6OnJlcXVlc3RBZGFwdGVyKGNvbnN0IFdlYkdQVTo6UmVxdWVzdEFkYXB0ZXJPcHRpb25z
JiBvcHRpb25zLCBXZWIKICAgICAgICAgICAgIGxpbWl0cy5tYXhDb21wdXRlV29ya2dyb3VwU2l6
ZVkoKSwKICAgICAgICAgICAgIGxpbWl0cy5tYXhDb21wdXRlV29ya2dyb3VwU2l6ZVooKSwKICAg
ICAgICAgICAgIGxpbWl0cy5tYXhDb21wdXRlV29ya2dyb3Vwc1BlckRpbWVuc2lvbigpLAotICAg
ICAgICB9LCBhZGFwdGVyLT5pc0ZhbGxiYWNrQWRhcHRlcigpKTsKKyAgICAgICAgfSwgYWRhcHRl
ci0+aXNGYWxsYmFja0FkYXB0ZXIoKSB9IH0pOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUuaAppbmRleCA3
NTg1NTQzMzQ1NjBjMTIzYzNlMWZmYjlhODQxOTc4NGViYWZkMDc5Li40OTQ2NjE1ZTg2NGI5YmE5
Y2ZhY2Y4NzI2MDVhYTczMWU3NjZmZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLmgKQEAgLTI3LDEyICsyNywxNyBAQAog
CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlvbldv
cmtRdWV1ZS5oIgogI2luY2x1ZGUgIlN0cmVhbU1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUg
IlN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJHUFVJZGVudGlmaWVyLmgi
CisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0SGVhcC5oIgogI2luY2x1ZGUgIldlYkdQVVN1cHBvcnRl
ZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiV2ViR1BVU3VwcG9ydGVkTGltaXRzLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9u
SGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkQXNz
ZXJ0aW9ucy5oPgogCiBuYW1lc3BhY2UgUEFMOjpXZWJHUFUgewogY2xhc3MgR1BVOwpAQCAtNDAs
MzkgKzQ1LDk3IEBAIGNsYXNzIEdQVTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CitjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOwor
CiBuYW1lc3BhY2UgV2ViR1BVIHsKIGNsYXNzIE9iamVjdEhlYXA7Ci1jbGFzcyBPYmplY3RSZWdp
c3RyeTsKIHN0cnVjdCBSZXF1ZXN0QWRhcHRlck9wdGlvbnM7CiB9CiAKIGNsYXNzIFJlbW90ZUdQ
VSBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVHUFU+IGNy
ZWF0ZShQQUw6OldlYkdQVTo6R1BVJiBncHUsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVj
dFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZp
ZXIgaWRlbnRpZmllcikKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUdQVT4gY3JlYXRlKFdlYkdQVUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2VzcywgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgcmVuZGVyaW5nQmFja2Vu
ZCwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlR1BVKGdwdSwgb2JqZWN0UmVnaXN0cnksIG9iamVj
dEhlYXAsIGlkZW50aWZpZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3Rl
R1BVKGlkZW50aWZpZXIsIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIHJlbmRlcmluZ0JhY2tl
bmQsIFdURk1vdmUoc3RyZWFtKSkpOwogICAgIH0KIAorICAgIHZvaWQgc3RvcExpc3RlbmluZ0Zv
cklQQyhSZWY8UmVtb3RlR1BVPiYmIHJlZkZyb21Db25uZWN0aW9uKTsKKwogICAgIHZpcnR1YWwg
flJlbW90ZUdQVSgpOwogCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdpc3Ry
eTsKKyAgICBzdHJ1Y3QgUmVxdWVzdEFkYXB0ZXJSZXNwb25zZSB7CisgICAgICAgIFN0cmluZyBu
YW1lOworICAgICAgICBXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVzIGZlYXR1cmVzOworICAgICAg
ICBXZWJHUFU6OlN1cHBvcnRlZExpbWl0cyBsaW1pdHM7CisgICAgICAgIGJvb2wgaXNGYWxsYmFj
a0FkYXB0ZXI7CisKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgZW5jb2RlciA8
PCBuYW1lOworICAgICAgICAgICAgZW5jb2RlciA8PCBmZWF0dXJlczsKKyAgICAgICAgICAgIGVu
Y29kZXIgPDwgbGltaXRzOworICAgICAgICAgICAgZW5jb2RlciA8PCBpc0ZhbGxiYWNrQWRhcHRl
cjsKKyAgICAgICAgfQorCisgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFJlcXVlc3RBZGFwdGVyUmVzcG9uc2U+IGRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQorICAgICAgICB7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbmFtZTsK
KyAgICAgICAgICAgIGRlY29kZXIgPj4gbmFtZTsKKyAgICAgICAgICAgIGlmICghbmFtZSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgICAgICBzdGQ6Om9w
dGlvbmFsPFdlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXM+IGZlYXR1cmVzOworICAgICAgICAgICAg
ZGVjb2RlciA+PiBmZWF0dXJlczsKKyAgICAgICAgICAgIGlmICghZmVhdHVyZXMpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICAgICAgc3RkOjpvcHRpb25h
bDxXZWJHUFU6OlN1cHBvcnRlZExpbWl0cz4gbGltaXRzOworICAgICAgICAgICAgZGVjb2RlciA+
PiBsaW1pdHM7CisgICAgICAgICAgICBpZiAoIWxpbWl0cykKKyAgICAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzRmFs
bGJhY2tBZGFwdGVyOworICAgICAgICAgICAgZGVjb2RlciA+PiBpc0ZhbGxiYWNrQWRhcHRlcjsK
KyAgICAgICAgICAgIGlmICghaXNGYWxsYmFja0FkYXB0ZXIpCisgICAgICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICAgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpuYW1l
KSwgV1RGTW92ZSgqZmVhdHVyZXMpLCBXVEZNb3ZlKCpsaW1pdHMpLCAqaXNGYWxsYmFja0FkYXB0
ZXIgfSB9OworICAgICAgICB9CisgICAgfTsKIAotICAgIFJlbW90ZUdQVShQQUw6OldlYkdQVTo6
R1BVJiwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQ
VUlkZW50aWZpZXIpOworcHJpdmF0ZToKKyAgICBSZW1vdGVHUFUoV2ViR1BVSWRlbnRpZmllciwg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmLCBJUEM6
OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CiAKICAgICBSZW1vdGVHUFUoY29uc3QgUmVtb3Rl
R1BVJikgPSBkZWxldGU7CiAgICAgUmVtb3RlR1BVKFJlbW90ZUdQVSYmKSA9IGRlbGV0ZTsKICAg
ICBSZW1vdGVHUFUmIG9wZXJhdG9yPShjb25zdCBSZW1vdGVHUFUmKSA9IGRlbGV0ZTsKICAgICBS
ZW1vdGVHUFUmIG9wZXJhdG9yPShSZW1vdGVHUFUmJikgPSBkZWxldGU7CiAKLSAgICB2b2lkIGRp
ZFJlY2VpdmVTdHJlYW1NZXNzYWdlKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UmLCBJ
UEM6OkRlY29kZXImKSBmaW5hbDsKKyAgICB2b2lkIGluaXRpYWxpemUoKTsKKyAgICB2b2lkIHdv
cmtRdWV1ZUluaXRpYWxpemUoKTsKKyAgICB2b2lkIHdvcmtRdWV1ZVVuaW5pdGlhbGl6ZSgpOwog
Ci0gICAgdm9pZCByZXF1ZXN0QWRhcHRlcihjb25zdCBXZWJHUFU6OlJlcXVlc3RBZGFwdGVyT3B0
aW9ucyYsIFdlYkdQVUlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJp
bmcmJiwgV2ViR1BVOjpTdXBwb3J0ZWRGZWF0dXJlcyYmLCBXZWJHUFU6OlN1cHBvcnRlZExpbWl0
cyYmLCBib29sKT4mJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBib29sIHNlbmQo
VCYmIG1lc3NhZ2UpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9zdHJlYW1Db25uZWN0
aW9uLT5jb25uZWN0aW9uKCkuc2VuZChXVEZNb3ZlKG1lc3NhZ2UpLCBtX2lkZW50aWZpZXIpOwor
ICAgIH0KKworICAgIHZvaWQgZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoSVBDOjpTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uQmFzZSYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCi0gICAgUmVmPFBBTDo6
V2ViR1BVOjpHUFU+IG1fYmFja2luZzsKLSAgICBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBtX29i
amVjdFJlZ2lzdHJ5OwotICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFwOwotICAg
IFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAgIHZvaWQgcmVxdWVzdEFkYXB0ZXIo
Y29uc3QgV2ViR1BVOjpSZXF1ZXN0QWRhcHRlck9wdGlvbnMmLCBXZWJHUFVJZGVudGlmaWVyLCBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxSZXF1ZXN0QWRhcHRlclJl
c3BvbnNlPiYmKT4mJik7CisKKyAgICBXZWFrUHRyPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+
IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKKyAgICBSZWY8SVBDOjpTdHJlYW1Db25uZWN0
aW9uV29ya1F1ZXVlPiBtX3dvcmtRdWV1ZTsKKyAgICBSZWZQdHI8SVBDOjpTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uPiBtX3N0cmVhbUNvbm5lY3Rpb247CisgICAgUmVmUHRyPFBBTDo6V2ViR1BVOjpH
UFU+IG1fYmFja2luZyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fc3RyZWFtVGhyZWFkKTsKKyAgICBX
ZWJHUFU6Ok9iamVjdEhlYXAgbV9vYmplY3RIZWFwIFdURl9HVUFSREVEX0JZX0xPQ0sobV9zdHJl
YW1UaHJlYWQpOworICAgIGNvbnN0IFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAg
IFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBtX3JlbmRlcmluZ0JhY2tlbmQ7CisgICAgTk9f
VU5JUVVFX0FERFJFU1MgVGhyZWFkQXNzZXJ0aW9uIG1fc3RyZWFtVGhyZWFkOworICAgIGNvbnN0
IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXI7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUubWVzc2FnZXMuaW4KaW5kZXgg
ZTRkOTUyNjVhYTVkMDAzODk0YWM4MDYyOTE0MDAwYTI0Y2I1M2UyOS4uZjljODViYjg4OTdkOGI5
MWI4MjEwYzJiM2IwODA5ZmYyOTM3ODU1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUubWVzc2FnZXMuaW4K
QEAgLTI0LDcgKzI0LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKIG1lc3NhZ2VzIC0+
IFJlbW90ZUdQVSBOb3RSZWZDb3VudGVkIFN0cmVhbSB7Ci0gICAgdm9pZCBSZXF1ZXN0QWRhcHRl
cihXZWJLaXQ6OldlYkdQVTo6UmVxdWVzdEFkYXB0ZXJPcHRpb25zIG9wdGlvbnMsIFdlYktpdDo6
V2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoU3RyaW5nIG5hbWUsIFdlYktpdDo6V2Vi
R1BVOjpTdXBwb3J0ZWRGZWF0dXJlcyBzdXBwb3J0ZWRGZWF0dXJlcywgV2ViS2l0OjpXZWJHUFU6
OlN1cHBvcnRlZExpbWl0cyBzdXBwb3J0ZWRMaW1pdHMsIGJvb2wgaXNGYWxsYmFja0FkYXB0ZXIp
IFN5bmNocm9ub3VzCisgICAgdm9pZCBSZXF1ZXN0QWRhcHRlcihXZWJLaXQ6OldlYkdQVTo6UmVx
dWVzdEFkYXB0ZXJPcHRpb25zIG9wdGlvbnMsIFdlYktpdDo6V2ViR1BVSWRlbnRpZmllciBpZGVu
dGlmaWVyKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJLaXQ6OlJlbW90ZUdQVTo6UmVxdWVzdEFkYXB0
ZXJSZXNwb25zZT4gcmVzcG9uc2UpIFN5bmNocm9ub3VzCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVQaXBlbGlu
ZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZVBpcGVsaW5lTGF5b3V0LmNwcAppbmRleCA2Y2Q4YjY3N2Q1OTE4MDJjNjI5ZGI2ZmQzNDg3
NDc2YWEzZTZlMGMwLi5mMDY0MjdjZDZkNGY5OWZjYzg5NmIzM2VjMzkxZjhiOGZkMjQ3YzRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZVBpcGVsaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZVBpcGVsaW5lTGF5b3V0LmNwcApAQCAtMjksMjQgKzI5LDE4IEBACiAj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVT2JqZWN0SGVhcC5oIgot
I2luY2x1ZGUgIldlYkdQVU9iamVjdFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNz
L1dlYkdQVS9XZWJHUFVQaXBlbGluZUxheW91dC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAot
UmVtb3RlUGlwZWxpbmVMYXlvdXQ6OlJlbW90ZVBpcGVsaW5lTGF5b3V0KFBBTDo6V2ViR1BVOjpQ
aXBlbGluZUxheW91dCYgcGlwZWxpbmVMYXlvdXQsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9i
amVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50
aWZpZXIgaWRlbnRpZmllcikKK1JlbW90ZVBpcGVsaW5lTGF5b3V0OjpSZW1vdGVQaXBlbGluZUxh
eW91dChQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQmIHBpcGVsaW5lTGF5b3V0LCBXZWJHUFU6
Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAg
ICA6IG1fYmFja2luZyhwaXBlbGluZUxheW91dCkKLSAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2Jq
ZWN0UmVnaXN0cnkpCiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkKICAgICAsIG1faWRl
bnRpZmllcihpZGVudGlmaWVyKQogewotICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1f
aWRlbnRpZmllciwgbV9iYWNraW5nKTsKIH0KIAotUmVtb3RlUGlwZWxpbmVMYXlvdXQ6On5SZW1v
dGVQaXBlbGluZUxheW91dCgpCi17Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5yZW1vdmVPYmplY3Qo
bV9pZGVudGlmaWVyKTsKLX0KK1JlbW90ZVBpcGVsaW5lTGF5b3V0Ojp+UmVtb3RlUGlwZWxpbmVM
YXlvdXQoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVtb3RlUGlwZWxpbmVMYXlvdXQ6OnNldExhYmVs
KFN0cmluZyYmIGxhYmVsKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVQaXBlbGluZUxheW91dC5oIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVQaXBlbGluZUxheW91dC5oCmluZGV4IDIz
YmNhZWI2MDY0MTIwYjUzMjA3MmM3MzYyYTg2ZjBmNmM2N2YyMGUuLjAzYTJkMmE3ODI4OTZlNjA3
MmQ5Y2ExMTk1MWMyY2ZlZGY0MjdkOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUGlwZWxpbmVMYXlvdXQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVBpcGVsaW5lTGF5b3V0LmgK
QEAgLTQwLDIyICs0MCwyMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIFdlYkdQ
VSB7CiBjbGFzcyBPYmplY3RIZWFwOwotY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiB9CiAKIGNsYXNz
IFJlbW90ZVBpcGVsaW5lTGF5b3V0IGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJl
Y2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPFJlbW90ZVBpcGVsaW5lTGF5b3V0PiBjcmVhdGUoUEFMOjpXZWJHUFU6OlBpcGVsaW5l
TGF5b3V0JiBwaXBlbGluZUxheW91dCwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVn
aXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBp
ZGVudGlmaWVyKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlUGlwZWxpbmVMYXlvdXQ+IGNyZWF0ZShQ
QUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQmIHBpcGVsaW5lTGF5b3V0LCBXZWJHUFU6Ok9iamVj
dEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5l
TGF5b3V0LCBvYmplY3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91
dCwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90
ZVBpcGVsaW5lTGF5b3V0KCk7CiAKLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIE9iamVjdFJl
Z2lzdHJ5OworICAgIFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91dCYgYmFja2luZygpIHsgcmV0
dXJuIG1fYmFja2luZzsgfQogCi0gICAgUmVtb3RlUGlwZWxpbmVMYXlvdXQoUEFMOjpXZWJHUFU6
OlBpcGVsaW5lTGF5b3V0JiwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0
SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOworcHJpdmF0ZToKKyAgICBSZW1vdGVQaXBlbGluZUxh
eW91dChQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQmLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBX
ZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZVBpcGVsaW5lTGF5b3V0KGNvbnN0IFJlbW90
ZVBpcGVsaW5lTGF5b3V0JikgPSBkZWxldGU7CiAgICAgUmVtb3RlUGlwZWxpbmVMYXlvdXQoUmVt
b3RlUGlwZWxpbmVMYXlvdXQmJikgPSBkZWxldGU7CkBAIC02Nyw3ICs2Nyw2IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7CiAKICAgICBSZWY8UEFMOjpXZWJHUFU6OlBp
cGVsaW5lTGF5b3V0PiBtX2JhY2tpbmc7Ci0gICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgbV9v
YmplY3RSZWdpc3RyeTsKICAgICBXZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKICAg
ICBXZWJHUFVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVlcnlTZXQuY3Bw
CmluZGV4IGUwY2QxYzVjM2Q3YjE1NDU1NWRkMTE4OTFkNmFiMjAwN2NhZjRhNzUuLjBmNjA2NTAw
MDA4Yjk4N2Y4NmY1YTZhYjVkZWMzMWU2ZDliNWNmYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVlcnlTZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVlcnlTZXQuY3Bw
CkBAIC0yOSwyNCArMjksMTggQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRl
ICJXZWJHUFVPYmplY3RIZWFwLmgiCi0jaW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIK
ICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVF1ZXJ5U2V0Lmg+CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi1SZW1vdGVRdWVyeVNldDo6UmVtb3RlUXVlcnlTZXQoUEFMOjpXZWJH
UFU6OlF1ZXJ5U2V0JiBxdWVyeVNldCwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVn
aXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBp
ZGVudGlmaWVyKQorUmVtb3RlUXVlcnlTZXQ6OlJlbW90ZVF1ZXJ5U2V0KFBBTDo6V2ViR1BVOjpR
dWVyeVNldCYgcXVlcnlTZXQsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BV
SWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5nKHF1ZXJ5U2V0KQotICAgICwg
bV9vYmplY3RSZWdpc3RyeShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmpl
Y3RIZWFwKQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7Ci0gICAgbV9vYmplY3RS
ZWdpc3RyeS5hZGRPYmplY3QobV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOwogfQogCi1SZW1vdGVR
dWVyeVNldDo6flJlbW90ZVF1ZXJ5U2V0KCkKLXsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LnJlbW92
ZU9iamVjdChtX2lkZW50aWZpZXIpOwotfQorUmVtb3RlUXVlcnlTZXQ6On5SZW1vdGVRdWVyeVNl
dCgpID0gZGVmYXVsdDsKIAogdm9pZCBSZW1vdGVRdWVyeVNldDo6ZGVzdHJveSgpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1
ZXJ5U2V0LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZVF1ZXJ5U2V0LmgKaW5kZXggZTE3ZDczYzMyZWYzZWYwZjM3ZDZhYmVhNTU1OTBmOWQwNTEyNjM4
YS4uNGZhMDJkZGZkYTM0OThiZTA5Mzg0ZWFjZGYwNzhmZDYzMmU5NDM4OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWVyeVNldC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVl
cnlTZXQuaApAQCAtNDAsMjIgKzQwLDIyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3Bh
Y2UgV2ViR1BVIHsKIGNsYXNzIE9iamVjdEhlYXA7Ci1jbGFzcyBPYmplY3RSZWdpc3RyeTsKIH0K
IAogY2xhc3MgUmVtb3RlUXVlcnlTZXQgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdl
UmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8UmVtb3RlUXVlcnlTZXQ+IGNyZWF0ZShQQUw6OldlYkdQVTo6UXVlcnlTZXQmIHF1
ZXJ5U2V0LCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpP
YmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAg
c3RhdGljIFJlZjxSZW1vdGVRdWVyeVNldD4gY3JlYXRlKFBBTDo6V2ViR1BVOjpRdWVyeVNldCYg
cXVlcnlTZXQsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3Rl
UXVlcnlTZXQocXVlcnlTZXQsIG9iamVjdFJlZ2lzdHJ5LCBvYmplY3RIZWFwLCBpZGVudGlmaWVy
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVF1ZXJ5U2V0KHF1ZXJ5U2V0
LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3Rl
UXVlcnlTZXQoKTsKIAotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgT2JqZWN0UmVnaXN0cnk7
CisgICAgUEFMOjpXZWJHUFU6OlF1ZXJ5U2V0JiBiYWNraW5nKCkgeyByZXR1cm4gbV9iYWNraW5n
OyB9CiAKLSAgICBSZW1vdGVRdWVyeVNldChQQUw6OldlYkdQVTo6UXVlcnlTZXQmLCBXZWJHUFU6
Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7
Citwcml2YXRlOgorICAgIFJlbW90ZVF1ZXJ5U2V0KFBBTDo6V2ViR1BVOjpRdWVyeVNldCYsIFdl
YkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlUXVlcnlT
ZXQoY29uc3QgUmVtb3RlUXVlcnlTZXQmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVRdWVyeVNldChS
ZW1vdGVRdWVyeVNldCYmKSA9IGRlbGV0ZTsKQEAgLTY5LDcgKzY5LDYgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6UXVlcnlT
ZXQ+IG1fYmFja2luZzsKLSAgICBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBtX29iamVjdFJlZ2lz
dHJ5OwogICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFwOwogICAgIFdlYkdQVUlk
ZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVldWUuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWV1ZS5jcHAKaW5kZXggZGVhNjQwOThm
YTZkNDVjODU3MzkzNDRlNWFhN2YwZjA4MjNiOWE5Ni4uZmZhYTY2ZDZiMDNkM2I3MjI0MzIxYTdk
NWM3MTAxNWM3NjExOTQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWV1ZS5jcHAKQEAgLTI5LDMxICsyOSwyNSBAQAog
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIK
LSNpbmNsdWRlICJXZWJHUFVPYmplY3RSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGlj
cy9XZWJHUFUvV2ViR1BVUXVldWUuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90ZVF1
ZXVlOjpSZW1vdGVRdWV1ZShQQUw6OldlYkdQVTo6UXVldWUmIHF1ZXVlLCBXZWJHUFU6Ok9iamVj
dFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFw
LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCitSZW1vdGVRdWV1ZTo6UmVtb3RlUXVldWUo
UEFMOjpXZWJHUFU6OlF1ZXVlJiBxdWV1ZSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFw
LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2JhY2tpbmcocXVldWUpCi0g
ICAgLCBtX29iamVjdFJlZ2lzdHJ5KG9iamVjdFJlZ2lzdHJ5KQogICAgICwgbV9vYmplY3RIZWFw
KG9iamVjdEhlYXApCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKLSAgICBtX29i
amVjdFJlZ2lzdHJ5LmFkZE9iamVjdChtX2lkZW50aWZpZXIsIG1fYmFja2luZyk7CiB9CiAKLVJl
bW90ZVF1ZXVlOjp+UmVtb3RlUXVldWUoKQotewotICAgIG1fb2JqZWN0UmVnaXN0cnkucmVtb3Zl
T2JqZWN0KG1faWRlbnRpZmllcik7Ci19CitSZW1vdGVRdWV1ZTo6flJlbW90ZVF1ZXVlKCkgPSBk
ZWZhdWx0OwogCiB2b2lkIFJlbW90ZVF1ZXVlOjpzdWJtaXQoVmVjdG9yPFdlYkdQVUlkZW50aWZp
ZXI+JiYgY29tbWFuZEJ1ZmZlcnMpCiB7CiAgICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBw
ZXI8UEFMOjpXZWJHUFU6OkNvbW1hbmRCdWZmZXI+PiBjb252ZXJ0ZWRDb21tYW5kQnVmZmVyczsK
ICAgICBjb252ZXJ0ZWRDb21tYW5kQnVmZmVycy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvbW1h
bmRCdWZmZXJzLnNpemUoKSk7CiAgICAgZm9yIChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIg
OiBjb21tYW5kQnVmZmVycykgewotICAgICAgICBhdXRvIGNvbnZlcnRlZENvbW1hbmRCdWZmZXIg
PSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRDb21tYW5kQnVmZmVyRnJvbUJhY2tpbmcoaWRlbnRp
Zmllcik7CisgICAgICAgIGF1dG8gY29udmVydGVkQ29tbWFuZEJ1ZmZlciA9IG1fb2JqZWN0SGVh
cC5jb252ZXJ0Q29tbWFuZEJ1ZmZlckZyb21CYWNraW5nKGlkZW50aWZpZXIpOwogICAgICAgICBB
U1NFUlQoY29udmVydGVkQ29tbWFuZEJ1ZmZlcik7CiAgICAgICAgIGlmICghY29udmVydGVkQ29t
bWFuZEJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKQEAgLTc0LDcgKzY4LDcgQEAgdm9pZCBS
ZW1vdGVRdWV1ZTo6d3JpdGVCdWZmZXIoCiAgICAgUEFMOjpXZWJHUFU6OlNpemU2NCBidWZmZXJP
ZmZzZXQsCiAgICAgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKLSAgICBhdXRvIGNvbnZlcnRl
ZEJ1ZmZlciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEJ1ZmZlckZyb21CYWNraW5nKGJ1ZmZl
cik7CisgICAgYXV0byBjb252ZXJ0ZWRCdWZmZXIgPSBtX29iamVjdEhlYXAuY29udmVydEJ1ZmZl
ckZyb21CYWNraW5nKGJ1ZmZlcik7CiAgICAgQVNTRVJUKGNvbnZlcnRlZEJ1ZmZlcik7CiAgICAg
aWYgKCFjb252ZXJ0ZWRCdWZmZXIpCiAgICAgICAgIHJldHVybjsKQEAgLTg4LDExICs4MiwxMSBA
QCB2b2lkIFJlbW90ZVF1ZXVlOjp3cml0ZVRleHR1cmUoCiAgICAgY29uc3QgV2ViR1BVOjpJbWFn
ZURhdGFMYXlvdXQmIGRhdGFMYXlvdXQsCiAgICAgY29uc3QgV2ViR1BVOjpFeHRlbnQzRCYgc2l6
ZSkKIHsKLSAgICBhdXRvIGNvbnZlcnRlZERlc3RpbmF0aW9uID0gbV9vYmplY3RSZWdpc3RyeS5j
b252ZXJ0RnJvbUJhY2tpbmcoZGVzdGluYXRpb24pOworICAgIGF1dG8gY29udmVydGVkRGVzdGlu
YXRpb24gPSBtX29iamVjdEhlYXAuY29udmVydEZyb21CYWNraW5nKGRlc3RpbmF0aW9uKTsKICAg
ICBBU1NFUlQoY29udmVydGVkRGVzdGluYXRpb24pOwotICAgIGF1dG8gY29udmVydGVkRGF0YUxh
eW91dCA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGRhdGFMYXlvdXQpOwor
ICAgIGF1dG8gY29udmVydGVkRGF0YUxheW91dCA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0RnJvbUJh
Y2tpbmcoZGF0YUxheW91dCk7CiAgICAgQVNTRVJUKGNvbnZlcnRlZERlc3RpbmF0aW9uKTsKLSAg
ICBhdXRvIGNvbnZlcnRlZFNpemUgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2lu
ZyhzaXplKTsKKyAgICBhdXRvIGNvbnZlcnRlZFNpemUgPSBtX29iamVjdEhlYXAuY29udmVydEZy
b21CYWNraW5nKHNpemUpOwogICAgIEFTU0VSVChjb252ZXJ0ZWRTaXplKTsKICAgICBpZiAoIWNv
bnZlcnRlZERlc3RpbmF0aW9uIHx8ICFjb252ZXJ0ZWREZXN0aW5hdGlvbiB8fCAhY29udmVydGVk
U2l6ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTA1LDExICs5OSwxMSBAQCB2b2lkIFJlbW90ZVF1
ZXVlOjpjb3B5RXh0ZXJuYWxJbWFnZVRvVGV4dHVyZSgKICAgICBjb25zdCBXZWJHUFU6OkltYWdl
Q29weVRleHR1cmVUYWdnZWQmIGRlc3RpbmF0aW9uLAogICAgIGNvbnN0IFdlYkdQVTo6RXh0ZW50
M0QmIGNvcHlTaXplKQogewotICAgIGF1dG8gY29udmVydGVkU291cmNlID0gbV9vYmplY3RSZWdp
c3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoc291cmNlKTsKKyAgICBhdXRvIGNvbnZlcnRlZFNvdXJj
ZSA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0RnJvbUJhY2tpbmcoc291cmNlKTsKICAgICBBU1NFUlQo
Y29udmVydGVkU291cmNlKTsKLSAgICBhdXRvIGNvbnZlcnRlZERlc3RpbmF0aW9uID0gbV9vYmpl
Y3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzdGluYXRpb24pOworICAgIGF1dG8gY29u
dmVydGVkRGVzdGluYXRpb24gPSBtX29iamVjdEhlYXAuY29udmVydEZyb21CYWNraW5nKGRlc3Rp
bmF0aW9uKTsKICAgICBBU1NFUlQoY29udmVydGVkRGVzdGluYXRpb24pOwotICAgIGF1dG8gY29u
dmVydGVkQ29weVNpemUgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhjb3B5
U2l6ZSk7CisgICAgYXV0byBjb252ZXJ0ZWRDb3B5U2l6ZSA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0
RnJvbUJhY2tpbmcoY29weVNpemUpOwogICAgIEFTU0VSVChjb252ZXJ0ZWRDb3B5U2l6ZSk7CiAg
ICAgaWYgKCFjb252ZXJ0ZWREZXN0aW5hdGlvbiB8fCAhY29udmVydGVkRGVzdGluYXRpb24gfHwg
IWNvbnZlcnRlZENvcHlTaXplKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXVlLmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXVlLmgKaW5kZXggYTUw
YWY4MjQ1MWZiOWZiZWRhOTdjMTA2NWU2OTM2NWYzOWY3YjM4Ni4uYmNhMmZmNGM4ODJlOWI2NDYz
OTU5MDRiZDZjNzE2ZGQ3MmIzZjQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVldWUuaApAQCAtNDksMjIgKzQ5LDIyIEBA
IHN0cnVjdCBJbWFnZUNvcHlUZXh0dXJlOwogc3RydWN0IEltYWdlQ29weVRleHR1cmVUYWdnZWQ7
CiBzdHJ1Y3QgSW1hZ2VEYXRhTGF5b3V0OwogY2xhc3MgT2JqZWN0SGVhcDsKLWNsYXNzIE9iamVj
dFJlZ2lzdHJ5OwogfQogCiBjbGFzcyBSZW1vdGVRdWV1ZSBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0
cmVhbU1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVRdWV1ZT4gY3JlYXRlKFBBTDo6V2ViR1BVOjpRdWV1
ZSYgcXVldWUsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6
Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKKyAg
ICBzdGF0aWMgUmVmPFJlbW90ZVF1ZXVlPiBjcmVhdGUoUEFMOjpXZWJHUFU6OlF1ZXVlJiBxdWV1
ZSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50
aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVRdWV1ZShx
dWV1ZSwgb2JqZWN0UmVnaXN0cnksIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlUXVldWUocXVldWUsIG9iamVjdEhlYXAsIGlkZW50
aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVRdWV1ZSgpOwogCi1wcml2YXRl
OgotICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKKyAgICBQQUw6OldlYkdQVTo6UXVl
dWUmIGJhY2tpbmcoKSB7IHJldHVybiBtX2JhY2tpbmc7IH0KIAotICAgIFJlbW90ZVF1ZXVlKFBB
TDo6V2ViR1BVOjpRdWV1ZSYsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmLCBXZWJHUFU6Ok9iamVj
dEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKK3ByaXZhdGU6CisgICAgUmVtb3RlUXVldWUoUEFM
OjpXZWJHUFU6OlF1ZXVlJiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7
CiAKICAgICBSZW1vdGVRdWV1ZShjb25zdCBSZW1vdGVRdWV1ZSYpID0gZGVsZXRlOwogICAgIFJl
bW90ZVF1ZXVlKFJlbW90ZVF1ZXVlJiYpID0gZGVsZXRlOwpAQCAtOTYsNyArOTYsNiBAQCBwcml2
YXRlOgogICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCiAgICAgUmVmPFBBTDo6V2ViR1BV
OjpRdWV1ZT4gbV9iYWNraW5nOwotICAgIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0
UmVnaXN0cnk7CiAgICAgV2ViR1BVOjpPYmplY3RIZWFwJiBtX29iamVjdEhlYXA7CiAgICAgV2Vi
R1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGUuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGUu
Y3BwCmluZGV4IDE3ZTBhY2Y5MDE5YzM0ZDk5ZjJiMDY3NzI4NDFkMzVkMzhmOGM5ZTQuLjVhZDVk
YzdhZjAwM2FiMWZiMzc4OWY5ZjYzZmFlOTY0MmNlMTY5OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRl
ckJ1bmRsZS5jcHAKQEAgLTI5LDI0ICsyOSwxOCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykK
IAogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKLSNpbmNsdWRlICJXZWJHUFVPYmplY3RS
ZWdpc3RyeS5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUmVuZGVyQnVu
ZGxlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZW1vdGVSZW5kZXJCdW5kbGU6OlJlbW90
ZVJlbmRlckJ1bmRsZShQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlJiByZW5kZXJCdW5kbGUsIFdl
YkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAm
IG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK1JlbW90ZVJlbmRlckJ1
bmRsZTo6UmVtb3RlUmVuZGVyQnVuZGxlKFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGUmIHJlbmRl
ckJ1bmRsZSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVy
IGlkZW50aWZpZXIpCiAgICAgOiBtX2JhY2tpbmcocmVuZGVyQnVuZGxlKQotICAgICwgbV9vYmpl
Y3RSZWdpc3RyeShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFw
KQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7Ci0gICAgbV9vYmplY3RSZWdpc3Ry
eS5hZGRPYmplY3QobV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOwogfQogCi1SZW1vdGVSZW5kZXJC
dW5kbGU6On5SZW1vdGVSZW5kZXJCdW5kbGUoKQotewotICAgIG1fb2JqZWN0UmVnaXN0cnkucmVt
b3ZlT2JqZWN0KG1faWRlbnRpZmllcik7Ci19CitSZW1vdGVSZW5kZXJCdW5kbGU6On5SZW1vdGVS
ZW5kZXJCdW5kbGUoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVtb3RlUmVuZGVyQnVuZGxlOjpzZXRM
YWJlbChTdHJpbmcmJiBsYWJlbCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlLmggYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZS5oCmluZGV4IDZi
ODBkNTliYTcyNzI4MjJkZTA3NmEyYTU3N2M2MTdlMTg5YTFjYWYuLjZjYTI0MGI2NjI2MzIxMTU1
ZDcxYTdhODllNzhlODc3YTlmMzg1MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlLmgKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGUuaApAQCAt
NDAsMjIgKzQwLDIyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgV2ViR1BVIHsK
IGNsYXNzIE9iamVjdEhlYXA7Ci1jbGFzcyBPYmplY3RSZWdpc3RyeTsKIH0KIAogY2xhc3MgUmVt
b3RlUmVuZGVyQnVuZGxlIGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVy
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PFJlbW90ZVJlbmRlckJ1bmRsZT4gY3JlYXRlKFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGUmIHJl
bmRlckJ1bmRsZSwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQ
VTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQor
ICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyQnVuZGxlPiBjcmVhdGUoUEFMOjpXZWJHUFU6OlJl
bmRlckJ1bmRsZSYgcmVuZGVyQnVuZGxlLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAs
IFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFJlbW90ZVJlbmRlckJ1bmRsZShyZW5kZXJCdW5kbGUsIG9iamVjdFJlZ2lzdHJ5
LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFJlbW90ZVJlbmRlckJ1bmRsZShyZW5kZXJCdW5kbGUsIG9iamVjdEhlYXAsIGlkZW50aWZpZXIp
KTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVSZW5kZXJCdW5kbGUoKTsKIAotcHJpdmF0
ZToKLSAgICBmcmllbmQgY2xhc3MgT2JqZWN0UmVnaXN0cnk7CisgICAgUEFMOjpXZWJHUFU6OlJl
bmRlckJ1bmRsZSYgYmFja2luZygpIHsgcmV0dXJuIG1fYmFja2luZzsgfQogCi0gICAgUmVtb3Rl
UmVuZGVyQnVuZGxlKFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGUmLCBXZWJHUFU6Ok9iamVjdFJl
Z2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7Citwcml2YXRl
OgorICAgIFJlbW90ZVJlbmRlckJ1bmRsZShQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlJiwgV2Vi
R1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVSZW5kZXJC
dW5kbGUoY29uc3QgUmVtb3RlUmVuZGVyQnVuZGxlJikgPSBkZWxldGU7CiAgICAgUmVtb3RlUmVu
ZGVyQnVuZGxlKFJlbW90ZVJlbmRlckJ1bmRsZSYmKSA9IGRlbGV0ZTsKQEAgLTY3LDcgKzY3LDYg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6
OldlYkdQVTo6UmVuZGVyQnVuZGxlPiBtX2JhY2tpbmc7Ci0gICAgV2ViR1BVOjpPYmplY3RSZWdp
c3RyeSYgbV9vYmplY3RSZWdpc3RyeTsKICAgICBXZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0
SGVhcDsKICAgICBXZWJHUFVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1
bmRsZUVuY29kZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyLmNwcAppbmRleCA3NzJjZjgyYTkxNjBhODZlMzA0
MTQ4ODQ0NjljYjEyYThlOWY1Y2FjLi43MzM3Njk5NDUwMWNjZjhiYzhiYzVhOWQ4YmQ1MDgwNmJi
ZGI1ZTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlci5jcHAKQEAg
LTMwLDI5ICszMCwyMyBAQAogCiAjaW5jbHVkZSAiUmVtb3RlUmVuZGVyQnVuZGxlLmgiCiAjaW5j
bHVkZSAiV2ViR1BVT2JqZWN0SGVhcC5oIgotI2luY2x1ZGUgIldlYkdQVU9iamVjdFJlZ2lzdHJ5
LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJCdW5kbGUuaD4K
ICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlckJ1bmRsZUVuY29kZXIu
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OlJl
bW90ZVJlbmRlckJ1bmRsZUVuY29kZXIoUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXIm
IHJlbmRlckJ1bmRsZUVuY29kZXIsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lz
dHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRl
bnRpZmllcikKK1JlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OlJlbW90ZVJlbmRlckJ1bmRsZUVu
Y29kZXIoUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXImIHJlbmRlckJ1bmRsZUVuY29k
ZXIsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVu
dGlmaWVyKQogICAgIDogbV9iYWNraW5nKHJlbmRlckJ1bmRsZUVuY29kZXIpCi0gICAgLCBtX29i
amVjdFJlZ2lzdHJ5KG9iamVjdFJlZ2lzdHJ5KQogICAgICwgbV9vYmplY3RIZWFwKG9iamVjdEhl
YXApCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKLSAgICBtX29iamVjdFJlZ2lz
dHJ5LmFkZE9iamVjdChtX2lkZW50aWZpZXIsIG1fYmFja2luZyk7CiB9CiAKLVJlbW90ZVJlbmRl
ckJ1bmRsZUVuY29kZXI6On5SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyKCkKLXsKLSAgICBtX29i
amVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOwotfQorUmVtb3RlUmVuZGVy
QnVuZGxlRW5jb2Rlcjo6flJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIoKSA9IGRlZmF1bHQ7CiAK
IHZvaWQgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6c2V0UGlwZWxpbmUoV2ViR1BVSWRlbnRp
ZmllciByZW5kZXJQaXBlbGluZSkKIHsKLSAgICBhdXRvIGNvbnZlcnRlZFJlbmRlclBpcGVsaW5l
ID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0UmVuZGVyUGlwZWxpbmVGcm9tQmFja2luZyhyZW5k
ZXJQaXBlbGluZSk7CisgICAgYXV0byBjb252ZXJ0ZWRSZW5kZXJQaXBlbGluZSA9IG1fb2JqZWN0
SGVhcC5jb252ZXJ0UmVuZGVyUGlwZWxpbmVGcm9tQmFja2luZyhyZW5kZXJQaXBlbGluZSk7CiAg
ICAgQVNTRVJUKGNvbnZlcnRlZFJlbmRlclBpcGVsaW5lKTsKICAgICBpZiAoIWNvbnZlcnRlZFJl
bmRlclBpcGVsaW5lKQogICAgICAgICByZXR1cm47CkBAIC02Miw3ICs1Niw3IEBAIHZvaWQgUmVt
b3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6c2V0UGlwZWxpbmUoV2ViR1BVSWRlbnRpZmllciByZW5k
ZXJQaXBlbGluZSkKIAogdm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpzZXRJbmRleEJ1
ZmZlcihXZWJHUFVJZGVudGlmaWVyIGJ1ZmZlciwgUEFMOjpXZWJHUFU6OkluZGV4Rm9ybWF0IGlu
ZGV4Rm9ybWF0LCBQQUw6OldlYkdQVTo6U2l6ZTY0IG9mZnNldCwgc3RkOjpvcHRpb25hbDxQQUw6
OldlYkdQVTo6U2l6ZTY0PiBzaXplKQogewotICAgIGF1dG8gY29udmVydGVkQnVmZmVyID0gbV9v
YmplY3RSZWdpc3RyeS5jb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoYnVmZmVyKTsKKyAgICBhdXRv
IGNvbnZlcnRlZEJ1ZmZlciA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmco
YnVmZmVyKTsKICAgICBBU1NFUlQoY29udmVydGVkQnVmZmVyKTsKICAgICBpZiAoIWNvbnZlcnRl
ZEJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwpAQCAtNzIsNyArNjYsNyBAQCB2b2lkIFJlbW90ZVJl
bmRlckJ1bmRsZUVuY29kZXI6OnNldEluZGV4QnVmZmVyKFdlYkdQVUlkZW50aWZpZXIgYnVmZmVy
LCBQQUw6OldlYgogCiB2b2lkIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OnNldFZlcnRleEJ1
ZmZlcihQQUw6OldlYkdQVTo6SW5kZXgzMiBzbG90LCBXZWJHUFVJZGVudGlmaWVyIGJ1ZmZlciwg
UEFMOjpXZWJHUFU6OlNpemU2NCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNp
emU2ND4gc2l6ZSkKIHsKLSAgICBhdXRvIGNvbnZlcnRlZEJ1ZmZlciA9IG1fb2JqZWN0UmVnaXN0
cnkuY29udmVydEJ1ZmZlckZyb21CYWNraW5nKGJ1ZmZlcik7CisgICAgYXV0byBjb252ZXJ0ZWRC
dWZmZXIgPSBtX29iamVjdEhlYXAuY29udmVydEJ1ZmZlckZyb21CYWNraW5nKGJ1ZmZlcik7CiAg
ICAgQVNTRVJUKGNvbnZlcnRlZEJ1ZmZlcik7CiAgICAgaWYgKCFjb252ZXJ0ZWRCdWZmZXIpCiAg
ICAgICAgIHJldHVybjsKQEAgLTk2LDcgKzkwLDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVF
bmNvZGVyOjpkcmF3SW5kZXhlZChQQUw6OldlYkdQVTo6U2l6ZTMyIGluZGV4Q291bnQsIFBBTDoK
IAogdm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpkcmF3SW5kaXJlY3QoV2ViR1BVSWRl
bnRpZmllciBpbmRpcmVjdEJ1ZmZlciwgUEFMOjpXZWJHUFU6OlNpemU2NCBpbmRpcmVjdE9mZnNl
dCkKIHsKLSAgICBhdXRvIGNvbnZlcnRlZEluZGlyZWN0QnVmZmVyID0gbV9vYmplY3RSZWdpc3Ry
eS5jb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoaW5kaXJlY3RCdWZmZXIpOworICAgIGF1dG8gY29u
dmVydGVkSW5kaXJlY3RCdWZmZXIgPSBtX29iamVjdEhlYXAuY29udmVydEJ1ZmZlckZyb21CYWNr
aW5nKGluZGlyZWN0QnVmZmVyKTsKICAgICBBU1NFUlQoY29udmVydGVkSW5kaXJlY3RCdWZmZXIp
OwogICAgIGlmICghY29udmVydGVkSW5kaXJlY3RCdWZmZXIpCiAgICAgICAgIHJldHVybjsKQEAg
LTEwNiw3ICsxMDAsNyBAQCB2b2lkIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OmRyYXdJbmRp
cmVjdChXZWJHUFVJZGVudGlmaWVyIGluZGlyZWN0QnVmZmVyLCBQQQogCiB2b2lkIFJlbW90ZVJl
bmRlckJ1bmRsZUVuY29kZXI6OmRyYXdJbmRleGVkSW5kaXJlY3QoV2ViR1BVSWRlbnRpZmllciBp
bmRpcmVjdEJ1ZmZlciwgUEFMOjpXZWJHUFU6OlNpemU2NCBpbmRpcmVjdE9mZnNldCkKIHsKLSAg
ICBhdXRvIGNvbnZlcnRlZEluZGlyZWN0QnVmZmVyID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0
QnVmZmVyRnJvbUJhY2tpbmcoaW5kaXJlY3RCdWZmZXIpOworICAgIGF1dG8gY29udmVydGVkSW5k
aXJlY3RCdWZmZXIgPSBtX29iamVjdEhlYXAuY29udmVydEJ1ZmZlckZyb21CYWNraW5nKGluZGly
ZWN0QnVmZmVyKTsKICAgICBBU1NFUlQoY29udmVydGVkSW5kaXJlY3RCdWZmZXIpOwogICAgIGlm
ICghY29udmVydGVkSW5kaXJlY3RCdWZmZXIpCiAgICAgICAgIHJldHVybjsKQEAgLTExNyw3ICsx
MTEsNyBAQCB2b2lkIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OmRyYXdJbmRleGVkSW5kaXJl
Y3QoV2ViR1BVSWRlbnRpZmllciBpbmRpcmVjdEJ1Zgogdm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVF
bmNvZGVyOjpzZXRCaW5kR3JvdXAoUEFMOjpXZWJHUFU6OkluZGV4MzIgaW5kZXgsIFdlYkdQVUlk
ZW50aWZpZXIgYmluZEdyb3VwLAogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFBBTDo6V2ViR1BV
OjpCdWZmZXJEeW5hbWljT2Zmc2V0Pj4mJiBkeW5hbWljT2Zmc2V0cykKIHsKLSAgICBhdXRvIGNv
bnZlcnRlZEJpbmRHcm91cCA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEJpbmRHcm91cEZyb21C
YWNraW5nKGJpbmRHcm91cCk7CisgICAgYXV0byBjb252ZXJ0ZWRCaW5kR3JvdXAgPSBtX29iamVj
dEhlYXAuY29udmVydEJpbmRHcm91cEZyb21CYWNraW5nKGJpbmRHcm91cCk7CiAgICAgQVNTRVJU
KGNvbnZlcnRlZEJpbmRHcm91cCk7CiAgICAgaWYgKCFjb252ZXJ0ZWRCaW5kR3JvdXApCiAgICAg
ICAgIHJldHVybjsKQEAgLTE0MiwxNCArMTM2LDE0IEBAIHZvaWQgUmVtb3RlUmVuZGVyQnVuZGxl
RW5jb2Rlcjo6aW5zZXJ0RGVidWdNYXJrZXIoU3RyaW5nJiYgbWFya2VyTGFiZWwpCiAKIHZvaWQg
UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6ZmluaXNoKGNvbnN0IFdlYkdQVTo6UmVuZGVyQnVu
ZGxlRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQog
ewotICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVy
dEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOworICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9
IG1fb2JqZWN0SGVhcC5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7CiAgICAgQVNTRVJU
KGNvbnZlcnRlZERlc2NyaXB0b3IpOwogICAgIGlmICghY29udmVydGVkRGVzY3JpcHRvcikKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgYXV0byByZW5kZXJCdW5kbGUgPSBtX2JhY2tpbmctPmZpbmlz
aCgqY29udmVydGVkRGVzY3JpcHRvcik7Ci0gICAgYXV0byByZW1vdGVSZW5kZXJCdW5kbGUgPSBS
ZW1vdGVSZW5kZXJCdW5kbGU6OmNyZWF0ZShyZW5kZXJCdW5kbGUsIG1fb2JqZWN0UmVnaXN0cnks
IG1fb2JqZWN0SGVhcCwgaWRlbnRpZmllcik7Ci0gICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChy
ZW1vdGVSZW5kZXJCdW5kbGUpOworICAgIGF1dG8gcmVtb3RlUmVuZGVyQnVuZGxlID0gUmVtb3Rl
UmVuZGVyQnVuZGxlOjpjcmVhdGUocmVuZGVyQnVuZGxlLCBtX29iamVjdEhlYXAsIGlkZW50aWZp
ZXIpOworICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QoaWRlbnRpZmllciwgcmVtb3RlUmVuZGVy
QnVuZGxlKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpzZXRMYWJlbChT
dHJpbmcmJiBsYWJlbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlci5oIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyLmgKaW5k
ZXggZjg3YjczZTAxYzdhYTRiMWI2NmQ0YzVhNzZhYWJiNTUzZDc3MTYzMi4uODdkOWFkNGFjMTM2
NjMwOWY1ODNkZjQzZDU3MmFhOGY0NWJiY2RjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJC
dW5kbGVFbmNvZGVyLmgKQEAgLTQyLDIzICs0MiwyMyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
bmFtZXNwYWNlIFdlYkdQVSB7CiBjbGFzcyBPYmplY3RIZWFwOwotY2xhc3MgT2JqZWN0UmVnaXN0
cnk7CiBzdHJ1Y3QgUmVuZGVyQnVuZGxlRGVzY3JpcHRvcjsKIH0KIAogY2xhc3MgUmVtb3RlUmVu
ZGVyQnVuZGxlRW5jb2RlciBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZl
ciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyPiBjcmVhdGUoUEFMOjpXZWJHUFU6OlJlbmRlckJ1
bmRsZUVuY29kZXImIHJlbmRlckJ1bmRsZUVuY29kZXIsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkm
IG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlk
ZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlckJ1bmRsZUVu
Y29kZXI+IGNyZWF0ZShQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2RlciYgcmVuZGVyQnVu
ZGxlRW5jb2RlciwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlm
aWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1v
dGVSZW5kZXJCdW5kbGVFbmNvZGVyKHJlbmRlckJ1bmRsZUVuY29kZXIsIG9iamVjdFJlZ2lzdHJ5
LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIocmVuZGVyQnVuZGxlRW5jb2Rlciwgb2JqZWN0SGVh
cCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIH5SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVy
KCk7CiAKLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIE9iamVjdFJlZ2lzdHJ5OworICAgIFBB
TDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyJiBiYWNraW5nKCkgeyByZXR1cm4gbV9iYWNr
aW5nOyB9CiAKLSAgICBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyKFBBTDo6V2ViR1BVOjpSZW5k
ZXJCdW5kbGVFbmNvZGVyJiwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0
SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOworcHJpdmF0ZToKKyAgICBSZW1vdGVSZW5kZXJCdW5k
bGVFbmNvZGVyKFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyJiwgV2ViR1BVOjpPYmpl
Y3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVSZW5kZXJCdW5kbGVFbmNv
ZGVyKGNvbnN0IFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXImKSA9IGRlbGV0ZTsKICAgICBSZW1v
dGVSZW5kZXJCdW5kbGVFbmNvZGVyKFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXImJikgPSBkZWxl
dGU7CkBAIC05NCw3ICs5NCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRMYWJlbChTdHJpbmcm
Jik7CiAKICAgICBSZWY8UEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXI+IG1fYmFja2lu
ZzsKLSAgICBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBtX29iamVjdFJlZ2lzdHJ5OwogICAgIFdl
YkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFwOwogICAgIFdlYkdQVUlkZW50aWZpZXIgbV9p
ZGVudGlmaWVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQYXNzRW5jb2Rlci5jcHAKaW5k
ZXggOTdiODEyMzQwNzBkNjJmYThkMmMzMWQ4YzVmODE3YWQ2MjhmYzhmZS4uZmM1ZWMwMDY5YzUx
MjUzYmZkOGJhMzVmNWJhMzZjN2RiNDM4ODhkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQYXNzRW5jb2Rlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQ
YXNzRW5jb2Rlci5jcHAKQEAgLTI5LDI4ICsyOSwyMiBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykKIAogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKLSNpbmNsdWRlICJXZWJHUFVPYmpl
Y3RSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUmVuZGVy
UGFzc0VuY29kZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90ZVJlbmRlclBhc3NF
bmNvZGVyOjpSZW1vdGVSZW5kZXJQYXNzRW5jb2RlcihQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0Vu
Y29kZXImIHJlbmRlclBhc3NFbmNvZGVyLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RS
ZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVy
IGlkZW50aWZpZXIpCitSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6UmVtb3RlUmVuZGVyUGFzc0Vu
Y29kZXIoUEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyJiByZW5kZXJQYXNzRW5jb2Rlciwg
V2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCiAgICAgOiBtX2JhY2tpbmcocmVuZGVyUGFzc0VuY29kZXIpCi0gICAgLCBtX29iamVjdFJl
Z2lzdHJ5KG9iamVjdFJlZ2lzdHJ5KQogICAgICwgbV9vYmplY3RIZWFwKG9iamVjdEhlYXApCiAg
ICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LmFk
ZE9iamVjdChtX2lkZW50aWZpZXIsIG1fYmFja2luZyk7CiB9CiAKLVJlbW90ZVJlbmRlclBhc3NF
bmNvZGVyOjp+UmVtb3RlUmVuZGVyUGFzc0VuY29kZXIoKQotewotICAgIG1fb2JqZWN0UmVnaXN0
cnkucmVtb3ZlT2JqZWN0KG1faWRlbnRpZmllcik7Ci19CitSZW1vdGVSZW5kZXJQYXNzRW5jb2Rl
cjo6flJlbW90ZVJlbmRlclBhc3NFbmNvZGVyKCkgPSBkZWZhdWx0OwogCiB2b2lkIFJlbW90ZVJl
bmRlclBhc3NFbmNvZGVyOjpzZXRQaXBlbGluZShXZWJHUFVJZGVudGlmaWVyIHJlbmRlclBpcGVs
aW5lKQogewotICAgIGF1dG8gY29udmVydGVkUmVuZGVyUGlwZWxpbmUgPSBtX29iamVjdFJlZ2lz
dHJ5LmNvbnZlcnRSZW5kZXJQaXBlbGluZUZyb21CYWNraW5nKHJlbmRlclBpcGVsaW5lKTsKKyAg
ICBhdXRvIGNvbnZlcnRlZFJlbmRlclBpcGVsaW5lID0gbV9vYmplY3RIZWFwLmNvbnZlcnRSZW5k
ZXJQaXBlbGluZUZyb21CYWNraW5nKHJlbmRlclBpcGVsaW5lKTsKICAgICBBU1NFUlQoY29udmVy
dGVkUmVuZGVyUGlwZWxpbmUpOwogICAgIGlmICghY29udmVydGVkUmVuZGVyUGlwZWxpbmUpCiAg
ICAgICAgIHJldHVybjsKQEAgLTYwLDcgKzU0LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5j
b2Rlcjo6c2V0UGlwZWxpbmUoV2ViR1BVSWRlbnRpZmllciByZW5kZXJQaXBlbGluZSkKIAogdm9p
ZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0SW5kZXhCdWZmZXIoV2ViR1BVSWRlbnRpZmll
ciBidWZmZXIsIFBBTDo6V2ViR1BVOjpJbmRleEZvcm1hdCBpbmRleEZvcm1hdCwgUEFMOjpXZWJH
UFU6OlNpemU2NCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemU2ND4gc2l6
ZSkKIHsKLSAgICBhdXRvIGNvbnZlcnRlZEJ1ZmZlciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVy
dEJ1ZmZlckZyb21CYWNraW5nKGJ1ZmZlcik7CisgICAgYXV0byBjb252ZXJ0ZWRCdWZmZXIgPSBt
X29iamVjdEhlYXAuY29udmVydEJ1ZmZlckZyb21CYWNraW5nKGJ1ZmZlcik7CiAgICAgQVNTRVJU
KGNvbnZlcnRlZEJ1ZmZlcik7CiAgICAgaWYgKCFjb252ZXJ0ZWRCdWZmZXIpCiAgICAgICAgIHJl
dHVybjsKQEAgLTcwLDcgKzY0LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0
SW5kZXhCdWZmZXIoV2ViR1BVSWRlbnRpZmllciBidWZmZXIsIFBBTDo6V2ViR1AKIAogdm9pZCBS
ZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0VmVydGV4QnVmZmVyKFBBTDo6V2ViR1BVOjpJbmRl
eDMyIHNsb3QsIFdlYkdQVUlkZW50aWZpZXIgYnVmZmVyLCBQQUw6OldlYkdQVTo6U2l6ZTY0IG9m
ZnNldCwgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0PiBzaXplKQogewotICAgIGF1
dG8gY29udmVydGVkQnVmZmVyID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0QnVmZmVyRnJvbUJh
Y2tpbmcoYnVmZmVyKTsKKyAgICBhdXRvIGNvbnZlcnRlZEJ1ZmZlciA9IG1fb2JqZWN0SGVhcC5j
b252ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoYnVmZmVyKTsKICAgICBBU1NFUlQoY29udmVydGVkQnVm
ZmVyKTsKICAgICBpZiAoIWNvbnZlcnRlZEJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwpAQCAtOTQs
NyArODgsNyBAQCB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpkcmF3SW5kZXhlZChQQUw6
OldlYkdQVTo6U2l6ZTMyIGluZGV4Q291bnQsIFBBTDo6VwogCiB2b2lkIFJlbW90ZVJlbmRlclBh
c3NFbmNvZGVyOjpkcmF3SW5kaXJlY3QoV2ViR1BVSWRlbnRpZmllciBpbmRpcmVjdEJ1ZmZlciwg
UEFMOjpXZWJHUFU6OlNpemU2NCBpbmRpcmVjdE9mZnNldCkKIHsKLSAgICBhdXRvIGNvbnZlcnRl
ZEluZGlyZWN0QnVmZmVyID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0QnVmZmVyRnJvbUJhY2tp
bmcoaW5kaXJlY3RCdWZmZXIpOworICAgIGF1dG8gY29udmVydGVkSW5kaXJlY3RCdWZmZXIgPSBt
X29iamVjdEhlYXAuY29udmVydEJ1ZmZlckZyb21CYWNraW5nKGluZGlyZWN0QnVmZmVyKTsKICAg
ICBBU1NFUlQoY29udmVydGVkSW5kaXJlY3RCdWZmZXIpOwogICAgIGlmICghY29udmVydGVkSW5k
aXJlY3RCdWZmZXIpCiAgICAgICAgIHJldHVybjsKQEAgLTEwNCw3ICs5OCw3IEBAIHZvaWQgUmVt
b3RlUmVuZGVyUGFzc0VuY29kZXI6OmRyYXdJbmRpcmVjdChXZWJHUFVJZGVudGlmaWVyIGluZGly
ZWN0QnVmZmVyLCBQQUw6CiAKIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OmRyYXdJbmRl
eGVkSW5kaXJlY3QoV2ViR1BVSWRlbnRpZmllciBpbmRpcmVjdEJ1ZmZlciwgUEFMOjpXZWJHUFU6
OlNpemU2NCBpbmRpcmVjdE9mZnNldCkKIHsKLSAgICBhdXRvIGNvbnZlcnRlZEluZGlyZWN0QnVm
ZmVyID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoaW5kaXJlY3RC
dWZmZXIpOworICAgIGF1dG8gY29udmVydGVkSW5kaXJlY3RCdWZmZXIgPSBtX29iamVjdEhlYXAu
Y29udmVydEJ1ZmZlckZyb21CYWNraW5nKGluZGlyZWN0QnVmZmVyKTsKICAgICBBU1NFUlQoY29u
dmVydGVkSW5kaXJlY3RCdWZmZXIpOwogICAgIGlmICghY29udmVydGVkSW5kaXJlY3RCdWZmZXIp
CiAgICAgICAgIHJldHVybjsKQEAgLTExNSw3ICsxMDksNyBAQCB2b2lkIFJlbW90ZVJlbmRlclBh
c3NFbmNvZGVyOjpkcmF3SW5kZXhlZEluZGlyZWN0KFdlYkdQVUlkZW50aWZpZXIgaW5kaXJlY3RC
dWZmZQogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0QmluZEdyb3VwKFBBTDo6V2Vi
R1BVOjpJbmRleDMyIGluZGV4LCBXZWJHUFVJZGVudGlmaWVyIGJpbmRHcm91cCwKICAgICBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxQQUw6OldlYkdQVTo6QnVmZmVyRHluYW1pY09mZnNldD4+JiYgZHlu
YW1pY09mZnNldHMpCiB7Ci0gICAgYXV0byBjb252ZXJ0ZWRCaW5kR3JvdXAgPSBtX29iamVjdFJl
Z2lzdHJ5LmNvbnZlcnRCaW5kR3JvdXBGcm9tQmFja2luZyhiaW5kR3JvdXApOworICAgIGF1dG8g
Y29udmVydGVkQmluZEdyb3VwID0gbV9vYmplY3RIZWFwLmNvbnZlcnRCaW5kR3JvdXBGcm9tQmFj
a2luZyhiaW5kR3JvdXApOwogICAgIEFTU0VSVChjb252ZXJ0ZWRCaW5kR3JvdXApOwogICAgIGlm
ICghY29udmVydGVkQmluZEdyb3VwKQogICAgICAgICByZXR1cm47CkBAIC0xNTMsNyArMTQ3LDcg
QEAgdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0U2Npc3NvclJlY3QoUEFMOjpXZWJH
UFU6OkludGVnZXJDb29yZGluYXRlIHgsIFAKIAogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rl
cjo6c2V0QmxlbmRDb25zdGFudChXZWJHUFU6OkNvbG9yIGNvbG9yKQogewotICAgIGF1dG8gY29u
dmVydGVkQ29sb3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhjb2xvcik7
CisgICAgYXV0byBjb252ZXJ0ZWRDb2xvciA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0RnJvbUJhY2tp
bmcoY29sb3IpOwogICAgIEFTU0VSVChjb252ZXJ0ZWRDb2xvcik7CiAgICAgaWYgKCFjb252ZXJ0
ZWRDb2xvcikKICAgICAgICAgcmV0dXJuOwpAQCAtMTc4LDcgKzE3Miw3IEBAIHZvaWQgUmVtb3Rl
UmVuZGVyUGFzc0VuY29kZXI6OmVuZE9jY2x1c2lvblF1ZXJ5KCkKIAogdm9pZCBSZW1vdGVSZW5k
ZXJQYXNzRW5jb2Rlcjo6YmVnaW5QaXBlbGluZVN0YXRpc3RpY3NRdWVyeShXZWJHUFVJZGVudGlm
aWVyIHF1ZXJ5U2V0LCBQQUw6OldlYkdQVTo6U2l6ZTMyIHF1ZXJ5SW5kZXgpCiB7Ci0gICAgYXV0
byBjb252ZXJ0ZWRRdWVyeVNldCA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydFF1ZXJ5U2V0RnJv
bUJhY2tpbmcocXVlcnlTZXQpOworICAgIGF1dG8gY29udmVydGVkUXVlcnlTZXQgPSBtX29iamVj
dEhlYXAuY29udmVydFF1ZXJ5U2V0RnJvbUJhY2tpbmcocXVlcnlTZXQpOwogICAgIEFTU0VSVChj
b252ZXJ0ZWRRdWVyeVNldCk7CiAgICAgaWYgKCFjb252ZXJ0ZWRRdWVyeVNldCkKICAgICAgICAg
cmV0dXJuOwpAQCAtMTk2LDcgKzE5MCw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6
OmV4ZWN1dGVCdW5kbGVzKFZlY3RvcjxXZWJHUFVJZGVudGlmaWVyPiYmIHJlbmRlckJ1CiAgICAg
VmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZT4+
IGNvbnZlcnRlZEJ1bmRsZXM7CiAgICAgY29udmVydGVkQnVuZGxlcy5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KHJlbmRlckJ1bmRsZXMuc2l6ZSgpKTsKICAgICBmb3IgKFdlYkdQVUlkZW50aWZpZXIg
aWRlbnRpZmllciA6IHJlbmRlckJ1bmRsZXMpIHsKLSAgICAgICAgYXV0byBjb252ZXJ0ZWRCdW5k
bGUgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRSZW5kZXJCdW5kbGVGcm9tQmFja2luZyhpZGVu
dGlmaWVyKTsKKyAgICAgICAgYXV0byBjb252ZXJ0ZWRCdW5kbGUgPSBtX29iamVjdEhlYXAuY29u
dmVydFJlbmRlckJ1bmRsZUZyb21CYWNraW5nKGlkZW50aWZpZXIpOwogICAgICAgICBBU1NFUlQo
Y29udmVydGVkQnVuZGxlKTsKICAgICAgICAgaWYgKCFjb252ZXJ0ZWRCdW5kbGUpCiAgICAgICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZVJlbmRlclBhc3NFbmNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBhc3NFbmNvZGVyLmgKaW5kZXggZmI2
ZDNkYjU5YTkzMjE0YWQ4ZDQwNGZkYWRjNWRjNzFhOTNlYWNlYy4uYjMxNGI3ZDJhMmY2YjQ5ZDgy
MzdhODIzYTQ3MjQwMTg1MGVmNzZlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQYXNzRW5jb2Rlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0VuY29k
ZXIuaApAQCAtNDMsMjIgKzQzLDIyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2Ug
V2ViR1BVIHsKIGNsYXNzIE9iamVjdEhlYXA7Ci1jbGFzcyBPYmplY3RSZWdpc3RyeTsKIH0KIAog
Y2xhc3MgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1N
ZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI+IGNyZWF0ZShQQUw6OldlYkdQ
VTo6UmVuZGVyUGFzc0VuY29kZXImIHJlbmRlclBhc3NFbmNvZGVyLCBXZWJHUFU6Ok9iamVjdFJl
Z2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBX
ZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxSZW1vdGVSZW5kZXJQ
YXNzRW5jb2Rlcj4gY3JlYXRlKFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRW5jb2RlciYgcmVuZGVy
UGFzc0VuY29kZXIsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRp
ZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVt
b3RlUmVuZGVyUGFzc0VuY29kZXIocmVuZGVyUGFzc0VuY29kZXIsIG9iamVjdFJlZ2lzdHJ5LCBv
YmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJl
bW90ZVJlbmRlclBhc3NFbmNvZGVyKHJlbmRlclBhc3NFbmNvZGVyLCBvYmplY3RIZWFwLCBpZGVu
dGlmaWVyKSk7CiAgICAgfQogCiAgICAgflJlbW90ZVJlbmRlclBhc3NFbmNvZGVyKCk7CiAKLXBy
aXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIE9iamVjdFJlZ2lzdHJ5OworICAgIFBBTDo6V2ViR1BV
OjpSZW5kZXJQYXNzRW5jb2RlciYgYmFja2luZygpIHsgcmV0dXJuIG1fYmFja2luZzsgfQogCi0g
ICAgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIoUEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVy
JiwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlk
ZW50aWZpZXIpOworcHJpdmF0ZToKKyAgICBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlcihQQUw6Oldl
YkdQVTo6UmVuZGVyUGFzc0VuY29kZXImLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVu
dGlmaWVyKTsKIAogICAgIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyKGNvbnN0IFJlbW90ZVJlbmRl
clBhc3NFbmNvZGVyJikgPSBkZWxldGU7CiAgICAgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIoUmVt
b3RlUmVuZGVyUGFzc0VuY29kZXImJikgPSBkZWxldGU7CkBAIC0xMTEsNyArMTExLDYgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQ
VTo6UmVuZGVyUGFzc0VuY29kZXI+IG1fYmFja2luZzsKLSAgICBXZWJHUFU6Ok9iamVjdFJlZ2lz
dHJ5JiBtX29iamVjdFJlZ2lzdHJ5OwogICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RI
ZWFwOwogICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGlw
ZWxpbmUuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVSZW5kZXJQaXBlbGluZS5jcHAKaW5kZXggMTU1MTUwMzdjNTE0MDI3MmIwYzk5ZGYzYzFkZWJj
MzdkMDg1NWVkMS4uY2IwMDE5YzRiZjk5NzllN2Y3OTNiNDg0MTc5OGRlMjJmZWFkYjE4ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVS
ZW5kZXJQaXBlbGluZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZS5jcHAKQEAgLTMwLDMxICszMCwyNSBAQAogCiAj
aW5jbHVkZSAiUmVtb3RlQmluZEdyb3VwTGF5b3V0LmgiCiAjaW5jbHVkZSAiV2ViR1BVT2JqZWN0
SGVhcC5oIgotI2luY2x1ZGUgIldlYkdQVU9iamVjdFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8cGFs
L2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVCaW5kR3JvdXBMYXlvdXQuaD4KICNpbmNsdWRlIDxwYWwv
Z3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlclBpcGVsaW5lLmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCi1SZW1vdGVSZW5kZXJQaXBlbGluZTo6UmVtb3RlUmVuZGVyUGlwZWxpbmUoUEFMOjpX
ZWJHUFU6OlJlbmRlclBpcGVsaW5lJiByZW5kZXJQaXBlbGluZSwgV2ViR1BVOjpPYmplY3RSZWdp
c3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2Vi
R1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorUmVtb3RlUmVuZGVyUGlwZWxpbmU6OlJlbW90ZVJl
bmRlclBpcGVsaW5lKFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZSYgcmVuZGVyUGlwZWxpbmUs
IFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyKQogICAgIDogbV9iYWNraW5nKHJlbmRlclBpcGVsaW5lKQotICAgICwgbV9vYmplY3RSZWdp
c3RyeShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQogICAg
ICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5hZGRP
YmplY3QobV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOwogfQogCi1SZW1vdGVSZW5kZXJQaXBlbGlu
ZTo6flJlbW90ZVJlbmRlclBpcGVsaW5lKCkKLXsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LnJlbW92
ZU9iamVjdChtX2lkZW50aWZpZXIpOwotfQorUmVtb3RlUmVuZGVyUGlwZWxpbmU6On5SZW1vdGVS
ZW5kZXJQaXBlbGluZSgpID0gZGVmYXVsdDsKIAogdm9pZCBSZW1vdGVSZW5kZXJQaXBlbGluZTo6
Z2V0QmluZEdyb3VwTGF5b3V0KHVpbnQzMl90IGluZGV4LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50
aWZpZXIpCiB7CiAgICAgYXV0byBiaW5kR3JvdXBMYXlvdXQgPSBtX2JhY2tpbmctPmdldEJpbmRH
cm91cExheW91dChpbmRleCk7Ci0gICAgYXV0byByZW1vdGVCaW5kR3JvdXBMYXlvdXQgPSBSZW1v
dGVCaW5kR3JvdXBMYXlvdXQ6OmNyZWF0ZShiaW5kR3JvdXBMYXlvdXQsIG1fb2JqZWN0UmVnaXN0
cnksIG1fb2JqZWN0SGVhcCwgaWRlbnRpZmllcik7Ci0gICAgbV9vYmplY3RIZWFwLmFkZE9iamVj
dChyZW1vdGVCaW5kR3JvdXBMYXlvdXQpOworICAgIGF1dG8gcmVtb3RlQmluZEdyb3VwTGF5b3V0
ID0gUmVtb3RlQmluZEdyb3VwTGF5b3V0OjpjcmVhdGUoYmluZEdyb3VwTGF5b3V0LCBtX29iamVj
dEhlYXAsIGlkZW50aWZpZXIpOworICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QoaWRlbnRpZmll
ciwgcmVtb3RlQmluZEdyb3VwTGF5b3V0KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQaXBlbGlu
ZTo6c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBpcGVsaW5lLmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBpcGVsaW5lLmgK
aW5kZXggYmM2Yjk2NTc1ZGNjZDNiZjljMDZjMjg5MjFjZjk1ZDYwYzg2NjU4MC4uMDZkOTJkZTY3
MWVmN2ViNDMwNzMwNTRjZjY1ZGM1NmZkNzU2NDg5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGlw
ZWxpbmUuaApAQCAtNDAsMjIgKzQwLDIyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3Bh
Y2UgV2ViR1BVIHsKIGNsYXNzIE9iamVjdEhlYXA7Ci1jbGFzcyBPYmplY3RSZWdpc3RyeTsKIH0K
IAogY2xhc3MgUmVtb3RlUmVuZGVyUGlwZWxpbmUgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1N
ZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyUGlwZWxpbmU+IGNyZWF0ZShQQUw6OldlYkdQVTo6
UmVuZGVyUGlwZWxpbmUmIHJlbmRlclBpcGVsaW5lLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBv
YmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxSZW1vdGVSZW5kZXJQaXBlbGluZT4g
Y3JlYXRlKFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZSYgcmVuZGVyUGlwZWxpbmUsIFdlYkdQ
VTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlUmVuZGVyUGlwZWxpbmUo
cmVuZGVyUGlwZWxpbmUsIG9iamVjdFJlZ2lzdHJ5LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVJlbmRlclBpcGVsaW5lKHJlbmRl
clBpcGVsaW5lLCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVh
bCB+UmVtb3RlUmVuZGVyUGlwZWxpbmUoKTsKIAotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3Mg
T2JqZWN0UmVnaXN0cnk7CisgICAgUEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lJiBiYWNraW5n
KCkgeyByZXR1cm4gbV9iYWNraW5nOyB9CiAKLSAgICBSZW1vdGVSZW5kZXJQaXBlbGluZShQQUw6
OldlYkdQVTo6UmVuZGVyUGlwZWxpbmUmLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BV
OjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7Citwcml2YXRlOgorICAgIFJlbW90ZVJl
bmRlclBpcGVsaW5lKFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZSYsIFdlYkdQVTo6T2JqZWN0
SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlUmVuZGVyUGlwZWxpbmUoY29u
c3QgUmVtb3RlUmVuZGVyUGlwZWxpbmUmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVSZW5kZXJQaXBl
bGluZShSZW1vdGVSZW5kZXJQaXBlbGluZSYmKSA9IGRlbGV0ZTsKQEAgLTY5LDcgKzY5LDYgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6Oldl
YkdQVTo6UmVuZGVyUGlwZWxpbmU+IG1fYmFja2luZzsKLSAgICBXZWJHUFU6Ok9iamVjdFJlZ2lz
dHJ5JiBtX29iamVjdFJlZ2lzdHJ5OwogICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RI
ZWFwOwogICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2FtcGxlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNhbXBs
ZXIuY3BwCmluZGV4IGE3NmI2OTQ1ZDU3ODNmZjAwYzg5Nzk1ZWQ0MjNjNTJiMDBjMDRiYWQuLjZm
YzMyMTEzMTdiNjVjY2I1Yjg3N2QxMTgxMDQ1YWE4YWQ2ZDExY2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2FtcGxlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTYW1wbGVy
LmNwcApAQCAtMjksMjQgKzI5LDE4IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5j
bHVkZSAiV2ViR1BVT2JqZWN0SGVhcC5oIgotI2luY2x1ZGUgIldlYkdQVU9iamVjdFJlZ2lzdHJ5
LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVTYW1wbGVyLmg+CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi1SZW1vdGVTYW1wbGVyOjpSZW1vdGVTYW1wbGVyKFBBTDo6V2Vi
R1BVOjpTYW1wbGVyJiBzYW1wbGVyLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdp
c3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCitSZW1vdGVTYW1wbGVyOjpSZW1vdGVTYW1wbGVyKFBBTDo6V2ViR1BVOjpTYW1w
bGVyJiBzYW1wbGVyLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50
aWZpZXIgaWRlbnRpZmllcikKICAgICA6IG1fYmFja2luZyhzYW1wbGVyKQotICAgICwgbV9vYmpl
Y3RSZWdpc3RyeShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFw
KQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7Ci0gICAgbV9vYmplY3RSZWdpc3Ry
eS5hZGRPYmplY3QobV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOwogfQogCi1SZW1vdGVTYW1wbGVy
Ojp+UmVtb3RlU2FtcGxlcigpCi17Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5yZW1vdmVPYmplY3Qo
bV9pZGVudGlmaWVyKTsKLX0KK1JlbW90ZVNhbXBsZXI6On5SZW1vdGVTYW1wbGVyKCkgPSBkZWZh
dWx0OwogCiB2b2lkIFJlbW90ZVNhbXBsZXI6OnNldExhYmVsKFN0cmluZyYmIGxhYmVsKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVTYW1wbGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZVNhbXBsZXIuaAppbmRleCBhYzkwMzhhNWI5Y2E4N2VjYmY1YmZlNDFmODc0NjA0M2UwMDBj
YTMzLi4yZjUxZmJiNTM5NDlkMmNiNWFkN2EwOWRiMmE5NTVjMzZmZmViZWEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNhbXBsZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNh
bXBsZXIuaApAQCAtNDAsMjIgKzQwLDIyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3Bh
Y2UgV2ViR1BVIHsKIGNsYXNzIE9iamVjdEhlYXA7Ci1jbGFzcyBPYmplY3RSZWdpc3RyeTsKIH0K
IAogY2xhc3MgUmVtb3RlU2FtcGxlciBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VS
ZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxSZW1vdGVTYW1wbGVyPiBjcmVhdGUoUEFMOjpXZWJHUFU6OlNhbXBsZXImIHNhbXBs
ZXIsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVj
dEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICBzdGF0
aWMgUmVmPFJlbW90ZVNhbXBsZXI+IGNyZWF0ZShQQUw6OldlYkdQVTo6U2FtcGxlciYgc2FtcGxl
ciwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50
aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVTYW1wbGVy
KHNhbXBsZXIsIG9iamVjdFJlZ2lzdHJ5LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVNhbXBsZXIoc2FtcGxlciwgb2JqZWN0SGVh
cCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90ZVNhbXBsZXIoKTsK
IAotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgT2JqZWN0UmVnaXN0cnk7CisgICAgUEFMOjpX
ZWJHUFU6OlNhbXBsZXImIGJhY2tpbmcoKSB7IHJldHVybiBtX2JhY2tpbmc7IH0KIAotICAgIFJl
bW90ZVNhbXBsZXIoUEFMOjpXZWJHUFU6OlNhbXBsZXImLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5
JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7Citwcml2YXRlOgorICAg
IFJlbW90ZVNhbXBsZXIoUEFMOjpXZWJHUFU6OlNhbXBsZXImLCBXZWJHUFU6Ok9iamVjdEhlYXAm
LCBXZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZVNhbXBsZXIoY29uc3QgUmVtb3RlU2Ft
cGxlciYpID0gZGVsZXRlOwogICAgIFJlbW90ZVNhbXBsZXIoUmVtb3RlU2FtcGxlciYmKSA9IGRl
bGV0ZTsKQEAgLTY3LDcgKzY3LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0cmlu
ZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6U2FtcGxlcj4gbV9iYWNraW5nOwotICAgIFdl
YkdQVTo6T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7CiAgICAgV2ViR1BVOjpPYmpl
Y3RIZWFwJiBtX29iamVjdEhlYXA7CiAgICAgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVTaGFkZXJNb2R1bGUuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGUuY3BwCmluZGV4IDQ1YWMwZDNmNzM2NWMxOWI1
NDg4Y2MxZGQwOTRkMjJhMTQ3ZTAzNjcuLjgxYjQwNTA2NWYzMDBkMTAzNmMwMzYzNzgwYjNjNjE1
NGZkYzc5ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlU2hhZGVyTW9kdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNoYWRlck1vZHVsZS5jcHAKQEAgLTI5LDI2ICsyOSwy
MCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhl
YXAuaCIKLSNpbmNsdWRlICJXZWJHUFVPYmplY3RSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHBhbC9n
cmFwaGljcy9XZWJHUFUvV2ViR1BVQ29tcGlsYXRpb25JbmZvLmg+CiAjaW5jbHVkZSA8cGFsL2dy
YXBoaWNzL1dlYkdQVS9XZWJHUFVDb21waWxhdGlvbk1lc3NhZ2UuaD4KICNpbmNsdWRlIDxwYWwv
Z3JhcGhpY3MvV2ViR1BVL1dlYkdQVVNoYWRlck1vZHVsZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAotUmVtb3RlU2hhZGVyTW9kdWxlOjpSZW1vdGVTaGFkZXJNb2R1bGUoUEFMOjpXZWJHUFU6
OlNoYWRlck1vZHVsZSYgc2hhZGVyTW9kdWxlLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmpl
Y3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlm
aWVyIGlkZW50aWZpZXIpCitSZW1vdGVTaGFkZXJNb2R1bGU6OlJlbW90ZVNoYWRlck1vZHVsZShQ
QUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlJiBzaGFkZXJNb2R1bGUsIFdlYkdQVTo6T2JqZWN0SGVh
cCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDogbV9iYWNr
aW5nKHNoYWRlck1vZHVsZSkKLSAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2JqZWN0UmVnaXN0cnkp
CiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkKICAgICAsIG1faWRlbnRpZmllcihpZGVu
dGlmaWVyKQogewotICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1faWRlbnRpZmllciwg
bV9iYWNraW5nKTsKIH0KIAotUmVtb3RlU2hhZGVyTW9kdWxlOjp+UmVtb3RlU2hhZGVyTW9kdWxl
KCkKLXsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOwot
fQorUmVtb3RlU2hhZGVyTW9kdWxlOjp+UmVtb3RlU2hhZGVyTW9kdWxlKCkgPSBkZWZhdWx0Owog
CiB2b2lkIFJlbW90ZVNoYWRlck1vZHVsZTo6Y29tcGlsYXRpb25JbmZvKFdURjo6Q29tcGxldGlv
bkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViR1BVOjpDb21waWxhdGlvbk1lc3NhZ2U+JiYpPiYmIGNh
bGxiYWNrKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGUuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlU2hhZGVyTW9kdWxlLmgKaW5kZXggZjk3ZjAxOTZiYjA2N2Vk
YmNiOTIzNWNkZWMxMDY0ZWMzNDE2NzJiYi4uYTA0YzE5YTM4NzMyMTY3MjBkYTYwNTBkMWM3MGM5
Y2Y5MmQ5YzQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNoYWRlck1vZHVsZS5oCkBAIC00MywyMiArNDMsMjIg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogY2xhc3MgT2JqZWN0
SGVhcDsKLWNsYXNzIE9iamVjdFJlZ2lzdHJ5OwogfQogCiBjbGFzcyBSZW1vdGVTaGFkZXJNb2R1
bGUgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlU2hhZGVy
TW9kdWxlPiBjcmVhdGUoUEFMOjpXZWJHUFU6OlNoYWRlck1vZHVsZSYgc2hhZGVyTW9kdWxlLCBX
ZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFw
JiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgc3RhdGljIFJl
ZjxSZW1vdGVTaGFkZXJNb2R1bGU+IGNyZWF0ZShQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlJiBz
aGFkZXJNb2R1bGUsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRp
ZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVt
b3RlU2hhZGVyTW9kdWxlKHNoYWRlck1vZHVsZSwgb2JqZWN0UmVnaXN0cnksIG9iamVjdEhlYXAs
IGlkZW50aWZpZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlU2hhZGVy
TW9kdWxlKHNoYWRlck1vZHVsZSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOwogICAgIH0KIAog
ICAgIHZpcnR1YWwgflJlbW90ZVNoYWRlck1vZHVsZSgpOwogCi1wcml2YXRlOgotICAgIGZyaWVu
ZCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKKyAgICBQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlJiBi
YWNraW5nKCkgeyByZXR1cm4gbV9iYWNraW5nOyB9CiAKLSAgICBSZW1vdGVTaGFkZXJNb2R1bGUo
UEFMOjpXZWJHUFU6OlNoYWRlck1vZHVsZSYsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmLCBXZWJH
UFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKK3ByaXZhdGU6CisgICAgUmVtb3Rl
U2hhZGVyTW9kdWxlKFBBTDo6V2ViR1BVOjpTaGFkZXJNb2R1bGUmLCBXZWJHUFU6Ok9iamVjdEhl
YXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZVNoYWRlck1vZHVsZShjb25zdCBS
ZW1vdGVTaGFkZXJNb2R1bGUmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVTaGFkZXJNb2R1bGUoUmVt
b3RlU2hhZGVyTW9kdWxlJiYpID0gZGVsZXRlOwpAQCAtNzIsNyArNzIsNiBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpTaGFk
ZXJNb2R1bGU+IG1fYmFja2luZzsKLSAgICBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBtX29iamVj
dFJlZ2lzdHJ5OwogICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFwOwogICAgIFdl
YkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmUuY3BwCmluZGV4
IGEwMWY0MmQwMDllZTUyNmQxODY4NzYwNTQ4NmEwNDQyZmE1N2Q0M2IuLjY1Nzk2YzljNjJjZGFm
ZjBkYzAzMzkxOTU2ZTcxODQ5ODhhYTU1OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlLmNwcApAQCAtMzAs
NyArMzAsNiBAQAogCiAjaW5jbHVkZSAiUmVtb3RlVGV4dHVyZVZpZXcuaCIKICNpbmNsdWRlICJX
ZWJHUFVPYmplY3RIZWFwLmgiCi0jaW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIKICNp
bmNsdWRlICJXZWJHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3IuaCIKICNpbmNsdWRlIDxwYWwvZ3Jh
cGhpY3MvV2ViR1BVL1dlYkdQVVRleHR1cmUuaD4KICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2Vi
R1BVL1dlYkdQVVRleHR1cmVWaWV3Lmg+CkBAIC0zOCwyNSArMzcsMjAgQEAKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLVJlbW90ZVRleHR1cmU6OlJlbW90ZVRleHR1cmUoUEFMOjpXZWJHUFU6OlRl
eHR1cmUmIHRleHR1cmUsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBX
ZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmll
cikKK1JlbW90ZVRleHR1cmU6OlJlbW90ZVRleHR1cmUoUEFMOjpXZWJHUFU6OlRleHR1cmUmIHRl
eHR1cmUsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBp
ZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5nKHRleHR1cmUpCi0gICAgLCBtX29iamVjdFJlZ2lz
dHJ5KG9iamVjdFJlZ2lzdHJ5KQogICAgICwgbV9vYmplY3RIZWFwKG9iamVjdEhlYXApCiAgICAg
LCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LmFkZE9i
amVjdChtX2lkZW50aWZpZXIsIG1fYmFja2luZyk7CiB9CiAKLVJlbW90ZVRleHR1cmU6On5SZW1v
dGVUZXh0dXJlKCkKLXsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdChtX2lkZW50
aWZpZXIpOwotfQorUmVtb3RlVGV4dHVyZTo6flJlbW90ZVRleHR1cmUoKSA9IGRlZmF1bHQ7CiAK
IHZvaWQgUmVtb3RlVGV4dHVyZTo6Y3JlYXRlVmlldyhjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkdQ
VTo6VGV4dHVyZVZpZXdEZXNjcmlwdG9yPiYgZGVzY3JpcHRvciwgV2ViR1BVSWRlbnRpZmllciBp
ZGVudGlmaWVyKQogewogICAgIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3
RGVzY3JpcHRvcj4gY29udmVydGVkRGVzY3JpcHRvcjsKICAgICBpZiAoZGVzY3JpcHRvcikgewot
ICAgICAgICBhdXRvIHJlc3VsdERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRG
cm9tQmFja2luZygqZGVzY3JpcHRvcik7CisgICAgICAgIGF1dG8gcmVzdWx0RGVzY3JpcHRvciA9
IG1fb2JqZWN0SGVhcC5jb252ZXJ0RnJvbUJhY2tpbmcoKmRlc2NyaXB0b3IpOwogICAgICAgICBB
U1NFUlQocmVzdWx0RGVzY3JpcHRvcik7CiAgICAgICAgIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBX
VEZNb3ZlKHJlc3VsdERlc2NyaXB0b3IpOwogICAgICAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0
b3IpCkBAIC02NCw4ICs1OCw4IEBAIHZvaWQgUmVtb3RlVGV4dHVyZTo6Y3JlYXRlVmlldyhjb25z
dCBzdGQ6Om9wdGlvbmFsPFdlYkdQVTo6VGV4dHVyZVZpZXdEZXNjcmlwdG9yCiAgICAgfQogICAg
IEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKICAgICBhdXRvIHRleHR1cmVWaWV3ID0gbV9i
YWNraW5nLT5jcmVhdGVWaWV3KCpjb252ZXJ0ZWREZXNjcmlwdG9yKTsKLSAgICBhdXRvIHJlbW90
ZVRleHR1cmVWaWV3ID0gUmVtb3RlVGV4dHVyZVZpZXc6OmNyZWF0ZSh0ZXh0dXJlVmlldywgbV9v
YmplY3RSZWdpc3RyeSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKLSAgICBtX29iamVjdEhl
YXAuYWRkT2JqZWN0KHJlbW90ZVRleHR1cmVWaWV3KTsKKyAgICBhdXRvIHJlbW90ZVRleHR1cmVW
aWV3ID0gUmVtb3RlVGV4dHVyZVZpZXc6OmNyZWF0ZSh0ZXh0dXJlVmlldywgbV9vYmplY3RIZWFw
LCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KGlkZW50aWZpZXIsIHJl
bW90ZVRleHR1cmVWaWV3KTsKIH0KIAogdm9pZCBSZW1vdGVUZXh0dXJlOjpkZXN0cm95KCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
VGV4dHVyZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVUZXh0dXJlLmgKaW5kZXggZGZlY2Y5ZGFmNzA5MWU4OTgwZTkzZmYwZTZjYWMwZTY1MGFhODVj
ZS4uOTgxMzYzNjgyOGYxMTgzOTJiODllOTQxNDY2YmM2NzBhYTQ2NmNiNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlLmgK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0
dXJlLmgKQEAgLTQwLDIzICs0MCwyMyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNl
IFdlYkdQVSB7CiBjbGFzcyBPYmplY3RIZWFwOwotY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiBzdHJ1
Y3QgVGV4dHVyZVZpZXdEZXNjcmlwdG9yOwogfQogCiBjbGFzcyBSZW1vdGVUZXh0dXJlIGZpbmFs
IDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZVRleHR1cmU+IGNyZWF0
ZShQQUw6OldlYkdQVTo6VGV4dHVyZSYgdGV4dHVyZSwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYg
b2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRl
bnRpZmllciBpZGVudGlmaWVyKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlVGV4dHVyZT4gY3JlYXRl
KFBBTDo6V2ViR1BVOjpUZXh0dXJlJiB0ZXh0dXJlLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVj
dEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFJlbW90ZVRleHR1cmUodGV4dHVyZSwgb2JqZWN0UmVnaXN0cnksIG9i
amVjdEhlYXAsIGlkZW50aWZpZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVt
b3RlVGV4dHVyZSh0ZXh0dXJlLCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAg
ICAgdmlydHVhbCB+UmVtb3RlVGV4dHVyZSgpOwogCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFz
cyBPYmplY3RSZWdpc3RyeTsKKyAgICBQQUw6OldlYkdQVTo6VGV4dHVyZSYgYmFja2luZygpIHsg
cmV0dXJuIG1fYmFja2luZzsgfQogCi0gICAgUmVtb3RlVGV4dHVyZShQQUw6OldlYkdQVTo6VGV4
dHVyZSYsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJH
UFVJZGVudGlmaWVyKTsKK3ByaXZhdGU6CisgICAgUmVtb3RlVGV4dHVyZShQQUw6OldlYkdQVTo6
VGV4dHVyZSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAg
UmVtb3RlVGV4dHVyZShjb25zdCBSZW1vdGVUZXh0dXJlJikgPSBkZWxldGU7CiAgICAgUmVtb3Rl
VGV4dHVyZShSZW1vdGVUZXh0dXJlJiYpID0gZGVsZXRlOwpAQCAtNzIsNyArNzIsNiBAQCBwcml2
YXRlOgogICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCiAgICAgUmVmPFBBTDo6V2ViR1BV
OjpUZXh0dXJlPiBtX2JhY2tpbmc7Ci0gICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgbV9vYmpl
Y3RSZWdpc3RyeTsKICAgICBXZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKICAgICBX
ZWJHUFVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmVWaWV3LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVZpZXcu
Y3BwCmluZGV4IGJlODYzZGY1ZjY0MmI4NGMxMDA3MjRmODA3YTY2OGIxZjNhZWNjNTEuLjdmYzhh
YjY1MzQ3YWY4NjM4MzExOTA2ZDhiNzI0YmIxMDE0Yjk1OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVy
ZVZpZXcuY3BwCkBAIC0yOSwyNCArMjksMTggQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAK
ICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCi0jaW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVn
aXN0cnkuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVRleHR1cmVWaWV3
Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZW1vdGVUZXh0dXJlVmlldzo6UmVtb3RlVGV4
dHVyZVZpZXcoUEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3JiB0ZXh0dXJlVmlldywgV2ViR1BVOjpP
YmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0
SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorUmVtb3RlVGV4dHVyZVZpZXc6OlJl
bW90ZVRleHR1cmVWaWV3KFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlldyYgdGV4dHVyZVZpZXcsIFdl
YkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
KQogICAgIDogbV9iYWNraW5nKHRleHR1cmVWaWV3KQotICAgICwgbV9vYmplY3RSZWdpc3RyeShv
YmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQogICAgICwgbV9p
ZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5hZGRPYmplY3Qo
bV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOwogfQogCi1SZW1vdGVUZXh0dXJlVmlldzo6flJlbW90
ZVRleHR1cmVWaWV3KCkKLXsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdChtX2lk
ZW50aWZpZXIpOwotfQorUmVtb3RlVGV4dHVyZVZpZXc6On5SZW1vdGVUZXh0dXJlVmlldygpID0g
ZGVmYXVsdDsKIAogdm9pZCBSZW1vdGVUZXh0dXJlVmlldzo6c2V0TGFiZWwoU3RyaW5nJiYgbGFi
ZWwpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZVRleHR1cmVWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZVRleHR1cmVWaWV3LmgKaW5kZXggNDY4N2MzYjgzMzk5ZjQzNjY0ZDky
MTJmZjNhODc4NDQzOWNiZjZjNy4uZDdjMTM1ZWRmZDljNTFjOGIwZDdkZGYzYTFmNGU2OTM2ZmQ2
OWUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVUZXh0dXJlVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVZpZXcuaApAQCAtNDAsMjIgKzQwLDIyIEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIGNsYXNzIE9iamVjdEhlYXA7Ci1j
bGFzcyBPYmplY3RSZWdpc3RyeTsKIH0KIAogY2xhc3MgUmVtb3RlVGV4dHVyZVZpZXcgZmluYWwg
OiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlVGV4dHVyZVZpZXc+IGNy
ZWF0ZShQQUw6OldlYkdQVTo6VGV4dHVyZVZpZXcmIHRleHR1cmVWaWV3LCBXZWJHUFU6Ok9iamVj
dFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFw
LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxSZW1vdGVUZXh0
dXJlVmlldz4gY3JlYXRlKFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlldyYgdGV4dHVyZVZpZXcsIFdl
YkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlVGV4dHVyZVZpZXco
dGV4dHVyZVZpZXcsIG9iamVjdFJlZ2lzdHJ5LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVRleHR1cmVWaWV3KHRleHR1cmVWaWV3
LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3Rl
VGV4dHVyZVZpZXcoKTsKIAotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgT2JqZWN0UmVnaXN0
cnk7CisgICAgUEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3JiBiYWNraW5nKCkgeyByZXR1cm4gbV9i
YWNraW5nOyB9CiAKLSAgICBSZW1vdGVUZXh0dXJlVmlldyhQQUw6OldlYkdQVTo6VGV4dHVyZVZp
ZXcmLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BV
SWRlbnRpZmllcik7Citwcml2YXRlOgorICAgIFJlbW90ZVRleHR1cmVWaWV3KFBBTDo6V2ViR1BV
OjpUZXh0dXJlVmlldyYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOwog
CiAgICAgUmVtb3RlVGV4dHVyZVZpZXcoY29uc3QgUmVtb3RlVGV4dHVyZVZpZXcmKSA9IGRlbGV0
ZTsKICAgICBSZW1vdGVUZXh0dXJlVmlldyhSZW1vdGVUZXh0dXJlVmlldyYmKSA9IGRlbGV0ZTsK
QEAgLTY3LDcgKzY3LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsK
IAogICAgIFJlZjxQQUw6OldlYkdQVTo6VGV4dHVyZVZpZXc+IG1fYmFja2luZzsKLSAgICBXZWJH
UFU6Ok9iamVjdFJlZ2lzdHJ5JiBtX29iamVjdFJlZ2lzdHJ5OwogICAgIFdlYkdQVTo6T2JqZWN0
SGVhcCYgbV9vYmplY3RIZWFwOwogICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
V2ViR1BVT2JqZWN0SGVhcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1dlYkdQVU9iamVjdEhlYXAuY3BwCmluZGV4IGQwYTBlYzMwOTQyODA1MjU0OWQzMjEy
MWQ4NDllZjRjODllMGY1YjEuLmVlMDZiMDAxN2Q1NTk1YjJiMzYyM2ExZDgyMGNlMGYwMjdlMTNm
OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
V2ViR1BVT2JqZWN0SGVhcC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9XZWJHUFVPYmplY3RIZWFwLmNwcApAQCAtNjEsMjY4ICs2MSwzMDQgQEAgT2Jq
ZWN0SGVhcDo6fk9iamVjdEhlYXAoKQogewogfQogCi12b2lkIE9iamVjdEhlYXA6OmFkZE9iamVj
dChSZW1vdGVBZGFwdGVyJiBhZGFwdGVyKQordm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoV2Vi
R1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZW1vdGVBZGFwdGVyJiBhZGFwdGVyKQogewotICAg
IGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZCgmYWRhcHRlciwgYWRhcHRlcik7CisgICAgYXV0
byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIGFkYXB0ZXIpOwogICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLXZvaWQgT2JqZWN0SGVh
cDo6YWRkT2JqZWN0KFJlbW90ZUJpbmRHcm91cCYgYmluZEdyb3VwKQordm9pZCBPYmplY3RIZWFw
OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZW1vdGVCaW5kR3JvdXAm
IGJpbmRHcm91cCkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoJmJpbmRHcm91
cCwgYmluZEdyb3VwKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmll
ciwgYmluZEdyb3VwKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50
cnkpOwogfQogCi12b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChSZW1vdGVCaW5kR3JvdXBMYXlv
dXQmIGJpbmRHcm91cExheW91dCkKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFdlYkdQVUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlQmluZEdyb3VwTGF5b3V0JiBiaW5kR3JvdXBMYXlv
dXQpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKCZiaW5kR3JvdXBMYXlvdXQs
IGJpbmRHcm91cExheW91dCk7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50
aWZpZXIsIGJpbmRHcm91cExheW91dCk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3Vs
dC5pc05ld0VudHJ5KTsKIH0KIAotdm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoUmVtb3RlQnVm
ZmVyJiBidWZmZXIpCit2b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFJlbW90ZUJ1ZmZlciYgYnVmZmVyKQogewotICAgIGF1dG8gcmVzdWx0ID0g
bV9vYmplY3RzLmFkZCgmYnVmZmVyLCBidWZmZXIpOworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmpl
Y3RzLmFkZChpZGVudGlmaWVyLCBidWZmZXIpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCBy
ZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLXZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJlbW90
ZUNvbW1hbmRCdWZmZXImIGNvbW1hbmRCdWZmZXIpCit2b2lkIE9iamVjdEhlYXA6OmFkZE9iamVj
dChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlbW90ZUNvbW1hbmRCdWZmZXImIGNvbW1h
bmRCdWZmZXIpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKCZjb21tYW5kQnVm
ZmVyLCBjb21tYW5kQnVmZmVyKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRl
bnRpZmllciwgY29tbWFuZEJ1ZmZlcik7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3Vs
dC5pc05ld0VudHJ5KTsKIH0KIAotdm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoUmVtb3RlQ29t
bWFuZEVuY29kZXImIGNvbW1hbmRFbmNvZGVyKQordm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3Qo
V2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZW1vdGVDb21tYW5kRW5jb2RlciYgY29tbWFu
ZEVuY29kZXIpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKCZjb21tYW5kRW5j
b2RlciwgY29tbWFuZEVuY29kZXIpOworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChp
ZGVudGlmaWVyLCBjb21tYW5kRW5jb2Rlcik7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJl
c3VsdC5pc05ld0VudHJ5KTsKIH0KIAotdm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoUmVtb3Rl
Q29tcHV0ZVBhc3NFbmNvZGVyJiBjb21wdXRlUGFzc0VuY29kZXIpCit2b2lkIE9iamVjdEhlYXA6
OmFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlbW90ZUNvbXB1dGVQYXNz
RW5jb2RlciYgY29tcHV0ZVBhc3NFbmNvZGVyKQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmpl
Y3RzLmFkZCgmY29tcHV0ZVBhc3NFbmNvZGVyLCBjb21wdXRlUGFzc0VuY29kZXIpOworICAgIGF1
dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBjb21wdXRlUGFzc0VuY29kZXIp
OwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLXZv
aWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJlbW90ZUNvbXB1dGVQaXBlbGluZSYgY29tcHV0ZVBp
cGVsaW5lKQordm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBSZW1vdGVDb21wdXRlUGlwZWxpbmUmIGNvbXB1dGVQaXBlbGluZSkKIHsKLSAgICBh
dXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoJmNvbXB1dGVQaXBlbGluZSwgY29tcHV0ZVBpcGVs
aW5lKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgY29tcHV0
ZVBpcGVsaW5lKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkp
OwogfQogCi12b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChSZW1vdGVEZXZpY2UmIGRldmljZSkK
K3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwg
UmVtb3RlRGV2aWNlJiBkZXZpY2UpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRk
KCZkZXZpY2UsIGRldmljZSk7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50
aWZpZXIsIGRldmljZSk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0Vu
dHJ5KTsKIH0KIAotdm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoUmVtb3RlRXh0ZXJuYWxUZXh0
dXJlJiBleHRlcm5hbFRleHR1cmUpCit2b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChXZWJHUFVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlbW90ZUV4dGVybmFsVGV4dHVyZSYgZXh0ZXJuYWxUZXh0
dXJlKQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZCgmZXh0ZXJuYWxUZXh0dXJl
LCBleHRlcm5hbFRleHR1cmUpOworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVu
dGlmaWVyLCBleHRlcm5hbFRleHR1cmUpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1
bHQuaXNOZXdFbnRyeSk7CiB9CiAKLXZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJlbW90ZUdQ
VSYgZ3B1KQordm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBSZW1vdGVQaXBlbGluZUxheW91dCYgcGlwZWxpbmVMYXlvdXQpCiB7Ci0gICAgYXV0
byByZXN1bHQgPSBtX29iamVjdHMuYWRkKCZncHUsIGdwdSk7CisgICAgYXV0byByZXN1bHQgPSBt
X29iamVjdHMuYWRkKGlkZW50aWZpZXIsIHBpcGVsaW5lTGF5b3V0KTsKICAgICBBU1NFUlRfVU5V
U0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi12b2lkIE9iamVjdEhlYXA6OmFk
ZE9iamVjdChSZW1vdGVQaXBlbGluZUxheW91dCYgcGlwZWxpbmVMYXlvdXQpCit2b2lkIE9iamVj
dEhlYXA6OmFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlbW90ZVF1ZXJ5
U2V0JiBxdWVyeVNldCkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoJnBpcGVs
aW5lTGF5b3V0LCBwaXBlbGluZUxheW91dCk7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMu
YWRkKGlkZW50aWZpZXIsIHF1ZXJ5U2V0KTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVz
dWx0LmlzTmV3RW50cnkpOwogfQogCi12b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChSZW1vdGVR
dWVyeVNldCYgcXVlcnlTZXQpCit2b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFJlbW90ZVF1ZXVlJiBxdWV1ZSkKIHsKLSAgICBhdXRvIHJlc3Vs
dCA9IG1fb2JqZWN0cy5hZGQoJnF1ZXJ5U2V0LCBxdWVyeVNldCk7CisgICAgYXV0byByZXN1bHQg
PSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIHF1ZXVlKTsKICAgICBBU1NFUlRfVU5VU0VEKHJl
c3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi12b2lkIE9iamVjdEhlYXA6OmFkZE9iamVj
dChSZW1vdGVRdWV1ZSYgcXVldWUpCit2b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChXZWJHUFVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXImIHJlbmRlckJ1
bmRsZUVuY29kZXIpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKCZxdWV1ZSwg
cXVldWUpOworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCByZW5k
ZXJCdW5kbGVFbmNvZGVyKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3
RW50cnkpOwogfQogCi12b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChSZW1vdGVSZW5kZXJCdW5k
bGVFbmNvZGVyJiByZW5kZXJCdW5kbGVFbmNvZGVyKQordm9pZCBPYmplY3RIZWFwOjphZGRPYmpl
Y3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZW1vdGVSZW5kZXJCdW5kbGUmIHJlbmRl
ckJ1bmRsZSkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoJnJlbmRlckJ1bmRs
ZUVuY29kZXIsIHJlbmRlckJ1bmRsZUVuY29kZXIpOworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmpl
Y3RzLmFkZChpZGVudGlmaWVyLCByZW5kZXJCdW5kbGUpOwogICAgIEFTU0VSVF9VTlVTRUQocmVz
dWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLXZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0
KFJlbW90ZVJlbmRlckJ1bmRsZSYgcmVuZGVyQnVuZGxlKQordm9pZCBPYmplY3RIZWFwOjphZGRP
YmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rl
ciYgcmVuZGVyUGFzc0VuY29kZXIpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRk
KCZyZW5kZXJCdW5kbGUsIHJlbmRlckJ1bmRsZSk7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVj
dHMuYWRkKGlkZW50aWZpZXIsIHJlbmRlclBhc3NFbmNvZGVyKTsKICAgICBBU1NFUlRfVU5VU0VE
KHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi12b2lkIE9iamVjdEhlYXA6OmFkZE9i
amVjdChSZW1vdGVSZW5kZXJQYXNzRW5jb2RlciYgcmVuZGVyUGFzc0VuY29kZXIpCit2b2lkIE9i
amVjdEhlYXA6OmFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlbW90ZVJl
bmRlclBpcGVsaW5lJiByZW5kZXJQaXBlbGluZSkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2Jq
ZWN0cy5hZGQoJnJlbmRlclBhc3NFbmNvZGVyLCByZW5kZXJQYXNzRW5jb2Rlcik7CisgICAgYXV0
byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIHJlbmRlclBpcGVsaW5lKTsKICAg
ICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi12b2lkIE9i
amVjdEhlYXA6OmFkZE9iamVjdChSZW1vdGVSZW5kZXJQaXBlbGluZSYgcmVuZGVyUGlwZWxpbmUp
Cit2b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFJlbW90ZVNhbXBsZXImIHNhbXBsZXIpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMu
YWRkKCZyZW5kZXJQaXBlbGluZSwgcmVuZGVyUGlwZWxpbmUpOworICAgIGF1dG8gcmVzdWx0ID0g
bV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBzYW1wbGVyKTsKICAgICBBU1NFUlRfVU5VU0VEKHJl
c3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi12b2lkIE9iamVjdEhlYXA6OmFkZE9iamVj
dChSZW1vdGVTYW1wbGVyJiBzYW1wbGVyKQordm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoV2Vi
R1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZW1vdGVTaGFkZXJNb2R1bGUmIHNoYWRlck1vZHVs
ZSkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoJnNhbXBsZXIsIHNhbXBsZXIp
OworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBzaGFkZXJNb2R1
bGUpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAK
LXZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJlbW90ZVNoYWRlck1vZHVsZSYgc2hhZGVyTW9k
dWxlKQordm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyLCBSZW1vdGVUZXh0dXJlJiB0ZXh0dXJlKQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmpl
Y3RzLmFkZCgmc2hhZGVyTW9kdWxlLCBzaGFkZXJNb2R1bGUpOworICAgIGF1dG8gcmVzdWx0ID0g
bV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCB0ZXh0dXJlKTsKICAgICBBU1NFUlRfVU5VU0VEKHJl
c3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi12b2lkIE9iamVjdEhlYXA6OmFkZE9iamVj
dChSZW1vdGVUZXh0dXJlJiB0ZXh0dXJlKQordm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoV2Vi
R1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZW1vdGVUZXh0dXJlVmlldyYgdGV4dHVyZVZpZXcp
CiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKCZ0ZXh0dXJlLCB0ZXh0dXJlKTsK
KyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgdGV4dHVyZVZpZXcp
OwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLXZv
aWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJlbW90ZVRleHR1cmVWaWV3JiB0ZXh0dXJlVmlldykK
K3ZvaWQgT2JqZWN0SGVhcDo6cmVtb3ZlT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmll
cikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoJnRleHR1cmVWaWV3LCB0ZXh0
dXJlVmlldyk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsK
LX0KLQotdm9pZCBPYmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlQWRhcHRlciYgYWRhcHRl
cikKLXsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJmFkYXB0ZXIpOworICAg
IGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZShpZGVudGlmaWVyKTsKICAgICBBU1NFUlRf
VU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKIH0KIAotdm9pZCBPYmplY3RIZWFwOjpyZW1vdmVPYmpl
Y3QoUmVtb3RlQmluZEdyb3VwJiBiaW5kR3JvdXApCitQQUw6OldlYkdQVTo6QWRhcHRlciogT2Jq
ZWN0SGVhcDo6Y29udmVydEFkYXB0ZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50
aWZpZXIpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKCZiaW5kR3JvdXAp
OwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworICAgIGF1dG8gaXRlcmF0b3Ig
PSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmpl
Y3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxSZW1vdGVBZGFwdGVyPj4o
aXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZz
dGQ6OmdldDxSZWY8UmVtb3RlQWRhcHRlcj4+KGl0ZXJhdG9yLT52YWx1ZSktPmJhY2tpbmcoKTsK
IH0KIAotdm9pZCBPYmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlQmluZEdyb3VwTGF5b3V0
JiBiaW5kR3JvdXBMYXlvdXQpCitQQUw6OldlYkdQVTo6QmluZEdyb3VwKiBPYmplY3RIZWFwOjpj
b252ZXJ0QmluZEdyb3VwRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQog
ewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmYmluZEdyb3VwTGF5b3V0KTsK
LSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKyAgICBhdXRvIGl0ZXJhdG9yID0g
bV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0
cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8UmVtb3RlQmluZEdyb3VwPj4o
aXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZz
dGQ6OmdldDxSZWY8UmVtb3RlQmluZEdyb3VwPj4oaXRlcmF0b3ItPnZhbHVlKS0+YmFja2luZygp
OwogfQogCi12b2lkIE9iamVjdEhlYXA6OnJlbW92ZU9iamVjdChSZW1vdGVCdWZmZXImIGJ1ZmZl
cikKK1BBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXQqIE9iamVjdEhlYXA6OmNvbnZlcnRCaW5k
R3JvdXBMYXlvdXRGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0g
ICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKCZidWZmZXIpOwotICAgIEFTU0VSVF9V
TlVTRUQocmVzdWx0LCByZXN1bHQpOworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmlu
ZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxSZW1vdGVCaW5kR3JvdXBMYXlvdXQ+PihpdGVyYXRv
ci0+dmFsdWUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0
PFJlZjxSZW1vdGVCaW5kR3JvdXBMYXlvdXQ+PihpdGVyYXRvci0+dmFsdWUpLT5iYWNraW5nKCk7
CiB9CiAKLXZvaWQgT2JqZWN0SGVhcDo6cmVtb3ZlT2JqZWN0KFJlbW90ZUNvbW1hbmRCdWZmZXIm
IGNvbW1hbmRCdWZmZXIpCitQQUw6OldlYkdQVTo6QnVmZmVyKiBPYmplY3RIZWFwOjpjb252ZXJ0
QnVmZmVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGF1
dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmY29tbWFuZEJ1ZmZlcik7Ci0gICAgQVNTRVJU
X1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5m
aW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwg
IXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFJlbW90ZUJ1ZmZlcj4+KGl0ZXJhdG9yLT52YWx1
ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAmc3RkOjpnZXQ8UmVmPFJl
bW90ZUJ1ZmZlcj4+KGl0ZXJhdG9yLT52YWx1ZSktPmJhY2tpbmcoKTsKIH0KIAotdm9pZCBPYmpl
Y3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlQ29tbWFuZEVuY29kZXImIGNvbW1hbmRFbmNvZGVy
KQorUEFMOjpXZWJHUFU6OkNvbW1hbmRCdWZmZXIqIE9iamVjdEhlYXA6OmNvbnZlcnRDb21tYW5k
QnVmZmVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGF1
dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmY29tbWFuZEVuY29kZXIpOwotICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMu
ZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8
ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxSZW1vdGVDb21tYW5kQnVmZmVyPj4oaXRlcmF0
b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZzdGQ6Omdl
dDxSZWY8UmVtb3RlQ29tbWFuZEJ1ZmZlcj4+KGl0ZXJhdG9yLT52YWx1ZSktPmJhY2tpbmcoKTsK
IH0KIAotdm9pZCBPYmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlQ29tcHV0ZVBhc3NFbmNv
ZGVyJiBjb21wdXRlUGFzc0VuY29kZXIpCitQQUw6OldlYkdQVTo6Q29tbWFuZEVuY29kZXIqIE9i
amVjdEhlYXA6OmNvbnZlcnRDb21tYW5kRW5jb2RlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZp
ZXIgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJmNv
bXB1dGVQYXNzRW5jb2Rlcik7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cisg
ICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChp
dGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVm
PFJlbW90ZUNvbW1hbmRFbmNvZGVyPj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgcmV0dXJuICZzdGQ6OmdldDxSZWY8UmVtb3RlQ29tbWFuZEVuY29kZXI+
PihpdGVyYXRvci0+dmFsdWUpLT5iYWNraW5nKCk7CiB9CiAKLXZvaWQgT2JqZWN0SGVhcDo6cmVt
b3ZlT2JqZWN0KFJlbW90ZUNvbXB1dGVQaXBlbGluZSYgY29tcHV0ZVBpcGVsaW5lKQorUEFMOjpX
ZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2RlciogT2JqZWN0SGVhcDo6Y29udmVydENvbXB1dGVQYXNz
RW5jb2RlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBh
dXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJmNvbXB1dGVQaXBlbGluZSk7Ci0gICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0
cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkg
fHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcj4+
KGl0ZXJhdG9yLT52YWx1ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAm
c3RkOjpnZXQ8UmVmPFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcj4+KGl0ZXJhdG9yLT52YWx1ZSkt
PmJhY2tpbmcoKTsKIH0KIAotdm9pZCBPYmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlRGV2
aWNlJiBkZXZpY2UpCitQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lKiBPYmplY3RIZWFwOjpj
b252ZXJ0Q29tcHV0ZVBpcGVsaW5lRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyKQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmZGV2aWNlKTsKLSAg
ICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9v
YmplY3RzLmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5l
bmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8UmVtb3RlQ29tcHV0ZVBpcGVsaW5l
Pj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJu
ICZzdGQ6OmdldDxSZWY8UmVtb3RlQ29tcHV0ZVBpcGVsaW5lPj4oaXRlcmF0b3ItPnZhbHVlKS0+
YmFja2luZygpOwogfQogCi12b2lkIE9iamVjdEhlYXA6OnJlbW92ZU9iamVjdChSZW1vdGVFeHRl
cm5hbFRleHR1cmUmIGV4dGVybmFsVGV4dHVyZSkKK1BBTDo6V2ViR1BVOjpEZXZpY2UqIE9iamVj
dEhlYXA6OmNvbnZlcnREZXZpY2VGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKCZleHRlcm5hbFRleHR1
cmUpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworICAgIGF1dG8gaXRlcmF0
b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9v
YmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxSZW1vdGVEZXZpY2U+
PihpdGVyYXRvci0+dmFsdWUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4g
JnN0ZDo6Z2V0PFJlZjxSZW1vdGVEZXZpY2U+PihpdGVyYXRvci0+dmFsdWUpLT5iYWNraW5nKCk7
CiB9CiAKLXZvaWQgT2JqZWN0SGVhcDo6cmVtb3ZlT2JqZWN0KFJlbW90ZUdQVSYgZ3B1KQorUEFM
OjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZSogT2JqZWN0SGVhcDo6Y29udmVydEV4dGVybmFsVGV4
dHVyZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBhdXRv
IHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJmdwdSk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsIHJlc3VsdCk7CisgICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZp
ZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8UmVmPFJlbW90ZUV4dGVybmFsVGV4dHVyZT4+KGl0ZXJhdG9yLT52YWx1ZSkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAmc3RkOjpnZXQ8UmVmPFJlbW90
ZUV4dGVybmFsVGV4dHVyZT4+KGl0ZXJhdG9yLT52YWx1ZSktPmJhY2tpbmcoKTsKIH0KIAotdm9p
ZCBPYmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlUGlwZWxpbmVMYXlvdXQmIHBpcGVsaW5l
TGF5b3V0KQorUEFMOjpXZWJHUFU6OlBpcGVsaW5lTGF5b3V0KiBPYmplY3RIZWFwOjpjb252ZXJ0
UGlwZWxpbmVMYXlvdXRGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7
Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKCZwaXBlbGluZUxheW91dCk7Ci0g
ICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAgYXV0byBpdGVyYXRvciA9IG1f
b2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMu
ZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFJlbW90ZVBpcGVsaW5lTGF5b3V0
Pj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJu
ICZzdGQ6OmdldDxSZWY8UmVtb3RlUGlwZWxpbmVMYXlvdXQ+PihpdGVyYXRvci0+dmFsdWUpLT5i
YWNraW5nKCk7CiB9CiAKLXZvaWQgT2JqZWN0SGVhcDo6cmVtb3ZlT2JqZWN0KFJlbW90ZVF1ZXJ5
U2V0JiBxdWVyeVNldCkKK1BBTDo6V2ViR1BVOjpRdWVyeVNldCogT2JqZWN0SGVhcDo6Y29udmVy
dFF1ZXJ5U2V0RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAg
IGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmcXVlcnlTZXQpOwotICAgIEFTU0VSVF9V
TlVTRUQocmVzdWx0LCByZXN1bHQpOworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmlu
ZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxSZW1vdGVRdWVyeVNldD4+KGl0ZXJhdG9yLT52YWx1
ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAmc3RkOjpnZXQ8UmVmPFJl
bW90ZVF1ZXJ5U2V0Pj4oaXRlcmF0b3ItPnZhbHVlKS0+YmFja2luZygpOwogfQogCi12b2lkIE9i
amVjdEhlYXA6OnJlbW92ZU9iamVjdChSZW1vdGVRdWV1ZSYgcXVldWUpCitQQUw6OldlYkdQVTo6
UXVldWUqIE9iamVjdEhlYXA6OmNvbnZlcnRRdWV1ZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZp
ZXIgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJnF1
ZXVlKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKyAgICBhdXRvIGl0ZXJh
dG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1f
b2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8UmVtb3RlUXVldWU+
PihpdGVyYXRvci0+dmFsdWUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4g
JnN0ZDo6Z2V0PFJlZjxSZW1vdGVRdWV1ZT4+KGl0ZXJhdG9yLT52YWx1ZSktPmJhY2tpbmcoKTsK
IH0KIAotdm9pZCBPYmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlUmVuZGVyQnVuZGxlRW5j
b2RlciYgcmVuZGVyQnVuZGxlRW5jb2RlcikKK1BBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNv
ZGVyKiBPYmplY3RIZWFwOjpjb252ZXJ0UmVuZGVyQnVuZGxlRW5jb2RlckZyb21CYWNraW5nKFdl
YkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0
cy5yZW1vdmUoJnJlbmRlckJ1bmRsZUVuY29kZXIpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0
LCByZXN1bHQpOworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVy
KTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPFJlZjxSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyPj4oaXRlcmF0b3ItPnZhbHVl
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZzdGQ6OmdldDxSZWY8UmVt
b3RlUmVuZGVyQnVuZGxlRW5jb2Rlcj4+KGl0ZXJhdG9yLT52YWx1ZSktPmJhY2tpbmcoKTsKIH0K
IAotdm9pZCBPYmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlUmVuZGVyQnVuZGxlJiByZW5k
ZXJCdW5kbGUpCitQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlKiBPYmplY3RIZWFwOjpjb252ZXJ0
UmVuZGVyQnVuZGxlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewot
ICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmcmVuZGVyQnVuZGxlKTsKLSAgICBB
U1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmpl
Y3RzLmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQo
KSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8UmVtb3RlUmVuZGVyQnVuZGxlPj4oaXRl
cmF0b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZzdGQ6
OmdldDxSZWY8UmVtb3RlUmVuZGVyQnVuZGxlPj4oaXRlcmF0b3ItPnZhbHVlKS0+YmFja2luZygp
OwogfQogCi12b2lkIE9iamVjdEhlYXA6OnJlbW92ZU9iamVjdChSZW1vdGVSZW5kZXJQYXNzRW5j
b2RlciYgcmVuZGVyUGFzc0VuY29kZXIpCitQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXIq
IE9iamVjdEhlYXA6OmNvbnZlcnRSZW5kZXJQYXNzRW5jb2RlckZyb21CYWNraW5nKFdlYkdQVUlk
ZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1v
dmUoJnJlbmRlclBhc3NFbmNvZGVyKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0
KTsKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7CisgICAg
aWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxSZWY8UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI+PihpdGVyYXRvci0+dmFsdWUpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PFJlZjxSZW1vdGVSZW5kZXJQ
YXNzRW5jb2Rlcj4+KGl0ZXJhdG9yLT52YWx1ZSktPmJhY2tpbmcoKTsKIH0KIAotdm9pZCBPYmpl
Y3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlUmVuZGVyUGlwZWxpbmUmIHJlbmRlclBpcGVsaW5l
KQorUEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lKiBPYmplY3RIZWFwOjpjb252ZXJ0UmVuZGVy
UGlwZWxpbmVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAg
YXV0byByZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKCZyZW5kZXJQaXBlbGluZSk7Ci0gICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0
cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkg
fHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFJlbW90ZVJlbmRlclBpcGVsaW5lPj4oaXRl
cmF0b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZzdGQ6
OmdldDxSZWY8UmVtb3RlUmVuZGVyUGlwZWxpbmU+PihpdGVyYXRvci0+dmFsdWUpLT5iYWNraW5n
KCk7CiB9CiAKLXZvaWQgT2JqZWN0SGVhcDo6cmVtb3ZlT2JqZWN0KFJlbW90ZVNhbXBsZXImIHNh
bXBsZXIpCitQQUw6OldlYkdQVTo6U2FtcGxlciogT2JqZWN0SGVhcDo6Y29udmVydFNhbXBsZXJG
cm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byByZXN1
bHQgPSBtX29iamVjdHMucmVtb3ZlKCZzYW1wbGVyKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3Vs
dCwgcmVzdWx0KTsKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmll
cik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxSZWY8UmVtb3RlU2FtcGxlcj4+KGl0ZXJhdG9yLT52YWx1ZSkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIHJldHVybiAmc3RkOjpnZXQ8UmVmPFJlbW90ZVNhbXBsZXI+
PihpdGVyYXRvci0+dmFsdWUpLT5iYWNraW5nKCk7CiB9CiAKLXZvaWQgT2JqZWN0SGVhcDo6cmVt
b3ZlT2JqZWN0KFJlbW90ZVNoYWRlck1vZHVsZSYgc2hhZGVyTW9kdWxlKQorUEFMOjpXZWJHUFU6
OlNoYWRlck1vZHVsZSogT2JqZWN0SGVhcDo6Y29udmVydFNoYWRlck1vZHVsZUZyb21CYWNraW5n
KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2Jq
ZWN0cy5yZW1vdmUoJnNoYWRlck1vZHVsZSk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJl
c3VsdCk7CisgICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOwor
ICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJu
YXRpdmU8UmVmPFJlbW90ZVNoYWRlck1vZHVsZT4+KGl0ZXJhdG9yLT52YWx1ZSkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIHJldHVybiAmc3RkOjpnZXQ8UmVmPFJlbW90ZVNoYWRlck1v
ZHVsZT4+KGl0ZXJhdG9yLT52YWx1ZSktPmJhY2tpbmcoKTsKIH0KIAotdm9pZCBPYmplY3RIZWFw
OjpyZW1vdmVPYmplY3QoUmVtb3RlVGV4dHVyZSYgdGV4dHVyZSkKK1BBTDo6V2ViR1BVOjpUZXh0
dXJlKiBPYmplY3RIZWFwOjpjb252ZXJ0VGV4dHVyZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZp
ZXIgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJnRl
eHR1cmUpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworICAgIGF1dG8gaXRl
cmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0g
bV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxSZW1vdGVUZXh0
dXJlPj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0
dXJuICZzdGQ6OmdldDxSZWY8UmVtb3RlVGV4dHVyZT4+KGl0ZXJhdG9yLT52YWx1ZSktPmJhY2tp
bmcoKTsKIH0KIAotdm9pZCBPYmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlVGV4dHVyZVZp
ZXcmIHRleHR1cmVWaWV3KQorUEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3KiBPYmplY3RIZWFwOjpj
b252ZXJ0VGV4dHVyZVZpZXdGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIp
CiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKCZ0ZXh0dXJlVmlldyk7Ci0g
ICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAgYXV0byBpdGVyYXRvciA9IG1f
b2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMu
ZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFJlbW90ZVRleHR1cmVWaWV3Pj4o
aXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZz
dGQ6OmdldDxSZWY8UmVtb3RlVGV4dHVyZVZpZXc+PihpdGVyYXRvci0+dmFsdWUpLT5iYWNraW5n
KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9iamVjdEhlYXAuaCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvV2ViR1BVT2JqZWN0SGVh
cC5oCmluZGV4IGExNmNkMjY2OTgxMzc3Y2E5MThlNTEwYjY4ZmM4NWYzOGU0MTlkOTIuLmNhMzY4
YTgxMTc1MGUxZTdlZDMzYjZkZmFhNzhlNzM1OTRkZGMxYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvV2ViR1BVT2JqZWN0SGVhcC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvV2ViR1BVT2JqZWN0SGVh
cC5oCkBAIC0yNywxMyArMjcsMzkgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAotI2lu
Y2x1ZGUgIldlYkdQVU9iamVjdFJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydEZy
b21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVUlkZW50aWZpZXIuaCIKICNpbmNs
dWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHZhcmlhbnQ+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAor
bmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKK2NsYXNzIEFkYXB0ZXI7CitjbGFzcyBCaW5kR3JvdXA7
CitjbGFzcyBCaW5kR3JvdXBMYXlvdXQ7CitjbGFzcyBCdWZmZXI7CitjbGFzcyBDb21tYW5kQnVm
ZmVyOworY2xhc3MgQ29tbWFuZEVuY29kZXI7CitjbGFzcyBDb21wdXRlUGFzc0VuY29kZXI7Citj
bGFzcyBDb21wdXRlUGlwZWxpbmU7CitjbGFzcyBEZXZpY2U7CitjbGFzcyBFeHRlcm5hbFRleHR1
cmU7CitjbGFzcyBHUFU7CitjbGFzcyBQaXBlbGluZUxheW91dDsKK2NsYXNzIFF1ZXJ5U2V0Owor
Y2xhc3MgUXVldWU7CitjbGFzcyBSZW5kZXJCdW5kbGVFbmNvZGVyOworY2xhc3MgUmVuZGVyQnVu
ZGxlOworY2xhc3MgUmVuZGVyUGFzc0VuY29kZXI7CitjbGFzcyBSZW5kZXJQaXBlbGluZTsKK2Ns
YXNzIFNhbXBsZXI7CitjbGFzcyBTaGFkZXJNb2R1bGU7CitjbGFzcyBUZXh0dXJlOworY2xhc3Mg
VGV4dHVyZVZpZXc7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgUmVtb3RlQWRhcHRl
cjsKIGNsYXNzIFJlbW90ZUJpbmRHcm91cDsKQEAgLTQ1LDcgKzcxLDYgQEAgY2xhc3MgUmVtb3Rl
Q29tcHV0ZVBhc3NFbmNvZGVyOwogY2xhc3MgUmVtb3RlQ29tcHV0ZVBpcGVsaW5lOwogY2xhc3Mg
UmVtb3RlRGV2aWNlOwogY2xhc3MgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlOwotY2xhc3MgUmVtb3Rl
R1BVOwogY2xhc3MgUmVtb3RlUGlwZWxpbmVMYXlvdXQ7CiBjbGFzcyBSZW1vdGVRdWVyeVNldDsK
IGNsYXNzIFJlbW90ZVF1ZXVlOwpAQCAtNjEsNTYgKzg2LDU3IEBAIGNsYXNzIFJlbW90ZVRleHR1
cmVWaWV3OwogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCi1jbGFzcyBPYmplY3RIZWFw
IGZpbmFsIDogcHVibGljIENhbk1ha2VXZWFrUHRyPE9iamVjdEhlYXA+IHsKK2NsYXNzIE9iamVj
dEhlYXAgZmluYWwgOiBwdWJsaWMgV2ViR1BVOjpDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LCBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8T2JqZWN0SGVhcD4geworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIE9iamVjdEhlYXAoKTsKICAgICB+T2JqZWN0SGVhcCgpOwog
Ci0gICAgdm9pZCBhZGRPYmplY3QoUmVtb3RlQWRhcHRlciYpOwotICAgIHZvaWQgYWRkT2JqZWN0
KFJlbW90ZUJpbmRHcm91cCYpOwotICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90ZUJpbmRHcm91cExh
eW91dCYpOwotICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90ZUJ1ZmZlciYpOwotICAgIHZvaWQgYWRk
T2JqZWN0KFJlbW90ZUNvbW1hbmRCdWZmZXImKTsKLSAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVD
b21tYW5kRW5jb2RlciYpOwotICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90ZUNvbXB1dGVQYXNzRW5j
b2RlciYpOwotICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90ZUNvbXB1dGVQaXBlbGluZSYpOwotICAg
IHZvaWQgYWRkT2JqZWN0KFJlbW90ZURldmljZSYpOwotICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90
ZUV4dGVybmFsVGV4dHVyZSYpOwotICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90ZUdQVSYpOwotICAg
IHZvaWQgYWRkT2JqZWN0KFJlbW90ZVBpcGVsaW5lTGF5b3V0Jik7Ci0gICAgdm9pZCBhZGRPYmpl
Y3QoUmVtb3RlUXVlcnlTZXQmKTsKLSAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVRdWV1ZSYpOwot
ICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXImKTsKLSAgICB2b2lk
IGFkZE9iamVjdChSZW1vdGVSZW5kZXJCdW5kbGUmKTsKLSAgICB2b2lkIGFkZE9iamVjdChSZW1v
dGVSZW5kZXJQYXNzRW5jb2RlciYpOwotICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90ZVJlbmRlclBp
cGVsaW5lJik7Ci0gICAgdm9pZCBhZGRPYmplY3QoUmVtb3RlU2FtcGxlciYpOwotICAgIHZvaWQg
YWRkT2JqZWN0KFJlbW90ZVNoYWRlck1vZHVsZSYpOwotICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90
ZVRleHR1cmUmKTsKLSAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVUZXh0dXJlVmlldyYpOworICAg
IHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIsIFJlbW90ZUFkYXB0ZXImKTsKKyAgICB2
b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBSZW1vdGVCaW5kR3JvdXAmKTsKKyAgICB2
b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBSZW1vdGVCaW5kR3JvdXBMYXlvdXQmKTsK
KyAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBSZW1vdGVCdWZmZXImKTsKKyAg
ICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBSZW1vdGVDb21tYW5kQnVmZmVyJik7
CisgICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUmVtb3RlQ29tbWFuZEVuY29k
ZXImKTsKKyAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBSZW1vdGVDb21wdXRl
UGFzc0VuY29kZXImKTsKKyAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBSZW1v
dGVDb21wdXRlUGlwZWxpbmUmKTsKKyAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVy
LCBSZW1vdGVEZXZpY2UmKTsKKyAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBS
ZW1vdGVFeHRlcm5hbFRleHR1cmUmKTsKKyAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlm
aWVyLCBSZW1vdGVQaXBlbGluZUxheW91dCYpOworICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlk
ZW50aWZpZXIsIFJlbW90ZVF1ZXJ5U2V0Jik7CisgICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRl
bnRpZmllciwgUmVtb3RlUXVldWUmKTsKKyAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlm
aWVyLCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyJik7CisgICAgdm9pZCBhZGRPYmplY3QoV2Vi
R1BVSWRlbnRpZmllciwgUmVtb3RlUmVuZGVyQnVuZGxlJik7CisgICAgdm9pZCBhZGRPYmplY3Qo
V2ViR1BVSWRlbnRpZmllciwgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXImKTsKKyAgICB2b2lkIGFk
ZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBSZW1vdGVSZW5kZXJQaXBlbGluZSYpOworICAgIHZv
aWQgYWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIsIFJlbW90ZVNhbXBsZXImKTsKKyAgICB2b2lk
IGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBSZW1vdGVTaGFkZXJNb2R1bGUmKTsKKyAgICB2
b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBSZW1vdGVUZXh0dXJlJik7CisgICAgdm9p
ZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUmVtb3RlVGV4dHVyZVZpZXcmKTsKIAotICAg
IHZvaWQgcmVtb3ZlT2JqZWN0KFJlbW90ZUFkYXB0ZXImKTsKLSAgICB2b2lkIHJlbW92ZU9iamVj
dChSZW1vdGVCaW5kR3JvdXAmKTsKLSAgICB2b2lkIHJlbW92ZU9iamVjdChSZW1vdGVCaW5kR3Jv
dXBMYXlvdXQmKTsKLSAgICB2b2lkIHJlbW92ZU9iamVjdChSZW1vdGVCdWZmZXImKTsKLSAgICB2
b2lkIHJlbW92ZU9iamVjdChSZW1vdGVDb21tYW5kQnVmZmVyJik7Ci0gICAgdm9pZCByZW1vdmVP
YmplY3QoUmVtb3RlQ29tbWFuZEVuY29kZXImKTsKLSAgICB2b2lkIHJlbW92ZU9iamVjdChSZW1v
dGVDb21wdXRlUGFzc0VuY29kZXImKTsKLSAgICB2b2lkIHJlbW92ZU9iamVjdChSZW1vdGVDb21w
dXRlUGlwZWxpbmUmKTsKLSAgICB2b2lkIHJlbW92ZU9iamVjdChSZW1vdGVEZXZpY2UmKTsKLSAg
ICB2b2lkIHJlbW92ZU9iamVjdChSZW1vdGVFeHRlcm5hbFRleHR1cmUmKTsKLSAgICB2b2lkIHJl
bW92ZU9iamVjdChSZW1vdGVHUFUmKTsKLSAgICB2b2lkIHJlbW92ZU9iamVjdChSZW1vdGVQaXBl
bGluZUxheW91dCYpOwotICAgIHZvaWQgcmVtb3ZlT2JqZWN0KFJlbW90ZVF1ZXJ5U2V0Jik7Ci0g
ICAgdm9pZCByZW1vdmVPYmplY3QoUmVtb3RlUXVldWUmKTsKLSAgICB2b2lkIHJlbW92ZU9iamVj
dChSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyJik7Ci0gICAgdm9pZCByZW1vdmVPYmplY3QoUmVt
b3RlUmVuZGVyQnVuZGxlJik7Ci0gICAgdm9pZCByZW1vdmVPYmplY3QoUmVtb3RlUmVuZGVyUGFz
c0VuY29kZXImKTsKLSAgICB2b2lkIHJlbW92ZU9iamVjdChSZW1vdGVSZW5kZXJQaXBlbGluZSYp
OwotICAgIHZvaWQgcmVtb3ZlT2JqZWN0KFJlbW90ZVNhbXBsZXImKTsKLSAgICB2b2lkIHJlbW92
ZU9iamVjdChSZW1vdGVTaGFkZXJNb2R1bGUmKTsKLSAgICB2b2lkIHJlbW92ZU9iamVjdChSZW1v
dGVUZXh0dXJlJik7Ci0gICAgdm9pZCByZW1vdmVPYmplY3QoUmVtb3RlVGV4dHVyZVZpZXcmKTsK
KyAgICB2b2lkIHJlbW92ZU9iamVjdChXZWJHUFVJZGVudGlmaWVyKTsKKworICAgIFBBTDo6V2Vi
R1BVOjpBZGFwdGVyKiBjb252ZXJ0QWRhcHRlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIp
IGZpbmFsOworICAgIFBBTDo6V2ViR1BVOjpCaW5kR3JvdXAqIGNvbnZlcnRCaW5kR3JvdXBGcm9t
QmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKKyAgICBQQUw6OldlYkdQVTo6QmluZEdy
b3VwTGF5b3V0KiBjb252ZXJ0QmluZEdyb3VwTGF5b3V0RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRp
ZmllcikgZmluYWw7CisgICAgUEFMOjpXZWJHUFU6OkJ1ZmZlciogY29udmVydEJ1ZmZlckZyb21C
YWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOworICAgIFBBTDo6V2ViR1BVOjpDb21tYW5k
QnVmZmVyKiBjb252ZXJ0Q29tbWFuZEJ1ZmZlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIp
IGZpbmFsOworICAgIFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2RlciogY29udmVydENvbW1hbmRF
bmNvZGVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7CisgICAgUEFMOjpXZWJH
UFU6OkNvbXB1dGVQYXNzRW5jb2RlciogY29udmVydENvbXB1dGVQYXNzRW5jb2RlckZyb21CYWNr
aW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOworICAgIFBBTDo6V2ViR1BVOjpDb21wdXRlUGlw
ZWxpbmUqIGNvbnZlcnRDb21wdXRlUGlwZWxpbmVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVy
KSBmaW5hbDsKKyAgICBQQUw6OldlYkdQVTo6RGV2aWNlKiBjb252ZXJ0RGV2aWNlRnJvbUJhY2tp
bmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7CisgICAgUEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4
dHVyZSogY29udmVydEV4dGVybmFsVGV4dHVyZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIp
IGZpbmFsOworICAgIFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91dCogY29udmVydFBpcGVsaW5l
TGF5b3V0RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7CisgICAgUEFMOjpXZWJH
UFU6OlF1ZXJ5U2V0KiBjb252ZXJ0UXVlcnlTZXRGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVy
KSBmaW5hbDsKKyAgICBQQUw6OldlYkdQVTo6UXVldWUqIGNvbnZlcnRRdWV1ZUZyb21CYWNraW5n
KFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOworICAgIFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVF
bmNvZGVyKiBjb252ZXJ0UmVuZGVyQnVuZGxlRW5jb2RlckZyb21CYWNraW5nKFdlYkdQVUlkZW50
aWZpZXIpIGZpbmFsOworICAgIFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGUqIGNvbnZlcnRSZW5k
ZXJCdW5kbGVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKKyAgICBQQUw6Oldl
YkdQVTo6UmVuZGVyUGFzc0VuY29kZXIqIGNvbnZlcnRSZW5kZXJQYXNzRW5jb2RlckZyb21CYWNr
aW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOworICAgIFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBl
bGluZSogY29udmVydFJlbmRlclBpcGVsaW5lRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikg
ZmluYWw7CisgICAgUEFMOjpXZWJHUFU6OlNhbXBsZXIqIGNvbnZlcnRTYW1wbGVyRnJvbUJhY2tp
bmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7CisgICAgUEFMOjpXZWJHUFU6OlNoYWRlck1vZHVs
ZSogY29udmVydFNoYWRlck1vZHVsZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFs
OworICAgIFBBTDo6V2ViR1BVOjpUZXh0dXJlKiBjb252ZXJ0VGV4dHVyZUZyb21CYWNraW5nKFdl
YkdQVUlkZW50aWZpZXIpIGZpbmFsOworICAgIFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlldyogY29u
dmVydFRleHR1cmVWaWV3RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7CiAKIHBy
aXZhdGU6CiAgICAgdXNpbmcgT2JqZWN0ID0gc3RkOjp2YXJpYW50PApAQCAtMTI1LDcgKzE1MSw2
IEBAIHByaXZhdGU6CiAgICAgICAgIFJlZjxSZW1vdGVDb21wdXRlUGlwZWxpbmU+LAogICAgICAg
ICBSZWY8UmVtb3RlRGV2aWNlPiwKICAgICAgICAgUmVmPFJlbW90ZUV4dGVybmFsVGV4dHVyZT4s
Ci0gICAgICAgIFJlZjxSZW1vdGVHUFU+LAogICAgICAgICBSZWY8UmVtb3RlUGlwZWxpbmVMYXlv
dXQ+LAogICAgICAgICBSZWY8UmVtb3RlUXVlcnlTZXQ+LAogICAgICAgICBSZWY8UmVtb3RlUXVl
dWU+LApAQCAtMTM4LDkgKzE2Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIFJlZjxSZW1vdGVUZXh0
dXJlPiwKICAgICAgICAgUmVmPFJlbW90ZVRleHR1cmVWaWV3PgogICAgID47Ci0gICAgSGFzaE1h
cDx2b2lkKiwgT2JqZWN0PiBtX29iamVjdHM7Ci0KLSAgICBPYmplY3RSZWdpc3RyeSBtX29iamVj
dFJlZ2lzdHJ5OworICAgIEhhc2hNYXA8V2ViR1BVSWRlbnRpZmllciwgT2JqZWN0PiBtX29iamVj
dHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVPYmplY3RSZWdpc3Ry
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9i
amVjdFJlZ2lzdHJ5LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWIyN2ExYTVm
YmU0ZGU0MGJiYmUyZDU2NWVkMGRjMzM1N2ZlMDVhOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1dlYkdQVU9iamVjdFJlZ2lzdHJ5LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM4MCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQ
VU9iamVjdFJlZ2lzdHJ5LmgiCi0KLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0KLSNpbmNsdWRl
IDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVS5oPgotI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9X
ZWJHUFUvV2ViR1BVQWRhcHRlci5oPgotI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2Vi
R1BVQmluZEdyb3VwLmg+Ci0jaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVCaW5k
R3JvdXBMYXlvdXQuaD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJ1ZmZl
ci5oPgotI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5o
PgotI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29tbWFuZEVuY29kZXIuaD4K
LSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5o
PgotI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmg+
Ci0jaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVEZXZpY2UuaD4KLSNpbmNsdWRl
IDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUV4dGVybmFsVGV4dHVyZS5oPgotI2luY2x1ZGUg
PHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUGlwZWxpbmVMYXlvdXQuaD4KLSNpbmNsdWRlIDxw
YWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVF1ZXJ5U2V0Lmg+Ci0jaW5jbHVkZSA8cGFsL2dyYXBo
aWNzL1dlYkdQVS9XZWJHUFVRdWV1ZS5oPgotI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUv
V2ViR1BVUmVuZGVyQnVuZGxlLmg+Ci0jaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJH
UFVSZW5kZXJCdW5kbGVFbmNvZGVyLmg+Ci0jaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9X
ZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oPgotI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUv
V2ViR1BVUmVuZGVyUGlwZWxpbmUuaD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dl
YkdQVVNhbXBsZXIuaD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVNoYWRl
ck1vZHVsZS5oPgotI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVVGV4dHVyZS5o
PgotI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVVGV4dHVyZVZpZXcuaD4KLQot
bmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKLQotT2JqZWN0UmVnaXN0cnk6Ok9iamVjdFJlZ2lz
dHJ5KCkKLXsKLX0KLQotT2JqZWN0UmVnaXN0cnk6On5PYmplY3RSZWdpc3RyeSgpCi17Ci19Ci0K
LXZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFBBTDo6V2ViR1BVOjpBZGFwdGVyJiBhZGFwdGVyKQotewotICAgIGF1dG8gcmVzdWx0ID0g
bV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBhZGFwdGVyKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJl
c3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwotfQotCi12b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRP
YmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6QmluZEdyb3Vw
JiBiaW5kR3JvdXApCi17Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZp
ZXIsIGJpbmRHcm91cCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0Vu
dHJ5KTsKLX0KLQotdm9pZCBPYmplY3RSZWdpc3RyeTo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dCYgYmluZEdyb3VwTGF5
b3V0KQotewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBiaW5k
R3JvdXBMYXlvdXQpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRy
eSk7Ci19Ci0KLXZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpCdWZmZXImIGJ1ZmZlcikKLXsKLSAgICBhdXRvIHJl
c3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgYnVmZmVyKTsKLSAgICBBU1NFUlRfVU5V
U0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwotfQotCi12b2lkIE9iamVjdFJlZ2lzdHJ5
OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6Q29t
bWFuZEJ1ZmZlciYgY29tbWFuZEJ1ZmZlcikKLXsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0
cy5hZGQoaWRlbnRpZmllciwgY29tbWFuZEJ1ZmZlcik7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKLX0KLQotdm9pZCBPYmplY3RSZWdpc3RyeTo6YWRkT2Jq
ZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNv
ZGVyJiBjb21tYW5kRW5jb2RlcikKLXsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQo
aWRlbnRpZmllciwgY29tbWFuZEVuY29kZXIpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCBy
ZXN1bHQuaXNOZXdFbnRyeSk7Ci19Ci0KLXZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChX
ZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpDb21wdXRlUGFzc0VuY29k
ZXImIGNvbXB1dGVQYXNzRW5jb2RlcikKLXsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5h
ZGQoaWRlbnRpZmllciwgY29tcHV0ZVBhc3NFbmNvZGVyKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJl
c3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwotfQotCi12b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRP
YmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6Q29tcHV0ZVBp
cGVsaW5lJiBjb21wdXRlUGlwZWxpbmUpCi17Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMu
YWRkKGlkZW50aWZpZXIsIGNvbXB1dGVQaXBlbGluZSk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKLX0KLQotdm9pZCBPYmplY3RSZWdpc3RyeTo6YWRkT2Jq
ZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OkRldmljZSYgZGV2
aWNlKQotewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBkZXZp
Y2UpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7Ci19Ci0K
LXZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1cmUmIGV4dGVybmFsVGV4dHVyZSkKLXsKLSAg
ICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgZXh0ZXJuYWxUZXh0dXJl
KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwotfQotCi12
b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
LCBQQUw6OldlYkdQVTo6R1BVJiBncHUpCi17Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMu
YWRkKGlkZW50aWZpZXIsIGdwdSk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5p
c05ld0VudHJ5KTsKLX0KLQotdm9pZCBPYmplY3RSZWdpc3RyeTo6YWRkT2JqZWN0KFdlYkdQVUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OlBpcGVsaW5lTGF5b3V0JiBwaXBlbGlu
ZUxheW91dCkKLXsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwg
cGlwZWxpbmVMYXlvdXQpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdF
bnRyeSk7Ci19Ci0KLXZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChXZWJHUFVJZGVudGlm
aWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpRdWVyeVNldCYgcXVlcnlTZXQpCi17Ci0gICAg
YXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIHF1ZXJ5U2V0KTsKLSAgICBB
U1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwotfQotCi12b2lkIE9iamVj
dFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBQQUw6Oldl
YkdQVTo6UXVldWUmIHF1ZXVlKQotewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChp
ZGVudGlmaWVyLCBxdWV1ZSk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05l
d0VudHJ5KTsKLX0KLQotdm9pZCBPYmplY3RSZWdpc3RyeTo6YWRkT2JqZWN0KFdlYkdQVUlkZW50
aWZpZXIgaWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXImIHJlbmRl
ckJ1bmRsZUVuY29kZXIpCi17Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50
aWZpZXIsIHJlbmRlckJ1bmRsZUVuY29kZXIpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCBy
ZXN1bHQuaXNOZXdFbnRyeSk7Ci19Ci0KLXZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChX
ZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGUmIHJl
bmRlckJ1bmRsZSkKLXsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmll
ciwgcmVuZGVyQnVuZGxlKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3
RW50cnkpOwotfQotCi12b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXImIHJlbmRlclBh
c3NFbmNvZGVyKQotewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVy
LCByZW5kZXJQYXNzRW5jb2Rlcik7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5p
c05ld0VudHJ5KTsKLX0KLQotdm9pZCBPYmplY3RSZWdpc3RyeTo6YWRkT2JqZWN0KFdlYkdQVUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lJiByZW5kZXJQ
aXBlbGluZSkKLXsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwg
cmVuZGVyUGlwZWxpbmUpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdF
bnRyeSk7Ci19Ci0KLXZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChXZWJHUFVJZGVudGlm
aWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpTYW1wbGVyJiBzYW1wbGVyKQotewotICAgIGF1
dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBzYW1wbGVyKTsKLSAgICBBU1NF
UlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwotfQotCi12b2lkIE9iamVjdFJl
Z2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBQQUw6OldlYkdQ
VTo6U2hhZGVyTW9kdWxlJiBzaGFkZXJNb2R1bGUpCi17Ci0gICAgYXV0byByZXN1bHQgPSBtX29i
amVjdHMuYWRkKGlkZW50aWZpZXIsIHNoYWRlck1vZHVsZSk7Ci0gICAgQVNTRVJUX1VOVVNFRChy
ZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKLX0KLQotdm9pZCBPYmplY3RSZWdpc3RyeTo6YWRk
T2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OlRleHR1cmUm
IHRleHR1cmUpCi17Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIs
IHRleHR1cmUpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7
Ci19Ci0KLXZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlldyYgdGV4dHVyZVZpZXcpCi17Ci0gICAg
YXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIHRleHR1cmVWaWV3KTsKLSAg
ICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwotfQotCi12b2lkIE9i
amVjdFJlZ2lzdHJ5OjpyZW1vdmVPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQot
ewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZShpZGVudGlmaWVyKTsKLSAgICBB
U1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKLX0KLQotUEFMOjpXZWJHUFU6OkFkYXB0ZXIq
IE9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0QWRhcHRlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZp
ZXIgaWRlbnRpZmllcikKLXsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRl
bnRpZmllcik7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpBZGFw
dGVyPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0
dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpBZGFwdGVy
Pj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKLX0KLQotUEFMOjpXZWJHUFU6OkJpbmRHcm91cCog
T2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRCaW5kR3JvdXBGcm9tQmFja2luZyhXZWJHUFVJZGVudGlm
aWVyIGlkZW50aWZpZXIpCi17Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlk
ZW50aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6Qmlu
ZEdyb3VwPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
cmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpCaW5k
R3JvdXA+PihpdGVyYXRvci0+dmFsdWUpLmdldCgpOwotfQotCi1QQUw6OldlYkdQVTo6QmluZEdy
b3VwTGF5b3V0KiBPYmplY3RSZWdpc3RyeTo6Y29udmVydEJpbmRHcm91cExheW91dEZyb21CYWNr
aW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKLXsKLSAgICBhdXRvIGl0ZXJhdG9yID0g
bV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0
cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVy
PFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXQ+PihpdGVyYXRvci0+dmFsdWUpKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0ZDo6cmVmZXJlbmNlX3dy
YXBwZXI8UEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dD4+KGl0ZXJhdG9yLT52YWx1ZSkuZ2V0
KCk7Ci19Ci0KLVBBTDo6V2ViR1BVOjpCdWZmZXIqIE9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0QnVm
ZmVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQotewotICAgIGF1dG8g
aXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3Ig
PT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6cmVmZXJl
bmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkJ1ZmZlcj4+KGl0ZXJhdG9yLT52YWx1ZSkpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiAmc3RkOjpnZXQ8c3RkOjpyZWZlcmVuY2Vf
d3JhcHBlcjxQQUw6OldlYkdQVTo6QnVmZmVyPj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKLX0K
LQotUEFMOjpXZWJHUFU6OkNvbW1hbmRCdWZmZXIqIE9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0Q29t
bWFuZEJ1ZmZlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKLXsKLSAg
ICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7Ci0gICAgaWYgKGl0
ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpDb21tYW5kQnVmZmVyPj4oaXRlcmF0b3It
PnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuICZzdGQ6OmdldDxz
dGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpDb21tYW5kQnVmZmVyPj4oaXRlcmF0
b3ItPnZhbHVlKS5nZXQoKTsKLX0KLQotUEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyKiBPYmpl
Y3RSZWdpc3RyeTo6Y29udmVydENvbW1hbmRFbmNvZGVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRp
ZmllciBpZGVudGlmaWVyKQotewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChp
ZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkNv
bW1hbmRFbmNvZGVyPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgcmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BV
OjpDb21tYW5kRW5jb2Rlcj4+KGl0ZXJhdG9yLT52YWx1ZSkuZ2V0KCk7Ci19Ci0KLVBBTDo6V2Vi
R1BVOjpDb21wdXRlUGFzc0VuY29kZXIqIE9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0Q29tcHV0ZVBh
c3NFbmNvZGVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQotewotICAg
IGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRl
cmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6
cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2Rlcj4+KGl0ZXJh
dG9yLT52YWx1ZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiAmc3RkOjpn
ZXQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVy
Pj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKLX0KLQotUEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBl
bGluZSogT2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRDb21wdXRlUGlwZWxpbmVGcm9tQmFja2luZyhX
ZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCi17Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fb2Jq
ZWN0cy5maW5kKGlkZW50aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5k
KCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6
OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVy
PFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmU+PihpdGVyYXRvci0+dmFsdWUpLmdldCgpOwot
fQotCi1QQUw6OldlYkdQVTo6RGV2aWNlKiBPYmplY3RSZWdpc3RyeTo6Y29udmVydERldmljZUZy
b21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKLXsKLSAgICBhdXRvIGl0ZXJh
dG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1f
b2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93
cmFwcGVyPFBBTDo6V2ViR1BVOjpEZXZpY2U+PihpdGVyYXRvci0+dmFsdWUpKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0ZDo6cmVmZXJlbmNlX3dyYXBw
ZXI8UEFMOjpXZWJHUFU6OkRldmljZT4+KGl0ZXJhdG9yLT52YWx1ZSkuZ2V0KCk7Ci19Ci0KLVBB
TDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1cmUqIE9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0RXh0ZXJu
YWxUZXh0dXJlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQotewotICAg
IGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRl
cmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6
cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZT4+KGl0ZXJhdG9y
LT52YWx1ZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiAmc3RkOjpnZXQ8
c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlPj4oaXRl
cmF0b3ItPnZhbHVlKS5nZXQoKTsKLX0KLQotUEFMOjpXZWJHUFU6OkdQVSogT2JqZWN0UmVnaXN0
cnk6OmNvbnZlcnRHUFVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCi17
Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOwotICAgIGlm
IChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8
c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6R1BVPj4oaXRlcmF0b3ItPnZhbHVl
KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpHUFU+PihpdGVyYXRvci0+dmFsdWUpLmdldCgp
OwotfQotCi1QQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQqIE9iamVjdFJlZ2lzdHJ5Ojpjb252
ZXJ0UGlwZWxpbmVMYXlvdXRGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIp
Ci17Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOwotICAg
IGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQ+Pihp
dGVyYXRvci0+dmFsdWUpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gJnN0
ZDo6Z2V0PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlBpcGVsaW5lTGF5b3V0
Pj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKLX0KLQotUEFMOjpXZWJHUFU6OlF1ZXJ5U2V0KiBP
YmplY3RSZWdpc3RyeTo6Y29udmVydFF1ZXJ5U2V0RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyKQotewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVu
dGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlF1ZXJ5
U2V0Pj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0
dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpRdWVyeVNl
dD4+KGl0ZXJhdG9yLT52YWx1ZSkuZ2V0KCk7Ci19Ci0KLVBBTDo6V2ViR1BVOjpRdWV1ZSogT2Jq
ZWN0UmVnaXN0cnk6OmNvbnZlcnRRdWV1ZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRl
bnRpZmllcikKLXsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmll
cik7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpRdWV1ZT4+KGl0
ZXJhdG9yLT52YWx1ZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiAmc3Rk
OjpnZXQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UXVldWU+PihpdGVyYXRv
ci0+dmFsdWUpLmdldCgpOwotfQotCi1QQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2Rlciog
T2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRSZW5kZXJCdW5kbGVFbmNvZGVyRnJvbUJhY2tpbmcoV2Vi
R1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQotewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVj
dHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgp
IHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpX
ZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXI+PihpdGVyYXRvci0+dmFsdWUpKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0ZDo6cmVmZXJlbmNlX3dyYXBw
ZXI8UEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXI+PihpdGVyYXRvci0+dmFsdWUpLmdl
dCgpOwotfQotCi1QQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlKiBPYmplY3RSZWdpc3RyeTo6Y29u
dmVydFJlbmRlckJ1bmRsZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikK
LXsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7Ci0gICAg
aWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGU+PihpdGVy
YXRvci0+dmFsdWUpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gJnN0ZDo6
Z2V0PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZT4+KGl0
ZXJhdG9yLT52YWx1ZSkuZ2V0KCk7Ci19Ci0KLVBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRW5jb2Rl
ciogT2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRSZW5kZXJQYXNzRW5jb2RlckZyb21CYWNraW5nKFdl
YkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKLXsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmpl
Y3RzLmZpbmQoaWRlbnRpZmllcik7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQo
KSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6
V2ViR1BVOjpSZW5kZXJQYXNzRW5jb2Rlcj4+KGl0ZXJhdG9yLT52YWx1ZSkpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIHJldHVybiAmc3RkOjpnZXQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBl
cjxQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXI+PihpdGVyYXRvci0+dmFsdWUpLmdldCgp
OwotfQotCi1QQUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmUqIE9iamVjdFJlZ2lzdHJ5Ojpjb252
ZXJ0UmVuZGVyUGlwZWxpbmVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIp
Ci17Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOwotICAg
IGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmU+Pihp
dGVyYXRvci0+dmFsdWUpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gJnN0
ZDo6Z2V0PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5l
Pj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKLX0KLQotUEFMOjpXZWJHUFU6OlNhbXBsZXIqIE9i
amVjdFJlZ2lzdHJ5Ojpjb252ZXJ0U2FtcGxlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIg
aWRlbnRpZmllcikKLXsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRp
Zmllcik7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpTYW1wbGVy
Pj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJu
ICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpTYW1wbGVyPj4o
aXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKLX0KLQotUEFMOjpXZWJHUFU6OlNoYWRlck1vZHVsZSog
T2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRTaGFkZXJNb2R1bGVGcm9tQmFja2luZyhXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCi17Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5k
KGlkZW50aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0
ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6
U2hhZGVyTW9kdWxlPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgcmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BV
OjpTaGFkZXJNb2R1bGU+PihpdGVyYXRvci0+dmFsdWUpLmdldCgpOwotfQotCi1QQUw6OldlYkdQ
VTo6VGV4dHVyZSogT2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRUZXh0dXJlRnJvbUJhY2tpbmcoV2Vi
R1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQotewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVj
dHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgp
IHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpX
ZWJHUFU6OlRleHR1cmU+PihpdGVyYXRvci0+dmFsdWUpKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJH
UFU6OlRleHR1cmU+PihpdGVyYXRvci0+dmFsdWUpLmdldCgpOwotfQotCi1QQUw6OldlYkdQVTo6
VGV4dHVyZVZpZXcqIE9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0VGV4dHVyZVZpZXdGcm9tQmFja2lu
ZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCi17Ci0gICAgYXV0byBpdGVyYXRvciA9IG1f
b2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMu
ZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQ
QUw6OldlYkdQVTo6VGV4dHVyZVZpZXc+PihpdGVyYXRvci0+dmFsdWUpKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8
UEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3Pj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKLQotI2VuZGlmIC8vIEhBVkUoR1BVX1BST0NF
U1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BV
L1dlYkdQVU9iamVjdFJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1dlYkdQVU9iamVjdFJlZ2lzdHJ5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGYzMzc3ODU0N2EzYTRiYTM1NWE3NTIzZDJlY2Q2MjA2NTM3ZTEwOTAuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVPYmplY3RSZWdpc3RyeS5oCisrKyAvZGV2L251
bGwKQEAgLTEsMTQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKLQotI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0Nv
bnRleHQuaCIKLSNpbmNsdWRlICJXZWJHUFVJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSA8ZnVuY3Rp
b25hbD4KLSNpbmNsdWRlIDx2YXJpYW50PgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0KLW5h
bWVzcGFjZSBQQUw6OldlYkdQVSB7Ci1jbGFzcyBBZGFwdGVyOwotY2xhc3MgQmluZEdyb3VwOwot
Y2xhc3MgQmluZEdyb3VwTGF5b3V0OwotY2xhc3MgQnVmZmVyOwotY2xhc3MgQ29tbWFuZEJ1ZmZl
cjsKLWNsYXNzIENvbW1hbmRFbmNvZGVyOwotY2xhc3MgQ29tcHV0ZVBhc3NFbmNvZGVyOwotY2xh
c3MgQ29tcHV0ZVBpcGVsaW5lOwotY2xhc3MgRGV2aWNlOwotY2xhc3MgRXh0ZXJuYWxUZXh0dXJl
OwotY2xhc3MgR1BVOwotY2xhc3MgUGlwZWxpbmVMYXlvdXQ7Ci1jbGFzcyBRdWVyeVNldDsKLWNs
YXNzIFF1ZXVlOwotY2xhc3MgUmVuZGVyQnVuZGxlRW5jb2RlcjsKLWNsYXNzIFJlbmRlckJ1bmRs
ZTsKLWNsYXNzIFJlbmRlclBhc3NFbmNvZGVyOwotY2xhc3MgUmVuZGVyUGlwZWxpbmU7Ci1jbGFz
cyBTYW1wbGVyOwotY2xhc3MgU2hhZGVyTW9kdWxlOwotY2xhc3MgVGV4dHVyZTsKLWNsYXNzIFRl
eHR1cmVWaWV3OwotfQotCi1uYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewotCi1jbGFzcyBPYmpl
Y3RSZWdpc3RyeSBmaW5hbCA6IHB1YmxpYyBXZWJHUFU6OkNvbnZlcnRGcm9tQmFja2luZ0NvbnRl
eHQgewotcHVibGljOgotICAgIE9iamVjdFJlZ2lzdHJ5KCk7Ci0gICAgfk9iamVjdFJlZ2lzdHJ5
KCk7Ci0KLSAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6
QWRhcHRlciYpOwotICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIsIFBBTDo6V2Vi
R1BVOjpCaW5kR3JvdXAmKTsKLSAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQ
QUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0Jik7Ci0gICAgdm9pZCBhZGRPYmplY3QoV2ViR1BV
SWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OkJ1ZmZlciYpOwotICAgIHZvaWQgYWRkT2JqZWN0KFdl
YkdQVUlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpDb21tYW5kQnVmZmVyJik7Ci0gICAgdm9pZCBh
ZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyJik7
Ci0gICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OkNvbXB1
dGVQYXNzRW5jb2RlciYpOwotICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIsIFBB
TDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmUmKTsKLSAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJ
ZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6RGV2aWNlJik7Ci0gICAgdm9pZCBhZGRPYmplY3QoV2Vi
R1BVSWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZSYpOwotICAgIHZvaWQg
YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpHUFUmKTsKLSAgICB2b2lk
IGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQm
KTsKLSAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6UXVl
cnlTZXQmKTsKLSAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQ
VTo6UXVldWUmKTsKLSAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6Oldl
YkdQVTo6UmVuZGVyQnVuZGxlRW5jb2RlciYpOwotICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlk
ZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGUmKTsKLSAgICB2b2lkIGFkZE9iamVj
dChXZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXImKTsKLSAg
ICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6UmVuZGVyUGlw
ZWxpbmUmKTsKLSAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQ
VTo6U2FtcGxlciYpOwotICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIsIFBBTDo6
V2ViR1BVOjpTaGFkZXJNb2R1bGUmKTsKLSAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlm
aWVyLCBQQUw6OldlYkdQVTo6VGV4dHVyZSYpOwotICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlk
ZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlldyYpOwotCi0gICAgdm9pZCByZW1vdmVP
YmplY3QoV2ViR1BVSWRlbnRpZmllcik7Ci0KLSAgICBQQUw6OldlYkdQVTo6QWRhcHRlciogY29u
dmVydEFkYXB0ZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKLSAgICBQQUw6
OldlYkdQVTo6QmluZEdyb3VwKiBjb252ZXJ0QmluZEdyb3VwRnJvbUJhY2tpbmcoV2ViR1BVSWRl
bnRpZmllcikgZmluYWw7Ci0gICAgUEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dCogY29udmVy
dEJpbmRHcm91cExheW91dEZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOwotICAg
IFBBTDo6V2ViR1BVOjpCdWZmZXIqIGNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhXZWJHUFVJZGVu
dGlmaWVyKSBmaW5hbDsKLSAgICBQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZlciogY29udmVydENv
bW1hbmRCdWZmZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKLSAgICBQQUw6
OldlYkdQVTo6Q29tbWFuZEVuY29kZXIqIGNvbnZlcnRDb21tYW5kRW5jb2RlckZyb21CYWNraW5n
KFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOwotICAgIFBBTDo6V2ViR1BVOjpDb21wdXRlUGFzc0Vu
Y29kZXIqIGNvbnZlcnRDb21wdXRlUGFzc0VuY29kZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlm
aWVyKSBmaW5hbDsKLSAgICBQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lKiBjb252ZXJ0Q29t
cHV0ZVBpcGVsaW5lRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7Ci0gICAgUEFM
OjpXZWJHUFU6OkRldmljZSogY29udmVydERldmljZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZp
ZXIpIGZpbmFsOwotICAgIFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1cmUqIGNvbnZlcnRFeHRl
cm5hbFRleHR1cmVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKLSAgICBQQUw6
OldlYkdQVTo6R1BVKiBjb252ZXJ0R1BVRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmlu
YWw7Ci0gICAgUEFMOjpXZWJHUFU6OlBpcGVsaW5lTGF5b3V0KiBjb252ZXJ0UGlwZWxpbmVMYXlv
dXRGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKLSAgICBQQUw6OldlYkdQVTo6
UXVlcnlTZXQqIGNvbnZlcnRRdWVyeVNldEZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZp
bmFsOwotICAgIFBBTDo6V2ViR1BVOjpRdWV1ZSogY29udmVydFF1ZXVlRnJvbUJhY2tpbmcoV2Vi
R1BVSWRlbnRpZmllcikgZmluYWw7Ci0gICAgUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29k
ZXIqIGNvbnZlcnRSZW5kZXJCdW5kbGVFbmNvZGVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmll
cikgZmluYWw7Ci0gICAgUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZSogY29udmVydFJlbmRlckJ1
bmRsZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOwotICAgIFBBTDo6V2ViR1BV
OjpSZW5kZXJQYXNzRW5jb2RlciogY29udmVydFJlbmRlclBhc3NFbmNvZGVyRnJvbUJhY2tpbmco
V2ViR1BVSWRlbnRpZmllcikgZmluYWw7Ci0gICAgUEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5l
KiBjb252ZXJ0UmVuZGVyUGlwZWxpbmVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5h
bDsKLSAgICBQQUw6OldlYkdQVTo6U2FtcGxlciogY29udmVydFNhbXBsZXJGcm9tQmFja2luZyhX
ZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKLSAgICBQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlKiBj
b252ZXJ0U2hhZGVyTW9kdWxlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7Ci0g
ICAgUEFMOjpXZWJHUFU6OlRleHR1cmUqIGNvbnZlcnRUZXh0dXJlRnJvbUJhY2tpbmcoV2ViR1BV
SWRlbnRpZmllcikgZmluYWw7Ci0gICAgUEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3KiBjb252ZXJ0
VGV4dHVyZVZpZXdGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKLQotcHJpdmF0
ZToKLSAgICB1c2luZyBPYmplY3QgPSBzdGQ6OnZhcmlhbnQ8Ci0gICAgICAgIHN0ZDo6bW9ub3N0
YXRlLAotICAgICAgICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpBZGFwdGVy
PiwKLSAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6QmluZEdyb3Vw
PiwKLSAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6QmluZEdyb3Vw
TGF5b3V0PiwKLSAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6QnVm
ZmVyPiwKLSAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6Q29tbWFu
ZEJ1ZmZlcj4sCi0gICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkNv
bW1hbmRFbmNvZGVyPiwKLSAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQ
VTo6Q29tcHV0ZVBhc3NFbmNvZGVyPiwKLSAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQ
QUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lPiwKLSAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3Jh
cHBlcjxQQUw6OldlYkdQVTo6RGV2aWNlPiwKLSAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBl
cjxQQUw6OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlPiwKLSAgICAgICAgc3RkOjpyZWZlcmVuY2Vf
d3JhcHBlcjxQQUw6OldlYkdQVTo6R1BVPiwKLSAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBl
cjxQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQ+LAotICAgICAgICBzdGQ6OnJlZmVyZW5jZV93
cmFwcGVyPFBBTDo6V2ViR1BVOjpRdWVyeVNldD4sCi0gICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dy
YXBwZXI8UEFMOjpXZWJHUFU6OlF1ZXVlPiwKLSAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBl
cjxQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2Rlcj4sCi0gICAgICAgIHN0ZDo6cmVmZXJl
bmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZT4sCi0gICAgICAgIHN0ZDo6cmVm
ZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyPiwKLSAgICAgICAg
c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmU+LAotICAg
ICAgICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpTYW1wbGVyPiwKLSAgICAg
ICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlPiwKLSAg
ICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6VGV4dHVyZT4sCi0gICAg
ICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3PgotICAg
ID47Ci0gICAgSGFzaE1hcDxXZWJHUFVJZGVudGlmaWVyLCBPYmplY3Q+IG1fb2JqZWN0czsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBFTkFCTEUoR1BV
X1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQXVkaW9Tb3VyY2VQcm92aWRlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyUHJveHkuY3BwCmluZGV4IGM5MmQyMTIx
ZTZmMjlhN2FkYzA0MTA0YWU3NjY2OTE1MzlmZjRmMWYuLmE1ZjRlNTEzNWZmNzAwMTliZjc2Mjg1
MDU2ZmMxNDRmYzkzZjBlNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyUHJveHkuY3BwCkBA
IC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZWY8UmVtb3RlQXVkaW9T
b3VyY2VQcm92aWRlclByb3h5PiBSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyUHJveHk6OmNyZWF0
ZShXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIgaWRlbnRpZmllciwgUmVmPElQQzo6Q29u
bmVjdGlvbj4mJiBjb25uZWN0aW9uLCBBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQyYgbG9jYWxQ
cm92aWRlcikKK1JlZjxSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyUHJveHk+IFJlbW90ZUF1ZGlv
U291cmNlUHJvdmlkZXJQcm94eTo6Y3JlYXRlKFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmll
ciBpZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFdlYkNvcmU6
OkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDJiBsb2NhbFByb3ZpZGVyKQogewogICAgIGF1dG8g
cmVtb3RlUHJvdmlkZXIgPSBhZG9wdFJlZigqbmV3IFJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJQ
cm94eShpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbm5lY3Rpb24pKSk7CiAKQEAgLTU1LDkgKzU1LDkg
QEAgUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlclByb3h5OjpSZW1vdGVBdWRpb1NvdXJjZVByb3Zp
ZGVyUHJveHkoV2ViQ29yZTo6TWVkaWFQbGEKIAogUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlclBy
b3h5Ojp+UmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlclByb3h5KCkgPSBkZWZhdWx0OwogCi1Vbmlx
dWVSZWY8Q0FSaW5nQnVmZmVyPiBSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyUHJveHk6OmNyZWF0
ZVJpbmdCdWZmZXIoKQorVW5pcXVlUmVmPFdlYkNvcmU6OkNBUmluZ0J1ZmZlcj4gUmVtb3RlQXVk
aW9Tb3VyY2VQcm92aWRlclByb3h5OjpjcmVhdGVSaW5nQnVmZmVyKCkKIHsKLSAgICByZXR1cm4g
bWFrZVVuaXF1ZVJlZjxDQVJpbmdCdWZmZXI+KG1ha2VVbmlxdWVSZWY8U2hhcmVkUmluZ0J1ZmZl
clN0b3JhZ2U+KFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oU2hhcmVkTWVtb3J5KiBt
ZW1vcnksIGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZm9ybWF0LCBzaXplX3QgZnJh
bWVDb3VudCkgbXV0YWJsZSB7CisgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8V2ViQ29yZTo6Q0FS
aW5nQnVmZmVyPihtYWtlVW5pcXVlUmVmPFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlPihbcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKFNoYXJlZE1lbW9yeSogbWVtb3J5LCBjb25zdCBXZWJD
b3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGZvcm1hdCwgc2l6ZV90IGZyYW1lQ291bnQp
IG11dGFibGUgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5zdG9yYWdlQ2hhbmdlZChtZW1vcnks
IGZvcm1hdCwgZnJhbWVDb3VudCk7CiAgICAgfSkpOwogfQpAQCAtNjcsNyArNjcsNyBAQCB2b2lk
IFJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJQcm94eTo6bmV3QXVkaW9TYW1wbGVzKHVpbnQ2NF90
IHN0YXJ0RnJhbWUsIHVpbnQ2NAogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVt
b3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXI6OkF1ZGlvU2FtcGxlc0F2YWlsYWJsZSB7IG1f
aWRlbnRpZmllciwgc3RhcnRGcmFtZSwgbnVtYmVyT2ZGcmFtZXMgfSwgMCk7CiB9CiAKLXZvaWQg
UmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlclByb3h5OjpzdG9yYWdlQ2hhbmdlZChTaGFyZWRNZW1v
cnkqIG1lbW9yeSwgY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBmb3JtYXQsIHNpemVf
dCBmcmFtZUNvdW50KQordm9pZCBSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyUHJveHk6OnN0b3Jh
Z2VDaGFuZ2VkKFNoYXJlZE1lbW9yeSogbWVtb3J5LCBjb25zdCBXZWJDb3JlOjpDQUF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24mIGZvcm1hdCwgc2l6ZV90IGZyYW1lQ291bnQpCiB7CiAgICAgU2hhcmVk
TWVtb3J5OjpIYW5kbGUgaGFuZGxlOwogICAgIGlmIChtZW1vcnkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5o
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0Nv
bnRleHQuaAppbmRleCBhOTQ2OGY1MjdjNGMxZDExMzJhMGQ4NDNlMmQ0ZmYxMjZiYWZiNmY5Li45
OTJmMjdkYTBlNGJhNTE1Y2ZiZmQ5ODA2Njk0NzcwZDNjOTg4NDE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb252ZXJ0RnJvbUJhY2tp
bmdDb250ZXh0LmgKQEAgLTI3NCw3ICsyNzQsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQQUw6
OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lKiBjb252ZXJ0Q29tcHV0ZVBpcGVsaW5lRnJvbUJhY2tp
bmcoV2ViR1BVSWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwgUEFMOjpXZWJHUFU6OkRldmlj
ZSogY29udmVydERldmljZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpID0gMDsKICAgICB2
aXJ0dWFsIFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1cmUqIGNvbnZlcnRFeHRlcm5hbFRleHR1
cmVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSA9IDA7Ci0gICAgdmlydHVhbCBQQUw6Oldl
YkdQVTo6R1BVKiBjb252ZXJ0R1BVRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgPSAwOwog
ICAgIHZpcnR1YWwgUEFMOjpXZWJHUFU6OlBpcGVsaW5lTGF5b3V0KiBjb252ZXJ0UGlwZWxpbmVM
YXlvdXRGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSA9IDA7CiAgICAgdmlydHVhbCBQQUw6
OldlYkdQVTo6UXVlcnlTZXQqIGNvbnZlcnRRdWVyeVNldEZyb21CYWNraW5nKFdlYkdQVUlkZW50
aWZpZXIpID0gMDsKICAgICB2aXJ0dWFsIFBBTDo6V2ViR1BVOjpRdWV1ZSogY29udmVydFF1ZXVl
RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggZGMyZGJk
NTI2ZDViOGFhNGU5MTE5MDFiNzIwNDY3ZjBlMjNkMzI5NS4uZTEzMzczOGQyMzhiOTBiNWM1ZDZk
ZTEwMDFlMjM0ZDRiMmE0NTk5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4
dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC01Myw3ICs1Myw2IEBAIEdQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNoYWRlck1vZHVsZS5jcHAKIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmUuY3BwCiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVUZXh0dXJlVmlldy5jcHAKIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1dl
YkdQVU9iamVjdEhlYXAuY3BwCi1HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVPYmpl
Y3RSZWdpc3RyeS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9IYXJkd2FyZUxpc3Rl
bmVyUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5LmNw
cAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXIuY3BwCkBA
IC04NTgsNiArODU3LDcgQEAgUmVtb3RlQ29tcHV0ZVBpcGVsaW5lTWVzc2FnZVJlY2VpdmVyLmNw
cAogUmVtb3RlRGV2aWNlTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlRXh0ZXJuYWxUZXh0dXJl
TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlR1BVTWVzc2FnZVJlY2VpdmVyLmNwcAorUmVtb3Rl
R1BVUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVQaXBlbGluZUxheW91dE1lc3NhZ2VS
ZWNlaXZlci5jcHAKIFJlbW90ZVF1ZXJ5U2V0TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlUXVl
dWVNZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA2NTJjMmJlM2I4YmYwZDZhY2ZkZTc4ZWIwYzkwMTU1MGI1
OWFkMTRmLi44MjY2NTI1MzdkMGMzMjdmNjkxY2U5ZmMxNGQxNzUwZGJhNTU0Mzk4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI5MTEs
MTMgKzI5MTEsMTEgQEAKIAkJMUM4RTJBMzIxMjc3ODUyNDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rv
ck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkluc3BlY3Rv
ck1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3Rvck1l
c3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTFDOEUyREFE
MTI3OEM1QjIwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JVSU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkluc3BlY3RvclVJTWFjLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQzk4QzAxRDI3NDQ2QTAzMDAyQ0NCNzggLyogUmVtb3RlR1BV
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdQVS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTFDOThDMDFFMjc0NDZBMDMwMDJDQ0I3OCAvKiBXZWJHUFVPYmplY3RSZWdp
c3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVPYmplY3RSZWdpc3RyeS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQzk4QzAxRjI3NDQ2QTAzMDAyQ0NCNzggLyogUmVtb3RlUXVl
cnlTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlUXVlcnlTZXQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUM5OEMwMjAyNzQ0NkEwNDAwMkNDQjc4IC8qIFJlbW90ZVJlbmRlckJ1
bmRsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZW5kZXJCdW5kbGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUM5OEMwMjEyNzQ0NkEwNDAwMkNDQjc4IC8qIFJlbW90ZVF1ZXVl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUM5OEMwMjIyNzQ0NkEwNDAwMkNDQjc4IC8qIFJlbW90ZVJlbmRlckJ1
bmRsZUVuY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzk4QzAyMzI3NDQ2QTA1MDAyQ0NCNzgg
LyogUmVtb3RlU2hhZGVyTW9kdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVNoYWRl
ck1vZHVsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDOThDMDI0Mjc0NDZB
MDUwMDJDQ0I3OCAvKiBXZWJHUFVPYmplY3RSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXZWJHUFVPYmplY3RSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFDOThDMDI1Mjc0NDZBMDYwMDJDQ0I3OCAvKiBSZW1vdGVUZXh0dXJlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZVRleHR1cmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5OEMw
MjYyNzQ0NkEwNjAwMkNDQjc4IC8qIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUM5OEMwMjcyNzQ0NkEwNjAwMkNDQjc4IC8qIFJlbW90ZVJlbmRlclBh
c3NFbmNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMTcxLDYgKzMxNjksNyBAQAogCQkxQ0JENzUz
RDI3NDdBQTMxMDA0RkEwRkYgLyogV2ViR1BVT2JqZWN0SGVhcC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJHUFVPYmplY3RIZWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQkY5MDEy
MjcxMDE4QjUwMDBDNDU3RCAvKiBRdWFsaWZpZWRSZXNvdXJjZUhlYXAuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUXVhbGlmaWVkUmVzb3VyY2VIZWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFDQzU0QUZEMjcwRjk2NTQwMDVCRjhCRSAvKiBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDRDQxMkU3Mjc1MUUwRUMw
MENBMkUyMiAvKiBSZW1vdGVHUFVQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVHUFVQcm94
eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNGMThGM0UyNkJC
NUQ5MDAwNEIxNzIyIC8qIExvZ0luaXRpYWxpemF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IExvZ0luaXRpYWxpemF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUQw
NTMwQzkyNThFQUI0NDAwRTQzNkY3IC8qIGNvbWJpbmUtZmVhdHVyZS1mbGFncy1wbGlzdC5weSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2Ny
aXB0LnB5dGhvbjsgcGF0aCA9ICJjb21iaW5lLWZlYXR1cmUtZmxhZ3MtcGxpc3QucHkiOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRDA1MzBEMTI1OTE2MkM4MDBFNDM2RjcgLyogV2Vi
S2l0LWlvcy5wbGlzdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQucGxpc3QueG1sOyBwYXRoID0gIldlYktpdC1pb3MucGxpc3QiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzQxNiw4ICs3NDE1LDYgQEAKIAkJCQkxQzk4QzA4ODI3
NDRCRDk5MDAyQ0NCNzggLyogUmVtb3RlVGV4dHVyZVZpZXcubWVzc2FnZXMuaW4gKi8sCiAJCQkJ
MUNCRDc1M0MyNzQ3QUEzMTAwNEZBMEZGIC8qIFdlYkdQVU9iamVjdEhlYXAuY3BwICovLAogCQkJ
CTFDQkQ3NTNEMjc0N0FBMzEwMDRGQTBGRiAvKiBXZWJHUFVPYmplY3RIZWFwLmggKi8sCi0JCQkJ
MUM5OEMwMjQyNzQ0NkEwNTAwMkNDQjc4IC8qIFdlYkdQVU9iamVjdFJlZ2lzdHJ5LmNwcCAqLywK
LQkJCQkxQzk4QzAxRTI3NDQ2QTAzMDAyQ0NCNzggLyogV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCAq
LywKIAkJCSk7CiAJCQlwYXRoID0gV2ViR1BVOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
QEAgLTc0NDcsNiArNzQ0NCw3IEBACiAJCQkJMUNCNzQ2MjUyNzQzNkVFNjAwRjE5ODc0IC8qIFJl
bW90ZUV4dGVybmFsVGV4dHVyZVByb3h5LmggKi8sCiAJCQkJMUNCNzQ2NjIyNzQzOUExQTAwRjE5
ODc0IC8qIFJlbW90ZUdQVVByb3h5LmNwcCAqLywKIAkJCQkxQ0I3NDY2MzI3NDM5QTFBMDBGMTk4
NzQgLyogUmVtb3RlR1BVUHJveHkuaCAqLywKKwkJCQkxQ0Q0MTJFNzI3NTFFMEVDMDBDQTJFMjIg
LyogUmVtb3RlR1BVUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJMUNCNzQ2MjcyNzQzNkVFNjAw
RjE5ODc0IC8qIFJlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHkuY3BwICovLAogCQkJCTFDQjc0NjJG
Mjc0MzZFRTgwMEYxOTg3NCAvKiBSZW1vdGVQaXBlbGluZUxheW91dFByb3h5LmggKi8sCiAJCQkJ
MUNCNzQ2MzcyNzQzNkVFOTAwRjE5ODc0IC8qIFJlbW90ZVF1ZXJ5U2V0UHJveHkuY3BwICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlQWRhcHRlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVBZGFwdGVyUHJveHkuaAppbmRleCA5YzNkOTU3MTVmZjQxM2RiOWM1
Mzk0MjVjN2I1OTZlZmUzNjY3OWNkLi44MDhkZGFhNGIwYWIwOWMwMzI0MDEyM2QwMTQ0NWE0NWQx
ZmIwZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVBZGFwdGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVBZGFwdGVyUHJveHkuaApAQCAtMzIsMTIgKzMy
LDE2IEBACiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVBZGFwdGVyLmg+CiAj
aW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgUmVtb3Rl
R1BVUHJveHk7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKIGNsYXNzIENvbnZl
cnRUb0JhY2tpbmdDb250ZXh0OwotY2xhc3MgUmVtb3RlR1BVUHJveHk7CiAKIGNsYXNzIFJlbW90
ZUFkYXB0ZXJQcm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6QWRhcHRlciB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZW1vdGVB
ZGFwdGVyUHJveHk+IGNyZWF0ZShTdHJpbmcmJiBuYW1lLCBQQUw6OldlYkdQVTo6U3VwcG9ydGVk
RmVhdHVyZXMmIGZlYXR1cmVzLCBQQUw6OldlYkdQVTo6U3VwcG9ydGVkTGltaXRzJiBsaW1pdHMs
IGJvb2wgaXNGYWxsYmFja0FkYXB0ZXIsIFJlbW90ZUdQVVByb3h5JiBwYXJlbnQsIENvbnZlcnRU
b0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyKQogICAgIHsKQEAgLTQ3LDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgflJlbW90ZUFkYXB0ZXJQcm94eSgpOwogCiAgICAgUmVtb3RlR1BVUHJveHkmIHBhcmVudCgp
IHsgcmV0dXJuIG1fcGFyZW50OyB9Ci0gICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVy
biBtX3BhcmVudDsgfQorICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJl
bnQtPnJvb3QoKTsgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBEb3duY2FzdENvbnZl
cnRUb0JhY2tpbmdDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExh
eW91dFByb3h5LmgKaW5kZXggZDQ3ZDdlYzcwYjhhNmQxZjliYTE1MDcxODUxYmJlYzdjMmQ2OWJi
ZC4uOTQyYmFkZDdkNTFjNjA1ZWQwNjVmYjllZDJhODcyNzNkOGEwMTg1OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdy
b3VwTGF5b3V0UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eS5oCkBAIC0zNiw2ICszNiw3IEBA
IG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4
dDsKIAogY2xhc3MgUmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHkgZmluYWwgOiBwdWJsaWMgUEFM
OjpXZWJHUFU6OkJpbmRHcm91cExheW91dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eT4gY3Jl
YXRlKFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBj
b252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAg
IHsKQEAgLTQ1LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflJlbW90ZUJpbmRHcm91
cExheW91dFByb3h5KCk7CiAKICAgICBSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50KCkgeyByZXR1
cm4gbV9wYXJlbnQ7IH0KLSAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFy
ZW50LT5wYXJlbnQoKS5wYXJlbnQoKTsgfQorICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyBy
ZXR1cm4gbV9wYXJlbnQtPnJvb3QoKTsgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBE
b3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRH
cm91cFByb3h5LmgKaW5kZXggOGRjYTEyYjhjNzE2YzIxODhlNmE4Y2U0MGE2ODM0ZmRmZjkwZjEy
Yi4uNWZhNTY2MWMyZGNhYmUwMWZmNGIyM2EyODQxM2IyYmY2ZjY1OTA4OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdy
b3VwUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVCaW5kR3JvdXBQcm94eS5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBX
ZWJLaXQ6OldlYkdQVSB7CiBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3Mg
UmVtb3RlQmluZEdyb3VwUHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OkJpbmRHcm91
cCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZjxSZW1vdGVCaW5kR3JvdXBQcm94eT4gY3JlYXRlKFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQs
IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BV
SWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKQEAgLTQ1LDcgKzQ2LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgflJlbW90ZUJpbmRHcm91cFByb3h5KCk7CiAKICAgICBSZW1vdGVEZXZpY2VQ
cm94eSYgcGFyZW50KCkgeyByZXR1cm4gbV9wYXJlbnQ7IH0KLSAgICBSZW1vdGVHUFVQcm94eSYg
cm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5wYXJlbnQoKS5wYXJlbnQoKTsgfQorICAgIFJlbW90
ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnJvb3QoKTsgfQogCiBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZUJ1ZmZlclByb3h5LmgKaW5kZXggNDA5MzAwYTU0OGFlMjI2ZjdmYTE2OWI0
MmY4NzM3YzYwZDVmYjAyZC4uN2JhNTZhNzA2YTgwMTg2NWM4NDMyNmMxMGZiMGY0Yzk0ZTJiODRm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlQnVmZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZmZXJQcm94eS5oCkBAIC0zNyw2ICszNyw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsK
IAogY2xhc3MgUmVtb3RlQnVmZmVyUHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OkJ1
ZmZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFJlZjxSZW1vdGVCdWZmZXJQcm94eT4gY3JlYXRlKFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQs
IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BV
SWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKQEAgLTQ2LDcgKzQ3LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgflJlbW90ZUJ1ZmZlclByb3h5KCk7CiAKICAgICBSZW1vdGVEZXZpY2VQcm94
eSYgcGFyZW50KCkgeyByZXR1cm4gbV9wYXJlbnQ7IH0KLSAgICBSZW1vdGVHUFVQcm94eSYgcm9v
dCgpIHsgcmV0dXJuIG1fcGFyZW50LT5wYXJlbnQoKS5wYXJlbnQoKTsgfQorICAgIFJlbW90ZUdQ
VVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnJvb3QoKTsgfQogCiBwcml2YXRlOgog
ICAgIGZyaWVuZCBjbGFzcyBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
Q29tbWFuZEJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kQnVmZmVyUHJveHkuaAppbmRleCAzM2FjNTM0M2QwNmI4
OTkzNDViMjZiYWIwMWVhMTBiZmZmMjgxNjNjLi5lNmEzYjcyOGM4YWQxNTBkOGMyZjMwM2EyYWNj
ZTg2ZjdkMzNmN2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kQnVmZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kQnVmZmVyUHJv
eHkuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogY2xhc3Mg
Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90ZUNvbW1hbmRCdWZmZXJQcm94
eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZlciB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZW1vdGVDb21tYW5k
QnVmZmVyUHJveHk+IGNyZWF0ZShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9C
YWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIg
aWRlbnRpZmllcikKICAgICB7CkBAIC00NSw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5SZW1vdGVDb21tYW5kQnVmZmVyUHJveHkoKTsKIAogICAgIFJlbW90ZURldmljZVByb3h5JiBw
YXJlbnQoKSB7IHJldHVybiBtX3BhcmVudDsgfQotICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkg
eyByZXR1cm4gbV9wYXJlbnQtPnBhcmVudCgpLnBhcmVudCgpOyB9CisgICAgUmVtb3RlR1BVUHJv
eHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+cm9vdCgpOyB9CiAKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIGNsYXNzIERvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21t
YW5kRW5jb2RlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVDb21tYW5kRW5jb2RlclByb3h5LmgKaW5kZXggODNiNWQwYmYwOTJmYTM2
MGNiN2U0MTA1ZTdiYzk2ZTM3YjViMmExZi4uMTFlNjc4MTU5YTRiNDEyMzY2N2U2N2QzYmEyMDg1
NjhmYzgzNWIwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRFbmNvZGVyUHJv
eHkuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogY2xhc3Mg
Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJv
eHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlbW90ZUNvbW1h
bmRFbmNvZGVyUHJveHk+IGNyZWF0ZShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50LCBDb252ZXJ0
VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZp
ZXIgaWRlbnRpZmllcikKICAgICB7CkBAIC00NSw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5SZW1vdGVDb21tYW5kRW5jb2RlclByb3h5KCk7CiAKICAgICBSZW1vdGVEZXZpY2VQcm94
eSYgcGFyZW50KCkgeyByZXR1cm4gbV9wYXJlbnQ7IH0KLSAgICBSZW1vdGVHUFVQcm94eSYgcm9v
dCgpIHsgcmV0dXJuIG1fcGFyZW50LT5wYXJlbnQoKS5wYXJlbnQoKTsgfQorICAgIFJlbW90ZUdQ
VVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnJvb3QoKTsgfQogCiBwcml2YXRlOgog
ICAgIGZyaWVuZCBjbGFzcyBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
Q29tcHV0ZVBhc3NFbmNvZGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5LmgKaW5kZXggZDY5
ODBiODcyNGNjYmI2NjU1NWJlMTUyZmQxNDg0MmJkZjYyODVmNi4uM2YyZGE3OTdhOTI5NjVkNzRi
ZDkwZDU4YWMyZjU4Nzc2ZjU0MGMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVD
b21wdXRlUGFzc0VuY29kZXJQcm94eS5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJL
aXQ6OldlYkdQVSB7CiBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUmVt
b3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OkNv
bXB1dGVQYXNzRW5jb2RlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFJlZjxSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eT4gY3JlYXRlKFJl
bW90ZUNvbW1hbmRFbmNvZGVyUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQm
IGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAg
ICAgewpAQCAtNDUsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UmVtb3RlQ29tcHV0
ZVBhc3NFbmNvZGVyUHJveHkoKTsKIAogICAgIFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHkmIHBh
cmVudCgpIHsgcmV0dXJuIG1fcGFyZW50OyB9Ci0gICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7
IHJldHVybiBtX3BhcmVudC0+cGFyZW50KCkucGFyZW50KCkucGFyZW50KCk7IH0KKyAgICBSZW1v
dGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5yb290KCk7IH0KIAogcHJpdmF0
ZToKICAgICBmcmllbmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZUNvbXB1dGVQaXBlbGluZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eS5oCmluZGV4IDZiNzNi
OWQ2MDRkNTgxMjJiNWU4Nzc3OGRjZjM5NDBiYmU5ZGY0NjEuLjkyOTRiOWUzZDRkODNmNzY2OTk1
NWIwY2M1MzNlMGU3YTg5NzNiZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQaXBlbGluZVByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0
ZVBpcGVsaW5lUHJveHkuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0OjpXZWJH
UFUgewogY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90ZUNvbXB1
dGVQaXBlbGluZVByb3h5IGZpbmFsIDogcHVibGljIFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxp
bmUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8UmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJveHk+IGNyZWF0ZShSZW1vdGVEZXZpY2VQcm94eSYg
cGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQs
IFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7CkBAIC00NSw3ICs0Niw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5SZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eSgpOwogCiAgICAg
UmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCgpIHsgcmV0dXJuIG1fcGFyZW50OyB9Ci0gICAgUmVt
b3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+cGFyZW50KCkucGFyZW50KCk7
IH0KKyAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5yb290KCk7
IH0KIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5n
Q29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZURldmljZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVEZXZpY2VQcm94eS5oCmluZGV4IDhlYmUzNWM1ZDkw
OWI0ZTU2YTFlY2IyYTI5MzU0NzlkMWVlMjY3N2IuLjgwMThhMGE0NTg2N2UyMTFjMDg5YzJjNDkz
OTRlYTg0MmNhYzU0OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZURldmljZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRGV2aWNlUHJveHkuaApAQCAtMzgs
NiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFj
a2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90ZURldmljZVByb3h5IGZpbmFsIDogcHVibGljIFBB
TDo6V2ViR1BVOjpEZXZpY2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIHN0YXRpYyBSZWY8UmVtb3RlRGV2aWNlUHJveHk+IGNyZWF0ZShSZWY8UEFMOjpXZWJH
UFU6OlN1cHBvcnRlZEZlYXR1cmVzPiYmIGZlYXR1cmVzLCBSZWY8UEFMOjpXZWJHUFU6OlN1cHBv
cnRlZExpbWl0cz4mJiBsaW1pdHMsIFJlbW90ZUFkYXB0ZXJQcm94eSYgcGFyZW50LCBDb252ZXJ0
VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZp
ZXIgaWRlbnRpZmllcikKICAgICB7CkBAIC00Nyw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5SZW1vdGVEZXZpY2VQcm94eSgpOwogCiAgICAgUmVtb3RlQWRhcHRlclByb3h5JiBwYXJl
bnQoKSB7IHJldHVybiBtX3BhcmVudDsgfQotICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyBy
ZXR1cm4gbV9wYXJlbnQtPnBhcmVudCgpOyB9CisgICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7
IHJldHVybiBtX3BhcmVudC0+cm9vdCgpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNz
IERvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVFeHRlcm5hbFRleHR1cmVQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlRXh0ZXJuYWxUZXh0dXJlUHJveHkuaAppbmRleCBmZTRiOGMzOWM2Zjc2MDYxMjYwOTk1ZTlm
MTJkMTgwMzFjZjVkYzZlLi5jY2I5MzI0MTgzMDUwYjY1NWY2NDNkMDViZGMzM2NmM2Q5MDg0ODJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4dHVyZVByb3h5LmgKQEAg
LTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRU
b0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBSZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eSBmaW5h
bCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlbW90ZUV4dGVybmFsVGV4
dHVyZVByb3h5PiBjcmVhdGUoUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFj
a2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCiAgICAgewpAQCAtNDUsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+
UmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHkoKTsKIAogICAgIFJlbW90ZURldmljZVByb3h5JiBw
YXJlbnQoKSB7IHJldHVybiBtX3BhcmVudDsgfQotICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkg
eyByZXR1cm4gbV9wYXJlbnQtPnBhcmVudCgpLnBhcmVudCgpOyB9CisgICAgUmVtb3RlR1BVUHJv
eHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+cm9vdCgpOyB9CiAKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIGNsYXNzIERvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFVQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVHUFVQcm94eS5jcHAKaW5kZXggNjQ5MjI4MzhkOWM2YWVjM2UxYjhiZGUxMzYyNzcxZjhh
ZDU3MjZkMy4uNTg5OWY0MGFiNTc2Y2M5ZDY3ZDBjNWM1ODY0NzIyOTNlM2M0Mjg3OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
R1BVUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZUdQVVByb3h5LmNwcApAQCAtMjgsNzYgKzI4LDEyNSBAQAogCiAjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJS
ZW1vdGVBZGFwdGVyUHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVHUFUuaCIKICNpbmNsdWRlICJS
ZW1vdGVHUFVNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZUdQVVByb3h5TWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBh
bC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVU3VwcG9ydGVkRmVhdHVyZXMuaD4KICNpbmNsdWRlIDxw
YWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVN1cHBvcnRlZExpbWl0cy5oPgogCi1uYW1lc3BhY2Ug
V2ViS2l0OjpXZWJHUFUgeworbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0YXRpYyBjb25zdGV4cHIg
c2l6ZV90IGRlZmF1bHRTdHJlYW1TaXplID0gMSA8PCAyMTsKIAotUmVtb3RlR1BVUHJveHk6OlJl
bW90ZUdQVVByb3h5KEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwg
Q29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCitSZW1vdGVHUFVQcm94eTo6UmVtb3RlR1BVUHJveHkoR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBXZWJHUFU6OkNvbnZlcnRU
b0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5k
KQogICAgIDogbV9iYWNraW5nKGlkZW50aWZpZXIpCiAgICAgLCBtX2NvbnZlcnRUb0JhY2tpbmdD
b250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgICwgbV9ncHVQcm9jZXNzQ29ubmVj
dGlvbigmZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCiAgICAgLCBtX3N0cmVhbUNvbm5lY3Rpb24oZ3B1
UHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLCBkZWZhdWx0U3RyZWFtU2l6ZSkKIHsKKyAg
ICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5hZGRDbGllbnQoKnRoaXMpOworICAgIG1fZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24tPm1lc3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6UmVtb3RlR1BVUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmll
ci50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZVJlbW90ZUdQVShpZGVudGlmaWVyLCByZW5k
ZXJpbmdCYWNrZW5kLCBtX3N0cmVhbUNvbm5lY3Rpb24uc3RyZWFtQnVmZmVyKCkpLCAwLCBJUEM6
OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7
CisgICAgLy8gVE9ETzogV2UgbXVzdCB3YWl0IHVudGlsIGluaXRpYWxpemVkLCBiZWNhdXNlIGF0
IHRoZSBtb21lbnQgd2UgY2Fubm90IHJlY2VpdmUgSVBDIG1lc3NhZ2VzCisgICAgLy8gZHVyaW5n
IHdhaXQgd2hpbGUgaW4gc3luY2hyb25vdXMgc3RyZWFtIHNlbmQuIFNob3VsZCBiZSBmaXhlZCBh
cyBwYXJ0IG9mIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcyMTEu
CisgICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsKIH0KIAogUmVtb3RlR1BVUHJveHk6On5SZW1v
dGVHUFVQcm94eSgpCiB7CiB9CiAKK3ZvaWQgUmVtb3RlR1BVUHJveHk6OmdwdVByb2Nlc3NDb25u
ZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit7CisgICAg
QVNTRVJUKG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pOworICAgIEFTU0VSVCgmY29ubmVjdGlvbiA9
PSBtX2dwdVByb2Nlc3NDb25uZWN0aW9uKTsKKyAgICBhYmFuZG9uR1BVUHJvY2VzcygpOworfQor
Cit2b2lkIFJlbW90ZUdQVVByb3h5OjphYmFuZG9uR1BVUHJvY2VzcygpCit7CisgICAgYXV0byBn
cHVQcm9jZXNzQ29ubmVjdGlvbiA9IHN0ZDo6ZXhjaGFuZ2UobV9ncHVQcm9jZXNzQ29ubmVjdGlv
biwgbnVsbHB0cik7CisgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPnJlbW92ZUNsaWVudCgqdGhp
cyk7CisgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlR1BVUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV9iYWNraW5nLnRvVUludDY0KCkpOworICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rp
b24gPSBudWxscHRyOworICAgIG1fbG9zdCA9IHRydWU7Cit9CisKK3ZvaWQgUmVtb3RlR1BVUHJv
eHk6Ondhc0NyZWF0ZWQoYm9vbCBkaWRTdWNjZWVkLCBJUEM6OlNlbWFwaG9yZSYmIHNlbWFwaG9y
ZSkKK3sKKyAgICBBU1NFUlQoIW1fZGlkSW5pdGlhbGl6ZSk7CisgICAgbV9zdHJlYW1Db25uZWN0
aW9uLnNldFdha2VVcFNlbWFwaG9yZShXVEZNb3ZlKHNlbWFwaG9yZSkpOworICAgIG1fZGlkSW5p
dGlhbGl6ZSA9IHRydWU7CisgICAgbV9sb3N0ID0gIWRpZFN1Y2NlZWQ7Cit9CisKK3ZvaWQgUmVt
b3RlR1BVUHJveHk6OndhaXRVbnRpbEluaXRpYWxpemVkKCkKK3sKKyAgICBpZiAobV9kaWRJbml0
aWFsaXplKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGNvbm5lY3Rpb24oKS53YWl0Rm9yQW5k
RGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6UmVtb3RlR1BVUHJveHk6Oldhc0NyZWF0ZWQ+
KG1fYmFja2luZywgZGVmYXVsdFNlbmRUaW1lb3V0KSkKKyAgICAgICAgcmV0dXJuOworICAgIG1f
bG9zdCA9IHRydWU7Cit9CisKIHZvaWQgUmVtb3RlR1BVUHJveHk6OnJlcXVlc3RBZGFwdGVyKGNv
bnN0IFBBTDo6V2ViR1BVOjpSZXF1ZXN0QWRhcHRlck9wdGlvbnMmIG9wdGlvbnMsIFdURjo6RnVu
Y3Rpb248dm9pZChSZWZQdHI8UEFMOjpXZWJHUFU6OkFkYXB0ZXI+JiYpPiYmIGNhbGxiYWNrKQog
eworICAgIGlmIChtX2xvc3QpIHsKKyAgICAgICAgY2FsbGJhY2sobnVsbHB0cik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKICAgICBhdXRvIGNvbnZlcnRlZE9wdGlvbnMgPSBtX2NvbnZlcnRU
b0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKG9wdGlvbnMpOwogICAgIEFTU0VSVChj
b252ZXJ0ZWRPcHRpb25zKTsKLSAgICBpZiAoIWNvbnZlcnRlZE9wdGlvbnMpCisgICAgaWYgKCFj
b252ZXJ0ZWRPcHRpb25zKSB7CisgICAgICAgIGNhbGxiYWNrKG51bGxwdHIpOwogICAgICAgICBy
ZXR1cm47CisgICAgfQogCiAgICAgYXV0byBpZGVudGlmaWVyID0gV2ViR1BVSWRlbnRpZmllcjo6
Z2VuZXJhdGUoKTsKLSAgICBTdHJpbmcgbmFtZTsKLSAgICBTdXBwb3J0ZWRGZWF0dXJlcyBzdXBw
b3J0ZWRGZWF0dXJlczsKLSAgICBTdXBwb3J0ZWRMaW1pdHMgc3VwcG9ydGVkTGltaXRzOwotICAg
IGJvb2wgaXNGYWxsYmFja0FkYXB0ZXI7Ci0gICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdQVTo6UmVxdWVzdEFkYXB0ZXIoKmNvbnZlcnRlZE9wdGlvbnMsIGlk
ZW50aWZpZXIpLCB7IG5hbWUsIHN1cHBvcnRlZEZlYXR1cmVzLCBzdXBwb3J0ZWRMaW1pdHMsIGlz
RmFsbGJhY2tBZGFwdGVyIH0pOwotICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICBzdGQ6Om9wdGlv
bmFsPFJlbW90ZUdQVTo6UmVxdWVzdEFkYXB0ZXJSZXNwb25zZT4gcmVzcG9uc2U7CisgICAgYXV0
byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdQVTo6UmVxdWVzdEFkYXB0
ZXIoKmNvbnZlcnRlZE9wdGlvbnMsIGlkZW50aWZpZXIpLCB7IHJlc3BvbnNlIH0pOworICAgIGlm
ICghc2VuZFJlc3VsdCB8fCAhcmVzcG9uc2UpIHsKKyAgICAgICAgY2FsbGJhY2sobnVsbHB0cik7
CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBhdXRvIHJlc3VsdFN1cHBvcnRlZEZlYXR1
cmVzID0gUEFMOjpXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVzOjpjcmVhdGUoV1RGTW92ZShzdXBw
b3J0ZWRGZWF0dXJlcy5mZWF0dXJlcykpOworICAgIGF1dG8gcmVzdWx0U3VwcG9ydGVkRmVhdHVy
ZXMgPSBQQUw6OldlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXM6OmNyZWF0ZShXVEZNb3ZlKHJlc3Bv
bnNlLT5mZWF0dXJlcy5mZWF0dXJlcykpOwogICAgIGF1dG8gcmVzdWx0U3VwcG9ydGVkTGltaXRz
ID0gUEFMOjpXZWJHUFU6OlN1cHBvcnRlZExpbWl0czo6Y3JlYXRlKAotICAgICAgICBzdXBwb3J0
ZWRMaW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjFELAotICAgICAgICBzdXBwb3J0ZWRMaW1pdHMu
bWF4VGV4dHVyZURpbWVuc2lvbjJELAotICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4VGV4dHVy
ZURpbWVuc2lvbjNELAotICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4VGV4dHVyZUFycmF5TGF5
ZXJzLAotICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4QmluZEdyb3VwcywKLSAgICAgICAgc3Vw
cG9ydGVkTGltaXRzLm1heER5bmFtaWNVbmlmb3JtQnVmZmVyc1BlclBpcGVsaW5lTGF5b3V0LAot
ICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4RHluYW1pY1N0b3JhZ2VCdWZmZXJzUGVyUGlwZWxp
bmVMYXlvdXQsCi0gICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhTYW1wbGVkVGV4dHVyZXNQZXJT
aGFkZXJTdGFnZSwKLSAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heFNhbXBsZXJzUGVyU2hhZGVy
U3RhZ2UsCi0gICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhTdG9yYWdlQnVmZmVyc1BlclNoYWRl
clN0YWdlLAotICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4U3RvcmFnZVRleHR1cmVzUGVyU2hh
ZGVyU3RhZ2UsCi0gICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhVbmlmb3JtQnVmZmVyc1BlclNo
YWRlclN0YWdlLAotICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4VW5pZm9ybUJ1ZmZlckJpbmRp
bmdTaXplLAotICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4U3RvcmFnZUJ1ZmZlckJpbmRpbmdT
aXplLAotICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWluVW5pZm9ybUJ1ZmZlck9mZnNldEFsaWdu
bWVudCwKLSAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1pblN0b3JhZ2VCdWZmZXJPZmZzZXRBbGln
bm1lbnQsCi0gICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhWZXJ0ZXhCdWZmZXJzLAotICAgICAg
ICBzdXBwb3J0ZWRMaW1pdHMubWF4VmVydGV4QXR0cmlidXRlcywKLSAgICAgICAgc3VwcG9ydGVk
TGltaXRzLm1heFZlcnRleEJ1ZmZlckFycmF5U3RyaWRlLAotICAgICAgICBzdXBwb3J0ZWRMaW1p
dHMubWF4SW50ZXJTdGFnZVNoYWRlckNvbXBvbmVudHMsCi0gICAgICAgIHN1cHBvcnRlZExpbWl0
cy5tYXhDb21wdXRlV29ya2dyb3VwU3RvcmFnZVNpemUsCi0gICAgICAgIHN1cHBvcnRlZExpbWl0
cy5tYXhDb21wdXRlSW52b2NhdGlvbnNQZXJXb3JrZ3JvdXAsCi0gICAgICAgIHN1cHBvcnRlZExp
bWl0cy5tYXhDb21wdXRlV29ya2dyb3VwU2l6ZVgsCi0gICAgICAgIHN1cHBvcnRlZExpbWl0cy5t
YXhDb21wdXRlV29ya2dyb3VwU2l6ZVksCi0gICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhDb21w
dXRlV29ya2dyb3VwU2l6ZVosCi0gICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhDb21wdXRlV29y
a2dyb3Vwc1BlckRpbWVuc2lvbgorICAgICAgICByZXNwb25zZS0+bGltaXRzLm1heFRleHR1cmVE
aW1lbnNpb24xRCwKKyAgICAgICAgcmVzcG9uc2UtPmxpbWl0cy5tYXhUZXh0dXJlRGltZW5zaW9u
MkQsCisgICAgICAgIHJlc3BvbnNlLT5saW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjNELAorICAg
ICAgICByZXNwb25zZS0+bGltaXRzLm1heFRleHR1cmVBcnJheUxheWVycywKKyAgICAgICAgcmVz
cG9uc2UtPmxpbWl0cy5tYXhCaW5kR3JvdXBzLAorICAgICAgICByZXNwb25zZS0+bGltaXRzLm1h
eER5bmFtaWNVbmlmb3JtQnVmZmVyc1BlclBpcGVsaW5lTGF5b3V0LAorICAgICAgICByZXNwb25z
ZS0+bGltaXRzLm1heER5bmFtaWNTdG9yYWdlQnVmZmVyc1BlclBpcGVsaW5lTGF5b3V0LAorICAg
ICAgICByZXNwb25zZS0+bGltaXRzLm1heFNhbXBsZWRUZXh0dXJlc1BlclNoYWRlclN0YWdlLAor
ICAgICAgICByZXNwb25zZS0+bGltaXRzLm1heFNhbXBsZXJzUGVyU2hhZGVyU3RhZ2UsCisgICAg
ICAgIHJlc3BvbnNlLT5saW1pdHMubWF4U3RvcmFnZUJ1ZmZlcnNQZXJTaGFkZXJTdGFnZSwKKyAg
ICAgICAgcmVzcG9uc2UtPmxpbWl0cy5tYXhTdG9yYWdlVGV4dHVyZXNQZXJTaGFkZXJTdGFnZSwK
KyAgICAgICAgcmVzcG9uc2UtPmxpbWl0cy5tYXhVbmlmb3JtQnVmZmVyc1BlclNoYWRlclN0YWdl
LAorICAgICAgICByZXNwb25zZS0+bGltaXRzLm1heFVuaWZvcm1CdWZmZXJCaW5kaW5nU2l6ZSwK
KyAgICAgICAgcmVzcG9uc2UtPmxpbWl0cy5tYXhTdG9yYWdlQnVmZmVyQmluZGluZ1NpemUsCisg
ICAgICAgIHJlc3BvbnNlLT5saW1pdHMubWluVW5pZm9ybUJ1ZmZlck9mZnNldEFsaWdubWVudCwK
KyAgICAgICAgcmVzcG9uc2UtPmxpbWl0cy5taW5TdG9yYWdlQnVmZmVyT2Zmc2V0QWxpZ25tZW50
LAorICAgICAgICByZXNwb25zZS0+bGltaXRzLm1heFZlcnRleEJ1ZmZlcnMsCisgICAgICAgIHJl
c3BvbnNlLT5saW1pdHMubWF4VmVydGV4QXR0cmlidXRlcywKKyAgICAgICAgcmVzcG9uc2UtPmxp
bWl0cy5tYXhWZXJ0ZXhCdWZmZXJBcnJheVN0cmlkZSwKKyAgICAgICAgcmVzcG9uc2UtPmxpbWl0
cy5tYXhJbnRlclN0YWdlU2hhZGVyQ29tcG9uZW50cywKKyAgICAgICAgcmVzcG9uc2UtPmxpbWl0
cy5tYXhDb21wdXRlV29ya2dyb3VwU3RvcmFnZVNpemUsCisgICAgICAgIHJlc3BvbnNlLT5saW1p
dHMubWF4Q29tcHV0ZUludm9jYXRpb25zUGVyV29ya2dyb3VwLAorICAgICAgICByZXNwb25zZS0+
bGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBTaXplWCwKKyAgICAgICAgcmVzcG9uc2UtPmxpbWl0
cy5tYXhDb21wdXRlV29ya2dyb3VwU2l6ZVksCisgICAgICAgIHJlc3BvbnNlLT5saW1pdHMubWF4
Q29tcHV0ZVdvcmtncm91cFNpemVaLAorICAgICAgICByZXNwb25zZS0+bGltaXRzLm1heENvbXB1
dGVXb3JrZ3JvdXBzUGVyRGltZW5zaW9uCiAgICAgKTsKLSAgICBjYWxsYmFjayhSZW1vdGVBZGFw
dGVyUHJveHk6OmNyZWF0ZShXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKHJlc3VsdFN1cHBvcnRlZEZl
YXR1cmVzKSwgV1RGTW92ZShyZXN1bHRTdXBwb3J0ZWRMaW1pdHMpLCBpc0ZhbGxiYWNrQWRhcHRl
ciwgKnRoaXMsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQsIGlkZW50aWZpZXIpKTsKKyAgICBj
YWxsYmFjayhXZWJHUFU6OlJlbW90ZUFkYXB0ZXJQcm94eTo6Y3JlYXRlKFdURk1vdmUocmVzcG9u
c2UtPm5hbWUpLCBXVEZNb3ZlKHJlc3VsdFN1cHBvcnRlZEZlYXR1cmVzKSwgV1RGTW92ZShyZXN1
bHRTdXBwb3J0ZWRMaW1pdHMpLCByZXNwb25zZS0+aXNGYWxsYmFja0FkYXB0ZXIsICp0aGlzLCBt
X2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBpZGVudGlmaWVyKSk7CiB9CiAKLX0gLy8gbmFtZXNw
YWNlIFdlYktpdDo6V2ViR1BVCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVO
QUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFVQcm94eS5oCmluZGV4IDBmZmVhMzhj
ZjhjNmZiYTc4OGFhOTBlY2JhYmRhM2YyMDU2MDQ4OTAuLmIwMDY4NDM4MTIyMzUzM2UzN2NkNmE5
Y2JlMGVlNTJiYTczMjE1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVUHJveHkuaApAQCAtMjcsNiAr
MjcsOCBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oIgog
I2luY2x1ZGUgIlN0cmVhbUNsaWVudENvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJHUFVJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFUuaD4KQEAgLTM2
LDE1ICszOCwxOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIEdQVVByb2Nlc3NDb25uZWN0
aW9uOwogfQogCi1uYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgeworbmFtZXNwYWNlIFdlYktpdCB7
CiAKK25hbWVzcGFjZSBXZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7Citj
bGFzcyBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OworfQogCi1jbGFzcyBSZW1vdGVH
UFVQcm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6R1BVIHsKK2NsYXNzIFJlbW90ZUdQ
VVByb3h5IGZpbmFsIDogcHVibGljIFBBTDo6V2ViR1BVOjpHUFUsIHByaXZhdGUgSVBDOjpNZXNz
YWdlUmVjZWl2ZXIsIHByaXZhdGUgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVudCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVH
UFVQcm94eT4gY3JlYXRlKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlv
biwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJH
UFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxSZW1vdGVHUFVQcm94eT4g
Y3JlYXRlKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgV2ViR1BV
OjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQ
VUlkZW50aWZpZXIgaWRlbnRpZmllciwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVy
aW5nQmFja2VuZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUdQ
VVByb3h5KGdwdVByb2Nlc3NDb25uZWN0aW9uLCBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgaWRl
bnRpZmllcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVHUFVQcm94eShn
cHVQcm9jZXNzQ29ubmVjdGlvbiwgY29udmVydFRvQmFja2luZ0NvbnRleHQsIGlkZW50aWZpZXIs
IHJlbmRlcmluZ0JhY2tlbmQpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVHUFVQcm94
eSgpOwpAQCAtNTQsMTUgKzYwLDI2IEBAIHB1YmxpYzoKICAgICBJUEM6OlN0cmVhbUNsaWVudENv
bm5lY3Rpb24mIHN0cmVhbUNsaWVudENvbm5lY3Rpb24oKSB7IHJldHVybiBtX3N0cmVhbUNvbm5l
Y3Rpb247IH0KIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9C
YWNraW5nQ29udGV4dDsKKyAgICBmcmllbmQgY2xhc3MgV2ViR1BVOjpEb3duY2FzdENvbnZlcnRU
b0JhY2tpbmdDb250ZXh0OwogCi0gICAgUmVtb3RlR1BVUHJveHkoR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24mLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYsIFdlYkdQVUlkZW50aWZpZXIpOworICAgIFJl
bW90ZUdQVVByb3h5KEdQVVByb2Nlc3NDb25uZWN0aW9uJiwgV2ViR1BVOjpDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCYsIFdlYkdQVUlkZW50aWZpZXIsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
KTsKIAogICAgIFJlbW90ZUdQVVByb3h5KGNvbnN0IFJlbW90ZUdQVVByb3h5JikgPSBkZWxldGU7
CiAgICAgUmVtb3RlR1BVUHJveHkoUmVtb3RlR1BVUHJveHkmJikgPSBkZWxldGU7CiAgICAgUmVt
b3RlR1BVUHJveHkmIG9wZXJhdG9yPShjb25zdCBSZW1vdGVHUFVQcm94eSYpID0gZGVsZXRlOwog
ICAgIFJlbW90ZUdQVVByb3h5JiBvcGVyYXRvcj0oUmVtb3RlR1BVUHJveHkmJikgPSBkZWxldGU7
CiAKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisKKyAgICAvLyBHUFVQ
cm9jZXNzQ29ubmVjdGlvbjo6Q2xpZW50CisgICAgdm9pZCBncHVQcm9jZXNzQ29ubmVjdGlvbkRp
ZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJikgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlcyB0
byBiZSByZWNlaXZlZC4KKyAgICB2b2lkIHdhc0NyZWF0ZWQoYm9vbCBkaWRTdWNjZWVkLCBJUEM6
OlNlbWFwaG9yZSYmKTsKKworICAgIHZvaWQgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsKKwogICAg
IFdlYkdQVUlkZW50aWZpZXIgYmFja2luZygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2luZzsgfQog
ICAgIAogICAgIHN0YXRpYyBpbmxpbmUgY29uc3RleHByIFNlY29uZHMgZGVmYXVsdFNlbmRUaW1l
b3V0ID0gMzBfczsKQEAgLTc2LDE2ICs5MywyMiBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAg
cmV0dXJuIHJvb3QoKS5zdHJlYW1DbGllbnRDb25uZWN0aW9uKCkuc2VuZFN5bmMoV1RGTW92ZSht
ZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGJhY2tpbmcoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsK
ICAgICB9CisgICAgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpOyB9CiAKICAgICB2b2lkIHJlcXVl
c3RBZGFwdGVyKGNvbnN0IFBBTDo6V2ViR1BVOjpSZXF1ZXN0QWRhcHRlck9wdGlvbnMmLCBXVEY6
OkZ1bmN0aW9uPHZvaWQoUmVmUHRyPFBBTDo6V2ViR1BVOjpBZGFwdGVyPiYmKT4mJikgZmluYWw7
CiAKKyAgICB2b2lkIGFiYW5kb25HUFVQcm9jZXNzKCk7CisKICAgICBEZXF1ZTxXVEY6OkZ1bmN0
aW9uPHZvaWQoUmVmUHRyPFBBTDo6V2ViR1BVOjpBZGFwdGVyPiYmKT4+IG1fY2FsbGJhY2tzOwog
CiAgICAgV2ViR1BVSWRlbnRpZmllciBtX2JhY2tpbmc7Ci0gICAgUmVmPENvbnZlcnRUb0JhY2tp
bmdDb250ZXh0PiBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0OworICAgIFJlZjxXZWJHUFU6OkNv
bnZlcnRUb0JhY2tpbmdDb250ZXh0PiBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0OworICAgIEdQ
VVByb2Nlc3NDb25uZWN0aW9uKiBtX2dwdVByb2Nlc3NDb25uZWN0aW9uOworICAgIGJvb2wgbV9k
aWRJbml0aWFsaXplIHsgZmFsc2UgfTsKKyAgICBib29sIG1fbG9zdCB7IGZhbHNlIH07CiAgICAg
SVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uIG1fc3RyZWFtQ29ubmVjdGlvbjsKIH07CiAKLX0g
Ly8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2Vu
ZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5Lm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVUHJv
eHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDAzNWU5NTVlMDZmN2ZlMWY2ZjI4Y2JjZDJjYTlm
NDUxOGFiOGJiNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEs
MjkgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
IyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKKworbWVzc2FnZXMgLT4gUmVtb3RlR1BVUHJveHkgTm90UmVmQ291bnRl
ZCB7CisgICAgdm9pZCBXYXNDcmVhdGVkKGJvb2wgZGlkU3VjY2VlZCwgSVBDOjpTZW1hcGhvcmUg
c3RyZWFtV2FrZVVwU2VtYXBob3JlKQorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVBpcGVsaW5lTGF5b3V0
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZVBpcGVsaW5lTGF5b3V0UHJveHkuaAppbmRleCAwYzlkMzQ3ZTgxYjYyODZjM2Q3NzRhY2Ji
MzYzZTIxNzcxYmJiYmU0Li5jNDUyMjVhNTVhZTVmYmI2M2QxMjJhMGFhMWZhOGY3ZjM4ZmE4OWFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVQaXBlbGluZUxheW91dFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eS5oCkBAIC0z
Niw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiBjbGFzcyBDb252ZXJ0VG9C
YWNraW5nQ29udGV4dDsKIAogY2xhc3MgUmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eSBmaW5hbCA6
IHB1YmxpYyBQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UmVtb3RlUGlwZWxpbmVMYXlvdXRQ
cm94eT4gY3JlYXRlKFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdD
b250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyKQogICAgIHsKQEAgLTQ1LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflJlbW90
ZVBpcGVsaW5lTGF5b3V0UHJveHkoKTsKIAogICAgIFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQo
KSB7IHJldHVybiBtX3BhcmVudDsgfQotICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1
cm4gbV9wYXJlbnQtPnBhcmVudCgpLnBhcmVudCgpOyB9CisgICAgUmVtb3RlR1BVUHJveHkmIHJv
b3QoKSB7IHJldHVybiBtX3BhcmVudC0+cm9vdCgpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5k
IGNsYXNzIERvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWVyeVNldFBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVRdWVyeVNldFByb3h5LmgKaW5kZXggZDhjNmNhNzE2YWYzOTE3MTllZmRjZmVlMGM0MDdlNjNi
OWU4ZTRkMy4uMTE3YThhMzlkN2ZjMjk1ZGNjM2JlZWQwNjhlZTM4YzQwNjlkODM1MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
UXVlcnlTZXRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0UHJveHkuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3Bh
Y2UgV2ViS2l0OjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNs
YXNzIFJlbW90ZVF1ZXJ5U2V0UHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OlF1ZXJ5
U2V0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UmVmPFJlbW90ZVF1ZXJ5U2V0UHJveHk+IGNyZWF0ZShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50
LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQ
VUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7CkBAIC00NSw3ICs0Niw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5SZW1vdGVRdWVyeVNldFByb3h5KCk7CiAKICAgICBSZW1vdGVEZXZpY2VQ
cm94eSYgcGFyZW50KCkgeyByZXR1cm4gbV9wYXJlbnQ7IH0KLSAgICBSZW1vdGVHUFVQcm94eSYg
cm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5wYXJlbnQoKS5wYXJlbnQoKTsgfQorICAgIFJlbW90
ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnJvb3QoKTsgfQogCiBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlUXVldWVQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlUXVldWVQcm94eS5oCmluZGV4IGQ4MjMyNGRlMTUyMGNhNGNlMjE0YTVkYmM3
NzY3YzY1MTExOWE4ZWEuLjVlYTIxMDNjMWZkYjlhMmU1MjcwMzVkZDE2YzQ2ZDQ0ZTJkN2RlYzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZVF1ZXVlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVRdWV1ZVByb3h5LmgKQEAgLTM3LDYgKzM3LDcgQEAgbmFtZXNw
YWNlIFdlYktpdDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBj
bGFzcyBSZW1vdGVRdWV1ZVByb3h5IGZpbmFsIDogcHVibGljIFBBTDo6V2ViR1BVOjpRdWV1ZSB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxS
ZW1vdGVRdWV1ZVByb3h5PiBjcmVhdGUoUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCwgQ29udmVy
dFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlm
aWVyIGlkZW50aWZpZXIpCiAgICAgewpAQCAtNDYsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB+UmVtb3RlUXVldWVQcm94eSgpOwogCiAgICAgUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVu
dCgpIHsgcmV0dXJuIG1fcGFyZW50OyB9Ci0gICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJl
dHVybiBtX3BhcmVudC0+cGFyZW50KCkucGFyZW50KCk7IH0KKyAgICBSZW1vdGVHUFVQcm94eSYg
cm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5yb290KCk7IH0KIAogcHJpdmF0ZToKICAgICBmcmll
bmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1
bmRsZUVuY29kZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5LmgKaW5kZXggMTAwNDVhZTJl
YmYyOWU0MWVlOGRlZWI5MjQ4NGFkMTQxMzg3YTEyMy4uYzFjNmMzOWYzZWQxYmYzMzkyMTkxYWZm
NGQyZTg3NDU3MDBhZGViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVy
QnVuZGxlRW5jb2RlclByb3h5LmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYktpdDo6
V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBSZW1vdGVS
ZW5kZXJCdW5kbGVFbmNvZGVyUHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OlJlbmRl
ckJ1bmRsZUVuY29kZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5PiBjcmVhdGUoUmVt
b3RlRGV2aWNlUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRU
b0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewpAQCAt
NDUsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UmVtb3RlUmVuZGVyQnVuZGxlRW5j
b2RlclByb3h5KCk7CiAKICAgICBSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50KCkgeyByZXR1cm4g
bV9wYXJlbnQ7IH0KLSAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50
LT5wYXJlbnQoKS5wYXJlbnQoKTsgfQorICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1
cm4gbV9wYXJlbnQtPnJvb3QoKTsgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBEb3du
Y2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRl
ckJ1bmRsZVByb3h5LmgKaW5kZXggN2MwZGM1ZWU5ZjRmZDJkNTRjMTdjMWQyNTcxMDA3N2VlYmFk
YmQxNy4uY2U3YTcwNzg5NmE5ODA0YTA3NTA4ZjZiODQyMmE2ZDA0ZTgzMmJjNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVu
ZGVyQnVuZGxlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVQcm94eS5oCkBAIC0zNiw2ICszNiw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsK
IAogY2xhc3MgUmVtb3RlUmVuZGVyQnVuZGxlUHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJH
UFU6OlJlbmRlckJ1bmRsZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFJlZjxSZW1vdGVSZW5kZXJCdW5kbGVQcm94eT4gY3JlYXRlKFJlbW90ZURl
dmljZVByb3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKQEAgLTQ1LDcg
KzQ2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflJlbW90ZVJlbmRlckJ1bmRsZVByb3h5KCk7
CiAKICAgICBSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50KCkgeyByZXR1cm4gbV9wYXJlbnQ7IH0K
LSAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5wYXJlbnQoKS5w
YXJlbnQoKTsgfQorICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQt
PnJvb3QoKTsgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBEb3duY2FzdENvbnZlcnRU
b0JhY2tpbmdDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0Vu
Y29kZXJQcm94eS5oCmluZGV4IDc0Mjc5ZDE5NmE3NDg3MzU4ODczMGNlMThkMTFlMWVlZmY3ZTJm
ZmUuLmU1ZjY5M2Q4YzhlYmY2ZTkwNWQ5MTQyZTBkM2ViZTczNGMxODRjMzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRl
clBhc3NFbmNvZGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5LmgKQEAgLTM2LDYgKzM2
LDcgQEAgbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdD
b250ZXh0OwogCiBjbGFzcyBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5IGZpbmFsIDogcHVi
bGljIFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRW5jb2RlciB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZW1vdGVSZW5kZXJQYXNzRW5jb2Rl
clByb3h5PiBjcmVhdGUoUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eSYgcGFyZW50LCBDb252ZXJ0
VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZp
ZXIgaWRlbnRpZmllcikKICAgICB7CkBAIC00NSw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5SZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5KCk7CiAKICAgICBSZW1vdGVDb21tYW5k
RW5jb2RlclByb3h5JiBwYXJlbnQoKSB7IHJldHVybiBtX3BhcmVudDsgfQotICAgIFJlbW90ZUdQ
VVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnBhcmVudCgpLnBhcmVudCgpLnBhcmVu
dCgpOyB9CisgICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+cm9v
dCgpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIERvd25jYXN0Q29udmVydFRvQmFj
a2luZ0NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5
LmgKaW5kZXggMDNjZDRjYzY5NGY1ZjlkYTNhYjIwM2UwNjdiNzA2ZjAxZjQxMjA5YS4uMjNlMDZj
ZTg4Y2MxZDZmNTVjOGZjMGFmMTRmOTA0N2NhYjZkM2RiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGlwZWxpbmVQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZVJlbmRlclBpcGVsaW5lUHJveHkuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2Ug
V2ViS2l0OjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNz
IFJlbW90ZVJlbmRlclBpcGVsaW5lUHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OlJl
bmRlclBpcGVsaW5lIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlclBpcGVsaW5lUHJveHk+IGNyZWF0ZShSZW1vdGVEZXZp
Y2VQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2lu
Z0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7CkBAIC00NSw3ICs0
Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5KCk7
CiAKICAgICBSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50KCkgeyByZXR1cm4gbV9wYXJlbnQ7IH0K
LSAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5wYXJlbnQoKS5w
YXJlbnQoKTsgfQorICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQt
PnJvb3QoKTsgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBEb3duY2FzdENvbnZlcnRU
b0JhY2tpbmdDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2FtcGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTYW1wbGVyUHJveHkuaAppbmRleCAx
YjcxYzAxODNhOWFjMjllOTlmOTFkMDJlZTBhOWQ2NTFjYzcxOTJmLi5hMGZlNGE2NGUxYTliMDg2
OTYyNjgwODY2MTk0YTYzMGYxZjA4NjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTYW1wbGVyUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTYW1wbGVyUHJv
eHkuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogY2xhc3Mg
Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90ZVNhbXBsZXJQcm94eSBmaW5h
bCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6U2FtcGxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZW1vdGVTYW1wbGVyUHJveHk+IGNyZWF0
ZShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29u
dmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7
CkBAIC00NSw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SZW1vdGVTYW1wbGVyUHJv
eHkoKTsKIAogICAgIFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQoKSB7IHJldHVybiBtX3BhcmVu
dDsgfQotICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnBhcmVu
dCgpLnBhcmVudCgpOyB9CisgICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiBtX3Bh
cmVudC0+cm9vdCgpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIERvd25jYXN0Q29u
dmVydFRvQmFja2luZ0NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGVQcm94eS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2hhZGVyTW9kdWxl
UHJveHkuaAppbmRleCBmNjFhZDk1NGJjZTM3MWNhYTljMDJjZTllZmI3ODMxMzYxMTBmY2EwLi4z
YzJhMDg0NDQyMmY0NjQ4MmZlOWJkYWFmYmJmZGFkMjk0ZmNlZTJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1
bGVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZVNoYWRlck1vZHVsZVByb3h5LmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNl
IFdlYktpdDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFz
cyBSZW1vdGVTaGFkZXJNb2R1bGVQcm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6U2hh
ZGVyTW9kdWxlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmPFJlbW90ZVNoYWRlck1vZHVsZVByb3h5PiBjcmVhdGUoUmVtb3RlRGV2aWNlUHJv
eHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250
ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewpAQCAtNDUsNyArNDYsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UmVtb3RlU2hhZGVyTW9kdWxlUHJveHkoKTsKIAogICAg
IFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQoKSB7IHJldHVybiBtX3BhcmVudDsgfQotICAgIFJl
bW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnBhcmVudCgpLnBhcmVudCgp
OyB9CisgICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+cm9vdCgp
OyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIERvd25jYXN0Q29udmVydFRvQmFja2lu
Z0NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmVQcm94eS5oCmluZGV4IDk0N2ZlYjJh
OWU2ZjYzZDExNDYwNGU3NTBmZjJmOGI1ZDNiYmUwN2QuLjZlOTAxMDNiZTY2NWRhMjNiY2I2MGE3
ZTVhMzc3MTU0NjNjMzdhYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmVQcm94eS5oCkBA
IC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiBjbGFzcyBDb252ZXJ0
VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUmVtb3RlVGV4dHVyZVByb3h5IGZpbmFsIDogcHVi
bGljIFBBTDo6V2ViR1BVOjpUZXh0dXJlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlbW90ZVRleHR1cmVQcm94eT4gY3JlYXRlKFJlbW90
ZURldmljZVByb3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9C
YWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKQEAgLTQ5
LDcgKzUwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflJlbW90ZVRleHR1cmVQcm94eSgpOwog
CiAgICAgUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCgpIHsgcmV0dXJuIG1fcGFyZW50OyB9Ci0g
ICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+cGFyZW50KCkucGFy
ZW50KCk7IH0KKyAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5y
b290KCk7IH0KIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9C
YWNraW5nQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmVWaWV3UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmVWaWV3UHJveHkuaApp
bmRleCA1N2MxYzk4ZDVjNWZkODYxNmQzMTQyZjNkMjdlZDZiYTQyNDU2NzZkLi40OWZjZmZhNzg4
MGM0NDJmZjBmNTg2OGQ3YzcwMjFjYjcwN2VlZDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlVmlld1Byb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
VGV4dHVyZVZpZXdQcm94eS5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQ6Oldl
YkdQVSB7CiBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUmVtb3RlVGV4
dHVyZVZpZXdQcm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6VGV4dHVyZVZpZXcgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UmVt
b3RlVGV4dHVyZVZpZXdQcm94eT4gY3JlYXRlKFJlbW90ZVRleHR1cmVQcm94eSYgcGFyZW50LCBD
b252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlk
ZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7CkBAIC00NSw3ICs0Niw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5SZW1vdGVUZXh0dXJlVmlld1Byb3h5KCk7CiAKICAgICBSZW1vdGVUZXh0dXJl
UHJveHkmIHBhcmVudCgpIHsgcmV0dXJuIG1fcGFyZW50OyB9Ci0gICAgUmVtb3RlR1BVUHJveHkm
IHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+cGFyZW50KCkucGFyZW50KCkucGFyZW50KCk7IH0K
KyAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5yb290KCk7IH0K
IAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
V2ViR1BVL1dlYkdQVURvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVURvd25jYXN0Q29udmVy
dFRvQmFja2luZ0NvbnRleHQuaAppbmRleCA0NDcxZDBlZjA3NDhiNjQ1ZWViZDRlOTUwZjVjZjUw
MDA1MzY2OTVkLi4xNDMzYWNlNzFlMDJiNjU5NDBhNjg4MjMwMDVlZDNhNGE5M2I1MTFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9XZWJH
UFVEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvV2ViR1BVRG93bmNhc3RDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dC5oCkBAIC0zMiw3ICszMiwxMyBAQAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BV
IHsKIAogY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dCBmaW5hbCA6IHB1Ymxp
YyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CisgICAgc3RhdGljIFJlZjxEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0
PiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRG93bmNhc3RD
b252ZXJ0VG9CYWNraW5nQ29udGV4dCgpKTsKKyAgICB9CisKICAgICB2aXJ0dWFsIH5Eb3duY2Fz
dENvbnZlcnRUb0JhY2tpbmdDb250ZXh0KCkgPSBkZWZhdWx0OwogCiAgICAgV2ViR1BVSWRlbnRp
ZmllciBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpBZGFwdGVyJikgZmluYWw7
CkBAIC01Nyw2ICs2Myw5IEBAIHB1YmxpYzoKICAgICBXZWJHUFVJZGVudGlmaWVyIGNvbnZlcnRU
b0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlNoYWRlck1vZHVsZSYpIGZpbmFsOwogICAgIFdl
YkdQVUlkZW50aWZpZXIgY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6VGV4dHVy
ZSYpIGZpbmFsOwogICAgIFdlYkdQVUlkZW50aWZpZXIgY29udmVydFRvQmFja2luZyhjb25zdCBQ
QUw6OldlYkdQVTo6VGV4dHVyZVZpZXcmKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBEb3duY2Fz
dENvbnZlcnRUb0JhY2tpbmdDb250ZXh0KCkgPSBkZWZhdWx0OwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggNDM2YTVhNTIwMzVh
MDY1NzU4OWMwZTkwYjA4NDJjNDMzNjU4MWUzZC4uYWM5ZjRhZDgyMTE1NzRkYjRjMDE2NGU5YWJm
NTdhYTQzNDI2MzcyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTQwLDYgKzQwLDcgQEAK
ICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJQYWdlQmFu
bmVyLmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlldy5oIgorI2luY2x1ZGUgIlJlbW90ZUdQVVByb3h5
LmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgiCiAjaW5jbHVkZSAi
U2hhcmVkQnVmZmVyQ29weS5oIgogI2luY2x1ZGUgIlVzZXJEYXRhLmgiCkBAIC01MCw2ICs1MSw3
IEBACiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJGcmFtZUxvYWRlckNsaWVu
dC5oIgogI2luY2x1ZGUgIldlYkZ1bGxTY3JlZW5NYW5hZ2VyLmgiCisjaW5jbHVkZSAiV2ViR1BV
RG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIldlYkhpdFRlc3RS
ZXN1bHREYXRhLmgiCiAjaW5jbHVkZSAiV2ViSW1hZ2UuaCIKICNpbmNsdWRlICJXZWJPcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lci5oIgpAQCAtOTAsNiArOTIsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
U2VjdXJpdHlPcmlnaW5EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvVGV4dEluZGljYXRvci5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVJbXBsLmg+CiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZX0FNU19VSSkK
ICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxlUGF5QU1TVUlSZXF1ZXN0Lmg+CkBAIC05NDgsNiArOTUx
LDE1IEBAIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVH
cmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljCiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BS
T0NFU1MpCiAKK1JlZlB0cjxQQUw6OldlYkdQVTo6R1BVPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0
ZUdQVUZvcldlYkdQVSgpIGNvbnN0Cit7CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIHJl
dHVybiBSZW1vdGVHUFVQcm94eTo6Y3JlYXRlKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZUdQVVByb2Nlc3NDb25uZWN0aW9uKCksIFdlYkdQVTo6RG93bmNhc3RDb252ZXJ0VG9CYWNraW5n
Q29udGV4dDo6Y3JlYXRlKCksIFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCksIG1fcGFnZS5l
bnN1cmVSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKS5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgp
KTsKKyNlbHNlCisgICAgcmV0dXJuIFBBTDo6V2ViR1BVOjpHUFVJbXBsOjpjcmVhdGUoKTsKKyNl
bmRpZgorfQorCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6YXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIo
RnJhbWUmLCBHcmFwaGljc0xheWVyKiBsYXllcikKIHsKICAgICBpZiAobGF5ZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmgKaW5kZXggMmZlMzI5MDM0MzQ3Y2VkMjhmODEwNTdkYTNmZWMyMzMwN2FlNzA4NC4u
OWFlY2M0YzI3Mzk2MjQ1YWU5MjIwMmYwZDQ1OTM0NzMxNzY2ZmU4OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaApAQCAtMjUyLDYgKzI1Miw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICNlbmRpZgogCisgICAg
UmVmUHRyPFBBTDo6V2ViR1BVOjpHUFU+IGNyZWF0ZUdQVUZvcldlYkdQVSgpIGNvbnN0IGZpbmFs
OwogCiAgICAgQ29tcG9zaXRpbmdUcmlnZ2VyRmxhZ3MgYWxsb3dlZENvbXBvc2l0aW5nVHJpZ2dl
cnMoKSBjb25zdCBmaW5hbAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NvbmZpZ3VyYXRpb25zL1dlYktpdExlZ2FjeS54Y2NvbmZpZyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NvbmZpZ3VyYXRpb25zL1dlYktpdExlZ2FjeS54Y2NvbmZpZwppbmRleCBmYjU1
ZGE3NzZlMGY4MjI2ZGE5ZmMzMjY2MjMwOWI0NjczNTdhYzk3Li5mNzg0OTY2NTFkMGViOTNiYzBk
M2UzZTNlYTVmOTc5ODdlNGY3MDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9Db25maWd1cmF0aW9ucy9XZWJLaXRMZWdhY3kueGNjb25maWcKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ29uZmlndXJhdGlvbnMvV2ViS2l0TGVnYWN5LnhjY29uZmlnCkBAIC01OCw3
ICs1OCw3IEBAIEdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSAkKERFQlVHX0RFRklORVMp
IEJVSUxESU5HX1dFQktJVCBGUkFNRVdPUktfTkFNRT1XCiBXRUJLSVRBRERJVElPTlNfSEVBREVS
X1NFQVJDSF9QQVRIUyA9ICQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5jbHVkZS9X
ZWJLaXRBZGRpdGlvbnMgJChTREtST09UKS91c3IvbG9jYWwvaW5jbHVkZS9XZWJLaXRBZGRpdGlv
bnM7CiBMSUJXRUJSVENfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICQoQlVJTFRfUFJPRFVDVFNfRElS
KS91c3IvbG9jYWwvaW5jbHVkZS93ZWJydGMgJChTREtST09UKS91c3IvbG9jYWwvaW5jbHVkZS93
ZWJydGM7CiAKLUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAiJChXRUJDT1JFX1BSSVZBVEVfSEVBREVS
U19ESVIpL0ZvcndhcmRpbmdIZWFkZXJzIiAiJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdExlZ2FjeSIgIiQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5j
bHVkZSIgJChXRUJLSVRBRERJVElPTlNfSEVBREVSX1NFQVJDSF9QQVRIUykgJChMSUJXRUJSVENf
SEVBREVSX1NFQVJDSF9QQVRIUykgJChIRUFERVJfU0VBUkNIX1BBVEhTKSAkKFNSQ1JPT1QpOwor
SEVBREVSX1NFQVJDSF9QQVRIUyA9ICIkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvRm9y
d2FyZGluZ0hlYWRlcnMiICIkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0TGVnYWN5IiAiJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRlIiAiJChC
VUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRlL3BhbC9ncmFwaGljcy9XZWJHUFUi
ICQoV0VCS0lUQURESVRJT05TX0hFQURFUl9TRUFSQ0hfUEFUSFMpICQoTElCV0VCUlRDX0hFQURF
Ul9TRUFSQ0hfUEFUSFMpICQoSEVBREVSX1NFQVJDSF9QQVRIUykgJChTUkNST09UKTsKIElORk9Q
TElTVF9GSUxFID0gbWFjL0luZm8ucGxpc3Q7CiBJTlNUQUxMX1BBVEggPSAkKElOU1RBTExfUEFU
SF9DT0NPQV9UT1VDSF8kKFdLX0lTX0NPQ09BX1RPVUNIKSk7CiBJTlNUQUxMX1BBVEhfQ09DT0Ff
VE9VQ0hfWUVTID0gJChXS19BTFRFUk5BVEVfV0VCS0lUX1NES19QQVRIKSQoU1lTVEVNX0xJQlJB
UllfRElSKS9Qcml2YXRlRnJhbWV3b3JrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggYTM2NWQ4ZDg2
NGEyMDY5ZTRmYTgyMjFmYTg4MzkyNDYzYmUwNjY2OS4uNDQ5MTMwNjQ0NzRkMTNjMmI5MzliYjg0
MGExNDlmYzY3NTJhZjljNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTI1NSw2ICsyNTUsOCBAQCBw
cml2YXRlOgogICAgIHZvaWQgY2hhbmdlVW5pdmVyc2FsQWNjZXNzWm9vbUZvY3VzKGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgZmluYWw7CiAjZW5kaWYK
IAorICAgIFJlZlB0cjxQQUw6OldlYkdQVTo6R1BVPiBjcmVhdGVHUFVGb3JXZWJHUFUoKSBjb25z
dCBmaW5hbDsKKwogI2lmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKICAgICBib29s
IG1fbW9ja1ZpZGVvUHJlc2VudGF0aW9uTW9kZUVuYWJsZWQgeyBmYWxzZSB9OwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQubW0KaW5kZXggYTE3NTFiMDI5ODRmNzdlN2E3YzZkNTViNTk0ZmZiODgwMDA5
OGZhZi4uYTQxMTZmN2IwMjdjYzJkYzkxNjI1ODFkNTI4MGY1Y2YyMzcwZDZkNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5tbQpAQCAtODcsNiArODcsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9Vbml2ZXJzYWxB
Y2Nlc3Nab29tLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dpZGdldC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9XaW5kb3dGZWF0dXJlcy5oPgorI2ltcG9ydCA8cGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dl
YkdQVUltcGwuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL05TVmlld1NQSS5oPgogI2ltcG9ydCA8
d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KQEAgLTEx
NTMsMyArMTE1NCw4IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpjaGFuZ2VVbml2ZXJzYWxBY2Nl
c3Nab29tRm9jdXMoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdmllCiAgICAgV2ViQ29yZTo6Y2hh
bmdlVW5pdmVyc2FsQWNjZXNzWm9vbUZvY3VzKHZpZXdSZWN0LCBzZWxlY3Rpb25SZWN0KTsKIH0K
ICNlbmRpZgorCitSZWZQdHI8UEFMOjpXZWJHUFU6OkdQVT4gV2ViQ2hyb21lQ2xpZW50OjpjcmVh
dGVHUFVGb3JXZWJHUFUoKSBjb25zdAoreworICAgIHJldHVybiBQQUw6OldlYkdQVTo6R1BVSW1w
bDo6Y3JlYXRlKCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sx
L2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1j
cmFzaC1leHBlY3RlZC50eHQKaW5kZXggZjI4YThjMGUyODk0MWVhZTZlMWE1NGQxMDZhNDljMjlm
OTEwOThiZC4uZDRjNGY5ZjRlYTI4ZTRkMGVmMGVjNWY3NWQ2ZWZkY2NhNjk3OTI3YSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0
YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azEvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dApA
QCAtNSw2ICs1LDcgQEAgbmF2aWdhdG9yLmFwcE5hbWUgaXMgT0sKIG5hdmlnYXRvci5hcHBWZXJz
aW9uIGlzIE9LCiBuYXZpZ2F0b3IuY29va2llRW5hYmxlZCBpcyBPSwogbmF2aWdhdG9yLmdldFN0
b3JhZ2VVcGRhdGVzKCkgaXMgT0sKK25hdmlnYXRvci5ncHUgaXMgT0sKIG5hdmlnYXRvci5qYXZh
RW5hYmxlZCgpIGlzIE9LCiBuYXZpZ2F0b3IubGFuZ3VhZ2UgaXMgT0sKIG5hdmlnYXRvci5sYW5n
dWFnZXMgaXMgT0sKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvZmFz
dC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azIvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNo
LWV4cGVjdGVkLnR4dAppbmRleCBkY2ZhMjc1NzIyOWU5MjYyZDdiM2RhZjc2M2NjNGI3NGE1MWVm
NjI1Li5kMzQ0NzliZjY5ODlkNTg4ZjE0NWE3Y2MyYmFkY2U3NWQzYzFlM2NjIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hl
ZC1uby1jcmFzaC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
Mi9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0CkBAIC05
LDYgKzksNyBAQCBuYXZpZ2F0b3IuY29udGFjdHMgaXMgT0sKIG5hdmlnYXRvci5jb29raWVFbmFi
bGVkIGlzIE9LCiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMgaXMgT0sKIG5hdmlnYXRvci5nZXRTdG9y
YWdlVXBkYXRlcygpIGlzIE9LCituYXZpZ2F0b3IuZ3B1IGlzIE9LCiBuYXZpZ2F0b3IuaXNMb2dn
ZWRJbigpIGlzIE9LCiBuYXZpZ2F0b3IuamF2YUVuYWJsZWQoKSBpcyBPSwogbmF2aWdhdG9yLmxh
bmd1YWdlIGlzIE9LCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9k
b20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0
ZWQudHh0CmluZGV4IGRhYjU1NWRiZmI5NDIyM2VjNjdjODk4YzE3ZjM2NjQwZmM2MjUzYjMuLjQw
YmU1NDE2ODk4OGEyNWFiOTI0OWI3OWY3ZGUxOGNhOTUyMTAwODMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2RvbS9uYXZp
Z2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0CkBAIC05LDYgKzksNyBAQCBuYXZp
Z2F0b3IuY29udGFjdHMgaXMgT0sKIG5hdmlnYXRvci5jb29raWVFbmFibGVkIGlzIE9LCiBuYXZp
Z2F0b3IuY3JlZGVudGlhbHMgaXMgT0sKIG5hdmlnYXRvci5nZXRTdG9yYWdlVXBkYXRlcygpIGlz
IE9LCituYXZpZ2F0b3IuZ3B1IGlzIE9LCiBuYXZpZ2F0b3IuamF2YUVuYWJsZWQoKSBpcyBPSwog
bmF2aWdhdG9yLmxhbmd1YWdlIGlzIE9LCiBuYXZpZ2F0b3IubGFuZ3VhZ2VzIGlzIE9LCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445235</attachid>
            <date>2021-11-27 23:14:30 -0800</date>
            <delta_ts>2021-11-28 17:16:53 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-233534-20211127231429.patch</filename>
            <type>text/plain</type>
            <size>299099</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGVhYjNiMjBkYTVmNDFhMjYwMTM4NDhj
OTViMmViNTZmMzFjZDE3ODEuLmY1Mjg2YjVmZTEzZGYzMjhhY2YxMTRkYmM1NzIzYzgxNmJkZDBk
MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMTEtMjcgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViR1BVXSBIb29rIHVwIGZpcnN0IEFQ
SSBmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMzNTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzLnlhbWw6CisKIDIwMjEtMTEt
MTkgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW01vZGVs
XSBhZGQgYXVkaW8gc3VwcG9ydApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDE4MGZkNzlmYWRhYzNlZmU1MDNmMzNm
NTY2MWMzN2U4OGFmNGJiMjQuLmFhZmJkNTU3Y2E5ZWVlMzM1MzA1NjE5OTIxNjczMmEyNjdhYjJh
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAyMS0xMS0yNyAgTXlsZXMgQy4gTWF4
ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJHUFVdIEhvb2sgdXAg
Zmlyc3QgQVBJIGZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzM1MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNjb25maWc6CisgICAgICAgICog
TW9kdWxlcy9XZWJHUFUvR1BVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdQVTo6c2V0QmFja2lu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpHUFU6OnJlcXVlc3RBZGFwdGVyKToKKyAgICAgICAgKiBN
b2R1bGVzL1dlYkdQVS9HUFUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdQVTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdQVTo6YmFja2luZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHUFU6OmJhY2tpbmcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R1BVOjpH
UFUpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNocm9tZTo6Y3JlYXRlR1BVRm9yV2ViR1BVIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0No
cm9tZS5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpDaHJvbWVDbGllbnQ6OmNyZWF0ZUdQVUZvcldlYkdQVSBjb25zdCk6CisgICAgICAgICogcGFn
ZS9OYXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpncHUpOgorICAg
ICAgICAqIHBhZ2UvTmF2aWdhdG9yLmg6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3JCYXNlLmg6
CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JCYXNlOjpncHUpOiBEZWxldGVkLgorICAgICAg
ICAqIHBhZ2UvV29ya2VyTmF2aWdhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck5h
dmlnYXRvcjo6Z3B1KToKKyAgICAgICAgKiBwYWdlL1dvcmtlck5hdmlnYXRvci5oOgorCiAyMDIx
LTExLTI2ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFtH
UFUgUHJvY2Vzc10gTWFrZSBGaWx0ZXJFZmZlY3RzIGNyZWF0ZSBGaWx0ZXJFZmZlY3RBcHBsaWVy
cyB3aGljaCB3aWxsIGJlIHVzZWQgYnkgRmlsdGVyRWZmZWN0OjphcHBseSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5n
ZUxvZwppbmRleCA1ZDZkNjc3MDI5ZGMyMDZjZDFlNGFkMDBlNjAzMWM5ODAyYjVkMjY5Li5kYmMx
YTUyNjViNjgxMmY4NDA2ZGMyOWMzOWVmMzNiNmY3ZmU3OGU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw2MSBAQAorMjAyMS0xMS0yNyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4Zmll
bGRAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJHUFVdIEhvb2sgdXAgZmlyc3QgQVBJIGZ1bmN0
aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM1
MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBB
TC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJH
UFUvSW1wbC9XZWJHUFVBZGFwdGVySW1wbC5jcHA6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dl
YkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dl
YkdQVS9JbXBsL1dlYkdQVUJpbmRHcm91cEltcGwuY3BwOgorICAgICAgICAqIHBhbC9ncmFwaGlj
cy9XZWJHUFUvSW1wbC9XZWJHUFVCaW5kR3JvdXBJbXBsLmg6CisgICAgICAgICogcGFsL2dyYXBo
aWNzL1dlYkdQVS9JbXBsL1dlYkdQVUJpbmRHcm91cExheW91dEltcGwuY3BwOgorICAgICAgICAq
IHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCaW5kR3JvdXBMYXlvdXRJbXBsLmg6Cisg
ICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUJ1ZmZlckltcGwuY3BwOgor
ICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCdWZmZXJJbXBsLmg6Cisg
ICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbW1hbmRCdWZmZXJJbXBs
LmNwcDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tbWFuZEJ1
ZmZlckltcGwuaDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29t
bWFuZEVuY29kZXJJbXBsLmNwcDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVQ29tbWFuZEVuY29kZXJJbXBsLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQ
VS9JbXBsL1dlYkdQVUNvbXB1dGVQYXNzRW5jb2RlckltcGwuY3BwOgorICAgICAgICAqIHBhbC9n
cmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXJJbXBsLmg6CisgICAg
ICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbXB1dGVQaXBlbGluZUltcGwu
Y3BwOgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb21wdXRlUGlw
ZWxpbmVJbXBsLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNv
bnZlcnRUb0JhY2tpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaDoKKyAgICAgICAgKiBwYWwvZ3Jh
cGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNlSW1wbC5jcHA6CisgICAgICAgICogcGFsL2dy
YXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVURldmljZUltcGwuaDoKKyAgICAgICAgKiBwYWwvZ3Jh
cGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5j
cHA6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVURvd25jYXN0Q29u
dmVydFRvQmFja2luZ0NvbnRleHQuaDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0lt
cGwvV2ViR1BVRXh0ZXJuYWxUZXh0dXJlSW1wbC5jcHA6CisgICAgICAgICogcGFsL2dyYXBoaWNz
L1dlYkdQVS9JbXBsL1dlYkdQVUV4dGVybmFsVGV4dHVyZUltcGwuaDoKKyAgICAgICAgKiBwYWwv
Z3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVSW1wbC5jcHA6CisgICAgICAgIChQQUw6OldlYkdQ
VTo6R1BVSW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVSW1wbC5oOgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVQ
aXBlbGluZUxheW91dEltcGwuY3BwOgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1w
bC9XZWJHUFVQaXBlbGluZUxheW91dEltcGwuaDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2Vi
R1BVL0ltcGwvV2ViR1BVUXVlcnlTZXRJbXBsLmNwcDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3Mv
V2ViR1BVL0ltcGwvV2ViR1BVUXVlcnlTZXRJbXBsLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNz
L1dlYkdQVS9JbXBsL1dlYkdQVVF1ZXVlSW1wbC5jcHA6CisgICAgICAgICogcGFsL2dyYXBoaWNz
L1dlYkdQVS9JbXBsL1dlYkdQVVF1ZXVlSW1wbC5oOgorICAgICAgICAqIHBhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJCdW5kbGVFbmNvZGVySW1wbC5jcHA6CisgICAgICAgICog
cGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlckJ1bmRsZUVuY29kZXJJbXBsLmg6
CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlckJ1bmRsZUlt
cGwuY3BwOgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJC
dW5kbGVJbXBsLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJl
bmRlclBhc3NFbmNvZGVySW1wbC5jcHA6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9J
bXBsL1dlYkdQVVJlbmRlclBhc3NFbmNvZGVySW1wbC5oOgorICAgICAgICAqIHBhbC9ncmFwaGlj
cy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJQaXBlbGluZUltcGwuY3BwOgorICAgICAgICAqIHBh
bC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJQaXBlbGluZUltcGwuaDoKKyAgICAg
ICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVU2FtcGxlckltcGwuY3BwOgorICAg
ICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVTYW1wbGVySW1wbC5oOgorICAg
ICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVTaGFkZXJNb2R1bGVJbXBsLmNw
cDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVU2hhZGVyTW9kdWxl
SW1wbC5oOgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVUZXh0dXJl
SW1wbC5jcHA6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVRleHR1
cmVJbXBsLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVRleHR1
cmVWaWV3SW1wbC5jcHA6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQ
VVRleHR1cmVWaWV3SW1wbC5oOgorCiAyMDIxLTExLTI1ICBLaW1tbyBLaW5udW5lbiAgPGtraW5u
dW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgQU5HTEUgTWV0YWw6IFRoZSBtZW1vcnkgYmFja2lu
ZyBJT1N1cmZhY2VzIG9mIGZvcm1lciBjbGllbnQgYnVmZmVyIHBidWZmZXJzIGlzIGxlYWtlZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCBhZDhlNjg4MGYwNTU5ODE2YTQ3MGQ3NTUwNWIxODllZjE5MmE2ODU0Li5kOGVk
ZjY5YjRkMTY5Y2I4MzgzZWE2ZjhhNWI5N2EwNjUxZWVjMjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDkwIEBACisyMDIxLTExLTI3ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5j
b20+CisKKyAgICAgICAgW1dlYkdQVV0gSG9vayB1cCBmaXJzdCBBUEkgZnVuY3Rpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzUzNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogQ29uZmlndXJhdGlvbnMvQmFzZVRhcmdldC54Y2NvbmZpZzoKKyAgICAg
ICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6
CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVtb3RlR1BV
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46
CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQWRhcHRlci5oOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cC5oOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExheW91
dC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZlci5o
OgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRCdWZm
ZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5k
RW5jb2Rlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNv
bXB1dGVQYXNzRW5jb2Rlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZUNvbXB1dGVQaXBlbGluZS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZURldmljZS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZUV4dGVybmFsVGV4dHVyZS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZUdQVS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdQVTo6UmVt
b3RlR1BVKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR1BVOjp+UmVtb3RlR1BVKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR1BVOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR1BVOjpzdG9wTGlzdGVuaW5nRm9ySVBDKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR1BV
Ojp3b3JrUXVldWVJbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR1BVOjp3b3Jr
UXVldWVVbmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHUFU6OnJlcXVlc3RB
ZGFwdGVyKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUu
aDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVQaXBlbGluZUxh
eW91dC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5
U2V0Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVldWUu
aDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5k
bGUuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJC
dW5kbGVFbmNvZGVyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlUmVuZGVyUGFzc0VuY29kZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZVNhbXBsZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGUuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlVGV4dHVyZVZpZXcuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9XZWJHUFVPYmplY3RIZWFwLmg6CisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUFkYXB0ZXJQcm94eS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBMYXlvdXRQ
cm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVC
aW5kR3JvdXBQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVCdWZmZXJQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVDb21tYW5kQnVmZmVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFzc0VuY29k
ZXJQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVDb21wdXRlUGlwZWxpbmVQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVEZXZpY2VQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFVQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdQVVByb3h5OjpSZW1vdGVHUFVQcm94eSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdQVVByb3h5OjpncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR1BVUHJveHk6OmFiYW5kb25HUFVQcm9jZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR1BVUHJveHk6Ondhc0NyZWF0ZWQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHUFVQcm94eTo6d2FpdFVudGlsSW5pdGlhbGl6ZWQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHUFVQcm94eTo6cmVxdWVzdEFkYXB0ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJH
UFU6OlJlbW90ZUdQVVByb3h5OjpSZW1vdGVHUFVQcm94eSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYkdQVTo6UmVtb3RlR1BVUHJveHk6On5SZW1vdGVHUFVQcm94eSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlR1BVUHJveHk6OnJlcXVlc3RBZGFwdGVy
KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlR1BVUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlR1BVUHJveHkubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVQaXBlbGluZUxheW91dFByb3h5Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0UHJveHkuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVldWVQcm94
eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5k
ZXJCdW5kbGVFbmNvZGVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBlbGlu
ZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZVNhbXBsZXJQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVTaGFkZXJNb2R1bGVQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVZpZXdQcm94eS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVEb3duY2FzdENvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0
ZUdQVUZvcldlYkdQVSBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaDoKKwogMjAyMS0xMS0yNiAgQWRyaWFuIFBlcmV6IGRlIENhc3Ry
byAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFVwZGF0ZSBPcHRp
b25zV1BFLmNtYWtlIGFuZCBORVdTIGZvciB0aGUgMi4zNS4xIHJlbGVhc2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwppbmRleCA1MDFkNTAxYWIzODAxN2YxZDhmOWU4MWM5YmVmZGMyZDdmNmYx
NmZlLi4xMmE1Y2FhZjQ3ODdlN2NkYzU0NTUzNTg2Y2FjYmM0MDhmNzM0MDc3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMTEtMjcgIE15bGVzIEMu
IE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViR1BVXSBIb29r
IHVwIGZpcnN0IEFQSSBmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMzNTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9XZWJLaXRMZWdhY3kueGNjb25maWc6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50
OjpjcmVhdGVHUFVGb3JXZWJHUFUgY29uc3QpOgorCiAyMDIxLTExLTI0ICBEYXZpZCBLaWx6ZXIg
IDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgQ29tcGlsZXIgc2hvdWxkIGJlIGFibGUg
dG8gY2hlY2sgbG9jYWxpemVkIGZvcm1hdCBzdHJpbmdzIGZvciBjb25zaXN0ZW5jeQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzLnlhbWwg
Yi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbAppbmRl
eCBlYzgyYmY1YjVhMjk5ZDcxMjA3MDM0OGVjNDFiYmQ5YjYzNjc2OWUyLi41NzNlMDI1ZDhkOWY3
MDM2ZGJiMzgyZjUwZmI0MTUyNTJlN2E4N2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1Njcmlw
dHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbAorKysgYi9Tb3VyY2UvV1RGL1Njcmlw
dHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbApAQCAtMjU1MSwxMSArMjU1MSwxMSBA
QCBXZWJHUFU6CiAgIHR5cGU6IGJvb2wKICAgZGVmYXVsdFZhbHVlOgogICAgIFdlYktpdExlZ2Fj
eToKLSAgICAgIGRlZmF1bHQ6IGZhbHNlCisgICAgICBkZWZhdWx0OiB0cnVlCiAgICAgV2ViS2l0
OgotICAgICAgZGVmYXVsdDogZmFsc2UKKyAgICAgIGRlZmF1bHQ6IHRydWUKICAgICBXZWJDb3Jl
OgotICAgICAgZGVmYXVsdDogZmFsc2UKKyAgICAgIGRlZmF1bHQ6IHRydWUKIAogV2ViU2VjdXJp
dHlFbmFibGVkOgogICB0eXBlOiBib29sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Db25m
aWd1cmF0aW9ucy9XZWJDb3JlLnhjY29uZmlnIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlv
bnMvV2ViQ29yZS54Y2NvbmZpZwppbmRleCBiOGJhNGM2YTY0YWRiYzg4OWY3NmJmZmFmZDg0OTcx
YzZhYzhhMmNkLi42Y2VmMjQ0N2QwNzA4ZDVhYTkzMmQ4ZjZiMzhkN2Y5NmE4NzEyNWIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9XZWJDb3JlLnhjY29uZmlnCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNjb25maWcKQEAgLTcz
LDYgKzczLDggQEAgVU5FWFBPUlRFRF9TWU1CT0xTX0ZJTEUgPSBDb25maWd1cmF0aW9ucy9XZWJD
b3JlLnVuZXhwOwogCiBXS19BTkdMRV9MREZMQUdTID0gLXdlYWstbEFOR0xFLXNoYXJlZDsKIAor
V0tfV0VCR1BVX0xERkxBR1MgPSAtd2Vha19mcmFtZXdvcmsgV2ViR1BVOworCiBXS19BUFBLSVRf
TERGTEFHUyA9ICQoV0tfQVBQS0lUX0xERkxBR1NfJChXS19QTEFURk9STV9OQU1FKSk7CiBXS19B
UFBLSVRfTERGTEFHU19tYWNvc3ggPSAtZnJhbWV3b3JrIEFwcEtpdDsKIFdLX0FQUEtJVF9MREZM
QUdTX21hY2NhdGFseXN0ID0gLWZyYW1ld29yayBBcHBLaXQ7CkBAIC0xMzAsNyArMTMyLDcgQEAg
V0tfU0NFTkVLSVRfTERGTEFHUyA9ICQoV0tfU0NFTkVLSVRfTERGTEFHU18kKFdLX1BMQVRGT1JN
X05BTUUpKTsKIFdLX1NDRU5FS0lUX0xERkxBR1NfbWFjb3N4ID0gLXdlYWtfZnJhbWV3b3JrIFNj
ZW5lS2l0OwogCiAvLyBGSVhNRTogUmVkdWNlIHRoZSBudW1iZXIgb2YgYWxsb3dhYmxlX2NsaWVu
dHMgPHJkYXI6Ly9wcm9ibGVtLzMxODIzOTY5PgotT1RIRVJfTERGTEFHUyA9ICQoaW5oZXJpdGVk
KSAkKFdLX1JFTE9DQVRBQkxFX0ZSQU1FV09SS19MREZMQUdTKSAtbHNxbGl0ZTMgLWxvYmpjIC1h
bGxvd2FibGVfY2xpZW50IFdlYkNvcmVUZXN0U3VwcG9ydCAtYWxsb3dhYmxlX2NsaWVudCBXZWJL
aXRMZWdhY3kgLWZvcmNlX2xvYWQgJChCVUlMVF9QUk9EVUNUU19ESVIpL2xpYlBBTC5hIC1mcmFt
ZXdvcmsgQ0ZOZXR3b3JrIC1mcmFtZXdvcmsgQ29yZUF1ZGlvIC1mcmFtZXdvcmsgQ29yZUdyYXBo
aWNzIC1mcmFtZXdvcmsgQ29yZVRleHQgLWZyYW1ld29yayBGb3VuZGF0aW9uIC1mcmFtZXdvcmsg
SU9TdXJmYWNlIC1mcmFtZXdvcmsgSW1hZ2VJTyAtZnJhbWV3b3JrIE1ldGFsICQoT1RIRVJfTERG
TEFHU19QTEFURk9STV8kKFdLX0NPQ09BX1RPVUNIKSkgJChPVEhFUl9MREZMQUdTX1BMQVRGT1JN
XyQoV0tfUExBVEZPUk1fTkFNRSkpICQoV0tfQU5HTEVfTERGTEFHUykgJChXS19BUFBLSVRfTERG
TEFHUykgJChXS19BUFBTVVBQT1JUX0xERkxBR1MpICQoV0tfQVVESU9fVU5JVF9MREZMQUdTKSAk
KFdLX0NBUkJPTl9MREZMQUdTKSAkKFdLX0NPUkVfVUlfTERGTEFHUykgJChXS19EQVRBX0RFVEVD
VE9SU19DT1JFX0xERkxBR1MpICQoV0tfR1JBUEhJQ1NfU0VSVklDRVNfTERGTEFHUykgJChXS19J
T1NVUkZBQ0VfQUNDRUxFUkFUT1JfTERGTEFHUykgJChXS19MSUJXRUJSVENfTERGTEFHUykgJChX
S19NT0JJTEVfQ09SRV9TRVJWSUNFU19MREZMQUdTKSAkKFdLX01PQklMRV9HRVNUQUxUX0xERkxB
R1MpICQoV0tfTkVUV09SS19FWFRFTlNJT05fTERfRkxBR1MpICQoV0tfU1lTVEVNX0NPTkZJR1VS
QVRJT05fTERGTEFHUykgJChXS19DT1JFX0lNQUdFX0xERkxBR1MpICQoV0tfVVJMX0ZPUk1BVFRJ
TkdfTERGTEFHUykgJChXS19TQ0VORUtJVF9MREZMQUdTKTsKK09USEVSX0xERkxBR1MgPSAkKGlu
aGVyaXRlZCkgJChXS19SRUxPQ0FUQUJMRV9GUkFNRVdPUktfTERGTEFHUykgLWxzcWxpdGUzIC1s
b2JqYyAtYWxsb3dhYmxlX2NsaWVudCBXZWJDb3JlVGVzdFN1cHBvcnQgLWFsbG93YWJsZV9jbGll
bnQgV2ViS2l0TGVnYWN5IC1mb3JjZV9sb2FkICQoQlVJTFRfUFJPRFVDVFNfRElSKS9saWJQQUwu
YSAtZnJhbWV3b3JrIENGTmV0d29yayAtZnJhbWV3b3JrIENvcmVBdWRpbyAtZnJhbWV3b3JrIENv
cmVHcmFwaGljcyAtZnJhbWV3b3JrIENvcmVUZXh0IC1mcmFtZXdvcmsgRm91bmRhdGlvbiAtZnJh
bWV3b3JrIElPU3VyZmFjZSAtZnJhbWV3b3JrIEltYWdlSU8gLWZyYW1ld29yayBNZXRhbCAkKE9U
SEVSX0xERkxBR1NfUExBVEZPUk1fJChXS19DT0NPQV9UT1VDSCkpICQoT1RIRVJfTERGTEFHU19Q
TEFURk9STV8kKFdLX1BMQVRGT1JNX05BTUUpKSAkKFdLX0FOR0xFX0xERkxBR1MpICQoV0tfV0VC
R1BVX0xERkxBR1MpICQoV0tfQVBQS0lUX0xERkxBR1MpICQoV0tfQVBQU1VQUE9SVF9MREZMQUdT
KSAkKFdLX0FVRElPX1VOSVRfTERGTEFHUykgJChXS19DQVJCT05fTERGTEFHUykgJChXS19DT1JF
X1VJX0xERkxBR1MpICQoV0tfREFUQV9ERVRFQ1RPUlNfQ09SRV9MREZMQUdTKSAkKFdLX0dSQVBI
SUNTX1NFUlZJQ0VTX0xERkxBR1MpICQoV0tfSU9TVVJGQUNFX0FDQ0VMRVJBVE9SX0xERkxBR1Mp
ICQoV0tfTElCV0VCUlRDX0xERkxBR1MpICQoV0tfTU9CSUxFX0NPUkVfU0VSVklDRVNfTERGTEFH
UykgJChXS19NT0JJTEVfR0VTVEFMVF9MREZMQUdTKSAkKFdLX05FVFdPUktfRVhURU5TSU9OX0xE
X0ZMQUdTKSAkKFdLX1NZU1RFTV9DT05GSUdVUkFUSU9OX0xERkxBR1MpICQoV0tfQ09SRV9JTUFH
RV9MREZMQUdTKSAkKFdLX1VSTF9GT1JNQVRUSU5HX0xERkxBR1MpICQoV0tfU0NFTkVLSVRfTERG
TEFHUyk7CiAKIE9USEVSX0xERkxBR1NfUExBVEZPUk1fY29jb2F0b3VjaCA9IC1hbGxvd2FibGVf
Y2xpZW50IFdlYktpdCAtYWxsb3dhYmxlX2NsaWVudCBpVHVuZXNVIC1hbGxvd2FibGVfY2xpZW50
IENhc2FibGFuY2EgLWFsbG93YWJsZV9jbGllbnQgUmVtb3RlIC1hbGxvd2FibGVfY2xpZW50IFRW
Qm9va3MgLWFsbG93YWJsZV9jbGllbnQgRHVtcFJlbmRlclRyZWUgLWFsbG93YWJsZV9jbGllbnQg
V2ViS2l0VGVzdFJ1bm5lciAtYWxsb3dhYmxlX2NsaWVudCBUZXN0V2ViS2l0QVBJOwogT1RIRVJf
TERGTEFHU19QTEFURk9STV9tYWNvc3ggPSAtc3ViX2xpYnJhcnkgbGlib2JqYyAtdW1icmVsbGEg
V2ViS2l0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVS5jcHAKaW5kZXggMjYxM2YyZjc4
OTRmZTBiM2ExZGQzZGYzODBmZTNkYmEyNGI3MGZhZC4uMzhmZWY4ZjdhOWRjZjJmNzIxOTdhMTFh
NzE0ZmY5OWVjNjA3NjAxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJH
UFUvR1BVLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFUuY3BwCkBA
IC0zOCw4ICszOCwyMiBAQCBzdGF0aWMgUEFMOjpXZWJHUFU6OlJlcXVlc3RBZGFwdGVyT3B0aW9u
cyBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IHN0ZDo6b3B0aW9uYWw8RwogICAgIHJldHVybiBvcHRp
b25zLT5jb252ZXJ0VG9CYWNraW5nKCk7CiB9CiAKK3ZvaWQgR1BVOjpzZXRCYWNraW5nKFBBTDo6
V2ViR1BVOjpHUFUmIGJhY2tpbmcpCit7CisgICAgbV9iYWNraW5nID0gJmJhY2tpbmc7CisgICAg
d2hpbGUgKCFtX3BlbmRpbmdSZXF1ZXN0QWRhcHRlckFyZ3VtZW50cy5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgYXV0byBhcmd1bWVudHMgPSBtX3BlbmRpbmdSZXF1ZXN0QWRhcHRlckFyZ3VtZW50cy50
YWtlRmlyc3QoKTsKKyAgICAgICAgcmVxdWVzdEFkYXB0ZXIoYXJndW1lbnRzLm9wdGlvbnMsIFdU
Rk1vdmUoYXJndW1lbnRzLnByb21pc2UpKTsKKyAgICB9Cit9CisKIHZvaWQgR1BVOjpyZXF1ZXN0
QWRhcHRlcihjb25zdCBzdGQ6Om9wdGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4mIG9w
dGlvbnMsIFJlcXVlc3RBZGFwdGVyUHJvbWlzZSYmIHByb21pc2UpCiB7CisgICAgaWYgKCFtX2Jh
Y2tpbmcpIHsKKyAgICAgICAgbV9wZW5kaW5nUmVxdWVzdEFkYXB0ZXJBcmd1bWVudHMuYXBwZW5k
KHsgb3B0aW9ucywgV1RGTW92ZShwcm9taXNlKSB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KwogICAgIG1fYmFja2luZy0+cmVxdWVzdEFkYXB0ZXIoY29udmVydFRvQmFja2luZyhvcHRpb25z
KSwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoUmVmUHRyPFBBTDo6V2ViR1BVOjpBZGFw
dGVyPiYmIGFkYXB0ZXIpIG11dGFibGUgewogICAgICAgICBpZiAoIWFkYXB0ZXIpCiAgICAgICAg
ICAgICBwcm9taXNlLnJlc29sdmUobnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL1dlYkdQVS9HUFUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQ
VS5oCmluZGV4IDE2ZTQ3NzRiMzFjOGQ2ZTJhZWM4NzE4Njc5MDE1N2E3ZWZlZmUwNzAuLmQzMDRl
OGU4ZjdhMTUzNWI3OGI5MzBmN2UxYzY4YjA2MzM1Yjk1NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
V2ViR1BVL0dQVS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVm
ZXJyZWQuaCIKICNpbmNsdWRlIDxvcHRpb25hbD4KICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2Vi
R1BVL1dlYkdQVS5oPgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWYu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCkBAIC0zNywyNCArMzgsMjUgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHUFUgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFU+IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEdQVT4gY3JlYXRlKFJlZjxQQUw6OldlYkdQVTo6R1BV
PiYmIGJhY2tpbmcpCisgICAgc3RhdGljIFJlZjxHUFU+IGNyZWF0ZSgpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHUFUoV1RGTW92ZShiYWNraW5nKSkpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBHUFUoKSk7CiAgICAgfQogCiAgICAgdXNpbmcgUmVxdWVzdEFk
YXB0ZXJQcm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVkPElETE51bGxhYmxlPElETEludGVyZmFj
ZTxHUFVBZGFwdGVyPj4+OwogICAgIHZvaWQgcmVxdWVzdEFkYXB0ZXIoY29uc3Qgc3RkOjpvcHRp
b25hbDxHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM+JiwgUmVxdWVzdEFkYXB0ZXJQcm9taXNlJiYp
OwogCi0gICAgUEFMOjpXZWJHUFU6OkdQVSYgYmFja2luZygpIHsgcmV0dXJuIG1fYmFja2luZzsg
fQotICAgIGNvbnN0IFBBTDo6V2ViR1BVOjpHUFUmIGJhY2tpbmcoKSBjb25zdCB7IHJldHVybiBt
X2JhY2tpbmc7IH0KKyAgICB2b2lkIHNldEJhY2tpbmcoUEFMOjpXZWJHUFU6OkdQVSYpOwogCiBw
cml2YXRlOgotICAgIEdQVShSZWY8UEFMOjpXZWJHUFU6OkdQVT4mJiBiYWNraW5nKQotICAgICAg
ICA6IG1fYmFja2luZyhXVEZNb3ZlKGJhY2tpbmcpKQotICAgIHsKLSAgICB9Ci0KLSAgICBSZWY8
UEFMOjpXZWJHUFU6OkdQVT4gbV9iYWNraW5nOworICAgIEdQVSgpID0gZGVmYXVsdDsKKworICAg
IHN0cnVjdCBQZW5kaW5nUmVxdWVzdEFkYXB0ZXJBcmd1bWVudHMgeworICAgICAgICBzdGQ6Om9w
dGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4gb3B0aW9uczsKKyAgICAgICAgUmVxdWVz
dEFkYXB0ZXJQcm9taXNlIHByb21pc2U7CisgICAgfTsKKyAgICBEZXF1ZTxQZW5kaW5nUmVxdWVz
dEFkYXB0ZXJBcmd1bWVudHM+IG1fcGVuZGluZ1JlcXVlc3RBZGFwdGVyQXJndW1lbnRzOworICAg
IFJlZlB0cjxQQUw6OldlYkdQVTo6R1BVPiBtX2JhY2tpbmc7CiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWU2OTk3
NWZiYmI2Y2NiOWI2MWU0NzA3N2ExYTI1M2JjZGMzYWRiMC4uZDM0OGJmNzY2OTJkNDY3MTBkYzYx
ZTJiOGE0ZDMxMTdmMGYyZTIxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQxLDYgKzE0MSw3IEBACiAJCTFDQzNBQ0U4MjJC
RDdFQzUwMEYzNjBGMCAvKiBNZXRhbFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUNDM0FDRTcyMkJEN0VCODAwRjM2MEYwIC8qIE1ldGFsU1BJLmgg
Ki87IH07CiAJCTFDQ0VFNEY1MjBEODcxOTMwMDQ3QjA5NyAvKiBDb3JlVUlTUEkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQ0VFNEY0MjBEODcxOTMw
MDQ3QjA5NyAvKiBDb3JlVUlTUEkuaCAqLzsgfTsKIAkJMUNDRUU0RjcyMEQ4NzQzRjAwNDdCMDk3
IC8qIE5TQXBwZWFyYW5jZVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUNDRUU0RjYyMEQ4NzQzRjAwNDdCMDk3IC8qIE5TQXBwZWFyYW5jZVNQSS5o
ICovOyB9OworCQkxQ0Q0MTJFODI3NTFFNERDMDBDQTJFMjIgLyogV2ViR1BVSW1wbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMxOUU2OUIyNzNGNDI0
MjAwNEIxN0IwIC8qIFdlYkdQVUltcGwuaCAqLzsgfTsKIAkJMUNFRkExQzMyNzM3QTRDODAwRjBE
QTk1IC8qIFdlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQzVFNDZFMjczNzQ5NDgwMDZGNkZGNCAvKiBXZWJH
UFVCaW5kR3JvdXBEZXNjcmlwdG9yLmggKi87IH07CiAJCTFDRUZBMUM0MjczN0E0QzgwMEYwREE5
NSAvKiBXZWJHUFVTYW1wbGVyRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUNDNUU0MjMyNzM3NDkyQzAwNkY2RkY0IC8qIFdlYkdQVVNh
bXBsZXJEZXNjcmlwdG9yLmggKi87IH07CiAJCTFDRUZBMUM1MjczN0E0QzgwMEYwREE5NSAvKiBX
ZWJHUFVTdG9yYWdlVGV4dHVyZUFjY2Vzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUNDNUU0MjAyNzM3NDkyQzAwNkY2RkY0IC8qIFdlYkdQVVN0b3Jh
Z2VUZXh0dXJlQWNjZXNzLmggKi87IH07CkBAIC0xNjI0LDYgKzE2MjUsNyBAQAogCQkJCTFDRUZB
MjMyMjczN0E0QzgwMEYwREE5NSAvKiBXZWJHUFVJbWFnZUNvcHlUZXh0dXJlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQ0VGQTIzRjI3MzdBNEM4MDBGMERBOTUgLyogV2ViR1BVSW1hZ2VDb3B5VGV4
dHVyZVRhZ2dlZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUNFRkEyM0IyNzM3QTRDODAwRjBEQTk1
IC8qIFdlYkdQVUltYWdlRGF0YUxheW91dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUNENDEyRTgy
NzUxRTREQzAwQ0EyRTIyIC8qIFdlYkdQVUltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDRUZB
MjA3MjczN0E0QzgwMEYwREE5NSAvKiBXZWJHUFVJbmRleEZvcm1hdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUNFRkEyMTQyNzM3QTRDODAwRjBEQTk1IC8qIFdlYkdQVUludGVncmFsVHlwZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTFDRUZBMjFEMjczN0E0QzgwMEYwREE5NSAvKiBXZWJHUFVMb2Fk
T3AuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9n
cmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVBZGFwdGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmNwcAppbmRl
eCA3ZDViMTY1NGVlZDA3NmMxNzYwMjY4ZGYwMDI2ZGI3MjIwNjU3YjhjLi44MzUzNmI0YzVlNTQw
ZGVlMzUxNmMxZWUzMWI5NmMxMWU5NDlmMGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJ
bXBsLmNwcApAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IldlYkdQVUFkYXB0ZXJJbXBsLmgiCiAKLSNpZiBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikK
LQogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAi
V2ViR1BVRGV2aWNlSW1wbC5oIgogI2luY2x1ZGUgPFdlYkdQVS9XZWJHUFVFeHQuaD4KQEAgLTIx
NSw1ICsyMTMsMyBAQCB2b2lkIEFkYXB0ZXJJbXBsOjpyZXF1ZXN0RGV2aWNlQ2FsbGJhY2soV0dQ
VVJlcXVlc3REZXZpY2VTdGF0dXMsIFdHUFVEZXZpY2UgZGV2aQogfQogCiB9IC8vIG5hbWVzcGFj
ZSBQQUw6OldlYkdQVQotCi0jZW5kaWYgLy8gSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dl
YkdQVUFkYXB0ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQ
VS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmgKaW5kZXggODE0YTI1NzBiMjhlYWU3YmJkY2E5ZmY2
YTI4Yzc4NzdiNWVkMzljNy4uN2M2NDc1YmQ5ODE5OThlMGMwODI1MDUyODcwYTg4NDQzNjkxZWQ0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1w
bC9XZWJHUFVBZGFwdGVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhp
Y3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwuaApAQCAtMjUsOCArMjUsNiBAQAogCiAj
cHJhZ21hIG9uY2UKIAotI2lmIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQotCiAjaW5jbHVk
ZSAiV2ViR1BVQWRhcHRlci5oIgogI2luY2x1ZGUgPFdlYkdQVS9XZWJHUFUuaD4KICNpbmNsdWRl
IDx3dGYvRGVxdWUuaD4KQEAgLTM2LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsK
IGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBBZGFwdGVySW1wbCBmaW5h
bCA6IHB1YmxpYyBBZGFwdGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmPEFkYXB0ZXJJbXBsPiBjcmVhdGUoV0dQVUFkYXB0ZXIgYWRhcHRl
ciwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQogICAg
IHsKQEAgLTY3LDUgKzY2LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFBBTDo6
V2ViR1BVCi0KLSNlbmRpZiAvLyBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQmlu
ZEdyb3VwSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9J
bXBsL1dlYkdQVUJpbmRHcm91cEltcGwuY3BwCmluZGV4IGIzYmUyOTM1NzE2ZDk4OWZhMTY3MjYw
NDQxYmUxYzA0NjM4ZTdiZGMuLjk0MmI5ZTFiZWFkN2I4MTlhMjIzNDYwYWQ0N2QzZDU3ZWYwNmZj
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0lt
cGwvV2ViR1BVQmluZEdyb3VwSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9n
cmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCaW5kR3JvdXBJbXBsLmNwcApAQCAtMjYsOCArMjYs
NiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkdQVUJpbmRHcm91cEltcGwu
aCIKIAotI2lmIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQotCiAjaW5jbHVkZSAiV2ViR1BV
Q29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxXZWJHUFUvV2ViR1BVRXh0Lmg+
CiAKQEAgLTUwLDUgKzQ4LDMgQEAgdm9pZCBCaW5kR3JvdXBJbXBsOjpzZXRMYWJlbEludGVybmFs
KGNvbnN0IFN0cmluZyYgbGFiZWwpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFBBTDo6V2ViR1BVCi0K
LSNlbmRpZiAvLyBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQmluZEdyb3VwSW1w
bC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVC
aW5kR3JvdXBJbXBsLmgKaW5kZXggMzVhZDQzMzFlYWQ5OTBiZTJjN2MxMTQzYmFlZDcyZmNjZTU5
ZTA2ZS4uOGFhYTAwMzM5NWE4OWFlNzc4MzQ2NDdjZWRjMDg1MjNhYTg2YTJiOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCaW5k
R3JvdXBJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUv
SW1wbC9XZWJHUFVCaW5kR3JvdXBJbXBsLmgKQEAgLTI1LDggKzI1LDYgQEAKIAogI3ByYWdtYSBv
bmNlCiAKLSNpZiBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKLQogI2luY2x1ZGUgIldlYkdQ
VUJpbmRHcm91cC5oIgogI2luY2x1ZGUgPFdlYkdQVS9XZWJHUFUuaD4KIApAQCAtMzUsNiArMzMs
NyBAQCBuYW1lc3BhY2UgUEFMOjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRl
eHQ7CiAKIGNsYXNzIEJpbmRHcm91cEltcGwgZmluYWwgOiBwdWJsaWMgQmluZEdyb3VwIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEJpbmRH
cm91cEltcGw+IGNyZWF0ZShXR1BVQmluZEdyb3VwIGJpbmRHcm91cCwgQ29udmVydFRvQmFja2lu
Z0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQogICAgIHsKQEAgLTYyLDUgKzYxLDMg
QEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAv
LyBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQmluZEdyb3VwTGF5b3V0SW1wbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUJp
bmRHcm91cExheW91dEltcGwuY3BwCmluZGV4IGZkYzc5NWY4NTE5NDBkNDJlYzUwNGFiOGQ0MDlk
NjkyY2VlMTc0NDYuLjdmNTY3OTFiNDQ4ZmI4OTU2NzFlZDc1YWI3ZTc0MTQ0NjJmMjc5NTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVQmluZEdyb3VwTGF5b3V0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9n
cmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCaW5kR3JvdXBMYXlvdXRJbXBsLmNwcApAQCAtMjYs
OCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkdQVUJpbmRHcm91
cExheW91dEltcGwuaCIKIAotI2lmIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQotCiAjaW5j
bHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxXZWJHUFUv
V2ViR1BVRXh0Lmg+CiAKQEAgLTUwLDUgKzQ4LDMgQEAgdm9pZCBCaW5kR3JvdXBMYXlvdXRJbXBs
OjpzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVQmluZEdyb3VwTGF5b3V0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFw
aGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCaW5kR3JvdXBMYXlvdXRJbXBsLmgKaW5kZXggODY1Y2Rj
OTgyMDgzYjJlMzZiNDcyNjMzYTAxMTIzNTYyNDBkNjI5MS4uOWMyMTY4NTI5NmJhOGIyNTRmMmI2
NWQ5ZjdkODkyZWRkZWUwNzc0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9n
cmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCaW5kR3JvdXBMYXlvdXRJbXBsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCaW5kR3JvdXBM
YXlvdXRJbXBsLmgKQEAgLTI1LDggKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBIQVZF
KFdFQkdQVV9JTVBMRU1FTlRBVElPTikKLQogI2luY2x1ZGUgIldlYkdQVUJpbmRHcm91cExheW91
dC5oIgogI2luY2x1ZGUgPFdlYkdQVS9XZWJHUFUuaD4KIApAQCAtMzUsNiArMzMsNyBAQCBuYW1l
c3BhY2UgUEFMOjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNs
YXNzIEJpbmRHcm91cExheW91dEltcGwgZmluYWwgOiBwdWJsaWMgQmluZEdyb3VwTGF5b3V0IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEJp
bmRHcm91cExheW91dEltcGw+IGNyZWF0ZShXR1BVQmluZEdyb3VwTGF5b3V0IGJpbmRHcm91cExh
eW91dCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQog
ICAgIHsKQEAgLTYyLDUgKzYxLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFBB
TDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BV
QnVmZmVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9J
bXBsL1dlYkdQVUJ1ZmZlckltcGwuY3BwCmluZGV4IGQ5YTljZTVjYWQ4ZDlhNWY5MTZmYjYwZWNl
OTJjMTI3ZjNiZjg1ZGUuLmEwYTg3YjgxM2JiYmRmMzg0ODgxNjk0YTBmYjM0ZmVhYWU3ZTBmNjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVQnVmZmVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGlj
cy9XZWJHUFUvSW1wbC9XZWJHUFVCdWZmZXJJbXBsLmNwcApAQCAtMjYsOCArMjYsNiBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkdQVUJ1ZmZlckltcGwuaCIKIAotI2lmIEhB
VkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQotCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFj
a2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxXZWJHUFUvV2ViR1BVRXh0Lmg+CiAKQEAgLTk4LDUg
Kzk2LDMgQEAgdm9pZCBCdWZmZXJJbXBsOjpzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYg
bGFiZWwpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBIQVZF
KFdFQkdQVV9JTVBMRU1FTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQnVmZmVySW1wbC5oIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCdWZmZXJJbXBsLmgKaW5kZXgg
YzM2N2U3YmM3MzlmNzczZWU2MjI0ODNjY2M3MTVlNTBjNDNhYzUyNy4uZjkzNTNhOTBlMmY0OGJh
YzgxOTVhZTZiMmRhMDUzZWUyNzBkNGMyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCdWZmZXJJbXBsLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCdWZmZXJJbXBsLmgK
QEAgLTI1LDggKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBIQVZFKFdFQkdQVV9JTVBM
RU1FTlRBVElPTikKLQogI2luY2x1ZGUgIldlYkdQVUJ1ZmZlci5oIgogI2luY2x1ZGUgPFdlYkdQ
VS9XZWJHUFUuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTM2LDYgKzM0LDcgQEAgbmFt
ZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBj
bGFzcyBCdWZmZXJJbXBsIGZpbmFsIDogcHVibGljIEJ1ZmZlciB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxCdWZmZXJJbXBsPiBjcmVhdGUo
V0dQVUJ1ZmZlciBidWZmZXIsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCkKICAgICB7CkBAIC03Myw1ICs3MiwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBQQUw6OldlYkdQVQotCi0jZW5kaWYgLy8gSEFWRShXRUJHUFVfSU1QTEVNRU5U
QVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQ
VS9JbXBsL1dlYkdQVUNvbW1hbmRCdWZmZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tbWFuZEJ1ZmZlckltcGwuY3BwCmluZGV4
IDQ4NDc2ZjdmYzczZmM3ZGU3ODQ5N2EyYjI3YTY4OGUwNmFmNGJkYWYuLjc5YzVlMmUwM2M2NTM5
ZWVkOGRkYjQxM2MwNTQ3MTAwNDhiZjUzNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tbWFuZEJ1ZmZlckltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29t
bWFuZEJ1ZmZlckltcGwuY3BwCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiV2ViR1BVQ29tbWFuZEJ1ZmZlckltcGwuaCIKIAotI2lmIEhBVkUoV0VCR1BV
X0lNUExFTUVOVEFUSU9OKQotCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRl
eHQuaCIKICNpbmNsdWRlIDxXZWJHUFUvV2ViR1BVRXh0Lmg+CiAKQEAgLTUwLDUgKzQ4LDMgQEAg
dm9pZCBDb21tYW5kQnVmZmVySW1wbDo6c2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmIGxh
YmVsKQogfQogCiB9IC8vIG5hbWVzcGFjZSBQQUw6OldlYkdQVQotCi0jZW5kaWYgLy8gSEFWRShX
RUJHUFVfSU1QTEVNRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbW1hbmRCdWZmZXJJbXBsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbW1hbmRCdWZmZXJJ
bXBsLmgKaW5kZXggNGJjM2MxZWQ3YzNiNDhlODAzN2E5NTcxMTEzYzZmNWI4MDU0OWEzYS4uM2U0
N2NhN2E5OTIyMjI1OTZkZWIzODE2NzQ3ZWU3MWY4NDVmZWRkOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb21tYW5kQnVmZmVy
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVQ29tbWFuZEJ1ZmZlckltcGwuaApAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2lmIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQotCiAjaW5jbHVkZSAiV2ViR1BV
Q29tbWFuZEJ1ZmZlci5oIgogI2luY2x1ZGUgPFdlYkdQVS9XZWJHUFUuaD4KIApAQCAtMzUsNiAr
MzMsNyBAQCBuYW1lc3BhY2UgUEFMOjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFja2luZ0Nv
bnRleHQ7CiAKIGNsYXNzIENvbW1hbmRCdWZmZXJJbXBsIGZpbmFsIDogcHVibGljIENvbW1hbmRC
dWZmZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRp
YyBSZWY8Q29tbWFuZEJ1ZmZlckltcGw+IGNyZWF0ZShXR1BVQ29tbWFuZEJ1ZmZlciBjb21tYW5k
QnVmZmVyLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQp
CiAgICAgewpAQCAtNjIsNSArNjEsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
UEFMOjpXZWJHUFUKLQotI2VuZGlmIC8vIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJH
UFVDb21tYW5kRW5jb2RlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGlj
cy9XZWJHUFUvSW1wbC9XZWJHUFVDb21tYW5kRW5jb2RlckltcGwuY3BwCmluZGV4IGE4NTM2YmNl
Y2QyNGQ1NzIwN2QyMTc0NTYwOWY4MjBlYTljYmQ5YjYuLjcxMGViYWU4Njk0MjFmZGY0ZTVjOGNi
NjA0MDk2ODc2NDUwYzNkNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3Jh
cGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tbWFuZEVuY29kZXJJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbW1hbmRFbmNv
ZGVySW1wbC5jcHAKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJXZWJHUFVDb21tYW5kRW5jb2RlckltcGwuaCIKIAotI2lmIEhBVkUoV0VCR1BVX0lNUExF
TUVOVEFUSU9OKQotCiAjaW5jbHVkZSAiV2ViR1BVQnVmZmVySW1wbC5oIgogI2luY2x1ZGUgIldl
YkdQVUNvbW1hbmRCdWZmZXJJbXBsLmgiCiAjaW5jbHVkZSAiV2ViR1BVQ29tcHV0ZVBhc3NFbmNv
ZGVySW1wbC5oIgpAQCAtMjc3LDUgKzI3NSwzIEBAIHZvaWQgQ29tbWFuZEVuY29kZXJJbXBsOjpz
ZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVQ29tbWFuZEVuY29kZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNz
L1dlYkdQVS9JbXBsL1dlYkdQVUNvbW1hbmRFbmNvZGVySW1wbC5oCmluZGV4IGY1NTY2MmRjNDRl
ZjZmZjQwYzQ3NTA5OGRjZWRmZTdkYzBlM2EzODUuLmU1ZWFhMTIzMmI2NTI2ZGIzOWQyZjdjMmYx
ZjI1ZTI0MjViMmM1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhp
Y3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tbWFuZEVuY29kZXJJbXBsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb21tYW5kRW5jb2Rlcklt
cGwuaApAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIEhBVkUoV0VCR1BV
X0lNUExFTUVOVEFUSU9OKQotCiAjaW5jbHVkZSAiV2ViR1BVQ29tbWFuZEVuY29kZXIuaCIKICNp
bmNsdWRlIDxXZWJHUFUvV2ViR1BVLmg+CiAKQEAgLTM1LDYgKzMzLDcgQEAgbmFtZXNwYWNlIFBB
TDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBDb21t
YW5kRW5jb2RlckltcGwgZmluYWwgOiBwdWJsaWMgQ29tbWFuZEVuY29kZXIgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8Q29tbWFuZEVuY29k
ZXJJbXBsPiBjcmVhdGUoV0dQVUNvbW1hbmRFbmNvZGVyIENvbW1hbmRFbmNvZGVyLCBDb252ZXJ0
VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCiAgICAgewpAQCAtMTA3
LDUgKzEwNiwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBQQUw6OldlYkdQVQot
Ci0jZW5kaWYgLy8gSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbXB1dGVQYXNz
RW5jb2RlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUv
SW1wbC9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXJJbXBsLmNwcAppbmRleCBmYTI2Njc1YWMzNjJj
M2ZhMmFlYmU1NjIxODE5YmY4ZGJlMmE5NTg5Li41ZTE5OTUxMmU4MGRkNWYwYWM2OGRkMmVmMjBk
NjZkYTdmMWUyODc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNz
L1dlYkdQVS9JbXBsL1dlYkdQVUNvbXB1dGVQYXNzRW5jb2RlckltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tcHV0ZVBhc3NF
bmNvZGVySW1wbC5jcHAKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJXZWJHUFVDb21wdXRlUGFzc0VuY29kZXJJbXBsLmgiCiAKLSNpZiBIQVZFKFdFQkdQ
VV9JTVBMRU1FTlRBVElPTikKLQogI2luY2x1ZGUgIldlYkdQVUJpbmRHcm91cEltcGwuaCIKICNp
bmNsdWRlICJXZWJHUFVCdWZmZXJJbXBsLmgiCiAjaW5jbHVkZSAiV2ViR1BVQ29tcHV0ZVBpcGVs
aW5lSW1wbC5oIgpAQCAtMTE3LDUgKzExNSwzIEBAIHZvaWQgQ29tcHV0ZVBhc3NFbmNvZGVySW1w
bDo6c2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmIGxhYmVsKQogfQogCiB9IC8vIG5hbWVz
cGFjZSBQQUw6OldlYkdQVQotCi0jZW5kaWYgLy8gSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBs
L1dlYkdQVUNvbXB1dGVQYXNzRW5jb2RlckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Z3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVySW1wbC5oCmluZGV4
IDJiNTc2MmVhNzUzYWU1YjljNGZhNWZhMWFkM2Y5NTg4OGY4MmQ4M2QuLjg0ZGJlM2Q0M2EzZTFl
OGRkM2RhYzM0NjUzYjZhZDM0MGM5Nzc5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVySW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BV
Q29tcHV0ZVBhc3NFbmNvZGVySW1wbC5oCkBAIC0yNSw4ICsyNSw2IEBACiAKICNwcmFnbWEgb25j
ZQogCi0jaWYgSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCi0KICNpbmNsdWRlICJXZWJHUFVD
b21wdXRlUGFzc0VuY29kZXIuaCIKICNpbmNsdWRlIDxXZWJHUFUvV2ViR1BVLmg+CiAKQEAgLTM1
LDYgKzMzLDcgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tp
bmdDb250ZXh0OwogCiBjbGFzcyBDb21wdXRlUGFzc0VuY29kZXJJbXBsIGZpbmFsIDogcHVibGlj
IENvbXB1dGVQYXNzRW5jb2RlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxDb21wdXRlUGFzc0VuY29kZXJJbXBsPiBjcmVhdGUoV0dQVUNv
bXB1dGVQYXNzRW5jb2RlciBjb21wdXRlUGFzc0VuY29kZXIsIENvbnZlcnRUb0JhY2tpbmdDb250
ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKICAgICB7CkBAIC04NCw1ICs4MywzIEBAIHBy
aXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBQQUw6OldlYkdQVQotCi0jZW5kaWYgLy8gSEFW
RShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbXB1dGVQaXBlbGluZUltcGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb21wdXRl
UGlwZWxpbmVJbXBsLmNwcAppbmRleCA0ODY4ZjNkZTk4NzZlZjI1ODY5Y2Y0ZWRjZDBkMTU5MGEy
NDJjZGJmLi4wNGNhMmZlNWM3NDkwZTIzNmUyZWRiYmZmZjVhNjNjNmE0ZGMxZWMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNv
bXB1dGVQaXBlbGluZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhp
Y3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lSW1wbC5jcHAKQEAgLTI2LDggKzI2
LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJHUFVDb21wdXRlUGlwZWxp
bmVJbXBsLmgiCiAKLSNpZiBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKLQogI2luY2x1ZGUg
IldlYkdQVUJpbmRHcm91cExheW91dEltcGwuaCIKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9C
YWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPFdlYkdQVS9XZWJHUFVFeHQuaD4KQEAgLTU2LDUg
KzU0LDMgQEAgdm9pZCBDb21wdXRlUGlwZWxpbmVJbXBsOjpzZXRMYWJlbEludGVybmFsKGNvbnN0
IFN0cmluZyYgbGFiZWwpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRp
ZiAvLyBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lSW1w
bC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVD
b21wdXRlUGlwZWxpbmVJbXBsLmgKaW5kZXggYzg5OGM5OWFlN2M0MWVkMGFlYjVkYTlkY2I0OGMw
MTFlNTg1MDc1MC4uZjM0MTkwYmJmMWVmZWUwZjI1NTY5ZjM3MmJmYjNhODJmMzA5MzM4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJH
UFVDb21wdXRlUGlwZWxpbmVJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFw
aGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb21wdXRlUGlwZWxpbmVJbXBsLmgKQEAgLTI1LDggKzI1
LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikK
LQogI2luY2x1ZGUgIldlYkdQVUNvbXB1dGVQaXBlbGluZS5oIgogI2luY2x1ZGUgPFdlYkdQVS9X
ZWJHUFUuaD4KIApAQCAtMzUsNiArMzMsNyBAQCBuYW1lc3BhY2UgUEFMOjpXZWJHUFUgewogY2xh
c3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIENvbXB1dGVQaXBlbGluZUltcGwg
ZmluYWwgOiBwdWJsaWMgQ29tcHV0ZVBpcGVsaW5lIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPENvbXB1dGVQaXBlbGluZUltcGw+IGNyZWF0
ZShXR1BVQ29tcHV0ZVBpcGVsaW5lIGNvbXB1dGVQaXBlbGluZSwgQ29udmVydFRvQmFja2luZ0Nv
bnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQogICAgIHsKQEAgLTY0LDUgKzYzLDMgQEAg
cHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBI
QVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVD
b252ZXJ0VG9CYWNraW5nQ29udGV4dC5jcHAKaW5kZXggMGZiZmI0ZWNkNmI2NWM0NDFmNzE1NDMz
ZDJjNjUwOWQ4ZGU0MjNhYS4uZjlmYmI0YTlkMmIyOGM0NTAxY2QzMWNiMzBmZDAzMmQxMmEwNDc1
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1w
bC9XZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4
dC5jcHAKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJX
ZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogCi0jaWYgSEFWRShXRUJHUFVfSU1QTEVN
RU5UQVRJT04pCi0KICNpbmNsdWRlICJXZWJHUFVBZGRyZXNzTW9kZS5oIgogI2luY2x1ZGUgIldl
YkdQVUJsZW5kRmFjdG9yLmgiCiAjaW5jbHVkZSAiV2ViR1BVQmxlbmRPcGVyYXRpb24uaCIKQEAg
LTgzNSw1ICs4MzMsMyBAQCBXR1BVT3JpZ2luM0QgQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNv
bnZlcnRUb0JhY2tpbmcoY29uc3QgT3JpZ2luM0QmIG9yaWdpbjNEKQogfQogCiB9IC8vIG5hbWVz
cGFjZSBQQUw6OldlYkdQVQotCi0jZW5kaWYgLy8gSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBs
L1dlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgKaW5k
ZXggM2M5YjVjN2I0ZDU4M2QyYTY3MjhiYmQ3MjczYjViYjI2MGM2MmQzOS4uMWY1NDI3YzYxODky
ZDhiN2E4MDZjMThiZjQ1MmM3ZDZkNmI1YmQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaApAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2lmIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQotCiAjaW5jbHVkZSAiV2Vi
R1BVQnVmZmVyVXNhZ2UuaCIKICNpbmNsdWRlICJXZWJHUFVDb2xvci5oIgogI2luY2x1ZGUgIldl
YkdQVUNvbG9yV3JpdGUuaCIKQEAgLTkzLDYgKzkxLDcgQEAgZW51bSBjbGFzcyBWZXJ0ZXhGb3Jt
YXQgOiB1aW50OF90OwogZW51bSBjbGFzcyBWZXJ0ZXhTdGVwTW9kZSA6IHVpbnQ4X3Q7CiAKIGNs
YXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0IDogcHVibGljIFJlZkNvdW50ZWQ8Q29udmVydFRv
QmFja2luZ0NvbnRleHQ+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5Db252ZXJ0VG9CYWNraW5nQ29udGV4dCgpID0gZGVmYXVsdDsKIApAQCAt
MTYwLDUgKzE1OSwzIEBAIHB1YmxpYzoKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFBBTDo6V2ViR1BV
Ci0KLSNlbmRpZiAvLyBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNlSW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQ
VURldmljZUltcGwuY3BwCmluZGV4IGIzZjU1NWRiMzE3ODVlMmRiNmQ2NDE2YzJmOTI5NmVmNDI0
MGQ4M2IuLjhlNGZkZGNmOTc3MmQ0ZjdiNDRkOTQ4ZDE2NzY5MzhhMmQzN2MwZWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2
aWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUv
SW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcApAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIldlYkdQVURldmljZUltcGwuaCIKIAotI2lmIEhBVkUoV0VCR1BV
X0lNUExFTUVOVEFUSU9OKQotCiAjaW5jbHVkZSAiV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5o
IgogI2luY2x1ZGUgIldlYkdQVUJpbmRHcm91cEltcGwuaCIKICNpbmNsdWRlICJXZWJHUFVCaW5k
R3JvdXBMYXlvdXREZXNjcmlwdG9yLmgiCkBAIC02MTQsNSArNjEyLDMgQEAgdm9pZCBEZXZpY2VJ
bXBsOjpzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElP
TikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0lt
cGwvV2ViR1BVRGV2aWNlSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmgKaW5kZXggNjI0OTM2YmU5NzI0YTJmY2MyYWNk
OTkwZDEzZDIwMzlkZjQ4Y2M1YS4uNWU2M2UxNTQ4NmJmMTY4NGZhY2I0ZDcyZDY0ZDUxMDY5YTE1
MWFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUv
SW1wbC9XZWJHUFVEZXZpY2VJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFw
aGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmgKQEAgLTI1LDggKzI1LDYgQEAKIAog
I3ByYWdtYSBvbmNlCiAKLSNpZiBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKLQogI2luY2x1
ZGUgIldlYkdQVURldmljZS5oIgogI2luY2x1ZGUgPFdlYkdQVS9XZWJHUFUuaD4KICNpbmNsdWRl
IDx3dGYvRGVxdWUuaD4KQEAgLTM2LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsK
IGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBEZXZpY2VJbXBsIGZpbmFs
IDogcHVibGljIERldmljZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFJlZjxEZXZpY2VJbXBsPiBjcmVhdGUoV0dQVURldmljZSBkZXZpY2UsIFJl
ZjxTdXBwb3J0ZWRGZWF0dXJlcz4mJiBmZWF0dXJlcywgUmVmPFN1cHBvcnRlZExpbWl0cz4mJiBs
aW1pdHMsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkK
ICAgICB7CkBAIC05OCw1ICs5NywzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBQ
QUw6OldlYkdQVQotCi0jZW5kaWYgLy8gSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQ
VURvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdD
b250ZXh0LmNwcAppbmRleCAxYjg1NGNiN2VjNTI2N2IyZTU1NGQxMTExMDBiZmZhMGQzNjVkMmQy
Li5mNjM3MzQwN2YxNzQ5MjIxMDliNjZkZDkxYWY0NGQ3ZDJjYzhhMjkyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVURvd25jYXN0
Q29udmVydFRvQmFja2luZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Z3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4
dC5jcHAKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJX
ZWJHUFVEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAKLSNpZiBIQVZFKFdFQkdQ
VV9JTVBMRU1FTlRBVElPTikKLQogI2luY2x1ZGUgIldlYkdQVUFkYXB0ZXJJbXBsLmgiCiAjaW5j
bHVkZSAiV2ViR1BVQmluZEdyb3VwSW1wbC5oIgogI2luY2x1ZGUgIldlYkdQVUJpbmRHcm91cExh
eW91dEltcGwuaCIKQEAgLTE1OSw1ICsxNTcsMyBAQCBXR1BVVGV4dHVyZVZpZXcgRG93bmNhc3RD
b252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBUZXh0dXJlVgog
fQogCiB9IC8vIG5hbWVzcGFjZSBQQUw6OldlYkdQVQotCi0jZW5kaWYgLy8gSEFWRShXRUJHUFVf
SU1QTEVNRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBo
aWNzL1dlYkdQVS9JbXBsL1dlYkdQVURvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQuaCBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRG93bmNh
c3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oCmluZGV4IGJkMGZjYTE2MmUxYWU5MDUxMWUzZGZi
NmY1ZTNjZmM3YzMxNDIwNTYuLjdiODc1ZmU0YzNmZTA5NDk2ZWFiZjY3Mjk5MjJhNzdjYWYxZmFk
MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0lt
cGwvV2ViR1BVRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRG93bmNhc3RDb252ZXJ0
VG9CYWNraW5nQ29udGV4dC5oCkBAIC0yNSwxMyArMjUsMTIgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpZiBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKLQogI2luY2x1ZGUgIldlYkdQVUNvbnZl
cnRUb0JhY2tpbmdDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBQQUw6OldlYkdQVSB7CiAKIGNsYXNz
IERvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQgZmluYWwgOiBwdWJsaWMgQ29udmVydFRv
QmFja2luZ0NvbnRleHQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIHN0YXRpYyBSZWY8RG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dD4gY3JlYXRlKCkK
ICAgICB7CkBAIC02OSw1ICs2OCwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBQ
QUw6OldlYkdQVQotCi0jZW5kaWYgLy8gSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQ
VUV4dGVybmFsVGV4dHVyZUltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGlj
cy9XZWJHUFUvSW1wbC9XZWJHUFVFeHRlcm5hbFRleHR1cmVJbXBsLmNwcAppbmRleCAzNjVkYzAy
OTQyMmIyNzVjZWRmMDY5MDQ0Njg1ODU3MzBkNGVmOGZmLi4zZTU1YzlkYTM3Y2VkMDBkMmNlNGFl
YjEzMDMxMTUxMGMxMmIzZDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dy
YXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUV4dGVybmFsVGV4dHVyZUltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRXh0ZXJuYWxU
ZXh0dXJlSW1wbC5jcHAKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJXZWJHUFVFeHRlcm5hbFRleHR1cmVJbXBsLmgiCiAKLSNpZiBIQVZFKFdFQkdQVV9J
TVBMRU1FTlRBVElPTikKLQogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0
LmgiCiAjaW5jbHVkZSA8V2ViR1BVL1dlYkdQVUV4dC5oPgogCkBAIC00Nyw1ICs0NSwzIEBAIHZv
aWQgRXh0ZXJuYWxUZXh0dXJlSW1wbDo6c2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmKQog
fQogCiB9IC8vIG5hbWVzcGFjZSBQQUw6OldlYkdQVQotCi0jZW5kaWYgLy8gSEFWRShXRUJHUFVf
SU1QTEVNRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBo
aWNzL1dlYkdQVS9JbXBsL1dlYkdQVUV4dGVybmFsVGV4dHVyZUltcGwuaCBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRXh0ZXJuYWxUZXh0dXJlSW1w
bC5oCmluZGV4IDJhYWM5N2VhYzU5NWE0NmVhODlmNDE5NDcwZThmMjYyZWY1NGExNjEuLmNkZTk4
ZTQyZDE3NDY3MGNjOTIyNDFjN2Q2MDM2YmEyN2IwNWUzZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRXh0ZXJuYWxUZXh0dXJl
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVRXh0ZXJuYWxUZXh0dXJlSW1wbC5oCkBAIC0yNSw4ICsyNSw2IEBACiAKICNwcmFnbWEg
b25jZQogCi0jaWYgSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCi0KICNpbmNsdWRlICJXZWJH
UFVFeHRlcm5hbFRleHR1cmUuaCIKICNpbmNsdWRlIDxXZWJHUFUvV2ViR1BVLmg+CiAKQEAgLTM1
LDYgKzMzLDcgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tp
bmdDb250ZXh0OwogCiBjbGFzcyBFeHRlcm5hbFRleHR1cmVJbXBsIGZpbmFsIDogcHVibGljIEV4
dGVybmFsVGV4dHVyZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlZjxFeHRlcm5hbFRleHR1cmVJbXBsPiBjcmVhdGUoQ29udmVydFRvQmFja2lu
Z0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQogICAgIHsKQEAgLTU5LDUgKzU4LDMg
QEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAv
LyBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVSW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUltcGwuY3BwCmluZGV4IDhj
YzQ1ZjBjYjExNjkxNTA2MWU5NDJiNTFjZmZiMDkxOWM3NzQwZWUuLjU4M2JlMDUzNTFiZDY5ODUz
ZTAwOTRmMGUyMDAwOTdhMzUwMTYxMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVJbXBsLmNwcApAQCAtMjYsMTQg
KzI2LDMwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViR1BVSW1wbC5oIgog
Ci0jaWYgSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCi0KICNpbmNsdWRlICJXZWJHUFVBZGFw
dGVySW1wbC5oIgotI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCisj
aW5jbHVkZSAiV2ViR1BVRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1
ZGUgPFdlYkdQVS9XZWJHUFVFeHQuaD4KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUg
PHd0Zi9kYXJ3aW4vV2Vha0xpbmtpbmcuaD4KKworV1RGX1dFQUtfTElOS19GT1JDRV9JTVBPUlQo
d2dwdUNyZWF0ZUluc3RhbmNlKTsKKyNlbmRpZgorCiBuYW1lc3BhY2UgUEFMOjpXZWJHUFUgewog
CitSZWZQdHI8R1BVSW1wbD4gR1BVSW1wbDo6Y3JlYXRlKCkKK3sKKyAgICBXR1BVSW5zdGFuY2VE
ZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSB7IG51bGxwdHIgfTsKKyAgICBpZiAoISZ3Z3B1Q3JlYXRl
SW5zdGFuY2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8gaW5zdGFuY2UgPSB3
Z3B1Q3JlYXRlSW5zdGFuY2UoJmRlc2NyaXB0b3IpOworICAgIGlmICghaW5zdGFuY2UpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8gY29udmVydFRvQmFja2luZ0NvbnRleHQgPSBE
b3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OjpjcmVhdGUoKTsKKyAgICByZXR1cm4gY3Jl
YXRlKGluc3RhbmNlLCBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCk7Cit9CisKIEdQVUltcGw6OkdQ
VUltcGwoV0dQVUluc3RhbmNlIGluc3RhbmNlLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29u
dmVydFRvQmFja2luZ0NvbnRleHQpCiAgICAgOiBtX2JhY2tpbmcoaW5zdGFuY2UpCiAgICAgLCBt
X2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQpAQCAtNzUs
NSArOTEsMyBAQCB2b2lkIEdQVUltcGw6OnJlcXVlc3RBZGFwdGVyQ2FsbGJhY2soV0dQVVJlcXVl
c3RBZGFwdGVyU3RhdHVzLCBXR1BVQWRhcHRlciBhZGFwdAogfQogCiB9IC8vIG5hbWVzcGFjZSBQ
QUw6OldlYkdQVQotCi0jZW5kaWYgLy8gSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQ
VUltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVSW1wbC5oCmluZGV4IGM3MzVhMjRlMGZjYTY0MWU0OTQ5MmRiNWU1NjY4NzhjMzkzZmE3MTIu
LjYzNzA2ZWQzNjcyOGZlZWE5NDJjOTMwMTMzZDI3M2Q2NGJiZWQ5MDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVSW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVSW1w
bC5oCkBAIC0yNSw4ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgSEFWRShXRUJHUFVf
SU1QTEVNRU5UQVRJT04pCi0KICNpbmNsdWRlICJXZWJHUFUuaCIKICNpbmNsdWRlIDxXZWJHUFUv
V2ViR1BVLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CkBAIC0zNiw3ICszNCwxMCBAQCBuYW1l
c3BhY2UgUEFMOjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNs
YXNzIEdQVUltcGwgZmluYWwgOiBwdWJsaWMgR1BVIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKKyAgICBQQUxfRVhQT1JUIHN0YXRpYyBSZWZQdHI8R1BVSW1wbD4gY3Jl
YXRlKCk7CisKICAgICBzdGF0aWMgUmVmPEdQVUltcGw+IGNyZWF0ZShXR1BVSW5zdGFuY2UgaW5z
dGFuY2UsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkK
ICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdQVUltcGwoaW5zdGFuY2UsIGNv
bnZlcnRUb0JhY2tpbmdDb250ZXh0KSk7CkBAIC02Nyw1ICs2OCwzIEBAIHByaXZhdGU6CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBQQUw6OldlYkdQVQotCi0jZW5kaWYgLy8gSEFWRShXRUJHUFVfSU1Q
TEVNRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNz
L1dlYkdQVS9JbXBsL1dlYkdQVVBpcGVsaW5lTGF5b3V0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVBpcGVsaW5lTGF5b3V0SW1wbC5j
cHAKaW5kZXggNjU4ZGRiZTI5Yzg3MTIxNzQxNTIxMDAxYWZkOWM3MWEwN2UzNGI4Ni4uYmEzN2Yx
Njg5Njg5YWQzOTRkOTY5OWQxMDdiODAzM2NhNzhiMDIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVQaXBlbGluZUxheW91dElt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVUGlwZWxpbmVMYXlvdXRJbXBsLmNwcApAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkdQVVBpcGVsaW5lTGF5b3V0SW1wbC5oIgogCi0jaWYg
SEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCi0KICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9C
YWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPFdlYkdQVS9XZWJHUFVFeHQuaD4KIApAQCAtNTAs
NSArNDgsMyBAQCB2b2lkIFBpcGVsaW5lTGF5b3V0SW1wbDo6c2V0TGFiZWxJbnRlcm5hbChjb25z
dCBTdHJpbmcmIGxhYmVsKQogfQogCiB9IC8vIG5hbWVzcGFjZSBQQUw6OldlYkdQVQotCi0jZW5k
aWYgLy8gSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVBpcGVsaW5lTGF5b3V0SW1w
bC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVQ
aXBlbGluZUxheW91dEltcGwuaAppbmRleCAwMDljMmI1YzgxNDE5N2FmMGRiNmVkZTBiMjg1Y2Y2
MWFlZTg0NTk2Li5lZWYxZDZmNjEwN2YxNDJjMmE5OWM3MWJlY2ZlY2FkMWExNTcwNTk1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQ
VVBpcGVsaW5lTGF5b3V0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhp
Y3MvV2ViR1BVL0ltcGwvV2ViR1BVUGlwZWxpbmVMYXlvdXRJbXBsLmgKQEAgLTI1LDggKzI1LDYg
QEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKLQog
I2luY2x1ZGUgIldlYkdQVVBpcGVsaW5lTGF5b3V0LmgiCiAjaW5jbHVkZSA8V2ViR1BVL1dlYkdQ
VS5oPgogCkBAIC0zNSw2ICszMyw3IEBAIG5hbWVzcGFjZSBQQUw6OldlYkdQVSB7CiBjbGFzcyBD
b252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUGlwZWxpbmVMYXlvdXRJbXBsIGZpbmFs
IDogcHVibGljIFBpcGVsaW5lTGF5b3V0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFBpcGVsaW5lTGF5b3V0SW1wbD4gY3JlYXRlKFdHUFVQ
aXBlbGluZUxheW91dCBwaXBlbGluZUxheW91dCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNv
bnZlcnRUb0JhY2tpbmdDb250ZXh0KQogICAgIHsKQEAgLTYyLDUgKzYxLDMgQEAgcHJpdmF0ZToK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBIQVZFKFdFQkdQ
VV9JTVBMRU1FTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3Jh
cGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUXVlcnlTZXRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUXVlcnlTZXRJbXBsLmNwcAppbmRl
eCA1NWNhZjQ0MzNmOTM2OGRkZjQxZGQ5NGY3ODZlMzk2MTM4ZmVjYzE0Li5iNGE0YjhiNGUwYTg4
MTgzYmI0NjY3YjUyYzc5ODZkZGJmNGY2MWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVF1ZXJ5U2V0SW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVRdWVyeVNl
dEltcGwuY3BwCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiV2ViR1BVUXVlcnlTZXRJbXBsLmgiCiAKLSNpZiBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElP
TikKLQogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVk
ZSA8V2ViR1BVL1dlYkdQVUV4dC5oPgogCkBAIC01NSw1ICs1MywzIEBAIHZvaWQgUXVlcnlTZXRJ
bXBsOjpzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElP
TikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0lt
cGwvV2ViR1BVUXVlcnlTZXRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNz
L1dlYkdQVS9JbXBsL1dlYkdQVVF1ZXJ5U2V0SW1wbC5oCmluZGV4IDg5OWFhNzMxYjYwYTU1YTk3
OWFkZGNlZWE1NzlhYmIxMGY1Yjk1NGMuLjdhYzg1MjE1OGQ0MDA0NWQ5ODU2MTcyMzYxNzk2MDY0
ZmQ1NTc0MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2Vi
R1BVL0ltcGwvV2ViR1BVUXVlcnlTZXRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVRdWVyeVNldEltcGwuaApAQCAtMjUsOCArMjUs
NiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQot
CiAjaW5jbHVkZSAiV2ViR1BVUXVlcnlTZXQuaCIKICNpbmNsdWRlIDxXZWJHUFUvV2ViR1BVLmg+
CiAKQEAgLTM1LDYgKzMzLDcgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNzIENvbnZl
cnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBRdWVyeVNldEltcGwgZmluYWwgOiBwdWJsaWMg
UXVlcnlTZXQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0
YXRpYyBSZWY8UXVlcnlTZXRJbXBsPiBjcmVhdGUoV0dQVVF1ZXJ5U2V0IHF1ZXJ5U2V0LCBDb252
ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCiAgICAgewpAQCAt
NjQsNSArNjMsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgUEFMOjpXZWJHUFUK
LQotI2VuZGlmIC8vIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVRdWV1ZUltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVR
dWV1ZUltcGwuY3BwCmluZGV4IDYzOWZhNGFiZTY2ZGJkMTNkZGY4YzQ0NTRmMzhmMDYzZmM1NTE5
MDguLjg3ODNhY2MzZjVhYjRlMGE0YWZmMzQzZTlhNDVmYjRhZjE1NmQyZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUXVldWVJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBs
L1dlYkdQVVF1ZXVlSW1wbC5jcHAKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJXZWJHUFVRdWV1ZUltcGwuaCIKIAotI2lmIEhBVkUoV0VCR1BVX0lNUExF
TUVOVEFUSU9OKQotCiAjaW5jbHVkZSAiV2ViR1BVQnVmZmVySW1wbC5oIgogI2luY2x1ZGUgIldl
YkdQVUNvbW1hbmRCdWZmZXJJbXBsLmgiCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2lu
Z0NvbnRleHQuaCIKQEAgLTEzNCw1ICsxMzIsMyBAQCB2b2lkIFF1ZXVlSW1wbDo6c2V0TGFiZWxJ
bnRlcm5hbChjb25zdCBTdHJpbmcmIGxhYmVsKQogfQogCiB9IC8vIG5hbWVzcGFjZSBQQUw6Oldl
YkdQVQotCi0jZW5kaWYgLy8gSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVF1ZXVl
SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJH
UFVRdWV1ZUltcGwuaAppbmRleCBkZDkxZjhjMWE3MzJjZTFjNGUwNmE5Mzc5MDU5YmFmNjk2ZjBl
MDc0Li42ZDljZDE2OWNhMGVmYzg0ZDE0N2Q3M2M5ZDI3NTEwYjc0N2ViNjE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVF1ZXVl
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVUXVldWVJbXBsLmgKQEAgLTI1LDggKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNp
ZiBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKLQogI2luY2x1ZGUgIldlYkdQVVF1ZXVlLmgi
CiAjaW5jbHVkZSA8V2ViR1BVL1dlYkdQVS5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgpAQCAt
MzYsNiArMzQsNyBAQCBuYW1lc3BhY2UgUEFMOjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFj
a2luZ0NvbnRleHQ7CiAKIGNsYXNzIFF1ZXVlSW1wbCBmaW5hbCA6IHB1YmxpYyBRdWV1ZSB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxRdWV1
ZUltcGw+IGNyZWF0ZShXR1BVUXVldWUgcXVldWUsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBj
b252ZXJ0VG9CYWNraW5nQ29udGV4dCkKICAgICB7CkBAIC05Myw1ICs5MiwzIEBAIHByaXZhdGU6
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBQQUw6OldlYkdQVQotCi0jZW5kaWYgLy8gSEFWRShXRUJH
UFVfSU1QTEVNRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dy
YXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlckJ1bmRsZUVuY29kZXJJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUmVuZGVyQnVu
ZGxlRW5jb2RlckltcGwuY3BwCmluZGV4IGVmMThiNTAzZWFkMWM3Mzg1OGRkMzEzODg5NDcyMDRm
YTllZjk2OTAuLmQ4ZGJmMmRjOGJkMmViYjQ2ZDg1NWZmMmRjZDYyNWJjYmJhMTM3ZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BV
UmVuZGVyQnVuZGxlRW5jb2RlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Z3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUmVuZGVyQnVuZGxlRW5jb2RlckltcGwuY3BwCkBA
IC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViR1BVUmVu
ZGVyQnVuZGxlRW5jb2RlckltcGwuaCIKIAotI2lmIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9O
KQotCiAjaW5jbHVkZSAiV2ViR1BVQmluZEdyb3VwSW1wbC5oIgogI2luY2x1ZGUgIldlYkdQVUJ1
ZmZlckltcGwuaCIKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgpA
QCAtMTM4LDUgKzEzNiwzIEBAIHZvaWQgUmVuZGVyQnVuZGxlRW5jb2RlckltcGw6OnNldExhYmVs
SW50ZXJuYWwoY29uc3QgU3RyaW5nJiBsYWJlbCkKIH0KIAogfSAvLyBuYW1lc3BhY2UgUEFMOjpX
ZWJHUFUKLQotI2VuZGlmIC8vIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5k
ZXJCdW5kbGVFbmNvZGVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJCdW5kbGVFbmNvZGVySW1wbC5oCmluZGV4IDMxN2QxYzRm
Zjg4NmRlMTc1Mjc3ZjI1ODJmOWZmNThjYjFiNDFlOWQuLjIwZWJiMzNiZmRkYWEwZTI5ZmE2Yzky
ZWUwODNlM2Y5MTExODg5YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3Jh
cGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUmVuZGVyQnVuZGxlRW5jb2RlckltcGwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlckJ1
bmRsZUVuY29kZXJJbXBsLmgKQEAgLTI1LDggKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNp
ZiBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKLQogI2luY2x1ZGUgIldlYkdQVVJlbmRlckJ1
bmRsZUVuY29kZXIuaCIKICNpbmNsdWRlIDxXZWJHUFUvV2ViR1BVLmg+CiAKQEAgLTM1LDYgKzMz
LDcgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250
ZXh0OwogCiBjbGFzcyBSZW5kZXJCdW5kbGVFbmNvZGVySW1wbCBmaW5hbCA6IHB1YmxpYyBSZW5k
ZXJCdW5kbGVFbmNvZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmPFJlbmRlckJ1bmRsZUVuY29kZXJJbXBsPiBjcmVhdGUoV0dQVVJlbmRl
ckJ1bmRsZUVuY29kZXIgcmVuZGVyQnVuZGxlRW5jb2RlciwgQ29udmVydFRvQmFja2luZ0NvbnRl
eHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQogICAgIHsKQEAgLTkyLDUgKzkxLDMgQEAgcHJp
dmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBIQVZF
KFdFQkdQVV9JTVBMRU1FTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUmVuZGVyQnVuZGxlSW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlckJ1bmRs
ZUltcGwuY3BwCmluZGV4IDA5NmJlNjg2YmJjYTczZjFiYzU5YzI3NzMxYzE5ZjkwNzhlMjY1YjIu
LmM2ZWMzY2EwMmM4NjhjY2NkNjNlNjY3NzY1NjUwZTZhZDE4NzY2MjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUmVuZGVyQnVu
ZGxlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUv
SW1wbC9XZWJHUFVSZW5kZXJCdW5kbGVJbXBsLmNwcApAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkdQVVJlbmRlckJ1bmRsZUltcGwuaCIKIAotI2lm
IEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQotCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRv
QmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxXZWJHUFUvV2ViR1BVRXh0Lmg+CiAKQEAgLTUw
LDUgKzQ4LDMgQEAgdm9pZCBSZW5kZXJCdW5kbGVJbXBsOjpzZXRMYWJlbEludGVybmFsKGNvbnN0
IFN0cmluZyYgbGFiZWwpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRp
ZiAvLyBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUmVuZGVyQnVuZGxlSW1wbC5o
IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5k
ZXJCdW5kbGVJbXBsLmgKaW5kZXggZDI2NjVmMTliNzE5OTNkZGEwYzU0MzM1NTkxNDE1YmMzYTQ2
MjE1OS4uOWRhZDZjMzUyM2Y5YjNmMjRiNjhiMzY0MGJmNDExOWNiMmZkOGQ5MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5k
ZXJCdW5kbGVJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJH
UFUvSW1wbC9XZWJHUFVSZW5kZXJCdW5kbGVJbXBsLmgKQEAgLTI1LDggKzI1LDYgQEAKIAogI3By
YWdtYSBvbmNlCiAKLSNpZiBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKLQogI2luY2x1ZGUg
IldlYkdQVVJlbmRlckJ1bmRsZS5oIgogI2luY2x1ZGUgPFdlYkdQVS9XZWJHUFUuaD4KIApAQCAt
MzUsNiArMzMsNyBAQCBuYW1lc3BhY2UgUEFMOjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFj
a2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbmRlckJ1bmRsZUltcGwgZmluYWwgOiBwdWJsaWMgUmVu
ZGVyQnVuZGxlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmPFJlbmRlckJ1bmRsZUltcGw+IGNyZWF0ZShXR1BVUmVuZGVyQnVuZGxlIHJlbmRl
ckJ1bmRsZSwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0
KQogICAgIHsKQEAgLTYyLDUgKzYxLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVUmVuZGVyUGFzc0VuY29kZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3Jh
cGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXJJbXBsLmNwcAppbmRleCA1
YTFmOTI0NjZlYmI4MjJmMDc3MTlkZTdkZWI0M2Y4ZjA4M2U4Y2Y3Li4xMDBkYzljNGQzNTI0OGUw
ZjE0M2Y3NTY0NTIxYTc3MGFiZTljZjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlclBhc3NFbmNvZGVySW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVS
ZW5kZXJQYXNzRW5jb2RlckltcGwuY3BwCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGFzc0VuY29kZXJJbXBsLmgiCiAKLSNpZiBI
QVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKLQogI2luY2x1ZGUgIldlYkdQVUJpbmRHcm91cElt
cGwuaCIKICNpbmNsdWRlICJXZWJHUFVCdWZmZXJJbXBsLmgiCiAjaW5jbHVkZSAiV2ViR1BVQ29u
dmVydFRvQmFja2luZ0NvbnRleHQuaCIKQEAgLTE4Niw1ICsxODQsMyBAQCB2b2lkIFJlbmRlclBh
c3NFbmNvZGVySW1wbDo6c2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmIGxhYmVsKQogfQog
CiB9IC8vIG5hbWVzcGFjZSBQQUw6OldlYkdQVQotCi0jZW5kaWYgLy8gSEFWRShXRUJHUFVfSU1Q
TEVNRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNz
L1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlclBhc3NFbmNvZGVySW1wbC5oIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcklt
cGwuaAppbmRleCA5YzRlMTAxNmU0YjU3YjE4YTgzNjM2MWI0NTI0ZDUwOTU4YzlkOWE3Li5lMTNm
YmQyOTRkOWM1YmZkYjg5ODE0ZTY0MmMwNTk4ZjE2M2M5Mzk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlclBhc3NFbmNv
ZGVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0lt
cGwvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXJJbXBsLmgKQEAgLTI1LDggKzI1LDYgQEAKIAogI3By
YWdtYSBvbmNlCiAKLSNpZiBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKLQogI2luY2x1ZGUg
IldlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmgiCiAjaW5jbHVkZSA8V2ViR1BVL1dlYkdQVS5oPgog
CkBAIC0zNSw2ICszMyw3IEBAIG5hbWVzcGFjZSBQQUw6OldlYkdQVSB7CiBjbGFzcyBDb252ZXJ0
VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUmVuZGVyUGFzc0VuY29kZXJJbXBsIGZpbmFsIDog
cHVibGljIFJlbmRlclBhc3NFbmNvZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlbmRlclBhc3NFbmNvZGVySW1wbD4gY3JlYXRlKFdH
UFVSZW5kZXJQYXNzRW5jb2RlciByZW5kZXJQYXNzRW5jb2RlciwgQ29udmVydFRvQmFja2luZ0Nv
bnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQogICAgIHsKQEAgLTEwOSw1ICsxMDgsMyBA
QCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgUEFMOjpXZWJHUFUKLQotI2VuZGlmIC8v
IEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJQaXBlbGluZUltcGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5k
ZXJQaXBlbGluZUltcGwuY3BwCmluZGV4IGQyNjE3ZGRkZjVmMTg2ZDQyNzNhNTE4Y2NiNGYyZmQ4
NzkzNDUzMmEuLjRmMTczOGRkZmQ1MDcwMjU1ODVhY2MwYjE0NWMyMzBjZTgxNzY5NmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BV
UmVuZGVyUGlwZWxpbmVJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBo
aWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlclBpcGVsaW5lSW1wbC5jcHAKQEAgLTI2LDggKzI2
LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJHUFVSZW5kZXJQaXBlbGlu
ZUltcGwuaCIKIAotI2lmIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQotCiAjaW5jbHVkZSAi
V2ViR1BVQmluZEdyb3VwTGF5b3V0SW1wbC5oIgogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8V2ViR1BVL1dlYkdQVUV4dC5oPgpAQCAtNTYsNSAr
NTQsMyBAQCB2b2lkIFJlbmRlclBpcGVsaW5lSW1wbDo6c2V0TGFiZWxJbnRlcm5hbChjb25zdCBT
dHJpbmcmIGxhYmVsKQogfQogCiB9IC8vIG5hbWVzcGFjZSBQQUw6OldlYkdQVQotCi0jZW5kaWYg
Ly8gSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlclBpcGVsaW5lSW1wbC5o
IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5k
ZXJQaXBlbGluZUltcGwuaAppbmRleCA0ZjNmYmY4OWIzOTE2ODg2YzQ4OTcxNDkyZWZlZDA2MTUw
ZGY5NmZmLi4yN2E2NTdkOGIxMWI1OTgyNjYxODg4Njk5NjUwZTRkMWFkZjI5NzY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJl
bmRlclBpcGVsaW5lSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3Mv
V2ViR1BVL0ltcGwvV2ViR1BVUmVuZGVyUGlwZWxpbmVJbXBsLmgKQEAgLTI1LDggKzI1LDYgQEAK
IAogI3ByYWdtYSBvbmNlCiAKLSNpZiBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKLQogI2lu
Y2x1ZGUgIldlYkdQVVJlbmRlclBpcGVsaW5lLmgiCiAjaW5jbHVkZSA8V2ViR1BVL1dlYkdQVS5o
PgogCkBAIC0zNSw2ICszMyw3IEBAIG5hbWVzcGFjZSBQQUw6OldlYkdQVSB7CiBjbGFzcyBDb252
ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUmVuZGVyUGlwZWxpbmVJbXBsIGZpbmFsIDog
cHVibGljIFJlbmRlclBpcGVsaW5lIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlbmRlclBpcGVsaW5lSW1wbD4gY3JlYXRlKFdHUFVSZW5k
ZXJQaXBlbGluZSByZW5kZXJQaXBlbGluZSwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZl
cnRUb0JhY2tpbmdDb250ZXh0KQogICAgIHsKQEAgLTY0LDUgKzYzLDMgQEAgcHJpdmF0ZToKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBIQVZFKFdFQkdQVV9J
TVBMRU1FTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhp
Y3MvV2ViR1BVL0ltcGwvV2ViR1BVU2FtcGxlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVTYW1wbGVySW1wbC5jcHAKaW5kZXggOWM2
MTk5MDlhYWRlZGE4ODZhNGE1MDNmZTYxMDg0YjYxYzIxZTljMy4uZmU3YTgyMzJhMTMxMmNhMjkx
MDUyZTkwNTI1ZGYzYzEwMDVkNWY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVTYW1wbGVySW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVTYW1wbGVySW1wbC5j
cHAKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJH
UFVTYW1wbGVySW1wbC5oIgogCi0jaWYgSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCi0KICNp
bmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPFdlYkdQ
VS9XZWJHUFVFeHQuaD4KIApAQCAtNTAsNSArNDgsMyBAQCB2b2lkIFNhbXBsZXJJbXBsOjpzZXRM
YWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFBB
TDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BV
U2FtcGxlckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0lt
cGwvV2ViR1BVU2FtcGxlckltcGwuaAppbmRleCBhZjQzNmNjMDZmNmYwNjAxMGQ5YzgyY2YxMThl
NjJhNDBjMTM4MDlhLi42NDliN2NlMGRjYzhkMGJkNTk1NmZlY2MxZmZkOGJhMjdlZjMxOTVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dl
YkdQVVNhbXBsZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVTYW1wbGVySW1wbC5oCkBAIC0yNSw4ICsyNSw2IEBACiAKICNwcmFn
bWEgb25jZQogCi0jaWYgSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCi0KICNpbmNsdWRlICJX
ZWJHUFVTYW1wbGVyLmgiCiAjaW5jbHVkZSA8V2ViR1BVL1dlYkdQVS5oPgogCkBAIC0zNSw2ICsz
Myw3IEBAIG5hbWVzcGFjZSBQQUw6OldlYkdQVSB7CiBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dDsKIAogY2xhc3MgU2FtcGxlckltcGwgZmluYWwgOiBwdWJsaWMgU2FtcGxlciB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTYW1wbGVy
SW1wbD4gY3JlYXRlKFdHUFVTYW1wbGVyIHNhbXBsZXIsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0
JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKICAgICB7CkBAIC02Miw1ICs2MSwzIEBAIHByaXZh
dGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBQQUw6OldlYkdQVQotCi0jZW5kaWYgLy8gSEFWRShX
RUJHUFVfSU1QTEVNRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVNoYWRlck1vZHVsZUltcGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVTaGFkZXJNb2R1bGVJ
bXBsLmNwcAppbmRleCBiN2M2ZDI1YzBlYzllYzUwMzQ4MTgzM2YzYzE3YWNkZmU5MjNlOWU5Li4w
M2VmMWVhZjIyZDEwMWZiOGMxMzU0ZDNlZGZlMDlhMjk2ZGRhMmViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVNoYWRlck1vZHVs
ZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0lt
cGwvV2ViR1BVU2hhZGVyTW9kdWxlSW1wbC5jcHAKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJHUFVTaGFkZXJNb2R1bGVJbXBsLmgiCiAKLSNpZiBI
QVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKLQogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8V2ViR1BVL1dlYkdQVUV4dC5oPgogCkBAIC01NCw1
ICs1MiwzIEBAIHZvaWQgU2hhZGVyTW9kdWxlSW1wbDo6c2V0TGFiZWxJbnRlcm5hbChjb25zdCBT
dHJpbmcmIGxhYmVsKQogfQogCiB9IC8vIG5hbWVzcGFjZSBQQUw6OldlYkdQVQotCi0jZW5kaWYg
Ly8gSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVNoYWRlck1vZHVsZUltcGwuaCBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVU2hhZGVy
TW9kdWxlSW1wbC5oCmluZGV4IDIwMTU2ZGVjNmExYzg2OWM2ODFiNzVkYjA4NWMyMWVmNmI1ZmE2
NjQuLjY1YjViYTZjMTZjZDQwYWQxNjRhMjZjZDM4N2VlYmJjZDVkMDkyNTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVU2hhZGVy
TW9kdWxlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVU2hhZGVyTW9kdWxlSW1wbC5oCkBAIC0yNSw4ICsyNSw2IEBACiAKICNwcmFn
bWEgb25jZQogCi0jaWYgSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCi0KICNpbmNsdWRlICJX
ZWJHUFVTaGFkZXJNb2R1bGUuaCIKICNpbmNsdWRlIDxXZWJHUFUvV2ViR1BVLmg+CiAKQEAgLTM1
LDYgKzMzLDcgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tp
bmdDb250ZXh0OwogCiBjbGFzcyBTaGFkZXJNb2R1bGVJbXBsIGZpbmFsIDogcHVibGljIFNoYWRl
ck1vZHVsZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZjxTaGFkZXJNb2R1bGVJbXBsPiBjcmVhdGUoV0dQVVNoYWRlck1vZHVsZSBzaGFkZXJN
b2R1bGUsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkK
ICAgICB7CkBAIC02NCw1ICs2MywzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBQ
QUw6OldlYkdQVQotCi0jZW5kaWYgLy8gSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQ
VVRleHR1cmVJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVVGV4dHVyZUltcGwuY3BwCmluZGV4IDQwNzc1NmI0NDcxY2QxNDhiZWM2NDM5
MGM5MDYzZDY3NDg3ZDE5ZGIuLmFlNjBjYjRmMzBhYTU1YjM1YWVjZGExYjc4MTBkZDY4NGEwYzM5
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0lt
cGwvV2ViR1BVVGV4dHVyZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3Jh
cGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVVGV4dHVyZUltcGwuY3BwCkBAIC0yNiw4ICsyNiw2IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViR1BVVGV4dHVyZUltcGwuaCIKIAot
I2lmIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQotCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVy
dFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJXZWJHUFVUZXh0dXJlVmlldy5oIgogI2lu
Y2x1ZGUgIldlYkdQVVRleHR1cmVWaWV3RGVzY3JpcHRvci5oIgpAQCAtOTAsNSArODgsMyBAQCB2
b2lkIFRleHR1cmVJbXBsOjpzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFBBTDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBIQVZFKFdFQkdQVV9J
TVBMRU1FTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhp
Y3MvV2ViR1BVL0ltcGwvV2ViR1BVVGV4dHVyZUltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVVGV4dHVyZUltcGwuaAppbmRleCAzMzgzZWEx
MzY5NGNjOWYwNzk0NTMwZTA4YjBiMmMyNGE1NmNkOGEwLi5lZTUyZTc1OWMwYzdiZTVkZjQyMGJk
M2UwYWJkNTg3NWE5MjM4YmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dy
YXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVRleHR1cmVJbXBsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVUZXh0dXJlSW1wbC5oCkBAIC0y
NSw4ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgSEFWRShXRUJHUFVfSU1QTEVNRU5U
QVRJT04pCi0KICNpbmNsdWRlICJXZWJHUFVJbnRlZ3JhbFR5cGVzLmgiCiAjaW5jbHVkZSAiV2Vi
R1BVVGV4dHVyZS5oIgogI2luY2x1ZGUgIldlYkdQVVRleHR1cmVEaW1lbnNpb24uaCIKQEAgLTM4
LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tp
bmdDb250ZXh0OwogCiBjbGFzcyBUZXh0dXJlSW1wbCBmaW5hbCA6IHB1YmxpYyBUZXh0dXJlIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFRl
eHR1cmVJbXBsPiBjcmVhdGUoV0dQVVRleHR1cmUgdGV4dHVyZSwgVGV4dHVyZUZvcm1hdCBmb3Jt
YXQsIFRleHR1cmVEaW1lbnNpb24gZGltZW5zaW9uLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYg
Y29udmVydFRvQmFja2luZ0NvbnRleHQpCiAgICAgewpAQCAtNzIsNSArNzEsMyBAQCBwcml2YXRl
OgogfTsKIAogfSAvLyBuYW1lc3BhY2UgUEFMOjpXZWJHUFUKLQotI2VuZGlmIC8vIEhBVkUoV0VC
R1BVX0lNUExFTUVOVEFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9n
cmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVUZXh0dXJlVmlld0ltcGwuY3BwIGIvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVUZXh0dXJlVmlld0ltcGwu
Y3BwCmluZGV4IGExODg4MTNhOGUxOGEwODk1MDNhYzk4Njk4ZTVjZTQxODU2YWRkMGIuLmJmMjdj
NWY3MGY5Y2JlZWMxMWUyMGU1NzFiYWJjODY3OTY5YWYxNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVVGV4dHVyZVZpZXdJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dl
YkdQVVRleHR1cmVWaWV3SW1wbC5jcHAKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJXZWJHUFVUZXh0dXJlVmlld0ltcGwuaCIKIAotI2lmIEhBVkUoV0VC
R1BVX0lNUExFTUVOVEFUSU9OKQotCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0Nv
bnRleHQuaCIKICNpbmNsdWRlIDxXZWJHUFUvV2ViR1BVRXh0Lmg+CiAKQEAgLTUwLDUgKzQ4LDMg
QEAgdm9pZCBUZXh0dXJlVmlld0ltcGw6OnNldExhYmVsSW50ZXJuYWwoY29uc3QgU3RyaW5nJiBs
YWJlbCkKIH0KIAogfSAvLyBuYW1lc3BhY2UgUEFMOjpXZWJHUFUKLQotI2VuZGlmIC8vIEhBVkUo
V0VCR1BVX0lNUExFTUVOVEFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVUZXh0dXJlVmlld0ltcGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVVGV4dHVyZVZpZXdJbXBs
LmgKaW5kZXggNmQ4NTY4MzA4N2RhNjE3ZTE2M2ViODVjZjM1ZTgxNjY4YzVlZmM1Ni4uOTQ3OGRk
NDM5NGQ4Mzk4MjZmNzY1M2ZlZmE5NDk5OTJkYTIwNDc0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVUZXh0dXJlVmlld0ltcGwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQ
VVRleHR1cmVWaWV3SW1wbC5oCkBAIC0yNSw4ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0j
aWYgSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCi0KICNpbmNsdWRlICJXZWJHUFVUZXh0dXJl
Vmlldy5oIgogI2luY2x1ZGUgPFdlYkdQVS9XZWJHUFUuaD4KIApAQCAtMzUsNiArMzMsNyBAQCBu
YW1lc3BhY2UgUEFMOjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAK
IGNsYXNzIFRleHR1cmVWaWV3SW1wbCBmaW5hbCA6IHB1YmxpYyBUZXh0dXJlVmlldyB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxUZXh0dXJl
Vmlld0ltcGw+IGNyZWF0ZShXR1BVVGV4dHVyZVZpZXcgdGV4dHVyZVZpZXcsIENvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKICAgICB7CkBAIC02Miw1ICs2
MSwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBQQUw6OldlYkdQVQotCi0jZW5k
aWYgLy8gSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKaW5k
ZXggYzEzZjZjZjlkNmUxNzg3ZWE2MDU4OWZlNDZhMmUxNzdkOTM3NDgxZC4uMjJiMDBkZDk0ZGFm
YWYyNTUxODg5OTk5NjZmMWYzYmZmMzQwMDQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcApAQCAt
NTQ2LDYgKzU0NiwxMSBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IENocm9tZTo6Y3JlYXRl
R3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0RwogfQogI2VuZGlmCiAKK1Jl
ZlB0cjxQQUw6OldlYkdQVTo6R1BVPiBDaHJvbWU6OmNyZWF0ZUdQVUZvcldlYkdQVSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fY2xpZW50LmNyZWF0ZUdQVUZvcldlYkdQVSgpOworfQorCiBQbGF0
Zm9ybURpc3BsYXlJRCBDaHJvbWU6OmRpc3BsYXlJRCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
cGFnZS5kaXNwbGF5SUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21l
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCmluZGV4IDM3MjE4MmZlYzYyMGZlZDlk
ZmU3M2RhODkyMjQ2YWY5MTNjNTUzM2UuLjEyNDM5YzEwY2MzZmMyNjI4NDljNzc4ZmVhNjk2ZThm
ZDQyOTM1NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaApAQCAtMzIsNiArMzIsMTAgQEAKIE9CSkNfQ0xB
U1MgTlNWaWV3OwogI2VuZGlmCiAKK25hbWVzcGFjZSBQQUw6OldlYkdQVSB7CitjbGFzcyBHUFU7
Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2hyb21lQ2xpZW50OwpAQCAtOTEs
NiArOTUsOCBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVH
cmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKSBjb25z
dCBvdmVycmlkZTsKICNlbmRpZgogCisgICAgUmVmUHRyPFBBTDo6V2ViR1BVOjpHUFU+IGNyZWF0
ZUdQVUZvcldlYkdQVSgpIGNvbnN0OworCiAgICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlE
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZv
cm1EaXNwbGF5SUQsIHN0ZDo6b3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPikgb3ZlcnJpZGU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IGYyMzkxNDU3MDZkMGIxOTA1NDEwYWQ4
ZTY2Y2ZlOTkwMGNkYzc2ZWUuLmYxMTY0MzkwYjM4YWY4MTMwOTI3YjVmMzMxZTMzYjBmODFhOTQw
ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtNTIsNiArNTIsNyBAQAogI2lu
Y2x1ZGUgIlNlYXJjaFBvcHVwTWVudS5oIgogI2luY2x1ZGUgIldlYkNvcmVLZXlib2FyZFVJTW9k
ZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVUeXBlcy5oPgorI2luY2x1ZGUg
PHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMu
aD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgpAQCAtMzU2LDYgKzM1Nyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFJlZlB0cjxH
cmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzJiwgV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQpIGNvbnN0IHsg
cmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogCisgICAgdmlydHVhbCBSZWZQdHI8UEFMOjpXZWJH
UFU6OkdQVT4gY3JlYXRlR1BVRm9yV2ViR1BVKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQor
CiAgICAgLy8gUGFzcyBudWxscHRyIGFzIHRoZSBHcmFwaGljc0xheWVyIHRvIGRldGF0Y2ggdGhl
IHJvb3QgbGF5ZXIuCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFJvb3RHcmFwaGljc0xheWVyKEZy
YW1lJiwgR3JhcGhpY3NMYXllciopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoVmlld092
ZXJsYXlHcmFwaGljc0xheWVyKEdyYXBoaWNzTGF5ZXIqKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmln
YXRvci5jcHAKaW5kZXggNmYxOWIyZWIzYmU0Nzk4NjVlNWM1NDRlZDA0NWNlNDdjNGZkMTNiYy4u
ZjViZDRiMGE2ZWYyYjUwZTdkMjRmYzkxZGRjNzcwMGY5ZTIwMzljZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
TmF2aWdhdG9yLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5j
bHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgorI2lu
Y2x1ZGUgIkdQVS5oIgogI2luY2x1ZGUgIkdlb2xvY2F0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01Q
cm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJMb2FkZXJTdHJhdGVneS5oIgpAQCAtMzQ3LDQg
KzM0OCwyNCBAQCB2b2lkIE5hdmlnYXRvcjo6Z2V0U3RvcmFnZVVwZGF0ZXMoKQogewogfQogCitH
UFUqIE5hdmlnYXRvcjo6Z3B1KCkKK3sKKyAgICBpZiAoIW1fZ3B1Rm9yV2ViR1BVKSB7CisgICAg
ICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICAgICAgaWYgKCFmcmFtZSkKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBhdXRvKiBwYWdlID0gZnJhbWUtPnBh
Z2UoKTsKKyAgICAgICAgaWYgKCFwYWdlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgIGF1dG8gZ3B1ID0gcGFnZS0+Y2hyb21lKCkuY3JlYXRlR1BVRm9yV2ViR1BVKCk7Cisg
ICAgICAgIGlmICghZ3B1KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAg
bV9ncHVGb3JXZWJHUFUgPSBHUFU6OmNyZWF0ZSgpOworICAgICAgICBtX2dwdUZvcldlYkdQVS0+
c2V0QmFja2luZygqZ3B1KTsKKyAgICB9CisKKyAgICByZXR1cm4gbV9ncHVGb3JXZWJHUFUuZ2V0
KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvTmF2aWdhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oCmlu
ZGV4IGJkZDA0NjQ3YmQyODdiNjY2ZjZkYTczNTEwZTVkM2QyYTdmNTFmZDguLmJhYzQ5YjM0MTFi
ZGM4YzZjZWRiNTgyYjM5YjY5NDM0YTBkOTQ0NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvTmF2aWdhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaApA
QCAtNjQsNiArNjQsOCBAQCBwdWJsaWM6CiAgICAgaW50IG1heFRvdWNoUG9pbnRzKCkgY29uc3Qg
eyByZXR1cm4gMDsgfQogI2VuZGlmCiAKKyAgICBHUFUqIGdwdSgpOworCiBwcml2YXRlOgogICAg
IHZvaWQgc2hvd1NoYXJlRGF0YShFeGNlcHRpb25PcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMJj4s
IFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogICAgIGV4cGxpY2l0IE5hdmlnYXRvcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgRE9NV2luZG93Jik7CkBAIC03Niw1ICs3OCw2IEBAIHByaXZhdGU6
CiAgICAgbXV0YWJsZSBSZWZQdHI8RE9NTWltZVR5cGVBcnJheT4gbV9taW1lVHlwZXM7CiAgICAg
bXV0YWJsZSBTdHJpbmcgbV91c2VyQWdlbnQ7CiAgICAgbXV0YWJsZSBTdHJpbmcgbV9wbGF0Zm9y
bTsKKyAgICBSZWZQdHI8R1BVPiBtX2dwdUZvcldlYkdQVTsKIH07CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
TmF2aWdhdG9yQmFzZS5oCmluZGV4IGI1MTIyYTRiZGFlMzA2OWFlYjM3ZmRhYmMxYTZkNjY0YTJj
NDZjZWUuLmQ1Y2I1NmUzMzdhYTRhNGQ0YWEyNjRhZWE3MmYxYzY0N2FkY2NhMGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvTmF2aWdhdG9yQmFzZS5oCkBAIC02Myw3ICs2Myw2IEBAIHB1YmxpYzoKIAogICAg
IFN0b3JhZ2VNYW5hZ2VyJiBzdG9yYWdlKCk7CiAgICAgV2ViTG9ja01hbmFnZXImIGxvY2tzKCk7
Ci0gICAgR1BVJiBncHUoKSB7IHJldHVybiAqbV9ncHVGb3JXZWJHUFU7IH07CiAKIHByb3RlY3Rl
ZDoKICAgICBleHBsaWNpdCBOYXZpZ2F0b3JCYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsK
QEAgLTcxLDcgKzcwLDYgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBSZWZQdHI8U3RvcmFn
ZU1hbmFnZXI+IG1fc3RvcmFnZU1hbmFnZXI7CiAgICAgUmVmUHRyPFdlYkxvY2tNYW5hZ2VyPiBt
X3dlYkxvY2tNYW5hZ2VyOwotICAgIFJlZlB0cjxHUFU+IG1fZ3B1Rm9yV2ViR1BVOwogCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9Xb3JrZXJOYXZpZ2F0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Xb3JrZXJO
YXZpZ2F0b3IuY3BwCmluZGV4IDU1ZGUwMDRiMDAwNDRkZDNkYWQzNDUyNzczNDgwY2Y4YWUxYWU0
NTcuLjAwNDEyNGZkYmIyZjdlY2Q1ZDgxNzUzMjA1ZDhlNWM0NTk5Y2M1MWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvV29ya2VyTmF2aWdhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1dvcmtlck5hdmlnYXRvci5jcHAKQEAgLTI3LDYgKzI3LDggQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJXb3JrZXJOYXZpZ2F0b3IuaCIKIAorI2luY2x1ZGUgIkdQ
VS5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdvcmtlck5hdmlnYXRvcjo6V29ya2VyTmF2
aWdhdG9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXNl
ckFnZW50LCBib29sIGlzT25saW5lKQpAQCAtNDYsNCArNDgsMTQgQEAgYm9vbCBXb3JrZXJOYXZp
Z2F0b3I6Om9uTGluZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1faXNPbmxpbmU7CiB9CiAKK0dQVSog
V29ya2VyTmF2aWdhdG9yOjpncHUoKQoreworICAgIGlmICghbV9ncHVGb3JXZWJHUFUpIHsKKyAg
ICAgICAgLy8gRklYTUU6IFN0YXJ0IHRoZSBwcm9jZXNzIG9mIHNldHRpbmcgdGhlIGJhY2tpbmcu
CisgICAgICAgIG1fZ3B1Rm9yV2ViR1BVID0gR1BVOjpjcmVhdGUoKTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gbV9ncHVGb3JXZWJHUFUuZ2V0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV29ya2VyTmF2aWdhdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1dvcmtlck5hdmlnYXRvci5oCmluZGV4IDQ1ZWNmNjZjN2QyMGM4MmJk
NTJjZjU1ZDFmYjk0YThjMzJiNGI0NTAuLmM1N2JmZjRhZTk4NDFiNWU1OWUxNjVjODY5YTM1ZmMw
YWQ3NTYxZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV29ya2VyTmF2aWdhdG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Xb3JrZXJOYXZpZ2F0b3IuaApAQCAtMzksMTEg
KzM5LDE0IEBAIHB1YmxpYzoKICAgICBib29sIG9uTGluZSgpIGNvbnN0IGZpbmFsOwogICAgIHZv
aWQgc2V0SXNPbmxpbmUoYm9vbCBpc09ubGluZSkgeyBtX2lzT25saW5lID0gaXNPbmxpbmU7IH0K
IAorICAgIEdQVSogZ3B1KCk7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV29ya2VyTmF2aWdh
dG9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmLCBib29sIGlzT25saW5l
KTsKIAogICAgIFN0cmluZyBtX3VzZXJBZ2VudDsKICAgICBib29sIG1faXNPbmxpbmU7CisgICAg
UmVmUHRyPEdQVT4gbV9ncHVGb3JXZWJHUFU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dC9DTWFrZUxpc3RzLnR4dAppbmRleCBjMzI5NzRhODRiMmE2Njk0MDczOGYwZDRmM2MyYmY5ZTYx
MGJjMDJiLi44MmFhNWYyMmRkNzIwYzE5MTg0NmE5NDJhMzkxNGNiZmVhYzg2YzdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvQ01h
a2VMaXN0cy50eHQKQEAgLTkyLDYgKzkyLDcgQEAgc2V0KFdlYktpdF9JTkNMVURFX0RJUkVDVE9S
SUVTCiAgICAgIiR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbiIKICAgICAiJHtX
RUJLSVRfRElSfS9XZWJQcm9jZXNzL0dQVSIKICAgICAiJHtXRUJLSVRfRElSfS9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcyIKKyAgICAiJHtXRUJLSVRfRElSfS9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9XZWJHUFUiCiAgICAgIiR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vzcy9HUFUvbWVkaWEiCiAgICAg
IiR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vzcy9HUFUvd2VicnRjIgogICAgICIke1dFQktJVF9ESVJ9
L1dlYlByb2Nlc3MvSWNvbkRhdGFiYXNlIgpAQCAtMjYxLDYgKzI2Miw4IEBAIHNldChXZWJLaXRf
TUVTU0FHRVNfSU5fRklMRVMKICAgICBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5CiAgICAgV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5CiAKKyAgICBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlR1BVUHJveHkKKwogICAgIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvSGFy
ZHdhcmVMaXN0ZW5lcgogICAgIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZQogICAgIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhU291cmNlUHJpdmF0ZVJlbW90
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Db25maWd1cmF0aW9ucy9CYXNlVGFyZ2V0Lnhj
Y29uZmlnIGIvU291cmNlL1dlYktpdC9Db25maWd1cmF0aW9ucy9CYXNlVGFyZ2V0LnhjY29uZmln
CmluZGV4IDIwMjE1ODViYjBjNGFlYWNlMTcxYWIyZWI5N2UzZTFlNmJmMGI3OTUuLjNiMWMyYzM2
MTkyODUzZDM3YjkwODEzN2FmY2E4ZGJkZjYwNWQyNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ29uZmlndXJhdGlvbnMvQmFzZVRhcmdldC54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NvbmZpZ3VyYXRpb25zL0Jhc2VUYXJnZXQueGNjb25maWcKQEAgLTQ3LDcgKzQ3LDcgQEAgR0ND
X1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICQoREVCVUdfREVGSU5FUykgJChXS19FTkFCTEVf
RVhQRVJJTUVOVEFMX0ZFQVRVUkUKIFdFQktJVEFERElUSU9OU19IRUFERVJfU0VBUkNIX1BBVEhT
ID0gJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRlL1dlYktpdEFkZGl0aW9u
cyAkKFNES1JPT1QpL3Vzci9sb2NhbC9pbmNsdWRlL1dlYktpdEFkZGl0aW9uczsKIExJQldFQlJU
Q19IRUFERVJfU0VBUkNIX1BBVEhTID0gJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9p
bmNsdWRlL3dlYnJ0YyAkKFNES1JPT1QpL3Vzci9sb2NhbC9pbmNsdWRlL3dlYnJ0YzsKIAotSEVB
REVSX1NFQVJDSF9QQVRIUyA9ICQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5jbHVk
ZSAiJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0ZvcndhcmRpbmdIZWFkZXJzIiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0MiAkKFdFQktJVEFERElUSU9O
U19IRUFERVJfU0VBUkNIX1BBVEhTKSAkKExJQldFQlJUQ19IRUFERVJfU0VBUkNIX1BBVEhTKSAk
KFNSQ1JPT1QpICQoSEVBREVSX1NFQVJDSF9QQVRIUyk7CitIRUFERVJfU0VBUkNIX1BBVEhTID0g
JChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRlICIkKFdFQkNPUkVfUFJJVkFU
RV9IRUFERVJTX0RJUikvRm9yd2FyZGluZ0hlYWRlcnMiICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyICIkKEJVSUxUX1BST0RVQ1RTX0RJUikvdXNyL2xvY2FsL2lu
Y2x1ZGUvcGFsL2dyYXBoaWNzL1dlYkdQVSIgJChXRUJLSVRBRERJVElPTlNfSEVBREVSX1NFQVJD
SF9QQVRIUykgJChMSUJXRUJSVENfSEVBREVSX1NFQVJDSF9QQVRIUykgJChTUkNST09UKSAkKEhF
QURFUl9TRUFSQ0hfUEFUSFMpOwogCiBPVEhFUl9DRkxBR1MgPSAkKGluaGVyaXRlZCkgLWlmcmFt
ZXdvcmsgJChTREtST09UKSQoU1lTVEVNX0xJQlJBUllfRElSKS9Qcml2YXRlRnJhbWV3b3JrczsK
IE9USEVSX0NQTFVTUExVU0ZMQUdTID0gJChPVEhFUl9DRkxBR1MpIC1pc3lzdGVtICQoU0RLUk9P
VCkvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TeXN0ZW0uZnJhbWV3b3JrL1ByaXZhdGVIZWFk
ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Cmlu
ZGV4IDc5OWFkNzViMmExYWIyMTBkMDgxZDU5ZmQ1YjRiMDJkOGI2ZGFlYjQuLmE3ODk3Yjk2MWEz
OWRhZjkyN2M1NGQxMmVmYTNjODk3MTQ5N2IwMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTE3NCw2ICsxNzQsNyBAQCAkKFBST0pFQ1Rf
RElSKS9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIubWVzc2FnZXMu
aW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4K
KyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFVQ
cm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9NZWRpYVNvdXJjZVByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4KICQoUFJP
SkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5l
ci5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1v
dXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3QKaW5kZXggYTY1ZmMzNjE4NGNmZjhmNzc1MmQ2ODUyNzk4NjE1NGI2YWY4MDFjNC4u
OTNhNjE0NmQ2YjEzOWNiOGExNmExNzFiYjc3ZDQ0YmQzYjU4YjY1YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0yNDIsNiArMjQyLDkg
QEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlRXh0
ZXJuYWxUZXh0dXJlTWVzc2FnZXNSZXBsaWUKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1JlbW90ZUdQVU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdQVU1lc3NhZ2VzLmgKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdQVU1lc3Nh
Z2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9SZW1vdGVHUFVQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdQVVByb3h5TWVzc2FnZXMuaAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlR1BVUHJveHlNZXNz
YWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TE1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMubWFrZQppbmRleCBkZGU1YzYzZmUzZjRiMzE1Mjk3ZGI0YjY4NDg5YzI5ZGU1YmJhNDVj
Li40NTc0Mzg2NWE0YWM4MzJkM2U1ZGJkNGFmZDQzOGJkNzUzMmNkOTIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJp
dmVkU291cmNlcy5tYWtlCkBAIC0xODYsNiArMTg2LDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBc
CiAJV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSBcCiAJV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSBcCisJV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5IFwKIAlXZWJQcm9jZXNzL0dQVS93ZWJydGMv
TGliV2ViUlRDQ29kZWNzIFwKIAlXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyIFwKIAlXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCmluZGV4IDUyYWU4ODE5MzcxYTNlZGQ2MGNkNzIwY2QwODRiYjNjODU3
ZmE3Y2QuLjVlYzk3M2ExYjU3MDM4MmU5MTgyNDNiYWJiY2UwYWVkZjA0YzZhYTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJSZW1vdGVBdWRpb0hhcmR3YXJlTGlz
dGVuZXJQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0TWFuYWdlci5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAi
UmVtb3RlR1BVLmgiCiAjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAi
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgpAQCAtNjMsMTAgKzY0LDEy
IEBACiAjaW5jbHVkZSAiUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5oIgog
I2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5o
IgorI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVz
c2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0xvZ0luaXRpYWxpemF0aW9uLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvTm93UGxheWluZ01hbmFnZXIuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVSW1wbC5oPgogI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgogCiAjaWYgUExB
VEZPUk0oQ09DT0EpCkBAIC01NTUsNiArNTU4LDE5IEBAIHZvaWQgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6cmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMRm9yVGVzdGluZyhHcmFwaGljc0NvbnRl
CiB9CiAjZW5kaWYKIAordm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVSZW1v
dGVHUFUoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRp
ZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVm
ZmVyJiYgc3RyZWFtKQoreworICAgIGF1dG8gaXQgPSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRN
YXAuZmluZChyZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CisgICAgaWYgKGl0ID09IG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZE1hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8q
IHJlbmRlcmluZ0JhY2tlbmQgPSBpdC0+dmFsdWUuZ2V0KCk7CisKKyAgICBhdXRvIGFkZFJlc3Vs
dCA9IG1fcmVtb3RlR1BVTWFwLmVuc3VyZShpZGVudGlmaWVyLCBbJl0oKSB7CisgICAgICAgIHJl
dHVybiBJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUgeyBSZW1vdGVHUFU6OmNy
ZWF0ZShpZGVudGlmaWVyLCAqdGhpcywgKnJlbmRlcmluZ0JhY2tlbmQsIFdURk1vdmUoc3RyZWFt
KSkgfTsKKyAgICB9KTsKKyAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0Lmlz
TmV3RW50cnkpOworfQorCiB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNsZWFyTm93
UGxheWluZ0luZm8oKQogewogICAgIG1faXNBY3RpdmVOb3dQbGF5aW5nUHJvY2VzcyA9IGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgKaW5kZXggYWU3OTUwNTI1ODYwZGUzY2Y2YTJiMTc4OGZlMzVhNWVhYmRhNTY3ZC4u
ZTQzY2Y3NjQxZmRjNjk5YTQ5ZDZlNzQ3NjUxMjdjYzg3NDBkYTM3NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0z
Miw5ICszMiwxMSBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlck1hcC5oIgogI2luY2x1ZGUg
IlJlbW90ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5lcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZW1v
dGVBdWRpb1Nlc3Npb25JZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUmVtb3RlR1BVLmgiCiAjaW5j
bHVkZSAiUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVySWRlbnRpZmllci5oIgogI2luY2x1ZGUg
IlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2NvcGVkQWN0aXZlTWVz
c2FnZVJlY2VpdmVRdWV1ZS5oIgorI2luY2x1ZGUgIldlYkdQVUlkZW50aWZpZXIuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0xpYldlYlJUQ0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05v
d1BsYXlpbmdNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgpA
QCAtMjEyLDYgKzIxNCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVHcmFwaGljc0NvbnRl
eHRHTChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIElQQzo6U3RyZWFtQ29u
bmVjdGlvbkJ1ZmZlciYmKTsKICAgICB2b2lkIHJlbGVhc2VHcmFwaGljc0NvbnRleHRHTChHcmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOwogI2VuZGlmCisgICAgdm9pZCBjcmVhdGVSZW1vdGVH
UFUoV2ViR1BVSWRlbnRpZmllciwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIElQQzo6U3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsKIAogICAgIHZvaWQgY2xlYXJOb3dQbGF5aW5nSW5mbygp
OwogICAgIHZvaWQgc2V0Tm93UGxheWluZ0luZm8oV2ViQ29yZTo6Tm93UGxheWluZ0luZm8mJik7
CkBAIC0zMDgsNiArMzExLDggQEAgcHJpdmF0ZToKICAgICB1c2luZyBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTE1hcCA9IEhhc2hNYXA8R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBJUEM6OlNj
b3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+PjsK
ICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcCBtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
TWFwOwogI2VuZGlmCisgICAgdXNpbmcgUmVtb3RlR1BVTWFwID0gSGFzaE1hcDxXZWJHUFVJZGVu
dGlmaWVyLCBJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlR1BVPj47
CisgICAgUmVtb3RlR1BVTWFwIG1fcmVtb3RlR1BVTWFwOwogI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4gbV9jZG1G
YWN0b3J5UHJveHk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMzkx
YzE5ZmU5ZDg1MTRmNzRmYzFhNDM4ODY0OTBiNmFhZDNhNWFlNS4uOTE5YjVkMzBlMTBmZTUwYTli
MGE2OWQyOTlhMDZlODMwYTU4OTRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAg
LTI5LDYgKzI5LDcgQEAgbWVzc2FnZXMgLT4gR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBXYW50
c0Rpc3BhdGNoTWVzc2FnZSB7CiAgICAgdm9pZCBDcmVhdGVHcmFwaGljc0NvbnRleHRHTChzdHJ1
Y3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIFdlYktp
dDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllciwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyIHN0cmVhbSkKICAgICB2b2lkIFJl
bGVhc2VHcmFwaGljc0NvbnRleHRHTChXZWJLaXQ6OkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCiAjZW5kaWYKKyAgICB2b2lkIENyZWF0ZVJl
bW90ZUdQVShXZWJLaXQ6OldlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViS2l0OjpSZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgSVBDOjpT
dHJlYW1Db25uZWN0aW9uQnVmZmVyIHN0cmVhbSkKICAgICB2b2lkIENsZWFyTm93UGxheWluZ0lu
Zm8oKQogICAgIHZvaWQgU2V0Tm93UGxheWluZ0luZm8oc3RydWN0IFdlYkNvcmU6Ok5vd1BsYXlp
bmdJbmZvIG5vd1BsYXlpbmdJbmZvKQogI2lmIFVTRShBVURJT19TRVNTSU9OKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVBZGFwdGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQWRh
cHRlci5jcHAKaW5kZXggNDFiZGYxNjUyMDZiMDk2OTlhYjE1MzYyMWFkM2MyZWUxZTg2ODg0OC4u
YzRjYTdhMmRlMjJmODM3MmNhZTgyNWRkNmYwNGRmNzkyZjNlNjZjNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVBZGFwdGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUFkYXB0
ZXIuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiUmVtb3RlRGV2aWNlLmgiCiAjaW5j
bHVkZSAiV2ViR1BVRGV2aWNlRGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhl
YXAuaCIKLSNpbmNsdWRlICJXZWJHUFVPYmplY3RSZWdpc3RyeS5oIgogI2luY2x1ZGUgIldlYkdQ
VVN1cHBvcnRlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiV2ViR1BVU3VwcG9ydGVkTGltaXRzLmgi
CiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVBZGFwdGVyLmg+CkBAIC0zOSwz
NCArMzgsMjcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90ZUFkYXB0ZXI6OlJlbW90
ZUFkYXB0ZXIoUEFMOjpXZWJHUFU6OkFkYXB0ZXImIGFkYXB0ZXIsIFdlYkdQVTo6T2JqZWN0UmVn
aXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdl
YkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK1JlbW90ZUFkYXB0ZXI6OlJlbW90ZUFkYXB0ZXIo
UEFMOjpXZWJHUFU6OkFkYXB0ZXImIGFkYXB0ZXIsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0
SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5nKGFkYXB0
ZXIpCi0gICAgLCBtX29iamVjdFJlZ2lzdHJ5KG9iamVjdFJlZ2lzdHJ5KQogICAgICwgbV9vYmpl
Y3RIZWFwKG9iamVjdEhlYXApCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKLSAg
ICBtX29iamVjdFJlZ2lzdHJ5LmFkZE9iamVjdChtX2lkZW50aWZpZXIsIG1fYmFja2luZyk7CiB9
CiAKLVJlbW90ZUFkYXB0ZXI6On5SZW1vdGVBZGFwdGVyKCkKLXsKLSAgICBtX29iamVjdFJlZ2lz
dHJ5LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOwotfQorUmVtb3RlQWRhcHRlcjo6flJlbW90
ZUFkYXB0ZXIoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVtb3RlQWRhcHRlcjo6cmVxdWVzdERldmlj
ZShjb25zdCBXZWJHUFU6OkRldmljZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50
aWZpZXIgaWRlbnRpZmllciwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkdQVTo6U3Vw
cG9ydGVkRmVhdHVyZXMmJiwgV2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHMmJik+JiYgY2FsbGJhY2sp
CiB7Ci0gICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RSZWdpc3RyeS5jb252
ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9y
ID0gbV9vYmplY3RIZWFwLmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKICAgICBBU1NF
UlQoY29udmVydGVkRGVzY3JpcHRvcik7CiAgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKSB7
CiAgICAgICAgIGNhbGxiYWNrKHsgeyB9IH0sIHsgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBtX2JhY2tpbmctPnJlcXVlc3REZXZpY2UoKmNvbnZlcnRlZERlc2NyaXB0b3IsIFtj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB3ZWFrT2JqZWN0SGVhcCA9IFdlYWtQdHI8V2Vi
R1BVOjpPYmplY3RIZWFwPihtX29iamVjdEhlYXApLCBvYmplY3RSZWdpc3RyeSA9IG1fb2JqZWN0
UmVnaXN0cnksIGlkZW50aWZpZXJdIChSZWY8UEFMOjpXZWJHUFU6OkRldmljZT4mJiBkZXZpY2Up
IG11dGFibGUgewotICAgICAgICBpZiAoIXdlYWtPYmplY3RIZWFwKQotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICBhdXRvIHJlbW90ZURldmljZSA9IFJlbW90ZURldmljZTo6Y3JlYXRlKGRl
dmljZSwgb2JqZWN0UmVnaXN0cnksICp3ZWFrT2JqZWN0SGVhcCwgaWRlbnRpZmllcik7Ci0gICAg
ICAgIHdlYWtPYmplY3RIZWFwLT5hZGRPYmplY3QocmVtb3RlRGV2aWNlKTsKKyAgICBtX2JhY2tp
bmctPnJlcXVlc3REZXZpY2UoKmNvbnZlcnRlZERlc2NyaXB0b3IsIFtjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spLCBzdHJvbmdUaGlzID0gUmVmIHsgKnRoaXMgfV0gKFJlZjxQQUw6OldlYkdQ
VTo6RGV2aWNlPiYmIGRldmljZSkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gcmVtb3RlRGV2aWNl
ID0gUmVtb3RlRGV2aWNlOjpjcmVhdGUoZGV2aWNlLCBzdHJvbmdUaGlzLT5tX29iamVjdEhlYXAs
IHN0cm9uZ1RoaXMtPm1faWRlbnRpZmllcik7CisgICAgICAgIHN0cm9uZ1RoaXMtPm1fb2JqZWN0
SGVhcC5hZGRPYmplY3Qoc3Ryb25nVGhpcy0+bV9pZGVudGlmaWVyLCByZW1vdGVEZXZpY2UpOwog
ICAgICAgICBjb25zdCBhdXRvJiBmZWF0dXJlcyA9IGRldmljZS0+ZmVhdHVyZXMoKTsKICAgICAg
ICAgY29uc3QgYXV0byYgbGltaXRzID0gZGV2aWNlLT5saW1pdHMoKTsKICAgICAgICAgY2FsbGJh
Y2soV2ViR1BVOjpTdXBwb3J0ZWRGZWF0dXJlcyB7IGZlYXR1cmVzLmZlYXR1cmVzKCkgfSwgV2Vi
R1BVOjpTdXBwb3J0ZWRMaW1pdHMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVBZGFwdGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUFkYXB0ZXIuaAppbmRleCAxZWEyYzEwMTg2ZTFi
NmY4OGIwYTMyY2UwNDI3ODViZmMyOGFmMzJhLi43ODMxOTgzYjQyNzVmM2IyMTc3ODkxMjI3M2U5
NDU4NWUyMTJmMjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZUFkYXB0ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUFkYXB0ZXIuaApAQCAtNDEsMjQgKzQxLDI0IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogbmFtZXNwYWNlIFdlYkdQVSB7CiBzdHJ1Y3QgRGV2aWNlRGVzY3JpcHRv
cjsKIGNsYXNzIE9iamVjdEhlYXA7Ci1jbGFzcyBPYmplY3RSZWdpc3RyeTsKIHN0cnVjdCBTdXBw
b3J0ZWRGZWF0dXJlczsKIHN0cnVjdCBTdXBwb3J0ZWRMaW1pdHM7CiB9CiAKIGNsYXNzIFJlbW90
ZUFkYXB0ZXIgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3Rl
QWRhcHRlcj4gY3JlYXRlKFBBTDo6V2ViR1BVOjpBZGFwdGVyJiBhZGFwdGVyLCBXZWJHUFU6Ok9i
amVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RI
ZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxSZW1vdGVB
ZGFwdGVyPiBjcmVhdGUoUEFMOjpXZWJHUFU6OkFkYXB0ZXImIGFkYXB0ZXIsIFdlYkdQVTo6T2Jq
ZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQWRhcHRlcihhZGFwdGVyLCBvYmpl
Y3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBSZW1vdGVBZGFwdGVyKGFkYXB0ZXIsIG9iamVjdEhlYXAsIGlkZW50aWZpZXIp
KTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVBZGFwdGVyKCk7CiAKLXByaXZhdGU6Ci0g
ICAgZnJpZW5kIGNsYXNzIE9iamVjdFJlZ2lzdHJ5OworICAgIFBBTDo6V2ViR1BVOjpBZGFwdGVy
JiBiYWNraW5nKCkgeyByZXR1cm4gbV9iYWNraW5nOyB9CiAKLSAgICBSZW1vdGVBZGFwdGVyKFBB
TDo6V2ViR1BVOjpBZGFwdGVyJiwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2Jq
ZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOworcHJpdmF0ZToKKyAgICBSZW1vdGVBZGFwdGVy
KFBBTDo6V2ViR1BVOjpBZGFwdGVyJiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRp
Zmllcik7CiAKICAgICBSZW1vdGVBZGFwdGVyKGNvbnN0IFJlbW90ZUFkYXB0ZXImKSA9IGRlbGV0
ZTsKICAgICBSZW1vdGVBZGFwdGVyKFJlbW90ZUFkYXB0ZXImJikgPSBkZWxldGU7CkBAIC03MCw3
ICs3MCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXF1ZXN0RGV2aWNlKGNvbnN0IFdlYkdQVTo6
RGV2aWNlRGVzY3JpcHRvciYsIFdlYkdQVUlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVzJiYsIFdlYkdQVTo6U3VwcG9ydGVkTGlt
aXRzJiYpPiYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6QWRhcHRlcj4gbV9iYWNraW5nOwot
ICAgIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7CiAgICAgV2ViR1BV
OjpPYmplY3RIZWFwJiBtX29iamVjdEhlYXA7CiAgICAgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50
aWZpZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVCaW5kR3JvdXAuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXAuY3BwCmluZGV4IDA4NWY0OTUzODRlM2VmM2Nj
NDRhNTMyYzU2ODg1YjQxOWZmNDE3NWQuLjg0OTU1MmQ0OWM2NGViMzMwNDY0ZGUzODQ5MjlkMmMw
MDI3Yzc0NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlQmluZEdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cC5jcHAKQEAgLTI5LDI0ICsyOSwxOCBAQAog
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIK
LSNpbmNsdWRlICJXZWJHUFVPYmplY3RSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGlj
cy9XZWJHUFUvV2ViR1BVQmluZEdyb3VwLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZW1v
dGVCaW5kR3JvdXA6OlJlbW90ZUJpbmRHcm91cChQQUw6OldlYkdQVTo6QmluZEdyb3VwJiBiaW5k
R3JvdXAsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9i
amVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK1JlbW90
ZUJpbmRHcm91cDo6UmVtb3RlQmluZEdyb3VwKFBBTDo6V2ViR1BVOjpCaW5kR3JvdXAmIGJpbmRH
cm91cCwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCiAgICAgOiBtX2JhY2tpbmcoYmluZEdyb3VwKQotICAgICwgbV9vYmplY3RSZWdp
c3RyeShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQogICAg
ICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5hZGRP
YmplY3QobV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOwogfQogCi1SZW1vdGVCaW5kR3JvdXA6On5S
ZW1vdGVCaW5kR3JvdXAoKQotewotICAgIG1fb2JqZWN0UmVnaXN0cnkucmVtb3ZlT2JqZWN0KG1f
aWRlbnRpZmllcik7Ci19CitSZW1vdGVCaW5kR3JvdXA6On5SZW1vdGVCaW5kR3JvdXAoKSA9IGRl
ZmF1bHQ7CiAKIHZvaWQgUmVtb3RlQmluZEdyb3VwOjpzZXRMYWJlbChTdHJpbmcmJiBsYWJlbCkK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlQmluZEdyb3VwLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZUJpbmRHcm91cC5oCmluZGV4IGNlMTQwOGM2N2Q1NDgxMmQ5ZGQ0YzE3ZTYzZGQw
YjBiMjQ2NzBmNWYuLjBjYWU4YWUxMjkwOWFkNjZhMDYyM2FjY2NhYzRhOGJmZGUwNjA3MDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
QmluZEdyb3VwLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVCaW5kR3JvdXAuaApAQCAtNDAsMjIgKzQwLDIyIEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIGNsYXNzIE9iamVjdEhlYXA7Ci1jbGFzcyBPYmplY3RS
ZWdpc3RyeTsKIH0KIAogY2xhc3MgUmVtb3RlQmluZEdyb3VwIGZpbmFsIDogcHVibGljIElQQzo6
U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZUJpbmRHcm91cD4gY3JlYXRlKFBBTDo6V2ViR1BV
OjpCaW5kR3JvdXAmIGJpbmRHcm91cCwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVn
aXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBp
ZGVudGlmaWVyKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlQmluZEdyb3VwPiBjcmVhdGUoUEFMOjpX
ZWJHUFU6OkJpbmRHcm91cCYgYmluZEdyb3VwLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhl
YXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFJlbW90ZUJpbmRHcm91cChiaW5kR3JvdXAsIG9iamVjdFJlZ2lzdHJ5LCBv
YmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJl
bW90ZUJpbmRHcm91cChiaW5kR3JvdXAsIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKICAgICB9
CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVCaW5kR3JvdXAoKTsKIAotcHJpdmF0ZToKLSAgICBmcmll
bmQgY2xhc3MgT2JqZWN0UmVnaXN0cnk7CisgICAgUEFMOjpXZWJHUFU6OkJpbmRHcm91cCYgYmFj
a2luZygpIHsgcmV0dXJuIG1fYmFja2luZzsgfQogCi0gICAgUmVtb3RlQmluZEdyb3VwKFBBTDo6
V2ViR1BVOjpCaW5kR3JvdXAmLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmpl
Y3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7Citwcml2YXRlOgorICAgIFJlbW90ZUJpbmRHcm91
cChQQUw6OldlYkdQVTo6QmluZEdyb3VwJiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRl
bnRpZmllcik7CiAKICAgICBSZW1vdGVCaW5kR3JvdXAoY29uc3QgUmVtb3RlQmluZEdyb3VwJikg
PSBkZWxldGU7CiAgICAgUmVtb3RlQmluZEdyb3VwKFJlbW90ZUJpbmRHcm91cCYmKSA9IGRlbGV0
ZTsKQEAgLTY3LDcgKzY3LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYm
KTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6QmluZEdyb3VwPiBtX2JhY2tpbmc7Ci0gICAgV2Vi
R1BVOjpPYmplY3RSZWdpc3RyeSYgbV9vYmplY3RSZWdpc3RyeTsKICAgICBXZWJHUFU6Ok9iamVj
dEhlYXAmIG1fb2JqZWN0SGVhcDsKICAgICBXZWJHUFVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZUJpbmRHcm91cExheW91dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExheW91dC5jcHAKaW5kZXggMGIxNmZmMjk4N2Qx
NTQyYTNhYWEyYWVkMDY0MmVlYWYyZTdkNTE5Mi4uYTlhODhhMjY4ZmE1YTliY2FlYzExNzA4ZjIx
MTcwNjk3NWI3OTUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwTGF5b3V0LmNwcApAQCAt
MjksMjQgKzI5LDE4IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2Vi
R1BVT2JqZWN0SGVhcC5oIgotI2luY2x1ZGUgIldlYkdQVU9iamVjdFJlZ2lzdHJ5LmgiCiAjaW5j
bHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVCaW5kR3JvdXBMYXlvdXQuaD4KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90ZUJpbmRHcm91cExheW91dDo6UmVtb3RlQmluZEdyb3Vw
TGF5b3V0KFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXQmIGJpbmRHcm91cExheW91dCwgV2Vi
R1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYg
b2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorUmVtb3RlQmluZEdyb3Vw
TGF5b3V0OjpSZW1vdGVCaW5kR3JvdXBMYXlvdXQoUEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91
dCYgYmluZEdyb3VwTGF5b3V0LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQ
VUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICA6IG1fYmFja2luZyhiaW5kR3JvdXBMYXlvdXQp
Ci0gICAgLCBtX29iamVjdFJlZ2lzdHJ5KG9iamVjdFJlZ2lzdHJ5KQogICAgICwgbV9vYmplY3RI
ZWFwKG9iamVjdEhlYXApCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKLSAgICBt
X29iamVjdFJlZ2lzdHJ5LmFkZE9iamVjdChtX2lkZW50aWZpZXIsIG1fYmFja2luZyk7CiB9CiAK
LVJlbW90ZUJpbmRHcm91cExheW91dDo6flJlbW90ZUJpbmRHcm91cExheW91dCgpCi17Ci0gICAg
bV9vYmplY3RSZWdpc3RyeS5yZW1vdmVPYmplY3QobV9pZGVudGlmaWVyKTsKLX0KK1JlbW90ZUJp
bmRHcm91cExheW91dDo6flJlbW90ZUJpbmRHcm91cExheW91dCgpID0gZGVmYXVsdDsKIAogdm9p
ZCBSZW1vdGVCaW5kR3JvdXBMYXlvdXQ6OnNldExhYmVsKFN0cmluZyYmIGxhYmVsKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVC
aW5kR3JvdXBMYXlvdXQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlQmluZEdyb3VwTGF5b3V0LmgKaW5kZXggMjhkMGJlNGJiNDM5MDg3NTViYmY4OTM4
ZWQyMDhlNjdmZGZjZmM4Ny4uZGQyNzNlYjhjOTA4NjgyMTJlZDY3ZTg2OTMxOTA3ZjRhMjkyNjlj
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVCaW5kR3JvdXBMYXlvdXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExheW91dC5oCkBAIC00MCwyMiArNDAsMjIgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogY2xhc3MgT2JqZWN0SGVh
cDsKLWNsYXNzIE9iamVjdFJlZ2lzdHJ5OwogfQogCiBjbGFzcyBSZW1vdGVCaW5kR3JvdXBMYXlv
dXQgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlQmluZEdy
b3VwTGF5b3V0PiBjcmVhdGUoUEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dCYgYmluZEdyb3Vw
TGF5b3V0LCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpP
YmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAg
c3RhdGljIFJlZjxSZW1vdGVCaW5kR3JvdXBMYXlvdXQ+IGNyZWF0ZShQQUw6OldlYkdQVTo6Qmlu
ZEdyb3VwTGF5b3V0JiBiaW5kR3JvdXBMYXlvdXQsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0
SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgUmVtb3RlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dCwgb2Jq
ZWN0UmVnaXN0cnksIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUmVtb3RlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dCwgb2JqZWN0
SGVhcCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90ZUJpbmRHcm91
cExheW91dCgpOwogCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdpc3RyeTsK
KyAgICBQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0JiBiYWNraW5nKCkgeyByZXR1cm4gbV9i
YWNraW5nOyB9CiAKLSAgICBSZW1vdGVCaW5kR3JvdXBMYXlvdXQoUEFMOjpXZWJHUFU6OkJpbmRH
cm91cExheW91dCYsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmLCBXZWJHUFU6Ok9iamVjdEhlYXAm
LCBXZWJHUFVJZGVudGlmaWVyKTsKK3ByaXZhdGU6CisgICAgUmVtb3RlQmluZEdyb3VwTGF5b3V0
KFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXQmLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJH
UFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZUJpbmRHcm91cExheW91dChjb25zdCBSZW1vdGVC
aW5kR3JvdXBMYXlvdXQmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVCaW5kR3JvdXBMYXlvdXQoUmVt
b3RlQmluZEdyb3VwTGF5b3V0JiYpID0gZGVsZXRlOwpAQCAtNjcsNyArNjcsNiBAQCBwcml2YXRl
OgogICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpC
aW5kR3JvdXBMYXlvdXQ+IG1fYmFja2luZzsKLSAgICBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBt
X29iamVjdFJlZ2lzdHJ5OwogICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFwOwog
ICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVyLmNwcApp
bmRleCBjNjY0YjM4Mzk5OGI3M2MyZDdjYmNhMzEyZjU5ZjliN2U0YmQyN2Q3Li4xODkzYmFkYmU0
ZDUwNWU2OWQ5ZWM1Y2Y5ZWMzNTNhNzdhODc1Njk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZmZXIuY3BwCkBAIC0y
OSwyMyArMjksMTcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJH
UFVPYmplY3RIZWFwLmgiCi0jaW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90ZUJ1ZmZlcjo6UmVtb3RlQnVmZmVyKFBBTDo6V2ViR1BV
OjpCdWZmZXImIGJ1ZmZlciwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnks
IFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyKQorUmVtb3RlQnVmZmVyOjpSZW1vdGVCdWZmZXIoUEFMOjpXZWJHUFU6OkJ1ZmZlciYgYnVm
ZmVyLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRl
bnRpZmllcikKICAgICA6IG1fYmFja2luZyhidWZmZXIpCi0gICAgLCBtX29iamVjdFJlZ2lzdHJ5
KG9iamVjdFJlZ2lzdHJ5KQogICAgICwgbV9vYmplY3RIZWFwKG9iamVjdEhlYXApCiAgICAgLCBt
X2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LmFkZE9iamVj
dChtX2lkZW50aWZpZXIsIG1fYmFja2luZyk7CiB9CiAKLVJlbW90ZUJ1ZmZlcjo6flJlbW90ZUJ1
ZmZlcigpCi17Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5yZW1vdmVPYmplY3QobV9pZGVudGlmaWVy
KTsKLX0KK1JlbW90ZUJ1ZmZlcjo6flJlbW90ZUJ1ZmZlcigpID0gZGVmYXVsdDsKIAogdm9pZCBS
ZW1vdGVCdWZmZXI6Om1hcEFzeW5jKFBBTDo6V2ViR1BVOjpNYXBNb2RlRmxhZ3MgbWFwTW9kZUZs
YWdzLCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplNjQ+IG9mZnNldCwgc3RkOjpvcHRp
b25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0PiBzaXplLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZv
aWQoc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+JiYpPiYmIGNhbGxiYWNrKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVC
dWZmZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
QnVmZmVyLmgKaW5kZXggYTVmYWQ1YjJlZmQwODEzNmMwMmNlYjg1OWZhZDM3ZTI1YzMyM2YzMy4u
MTkxNmQzNTllZWVmZWE5ZWMxNjgxNDM0YjYzOTdiNjIzOTEyMWY1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZmZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZlci5o
CkBAIC00NSwyMiArNDUsMjIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBXZWJH
UFUgewogY2xhc3MgT2JqZWN0SGVhcDsKLWNsYXNzIE9iamVjdFJlZ2lzdHJ5OwogfQogCiBjbGFz
cyBSZW1vdGVCdWZmZXIgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
UmVtb3RlQnVmZmVyPiBjcmVhdGUoUEFMOjpXZWJHUFU6OkJ1ZmZlciYgYnVmZmVyLCBXZWJHUFU6
Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmpl
Y3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxSZW1v
dGVCdWZmZXI+IGNyZWF0ZShQQUw6OldlYkdQVTo6QnVmZmVyJiBidWZmZXIsIFdlYkdQVTo6T2Jq
ZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQnVmZmVyKGJ1ZmZlciwgb2JqZWN0
UmVnaXN0cnksIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgUmVtb3RlQnVmZmVyKGJ1ZmZlciwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOwog
ICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90ZUJ1ZmZlcigpOwogCi1wcml2YXRlOgotICAgIGZy
aWVuZCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKKyAgICBQQUw6OldlYkdQVTo6QnVmZmVyJiBiYWNr
aW5nKCkgeyByZXR1cm4gbV9iYWNraW5nOyB9CiAKLSAgICBSZW1vdGVCdWZmZXIoUEFMOjpXZWJH
UFU6OkJ1ZmZlciYsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmLCBXZWJHUFU6Ok9iamVjdEhlYXAm
LCBXZWJHUFVJZGVudGlmaWVyKTsKK3ByaXZhdGU6CisgICAgUmVtb3RlQnVmZmVyKFBBTDo6V2Vi
R1BVOjpCdWZmZXImLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAog
ICAgIFJlbW90ZUJ1ZmZlcihjb25zdCBSZW1vdGVCdWZmZXImKSA9IGRlbGV0ZTsKICAgICBSZW1v
dGVCdWZmZXIoUmVtb3RlQnVmZmVyJiYpID0gZGVsZXRlOwpAQCAtNzcsNyArNzcsNiBAQCBwcml2
YXRlOgogICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCiAgICAgUmVmPFBBTDo6V2ViR1BV
OjpCdWZmZXI+IG1fYmFja2luZzsKLSAgICBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBtX29iamVj
dFJlZ2lzdHJ5OwogICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFwOwogICAgIFdl
YkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIGJvb2wgbV9pc01hcHBlZCB7IGZhbHNl
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZUNvbW1hbmRCdWZmZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kQnVmZmVyLmNwcAppbmRleCBhOWM2YTJiNmU2MDNmNDA3
ODBjYWVhMDA3YjU3M2IyZTRkNmQ0YTM1Li43YzJhODdjZDE0YzliZGNjMDcwMmVlYjdkN2M5NTZl
MjRlMjU4MThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZUNvbW1hbmRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEJ1ZmZlci5jcHAKQEAgLTI5LDI0ICsy
OSwxOCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVU9iamVj
dEhlYXAuaCIKLSNpbmNsdWRlICJXZWJHUFVPYmplY3RSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHBh
bC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5oPgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotUmVtb3RlQ29tbWFuZEJ1ZmZlcjo6UmVtb3RlQ29tbWFuZEJ1ZmZlcihQQUw6Oldl
YkdQVTo6Q29tbWFuZEJ1ZmZlciYgY29tbWFuZEJ1ZmZlciwgV2ViR1BVOjpPYmplY3RSZWdpc3Ry
eSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BV
SWRlbnRpZmllciBpZGVudGlmaWVyKQorUmVtb3RlQ29tbWFuZEJ1ZmZlcjo6UmVtb3RlQ29tbWFu
ZEJ1ZmZlcihQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZlciYgY29tbWFuZEJ1ZmZlciwgV2ViR1BV
OjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAg
ICAgOiBtX2JhY2tpbmcoY29tbWFuZEJ1ZmZlcikKLSAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2Jq
ZWN0UmVnaXN0cnkpCiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkKICAgICAsIG1faWRl
bnRpZmllcihpZGVudGlmaWVyKQogewotICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1f
aWRlbnRpZmllciwgbV9iYWNraW5nKTsKIH0KIAotUmVtb3RlQ29tbWFuZEJ1ZmZlcjo6flJlbW90
ZUNvbW1hbmRCdWZmZXIoKQotewotICAgIG1fb2JqZWN0UmVnaXN0cnkucmVtb3ZlT2JqZWN0KG1f
aWRlbnRpZmllcik7Ci19CitSZW1vdGVDb21tYW5kQnVmZmVyOjp+UmVtb3RlQ29tbWFuZEJ1ZmZl
cigpID0gZGVmYXVsdDsKIAogdm9pZCBSZW1vdGVDb21tYW5kQnVmZmVyOjpzZXRMYWJlbChTdHJp
bmcmJiBsYWJlbCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEJ1ZmZlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kQnVmZmVyLmgKaW5kZXggMTQwYzFhNDhh
MTFkZWY5Y2FiYWM5YTUxYzg0YTFjZGRjNzQyZDg1ZC4uNTM1ZTJjYzRlNzg0MmNiZWNlZTlhYWVm
ZTM1YjZiYjQxODc2ZWQzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kQnVmZmVyLmgKQEAgLTQwLDIy
ICs0MCwyMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIFdlYkdQVSB7CiBjbGFz
cyBPYmplY3RIZWFwOwotY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiB9CiAKIGNsYXNzIFJlbW90ZUNv
bW1hbmRCdWZmZXIgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVt
b3RlQ29tbWFuZEJ1ZmZlcj4gY3JlYXRlKFBBTDo6V2ViR1BVOjpDb21tYW5kQnVmZmVyJiBjb21t
YW5kQnVmZmVyLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BV
OjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisg
ICAgc3RhdGljIFJlZjxSZW1vdGVDb21tYW5kQnVmZmVyPiBjcmVhdGUoUEFMOjpXZWJHUFU6OkNv
bW1hbmRCdWZmZXImIGNvbW1hbmRCdWZmZXIsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVh
cCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUmVtb3RlQ29tbWFuZEJ1ZmZlcihjb21tYW5kQnVmZmVyLCBvYmplY3RSZWdp
c3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBSZW1vdGVDb21tYW5kQnVmZmVyKGNvbW1hbmRCdWZmZXIsIG9iamVjdEhlYXAsIGlkZW50
aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVDb21tYW5kQnVmZmVyKCk7CiAK
LXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIE9iamVjdFJlZ2lzdHJ5OworICAgIFBBTDo6V2Vi
R1BVOjpDb21tYW5kQnVmZmVyJiBiYWNraW5nKCkgeyByZXR1cm4gbV9iYWNraW5nOyB9CiAKLSAg
ICBSZW1vdGVDb21tYW5kQnVmZmVyKFBBTDo6V2ViR1BVOjpDb21tYW5kQnVmZmVyJiwgV2ViR1BV
OjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIp
OworcHJpdmF0ZToKKyAgICBSZW1vdGVDb21tYW5kQnVmZmVyKFBBTDo6V2ViR1BVOjpDb21tYW5k
QnVmZmVyJiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBS
ZW1vdGVDb21tYW5kQnVmZmVyKGNvbnN0IFJlbW90ZUNvbW1hbmRCdWZmZXImKSA9IGRlbGV0ZTsK
ICAgICBSZW1vdGVDb21tYW5kQnVmZmVyKFJlbW90ZUNvbW1hbmRCdWZmZXImJikgPSBkZWxldGU7
CkBAIC02Nyw3ICs2Nyw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7
CiAKICAgICBSZWY8UEFMOjpXZWJHUFU6OkNvbW1hbmRCdWZmZXI+IG1fYmFja2luZzsKLSAgICBX
ZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBtX29iamVjdFJlZ2lzdHJ5OwogICAgIFdlYkdQVTo6T2Jq
ZWN0SGVhcCYgbV9vYmplY3RIZWFwOwogICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVy
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlQ29tbWFuZEVuY29kZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kRW5jb2Rlci5jcHAKaW5kZXggYWM5NDllZmE0YjZi
NGVjZTIyZjIxNmNjYTE2NTNlNTc2MDBiMGQ4Mi4uZmM0NTQ5MTY2YjBiODEzOWU0NTVmNGZlOWRh
NDk2NTNjY2M0OWQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kRW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kRW5jb2Rlci5jcHAKQEAgLTMz
LDQyICszMywzNiBAQAogI2luY2x1ZGUgIlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyLmgiCiAjaW5j
bHVkZSAiV2ViR1BVQ29tcHV0ZVBhc3NEZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiV2ViR1BVT2Jq
ZWN0SGVhcC5oIgotI2luY2x1ZGUgIldlYkdQVU9iamVjdFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8
cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVDb21tYW5kRW5jb2Rlci5oPgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotUmVtb3RlQ29tbWFuZEVuY29kZXI6OlJlbW90ZUNvbW1hbmRFbmNvZGVyKFBB
TDo6V2ViR1BVOjpDb21tYW5kRW5jb2RlciYgY29tbWFuZEVuY29kZXIsIFdlYkdQVTo6T2JqZWN0
UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAs
IFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK1JlbW90ZUNvbW1hbmRFbmNvZGVyOjpSZW1v
dGVDb21tYW5kRW5jb2RlcihQQUw6OldlYkdQVTo6Q29tbWFuZEVuY29kZXImIGNvbW1hbmRFbmNv
ZGVyLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRl
bnRpZmllcikKICAgICA6IG1fYmFja2luZyhjb21tYW5kRW5jb2RlcikKLSAgICAsIG1fb2JqZWN0
UmVnaXN0cnkob2JqZWN0UmVnaXN0cnkpCiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkK
ICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogewotICAgIG1fb2JqZWN0UmVnaXN0cnku
YWRkT2JqZWN0KG1faWRlbnRpZmllciwgbV9iYWNraW5nKTsKIH0KIAotUmVtb3RlQ29tbWFuZEVu
Y29kZXI6On5SZW1vdGVDb21tYW5kRW5jb2RlcigpCi17Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5y
ZW1vdmVPYmplY3QobV9pZGVudGlmaWVyKTsKLX0KK1JlbW90ZUNvbW1hbmRFbmNvZGVyOjp+UmVt
b3RlQ29tbWFuZEVuY29kZXIoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVtb3RlQ29tbWFuZEVuY29k
ZXI6OmJlZ2luUmVuZGVyUGFzcyhjb25zdCBXZWJHUFU6OlJlbmRlclBhc3NEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBjb252
ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoZGVz
Y3JpcHRvcik7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RIZWFwLmNv
bnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKICAgICBBU1NFUlQoY29udmVydGVkRGVzY3Jp
cHRvcik7CiAgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKQogICAgICAgICByZXR1cm47CiAK
ICAgICBhdXRvIHJlbmRlclBhc3NFbmNvZGVyID0gbV9iYWNraW5nLT5iZWdpblJlbmRlclBhc3Mo
KmNvbnZlcnRlZERlc2NyaXB0b3IpOwotICAgIGF1dG8gcmVtb3RlUmVuZGVyUGFzc0VuY29kZXIg
PSBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRlKHJlbmRlclBhc3NFbmNvZGVyLCBtX29i
amVjdFJlZ2lzdHJ5LCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIpOwotICAgIG1fb2JqZWN0SGVh
cC5hZGRPYmplY3QocmVtb3RlUmVuZGVyUGFzc0VuY29kZXIpOworICAgIGF1dG8gcmVtb3RlUmVu
ZGVyUGFzc0VuY29kZXIgPSBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRlKHJlbmRlclBh
c3NFbmNvZGVyLCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIpOworICAgIG1fb2JqZWN0SGVhcC5h
ZGRPYmplY3QoaWRlbnRpZmllciwgcmVtb3RlUmVuZGVyUGFzc0VuY29kZXIpOwogfQogCiB2b2lk
IFJlbW90ZUNvbW1hbmRFbmNvZGVyOjpiZWdpbkNvbXB1dGVQYXNzKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViR1BVOjpDb21wdXRlUGFzc0Rlc2NyaXB0b3I+JiBkZXNjcmlwdG9yLCBXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6Q29t
cHV0ZVBhc3NEZXNjcmlwdG9yPiBjb252ZXJ0ZWREZXNjcmlwdG9yOwogICAgIGlmIChkZXNjcmlw
dG9yKSB7Ci0gICAgICAgIGF1dG8gcmVzdWx0RGVzY3JpcHRvciA9IG1fb2JqZWN0UmVnaXN0cnku
Y29udmVydEZyb21CYWNraW5nKCpkZXNjcmlwdG9yKTsKKyAgICAgICAgYXV0byByZXN1bHREZXNj
cmlwdG9yID0gbV9vYmplY3RIZWFwLmNvbnZlcnRGcm9tQmFja2luZygqZGVzY3JpcHRvcik7CiAg
ICAgICAgIEFTU0VSVChyZXN1bHREZXNjcmlwdG9yKTsKICAgICAgICAgY29udmVydGVkRGVzY3Jp
cHRvciA9IFdURk1vdmUocmVzdWx0RGVzY3JpcHRvcik7CiAgICAgICAgIGlmICghY29udmVydGVk
RGVzY3JpcHRvcikKQEAgLTc2LDggKzcwLDggQEAgdm9pZCBSZW1vdGVDb21tYW5kRW5jb2Rlcjo6
YmVnaW5Db21wdXRlUGFzcyhjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkdQVTo6Q29tcHV0ZVAKICAg
ICB9CiAKICAgICBhdXRvIGNvbXB1dGVQYXNzRW5jb2RlciA9IG1fYmFja2luZy0+YmVnaW5Db21w
dXRlUGFzcygqY29udmVydGVkRGVzY3JpcHRvcik7Ci0gICAgYXV0byBjb21wdXRlUmVuZGVyUGFz
c0VuY29kZXIgPSBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OmNyZWF0ZShjb21wdXRlUGFzc0Vu
Y29kZXIsIG1fb2JqZWN0UmVnaXN0cnksIG1fb2JqZWN0SGVhcCwgaWRlbnRpZmllcik7Ci0gICAg
bV9vYmplY3RIZWFwLmFkZE9iamVjdChjb21wdXRlUmVuZGVyUGFzc0VuY29kZXIpOworICAgIGF1
dG8gY29tcHV0ZVJlbmRlclBhc3NFbmNvZGVyID0gUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpj
cmVhdGUoY29tcHV0ZVBhc3NFbmNvZGVyLCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIpOworICAg
IG1fb2JqZWN0SGVhcC5hZGRPYmplY3QoaWRlbnRpZmllciwgY29tcHV0ZVJlbmRlclBhc3NFbmNv
ZGVyKTsKIH0KIAogdm9pZCBSZW1vdGVDb21tYW5kRW5jb2Rlcjo6Y29weUJ1ZmZlclRvQnVmZmVy
KApAQCAtODcsOSArODEsOSBAQCB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVy
VG9CdWZmZXIoCiAgICAgUEFMOjpXZWJHUFU6OlNpemU2NCBkZXN0aW5hdGlvbk9mZnNldCwKICAg
ICBQQUw6OldlYkdQVTo6U2l6ZTY0IHNpemUpCiB7Ci0gICAgYXV0byBjb252ZXJ0ZWRTb3VyY2Ug
PSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhzb3VyY2UpOworICAg
IGF1dG8gY29udmVydGVkU291cmNlID0gbV9vYmplY3RIZWFwLmNvbnZlcnRCdWZmZXJGcm9tQmFj
a2luZyhzb3VyY2UpOwogICAgIEFTU0VSVChjb252ZXJ0ZWRTb3VyY2UpOwotICAgIGF1dG8gY29u
dmVydGVkRGVzdGluYXRpb24gPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRCdWZmZXJGcm9tQmFj
a2luZyhzb3VyY2UpOworICAgIGF1dG8gY29udmVydGVkRGVzdGluYXRpb24gPSBtX29iamVjdEhl
YXAuY29udmVydEJ1ZmZlckZyb21CYWNraW5nKHNvdXJjZSk7CiAgICAgQVNTRVJUKGNvbnZlcnRl
ZERlc3RpbmF0aW9uKTsKICAgICBpZiAoIWNvbnZlcnRlZFNvdXJjZSB8fCAhY29udmVydGVkRGVz
dGluYXRpb24pCiAgICAgICAgIHJldHVybjsKQEAgLTEwMiwxMSArOTYsMTEgQEAgdm9pZCBSZW1v
dGVDb21tYW5kRW5jb2Rlcjo6Y29weUJ1ZmZlclRvVGV4dHVyZSgKICAgICBjb25zdCBXZWJHUFU6
OkltYWdlQ29weVRleHR1cmUmIGRlc3RpbmF0aW9uLAogICAgIGNvbnN0IFdlYkdQVTo6RXh0ZW50
M0QmIGNvcHlTaXplKQogewotICAgIGF1dG8gY29udmVydGVkU291cmNlID0gbV9vYmplY3RSZWdp
c3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoc291cmNlKTsKKyAgICBhdXRvIGNvbnZlcnRlZFNvdXJj
ZSA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0RnJvbUJhY2tpbmcoc291cmNlKTsKICAgICBBU1NFUlQo
Y29udmVydGVkU291cmNlKTsKLSAgICBhdXRvIGNvbnZlcnRlZERlc3RpbmF0aW9uID0gbV9vYmpl
Y3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzdGluYXRpb24pOworICAgIGF1dG8gY29u
dmVydGVkRGVzdGluYXRpb24gPSBtX29iamVjdEhlYXAuY29udmVydEZyb21CYWNraW5nKGRlc3Rp
bmF0aW9uKTsKICAgICBBU1NFUlQoY29udmVydGVkRGVzdGluYXRpb24pOwotICAgIGF1dG8gY29u
dmVydGVkQ29weVNpemUgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhjb3B5
U2l6ZSk7CisgICAgYXV0byBjb252ZXJ0ZWRDb3B5U2l6ZSA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0
RnJvbUJhY2tpbmcoY29weVNpemUpOwogICAgIEFTU0VSVChjb252ZXJ0ZWRDb3B5U2l6ZSk7CiAg
ICAgaWYgKCFjb252ZXJ0ZWRTb3VyY2UgfHwgIWNvbnZlcnRlZERlc3RpbmF0aW9uIHx8ICFjb252
ZXJ0ZWRDb3B5U2l6ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTE5LDExICsxMTMsMTEgQEAgdm9p
ZCBSZW1vdGVDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb0J1ZmZlcigKICAgICBjb25zdCBX
ZWJHUFU6OkltYWdlQ29weUJ1ZmZlciYgZGVzdGluYXRpb24sCiAgICAgY29uc3QgV2ViR1BVOjpF
eHRlbnQzRCYgY29weVNpemUpCiB7Ci0gICAgYXV0byBjb252ZXJ0ZWRTb3VyY2UgPSBtX29iamVj
dFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhzb3VyY2UpOworICAgIGF1dG8gY29udmVydGVk
U291cmNlID0gbV9vYmplY3RIZWFwLmNvbnZlcnRGcm9tQmFja2luZyhzb3VyY2UpOwogICAgIEFT
U0VSVChjb252ZXJ0ZWRTb3VyY2UpOwotICAgIGF1dG8gY29udmVydGVkRGVzdGluYXRpb24gPSBt
X29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhkZXN0aW5hdGlvbik7CisgICAgYXV0
byBjb252ZXJ0ZWREZXN0aW5hdGlvbiA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0RnJvbUJhY2tpbmco
ZGVzdGluYXRpb24pOwogICAgIEFTU0VSVChjb252ZXJ0ZWREZXN0aW5hdGlvbik7Ci0gICAgYXV0
byBjb252ZXJ0ZWRDb3B5U2l6ZSA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5n
KGNvcHlTaXplKTsKKyAgICBhdXRvIGNvbnZlcnRlZENvcHlTaXplID0gbV9vYmplY3RIZWFwLmNv
bnZlcnRGcm9tQmFja2luZyhjb3B5U2l6ZSk7CiAgICAgQVNTRVJUKGNvbnZlcnRlZENvcHlTaXpl
KTsKICAgICBpZiAoIWNvbnZlcnRlZFNvdXJjZSB8fCAhY29udmVydGVkRGVzdGluYXRpb24gfHwg
IWNvbnZlcnRlZENvcHlTaXplKQogICAgICAgICByZXR1cm47CkBAIC0xMzYsMTEgKzEzMCwxMSBA
QCB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRvVGV4dHVyZSgKICAgICBj
b25zdCBXZWJHUFU6OkltYWdlQ29weVRleHR1cmUmIGRlc3RpbmF0aW9uLAogICAgIGNvbnN0IFdl
YkdQVTo6RXh0ZW50M0QmIGNvcHlTaXplKQogewotICAgIGF1dG8gY29udmVydGVkU291cmNlID0g
bV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoc291cmNlKTsKKyAgICBhdXRvIGNv
bnZlcnRlZFNvdXJjZSA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0RnJvbUJhY2tpbmcoc291cmNlKTsK
ICAgICBBU1NFUlQoY29udmVydGVkU291cmNlKTsKLSAgICBhdXRvIGNvbnZlcnRlZERlc3RpbmF0
aW9uID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzdGluYXRpb24pOwor
ICAgIGF1dG8gY29udmVydGVkRGVzdGluYXRpb24gPSBtX29iamVjdEhlYXAuY29udmVydEZyb21C
YWNraW5nKGRlc3RpbmF0aW9uKTsKICAgICBBU1NFUlQoY29udmVydGVkRGVzdGluYXRpb24pOwot
ICAgIGF1dG8gY29udmVydGVkQ29weVNpemUgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9t
QmFja2luZyhjb3B5U2l6ZSk7CisgICAgYXV0byBjb252ZXJ0ZWRDb3B5U2l6ZSA9IG1fb2JqZWN0
SGVhcC5jb252ZXJ0RnJvbUJhY2tpbmcoY29weVNpemUpOwogICAgIEFTU0VSVChjb252ZXJ0ZWRD
b3B5U2l6ZSk7CiAgICAgaWYgKCFjb252ZXJ0ZWRTb3VyY2UgfHwgIWNvbnZlcnRlZERlc3RpbmF0
aW9uIHx8ICFjb252ZXJ0ZWRDb3B5U2l6ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTUzLDcgKzE0
Nyw3IEBAIHZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXI6OmZpbGxCdWZmZXIoCiAgICAgUEFMOjpX
ZWJHUFU6OlNpemU2NCBkZXN0aW5hdGlvbk9mZnNldCwKICAgICBQQUw6OldlYkdQVTo6U2l6ZTY0
IHNpemUpCiB7Ci0gICAgYXV0byBjb252ZXJ0ZWREZXN0aW5hdGlvbiA9IG1fb2JqZWN0UmVnaXN0
cnkuY29udmVydEJ1ZmZlckZyb21CYWNraW5nKGRlc3RpbmF0aW9uKTsKKyAgICBhdXRvIGNvbnZl
cnRlZERlc3RpbmF0aW9uID0gbV9vYmplY3RIZWFwLmNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhk
ZXN0aW5hdGlvbik7CiAgICAgQVNTRVJUKGNvbnZlcnRlZERlc3RpbmF0aW9uKTsKICAgICBpZiAo
IWNvbnZlcnRlZERlc3RpbmF0aW9uKQogICAgICAgICByZXR1cm47CkBAIC0xNzgsNyArMTcyLDcg
QEAgdm9pZCBSZW1vdGVDb21tYW5kRW5jb2Rlcjo6aW5zZXJ0RGVidWdNYXJrZXIoU3RyaW5nJiYg
bWFya2VyTGFiZWwpCiAKIHZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXI6OndyaXRlVGltZXN0YW1w
KFdlYkdQVUlkZW50aWZpZXIgcXVlcnlTZXQsIFBBTDo6V2ViR1BVOjpTaXplMzIgcXVlcnlJbmRl
eCkKIHsKLSAgICBhdXRvIGNvbnZlcnRlZFF1ZXJ5U2V0ID0gbV9vYmplY3RSZWdpc3RyeS5jb252
ZXJ0UXVlcnlTZXRGcm9tQmFja2luZyhxdWVyeVNldCk7CisgICAgYXV0byBjb252ZXJ0ZWRRdWVy
eVNldCA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0UXVlcnlTZXRGcm9tQmFja2luZyhxdWVyeVNldCk7
CiAgICAgQVNTRVJUKGNvbnZlcnRlZFF1ZXJ5U2V0KTsKICAgICBpZiAoIWNvbnZlcnRlZFF1ZXJ5
U2V0KQogICAgICAgICByZXR1cm47CkBAIC0xOTMsOSArMTg3LDkgQEAgdm9pZCBSZW1vdGVDb21t
YW5kRW5jb2Rlcjo6cmVzb2x2ZVF1ZXJ5U2V0KAogICAgIFdlYkdQVUlkZW50aWZpZXIgZGVzdGlu
YXRpb24sCiAgICAgUEFMOjpXZWJHUFU6OlNpemU2NCBkZXN0aW5hdGlvbk9mZnNldCkKIHsKLSAg
ICBhdXRvIGNvbnZlcnRlZFF1ZXJ5U2V0ID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0UXVlcnlT
ZXRGcm9tQmFja2luZyhxdWVyeVNldCk7CisgICAgYXV0byBjb252ZXJ0ZWRRdWVyeVNldCA9IG1f
b2JqZWN0SGVhcC5jb252ZXJ0UXVlcnlTZXRGcm9tQmFja2luZyhxdWVyeVNldCk7CiAgICAgQVNT
RVJUKGNvbnZlcnRlZFF1ZXJ5U2V0KTsKLSAgICBhdXRvIGNvbnZlcnRlZERlc3RpbmF0aW9uID0g
bV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoZGVzdGluYXRpb24pOwor
ICAgIGF1dG8gY29udmVydGVkRGVzdGluYXRpb24gPSBtX29iamVjdEhlYXAuY29udmVydEJ1ZmZl
ckZyb21CYWNraW5nKGRlc3RpbmF0aW9uKTsKICAgICBBU1NFUlQoY29udmVydGVkRGVzdGluYXRp
b24pOwogICAgIGlmICghY29udmVydGVkUXVlcnlTZXQgfHwgIWNvbnZlcnRlZERlc3RpbmF0aW9u
KQogICAgICAgICByZXR1cm47CkBAIC0yMDUsMTQgKzE5OSwxNCBAQCB2b2lkIFJlbW90ZUNvbW1h
bmRFbmNvZGVyOjpyZXNvbHZlUXVlcnlTZXQoCiAKIHZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXI6
OmZpbmlzaChjb25zdCBXZWJHUFU6OkNvbW1hbmRCdWZmZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9y
LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBjb252ZXJ0ZWREZXNj
cmlwdG9yID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7
CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RIZWFwLmNvbnZlcnRGcm9t
QmFja2luZyhkZXNjcmlwdG9yKTsKICAgICBBU1NFUlQoY29udmVydGVkRGVzY3JpcHRvcik7CiAg
ICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRv
IGNvbW1hbmRCdWZmZXIgPSBtX2JhY2tpbmctPmZpbmlzaCgqY29udmVydGVkRGVzY3JpcHRvcik7
Ci0gICAgYXV0byByZW1vdGVDb21tYW5kQnVmZmVyID0gUmVtb3RlQ29tbWFuZEJ1ZmZlcjo6Y3Jl
YXRlKGNvbW1hbmRCdWZmZXIsIG1fb2JqZWN0UmVnaXN0cnksIG1fb2JqZWN0SGVhcCwgaWRlbnRp
Zmllcik7Ci0gICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChyZW1vdGVDb21tYW5kQnVmZmVyKTsK
KyAgICBhdXRvIHJlbW90ZUNvbW1hbmRCdWZmZXIgPSBSZW1vdGVDb21tYW5kQnVmZmVyOjpjcmVh
dGUoY29tbWFuZEJ1ZmZlciwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVj
dEhlYXAuYWRkT2JqZWN0KGlkZW50aWZpZXIsIHJlbW90ZUNvbW1hbmRCdWZmZXIpOwogfQogCiB2
b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyOjpzZXRMYWJlbChTdHJpbmcmJiBsYWJlbCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29t
bWFuZEVuY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlQ29tbWFuZEVuY29kZXIuaAppbmRleCBiYjYwNGFhN2M4YWRkYjRjMWYwYjllMDAwZGNi
YmFhZjQ5ODcyMjc2Li4wYjcxYTU4NTEzNTdiMjhiOTFmNDkxMDI3NTBmM2FkNDVmMjQ0OTAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZUNvbW1hbmRFbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVDb21tYW5kRW5jb2Rlci5oCkBAIC00NiwyMyArNDYsMjMgQEAgc3RydWN0
IENvbXB1dGVQYXNzRGVzY3JpcHRvcjsKIHN0cnVjdCBJbWFnZUNvcHlCdWZmZXI7CiBzdHJ1Y3Qg
SW1hZ2VDb3B5VGV4dHVyZTsKIGNsYXNzIE9iamVjdEhlYXA7Ci1jbGFzcyBPYmplY3RSZWdpc3Ry
eTsKIHN0cnVjdCBSZW5kZXJQYXNzRGVzY3JpcHRvcjsKIH0KIAogY2xhc3MgUmVtb3RlQ29tbWFu
ZEVuY29kZXIgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3Rl
Q29tbWFuZEVuY29kZXI+IGNyZWF0ZShQQUw6OldlYkdQVTo6Q29tbWFuZEVuY29kZXImIGNvbW1h
bmRFbmNvZGVyLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BV
OjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisg
ICAgc3RhdGljIFJlZjxSZW1vdGVDb21tYW5kRW5jb2Rlcj4gY3JlYXRlKFBBTDo6V2ViR1BVOjpD
b21tYW5kRW5jb2RlciYgY29tbWFuZEVuY29kZXIsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0
SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgUmVtb3RlQ29tbWFuZEVuY29kZXIoY29tbWFuZEVuY29kZXIsIG9iamVj
dFJlZ2lzdHJ5LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFJlbW90ZUNvbW1hbmRFbmNvZGVyKGNvbW1hbmRFbmNvZGVyLCBvYmplY3RIZWFw
LCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlQ29tbWFuZEVuY29k
ZXIoKTsKIAotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgT2JqZWN0UmVnaXN0cnk7CisgICAg
UEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyJiBiYWNraW5nKCkgeyByZXR1cm4gbV9iYWNraW5n
OyB9CiAKLSAgICBSZW1vdGVDb21tYW5kRW5jb2RlcihQQUw6OldlYkdQVTo6Q29tbWFuZEVuY29k
ZXImLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BV
SWRlbnRpZmllcik7Citwcml2YXRlOgorICAgIFJlbW90ZUNvbW1hbmRFbmNvZGVyKFBBTDo6V2Vi
R1BVOjpDb21tYW5kRW5jb2RlciYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZp
ZXIpOwogCiAgICAgUmVtb3RlQ29tbWFuZEVuY29kZXIoY29uc3QgUmVtb3RlQ29tbWFuZEVuY29k
ZXImKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVDb21tYW5kRW5jb2RlcihSZW1vdGVDb21tYW5kRW5j
b2RlciYmKSA9IGRlbGV0ZTsKQEAgLTExOSw3ICsxMTksNiBAQCBwcml2YXRlOgogICAgIHZvaWQg
c2V0TGFiZWwoU3RyaW5nJiYpOwogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2Rl
cj4gbV9iYWNraW5nOwotICAgIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0
cnk7CiAgICAgV2ViR1BVOjpPYmplY3RIZWFwJiBtX29iamVjdEhlYXA7CiAgICAgV2ViR1BVSWRl
bnRpZmllciBtX2lkZW50aWZpZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFzc0VuY29kZXIuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFzc0Vu
Y29kZXIuY3BwCmluZGV4IDhiMTIzMzE1OTc0ZGE2NGFiMTE4ZjI4NTJmMjkwYzdjMmQ1YmNkZWMu
LjA2ZTZhZDgwOGE1NzVkOWNhODM2NjBjNGUxMDIzYjBmOTQ0M2JmMDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBhc3NF
bmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlci5jcHAKQEAgLTI5LDI4ICsyOSwyMiBAQAogI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKLSNpbmNs
dWRlICJXZWJHUFVPYmplY3RSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJH
UFUvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1S
ZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlcihQQUw6Oldl
YkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyJiBjb21wdXRlUGFzc0VuY29kZXIsIFdlYkdQVTo6T2Jq
ZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhl
YXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK1JlbW90ZUNvbXB1dGVQYXNzRW5jb2Rl
cjo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyKFBBTDo6V2ViR1BVOjpDb21wdXRlUGFzc0VuY29k
ZXImIGNvbXB1dGVQYXNzRW5jb2RlciwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBX
ZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2JhY2tpbmcoY29tcHV0ZVBhc3NF
bmNvZGVyKQotICAgICwgbV9vYmplY3RSZWdpc3RyeShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1f
b2JqZWN0SGVhcChvYmplY3RIZWFwKQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7
Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5hZGRPYmplY3QobV9pZGVudGlmaWVyLCBtX2JhY2tpbmcp
OwogfQogCi1SZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6On5SZW1vdGVDb21wdXRlUGFzc0VuY29k
ZXIoKQotewotICAgIG1fb2JqZWN0UmVnaXN0cnkucmVtb3ZlT2JqZWN0KG1faWRlbnRpZmllcik7
Ci19CitSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6On5SZW1vdGVDb21wdXRlUGFzc0VuY29kZXIo
KSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpzZXRQaXBlbGlu
ZShXZWJHUFVJZGVudGlmaWVyIGNvbXB1dGVQaXBlbGluZSkKIHsKLSAgICBhdXRvIGNvbnZlcnRl
ZENvbXB1dGVQaXBlbGluZSA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydENvbXB1dGVQaXBlbGlu
ZUZyb21CYWNraW5nKGNvbXB1dGVQaXBlbGluZSk7CisgICAgYXV0byBjb252ZXJ0ZWRDb21wdXRl
UGlwZWxpbmUgPSBtX29iamVjdEhlYXAuY29udmVydENvbXB1dGVQaXBlbGluZUZyb21CYWNraW5n
KGNvbXB1dGVQaXBlbGluZSk7CiAgICAgQVNTRVJUKGNvbnZlcnRlZENvbXB1dGVQaXBlbGluZSk7
CiAgICAgaWYgKCFjb252ZXJ0ZWRDb21wdXRlUGlwZWxpbmUpCiAgICAgICAgIHJldHVybjsKQEAg
LTY1LDcgKzU5LDcgQEAgdm9pZCBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OmRpc3BhdGNoKFBB
TDo6V2ViR1BVOjpTaXplMzIgeCwgc3RkOjpvcHRpb25hbDxQQUwKIAogdm9pZCBSZW1vdGVDb21w
dXRlUGFzc0VuY29kZXI6OmRpc3BhdGNoSW5kaXJlY3QoV2ViR1BVSWRlbnRpZmllciBpbmRpcmVj
dEJ1ZmZlciwgUEFMOjpXZWJHUFU6OlNpemU2NCBpbmRpcmVjdE9mZnNldCkKIHsKLSAgICBhdXRv
IGNvbnZlcnRlZEluZGlyZWN0QnVmZmVyID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0QnVmZmVy
RnJvbUJhY2tpbmcoaW5kaXJlY3RCdWZmZXIpOworICAgIGF1dG8gY29udmVydGVkSW5kaXJlY3RC
dWZmZXIgPSBtX29iamVjdEhlYXAuY29udmVydEJ1ZmZlckZyb21CYWNraW5nKGluZGlyZWN0QnVm
ZmVyKTsKICAgICBBU1NFUlQoY29udmVydGVkSW5kaXJlY3RCdWZmZXIpOwogICAgIGlmICghY29u
dmVydGVkSW5kaXJlY3RCdWZmZXIpCiAgICAgICAgIHJldHVybjsKQEAgLTc1LDcgKzY5LDcgQEAg
dm9pZCBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OmRpc3BhdGNoSW5kaXJlY3QoV2ViR1BVSWRl
bnRpZmllciBpbmRpcmVjdEJ1ZmZlciwKIAogdm9pZCBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6
OmJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoV2ViR1BVSWRlbnRpZmllciBxdWVyeVNldCwg
UEFMOjpXZWJHUFU6OlNpemUzMiBxdWVyeUluZGV4KQogewotICAgIGF1dG8gY29udmVydGVkUXVl
cnlTZXQgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRRdWVyeVNldEZyb21CYWNraW5nKHF1ZXJ5
U2V0KTsKKyAgICBhdXRvIGNvbnZlcnRlZFF1ZXJ5U2V0ID0gbV9vYmplY3RIZWFwLmNvbnZlcnRR
dWVyeVNldEZyb21CYWNraW5nKHF1ZXJ5U2V0KTsKICAgICBBU1NFUlQoY29udmVydGVkUXVlcnlT
ZXQpOwogICAgIGlmICghY29udmVydGVkUXVlcnlTZXQpCiAgICAgICAgIHJldHVybjsKQEAgLTk2
LDcgKzkwLDcgQEAgdm9pZCBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OmVuZFBhc3MoKQogdm9p
ZCBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OnNldEJpbmRHcm91cChQQUw6OldlYkdQVTo6SW5k
ZXgzMiBpbmRleCwgV2ViR1BVSWRlbnRpZmllciBiaW5kR3JvdXAsCiAgICAgc3RkOjpvcHRpb25h
bDxWZWN0b3I8UEFMOjpXZWJHUFU6OkJ1ZmZlckR5bmFtaWNPZmZzZXQ+PiYmIG9mZnNldHMpCiB7
Ci0gICAgYXV0byBjb252ZXJ0ZWRCaW5kR3JvdXAgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRC
aW5kR3JvdXBGcm9tQmFja2luZyhiaW5kR3JvdXApOworICAgIGF1dG8gY29udmVydGVkQmluZEdy
b3VwID0gbV9vYmplY3RIZWFwLmNvbnZlcnRCaW5kR3JvdXBGcm9tQmFja2luZyhiaW5kR3JvdXAp
OwogICAgIEFTU0VSVChjb252ZXJ0ZWRCaW5kR3JvdXApOwogICAgIGlmICghY29udmVydGVkQmlu
ZEdyb3VwKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlci5oIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFzc0VuY29k
ZXIuaAppbmRleCAwMGY5ZGQzMGQ3MTY1ZWJmOThkM2JhNWE3ZmVhOGEwMWI2MGU5OGI2Li4zOTEz
MDJhNzQ0ZjBkMGVkMjMzYzM4ZGQ5ZDgwMjMyNjZhMjI2OWFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5jb2Rl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
Q29tcHV0ZVBhc3NFbmNvZGVyLmgKQEAgLTQxLDIyICs0MSwyMiBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogbmFtZXNwYWNlIFdlYkdQVSB7CiBjbGFzcyBPYmplY3RIZWFwOwotY2xhc3MgT2JqZWN0
UmVnaXN0cnk7CiB9CiAKIGNsYXNzIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlciBmaW5hbCA6IHB1
YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI+
IGNyZWF0ZShQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyJiBjb21wdXRlUGFzc0VuY29k
ZXIsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVj
dEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICBzdGF0
aWMgUmVmPFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcj4gY3JlYXRlKFBBTDo6V2ViR1BVOjpDb21w
dXRlUGFzc0VuY29kZXImIGNvbXB1dGVQYXNzRW5jb2RlciwgV2ViR1BVOjpPYmplY3RIZWFwJiBv
YmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXIoY29tcHV0ZVBhc3NF
bmNvZGVyLCBvYmplY3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXIoY29tcHV0ZVBh
c3NFbmNvZGVyLCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVh
bCB+UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyKCk7CiAKLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNs
YXNzIE9iamVjdFJlZ2lzdHJ5OworICAgIFBBTDo6V2ViR1BVOjpDb21wdXRlUGFzc0VuY29kZXIm
IGJhY2tpbmcoKSB7IHJldHVybiBtX2JhY2tpbmc7IH0KIAotICAgIFJlbW90ZUNvbXB1dGVQYXNz
RW5jb2RlcihQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyJiwgV2ViR1BVOjpPYmplY3RS
ZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOworcHJpdmF0
ZToKKyAgICBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXIoUEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNz
RW5jb2RlciYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAg
UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyKGNvbnN0IFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlciYp
ID0gZGVsZXRlOwogICAgIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlcihSZW1vdGVDb21wdXRlUGFz
c0VuY29kZXImJikgPSBkZWxldGU7CkBAIC04NCw3ICs4NCw2IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBzZXRMYWJlbChTdHJpbmcmJik7CiAKICAgICBSZWY8UEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNz
RW5jb2Rlcj4gbV9iYWNraW5nOwotICAgIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0
UmVnaXN0cnk7CiAgICAgV2ViR1BVOjpPYmplY3RIZWFwJiBtX29iamVjdEhlYXA7CiAgICAgV2Vi
R1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGlwZWxpbmUuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGlw
ZWxpbmUuY3BwCmluZGV4IDcwMTZhMWY5NzkwOWVjMmI0YjZmZmQwZjFiOGIzNGJmNGYxMWU2OGYu
LjQxNDQxNWEzOWMyNzQ5NTIxNmUzZGJjNDBiZGEyZWI1N2Y4ODc1OTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBpcGVs
aW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZUNvbXB1dGVQaXBlbGluZS5jcHAKQEAgLTMwLDMxICszMCwyNSBAQAogCiAjaW5jbHVkZSAi
UmVtb3RlQmluZEdyb3VwTGF5b3V0LmgiCiAjaW5jbHVkZSAiV2ViR1BVT2JqZWN0SGVhcC5oIgot
I2luY2x1ZGUgIldlYkdQVU9iamVjdFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNz
L1dlYkdQVS9XZWJHUFVCaW5kR3JvdXBMYXlvdXQuaD4KICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3Mv
V2ViR1BVL1dlYkdQVUNvbXB1dGVQaXBlbGluZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAot
UmVtb3RlQ29tcHV0ZVBpcGVsaW5lOjpSZW1vdGVDb21wdXRlUGlwZWxpbmUoUEFMOjpXZWJHUFU6
OkNvbXB1dGVQaXBlbGluZSYgY29tcHV0ZVBpcGVsaW5lLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5
JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCitSZW1vdGVDb21wdXRlUGlwZWxpbmU6OlJlbW90ZUNvbXB1
dGVQaXBlbGluZShQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lJiBjb21wdXRlUGlwZWxpbmUs
IFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyKQogICAgIDogbV9iYWNraW5nKGNvbXB1dGVQaXBlbGluZSkKLSAgICAsIG1fb2JqZWN0UmVn
aXN0cnkob2JqZWN0UmVnaXN0cnkpCiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkKICAg
ICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogewotICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRk
T2JqZWN0KG1faWRlbnRpZmllciwgbV9iYWNraW5nKTsKIH0KIAotUmVtb3RlQ29tcHV0ZVBpcGVs
aW5lOjp+UmVtb3RlQ29tcHV0ZVBpcGVsaW5lKCkKLXsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LnJl
bW92ZU9iamVjdChtX2lkZW50aWZpZXIpOwotfQorUmVtb3RlQ29tcHV0ZVBpcGVsaW5lOjp+UmVt
b3RlQ29tcHV0ZVBpcGVsaW5lKCkgPSBkZWZhdWx0OwogCiB2b2lkIFJlbW90ZUNvbXB1dGVQaXBl
bGluZTo6Z2V0QmluZEdyb3VwTGF5b3V0KHVpbnQzMl90IGluZGV4LCBXZWJHUFVJZGVudGlmaWVy
IGlkZW50aWZpZXIpCiB7CiAgICAgYXV0byBiaW5kR3JvdXBMYXlvdXQgPSBtX2JhY2tpbmctPmdl
dEJpbmRHcm91cExheW91dChpbmRleCk7Ci0gICAgYXV0byByZW1vdGVCaW5kR3JvdXBMYXlvdXQg
PSBSZW1vdGVCaW5kR3JvdXBMYXlvdXQ6OmNyZWF0ZShiaW5kR3JvdXBMYXlvdXQsIG1fb2JqZWN0
UmVnaXN0cnksIG1fb2JqZWN0SGVhcCwgaWRlbnRpZmllcik7Ci0gICAgbV9vYmplY3RIZWFwLmFk
ZE9iamVjdChyZW1vdGVCaW5kR3JvdXBMYXlvdXQpOworICAgIGF1dG8gcmVtb3RlQmluZEdyb3Vw
TGF5b3V0ID0gUmVtb3RlQmluZEdyb3VwTGF5b3V0OjpjcmVhdGUoYmluZEdyb3VwTGF5b3V0LCBt
X29iamVjdEhlYXAsIGlkZW50aWZpZXIpOworICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QoaWRl
bnRpZmllciwgcmVtb3RlQmluZEdyb3VwTGF5b3V0KTsKIH0KIAogdm9pZCBSZW1vdGVDb21wdXRl
UGlwZWxpbmU6OnNldExhYmVsKFN0cmluZyYmIGxhYmVsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGlwZWxpbmUuaCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBp
cGVsaW5lLmgKaW5kZXggODRkYWFiODZjYzY5ZGI0ZjMzNTFlMWZjMTBlZjM0NjNiYTc3N2RiNy4u
ZmY4NzExYWNlZGE1NzZhMWZlMGVlNWRiZmE0YTA5N2ZhNWY1MzI5MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGlwZWxp
bmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZUNvbXB1dGVQaXBlbGluZS5oCkBAIC00MCwyMiArNDAsMjIgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogY2xhc3MgT2JqZWN0SGVhcDsKLWNsYXNzIE9iamVjdFJl
Z2lzdHJ5OwogfQogCiBjbGFzcyBSZW1vdGVDb21wdXRlUGlwZWxpbmUgZmluYWwgOiBwdWJsaWMg
SVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlQ29tcHV0ZVBpcGVsaW5lPiBjcmVhdGUo
UEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZSYgY29tcHV0ZVBpcGVsaW5lLCBXZWJHUFU6Ok9i
amVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RI
ZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxSZW1vdGVD
b21wdXRlUGlwZWxpbmU+IGNyZWF0ZShQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lJiBjb21w
dXRlUGlwZWxpbmUsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRp
ZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVt
b3RlQ29tcHV0ZVBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZSwgb2JqZWN0UmVnaXN0cnksIG9iamVj
dEhlYXAsIGlkZW50aWZpZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3Rl
Q29tcHV0ZVBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikp
OwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90ZUNvbXB1dGVQaXBlbGluZSgpOwogCi1wcml2
YXRlOgotICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKKyAgICBQQUw6OldlYkdQVTo6
Q29tcHV0ZVBpcGVsaW5lJiBiYWNraW5nKCkgeyByZXR1cm4gbV9iYWNraW5nOyB9CiAKLSAgICBS
ZW1vdGVDb21wdXRlUGlwZWxpbmUoUEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZSYsIFdlYkdQ
VTo6T2JqZWN0UmVnaXN0cnkmLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVudGlmaWVy
KTsKK3ByaXZhdGU6CisgICAgUmVtb3RlQ29tcHV0ZVBpcGVsaW5lKFBBTDo6V2ViR1BVOjpDb21w
dXRlUGlwZWxpbmUmLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAog
ICAgIFJlbW90ZUNvbXB1dGVQaXBlbGluZShjb25zdCBSZW1vdGVDb21wdXRlUGlwZWxpbmUmKSA9
IGRlbGV0ZTsKICAgICBSZW1vdGVDb21wdXRlUGlwZWxpbmUoUmVtb3RlQ29tcHV0ZVBpcGVsaW5l
JiYpID0gZGVsZXRlOwpAQCAtNjksNyArNjksNiBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0TGFi
ZWwoU3RyaW5nJiYpOwogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmU+IG1f
YmFja2luZzsKLSAgICBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBtX29iamVjdFJlZ2lzdHJ5Owog
ICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFwOwogICAgIFdlYkdQVUlkZW50aWZp
ZXIgbV9pZGVudGlmaWVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRGV2aWNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRGV2aWNlLmNwcAppbmRleCA4NDVjNDNiNGQxNDE1
MjNkYTY0MDliZTgwNDQzODY4MWNjYmYzZWJhLi45ZGQ4YmIwYWMyZTJlY2UzZTY4NjM0YzA2MzYw
ZjJiNDNjY2I2MThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZURldmljZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVEZXZpY2UuY3BwCkBAIC00Myw3ICs0Myw2IEBACiAjaW5j
bHVkZSAiUmVtb3RlVGV4dHVyZS5oIgogI2luY2x1ZGUgIldlYkdQVUNvbW1hbmRFbmNvZGVyRGVz
Y3JpcHRvci5oIgogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKLSNpbmNsdWRlICJXZWJH
UFVPYmplY3RSZWdpc3RyeS5oIgogI2luY2x1ZGUgIldlYkdQVU91dE9mTWVtb3J5RXJyb3IuaCIK
ICNpbmNsdWRlICJXZWJHUFVWYWxpZGF0aW9uRXJyb3IuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhp
Y3MvV2ViR1BVL1dlYkdQVUJpbmRHcm91cC5oPgpAQCAtNzcsMTkgKzc2LDE0IEBACiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi1SZW1vdGVEZXZpY2U6OlJlbW90ZURldmljZShQQUw6OldlYkdQVTo6
RGV2aWNlJiBkZXZpY2UsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBX
ZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmll
cikKK1JlbW90ZURldmljZTo6UmVtb3RlRGV2aWNlKFBBTDo6V2ViR1BVOjpEZXZpY2UmIGRldmlj
ZSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50
aWZpZXIpCiAgICAgOiBtX2JhY2tpbmcoZGV2aWNlKQotICAgICwgbV9vYmplY3RSZWdpc3RyeShv
YmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQogICAgICwgbV9p
ZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5hZGRPYmplY3Qo
bV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOwogfQogCi1SZW1vdGVEZXZpY2U6On5SZW1vdGVEZXZp
Y2UoKQotewotICAgIG1fb2JqZWN0UmVnaXN0cnkucmVtb3ZlT2JqZWN0KG1faWRlbnRpZmllcik7
Ci19CitSZW1vdGVEZXZpY2U6On5SZW1vdGVEZXZpY2UoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVt
b3RlRGV2aWNlOjpkZXN0cm95KCkKIHsKQEAgLTk4LDE1NiArOTIsMTUyIEBAIHZvaWQgUmVtb3Rl
RGV2aWNlOjpkZXN0cm95KCkKIAogdm9pZCBSZW1vdGVEZXZpY2U6OmNyZWF0ZUJ1ZmZlcihjb25z
dCBXZWJHUFU6OkJ1ZmZlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIg
aWRlbnRpZmllcikKIHsKLSAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdFJl
Z2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBhdXRvIGNvbnZlcnRl
ZERlc2NyaXB0b3IgPSBtX29iamVjdEhlYXAuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3Ip
OwogICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKICAgICBpZiAoIWNvbnZlcnRlZERl
c2NyaXB0b3IpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gYnVmZmVyID0gbV9iYWNraW5n
LT5jcmVhdGVCdWZmZXIoKmNvbnZlcnRlZERlc2NyaXB0b3IpOwotICAgIGF1dG8gcmVtb3RlQnVm
ZmVyID0gUmVtb3RlQnVmZmVyOjpjcmVhdGUoYnVmZmVyLCBtX29iamVjdFJlZ2lzdHJ5LCBtX29i
amVjdEhlYXAsIGlkZW50aWZpZXIpOwotICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QocmVtb3Rl
QnVmZmVyKTsKKyAgICBhdXRvIHJlbW90ZUJ1ZmZlciA9IFJlbW90ZUJ1ZmZlcjo6Y3JlYXRlKGJ1
ZmZlciwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVjdEhlYXAuYWRkT2Jq
ZWN0KGlkZW50aWZpZXIsIHJlbW90ZUJ1ZmZlcik7CiB9CiAKIHZvaWQgUmVtb3RlRGV2aWNlOjpj
cmVhdGVUZXh0dXJlKGNvbnN0IFdlYkdQVTo6VGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3Is
IFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIGNvbnZlcnRlZERlc2Ny
aXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsK
KyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdEhlYXAuY29udmVydEZyb21C
YWNraW5nKGRlc2NyaXB0b3IpOwogICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKICAg
ICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8g
dGV4dHVyZSA9IG1fYmFja2luZy0+Y3JlYXRlVGV4dHVyZSgqY29udmVydGVkRGVzY3JpcHRvcik7
Ci0gICAgYXV0byByZW1vdGVUZXh0dXJlID0gUmVtb3RlVGV4dHVyZTo6Y3JlYXRlKHRleHR1cmUs
IG1fb2JqZWN0UmVnaXN0cnksIG1fb2JqZWN0SGVhcCwgaWRlbnRpZmllcik7Ci0gICAgbV9vYmpl
Y3RIZWFwLmFkZE9iamVjdChyZW1vdGVUZXh0dXJlKTsKKyAgICBhdXRvIHJlbW90ZVRleHR1cmUg
PSBSZW1vdGVUZXh0dXJlOjpjcmVhdGUodGV4dHVyZSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVy
KTsKKyAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KGlkZW50aWZpZXIsIHJlbW90ZVRleHR1cmUp
OwogfQogCiB2b2lkIFJlbW90ZURldmljZTo6Y3JlYXRlU2FtcGxlcihjb25zdCBXZWJHUFU6OlNh
bXBsZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIp
CiB7Ci0gICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RSZWdpc3RyeS5jb252
ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9y
ID0gbV9vYmplY3RIZWFwLmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKICAgICBBU1NF
UlQoY29udmVydGVkRGVzY3JpcHRvcik7CiAgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKQog
ICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHNhbXBsZXIgPSBtX2JhY2tpbmctPmNyZWF0ZVNh
bXBsZXIoKmNvbnZlcnRlZERlc2NyaXB0b3IpOwotICAgIGF1dG8gcmVtb3RlU2FtcGxlciA9IFJl
bW90ZVNhbXBsZXI6OmNyZWF0ZShzYW1wbGVyLCBtX29iamVjdFJlZ2lzdHJ5LCBtX29iamVjdEhl
YXAsIGlkZW50aWZpZXIpOwotICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QocmVtb3RlU2FtcGxl
cik7CisgICAgYXV0byByZW1vdGVTYW1wbGVyID0gUmVtb3RlU2FtcGxlcjo6Y3JlYXRlKHNhbXBs
ZXIsIG1fb2JqZWN0SGVhcCwgaWRlbnRpZmllcik7CisgICAgbV9vYmplY3RIZWFwLmFkZE9iamVj
dChpZGVudGlmaWVyLCByZW1vdGVTYW1wbGVyKTsKIH0KIAogdm9pZCBSZW1vdGVEZXZpY2U6Omlt
cG9ydEV4dGVybmFsVGV4dHVyZShjb25zdCBXZWJHUFU6OkV4dGVybmFsVGV4dHVyZURlc2NyaXB0
b3ImIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBhdXRv
IGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2lu
ZyhkZXNjcmlwdG9yKTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdEhl
YXAuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOwogICAgIEFTU0VSVChjb252ZXJ0ZWRE
ZXNjcmlwdG9yKTsKICAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGF1dG8gZXh0ZXJuYWxUZXh0dXJlID0gbV9iYWNraW5nLT5pbXBvcnRFeHRlcm5h
bFRleHR1cmUoKmNvbnZlcnRlZERlc2NyaXB0b3IpOwotICAgIGF1dG8gcmVtb3RlRXh0ZXJuYWxU
ZXh0dXJlID0gUmVtb3RlRXh0ZXJuYWxUZXh0dXJlOjpjcmVhdGUoZXh0ZXJuYWxUZXh0dXJlLCBt
X29iamVjdFJlZ2lzdHJ5LCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIpOwotICAgIG1fb2JqZWN0
SGVhcC5hZGRPYmplY3QocmVtb3RlRXh0ZXJuYWxUZXh0dXJlKTsKKyAgICBhdXRvIHJlbW90ZUV4
dGVybmFsVGV4dHVyZSA9IFJlbW90ZUV4dGVybmFsVGV4dHVyZTo6Y3JlYXRlKGV4dGVybmFsVGV4
dHVyZSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVjdEhlYXAuYWRkT2Jq
ZWN0KGlkZW50aWZpZXIsIHJlbW90ZUV4dGVybmFsVGV4dHVyZSk7CiB9CiAKIHZvaWQgUmVtb3Rl
RGV2aWNlOjpjcmVhdGVCaW5kR3JvdXBMYXlvdXQoY29uc3QgV2ViR1BVOjpCaW5kR3JvdXBMYXlv
dXREZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7
Ci0gICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0
RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0g
bV9vYmplY3RIZWFwLmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKICAgICBBU1NFUlQo
Y29udmVydGVkRGVzY3JpcHRvcik7CiAgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKQogICAg
ICAgICByZXR1cm47CiAKICAgICBhdXRvIGJpbmRHcm91cExheW91dCA9IG1fYmFja2luZy0+Y3Jl
YXRlQmluZEdyb3VwTGF5b3V0KCpjb252ZXJ0ZWREZXNjcmlwdG9yKTsKLSAgICBhdXRvIHJlbW90
ZUJpbmRHcm91cExheW91dCA9IFJlbW90ZUJpbmRHcm91cExheW91dDo6Y3JlYXRlKGJpbmRHcm91
cExheW91dCwgbV9vYmplY3RSZWdpc3RyeSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKLSAg
ICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KHJlbW90ZUJpbmRHcm91cExheW91dCk7CisgICAgYXV0
byByZW1vdGVCaW5kR3JvdXBMYXlvdXQgPSBSZW1vdGVCaW5kR3JvdXBMYXlvdXQ6OmNyZWF0ZShi
aW5kR3JvdXBMYXlvdXQsIG1fb2JqZWN0SGVhcCwgaWRlbnRpZmllcik7CisgICAgbV9vYmplY3RI
ZWFwLmFkZE9iamVjdChpZGVudGlmaWVyLCByZW1vdGVCaW5kR3JvdXBMYXlvdXQpOwogfQogCiB2
b2lkIFJlbW90ZURldmljZTo6Y3JlYXRlUGlwZWxpbmVMYXlvdXQoY29uc3QgV2ViR1BVOjpQaXBl
bGluZUxheW91dERlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRp
ZmllcikKIHsKLSAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5
LmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc2Ny
aXB0b3IgPSBtX29iamVjdEhlYXAuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOwogICAg
IEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKICAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0
b3IpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gcGlwZWxpbmVMYXlvdXQgPSBtX2JhY2tp
bmctPmNyZWF0ZVBpcGVsaW5lTGF5b3V0KCpjb252ZXJ0ZWREZXNjcmlwdG9yKTsKLSAgICBhdXRv
IHJlbW90ZVBpcGVsaW5lTGF5b3V0ID0gUmVtb3RlUGlwZWxpbmVMYXlvdXQ6OmNyZWF0ZShwaXBl
bGluZUxheW91dCwgbV9vYmplY3RSZWdpc3RyeSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsK
LSAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KHJlbW90ZVBpcGVsaW5lTGF5b3V0KTsKKyAgICBh
dXRvIHJlbW90ZVBpcGVsaW5lTGF5b3V0ID0gUmVtb3RlUGlwZWxpbmVMYXlvdXQ6OmNyZWF0ZShw
aXBlbGluZUxheW91dCwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVjdEhl
YXAuYWRkT2JqZWN0KGlkZW50aWZpZXIsIHJlbW90ZVBpcGVsaW5lTGF5b3V0KTsKIH0KIAogdm9p
ZCBSZW1vdGVEZXZpY2U6OmNyZWF0ZUJpbmRHcm91cChjb25zdCBXZWJHUFU6OkJpbmRHcm91cERl
c2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAg
ICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9t
QmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29i
amVjdEhlYXAuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOwogICAgIEFTU0VSVChjb252
ZXJ0ZWREZXNjcmlwdG9yKTsKICAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGF1dG8gYmluZEdyb3VwID0gbV9iYWNraW5nLT5jcmVhdGVCaW5kR3Jv
dXAoKmNvbnZlcnRlZERlc2NyaXB0b3IpOwotICAgIGF1dG8gcmVtb3RlQmluZEdyb3VwID0gUmVt
b3RlQmluZEdyb3VwOjpjcmVhdGUoYmluZEdyb3VwLCBtX29iamVjdFJlZ2lzdHJ5LCBtX29iamVj
dEhlYXAsIGlkZW50aWZpZXIpOwotICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QocmVtb3RlQmlu
ZEdyb3VwKTsKKyAgICBhdXRvIHJlbW90ZUJpbmRHcm91cCA9IFJlbW90ZUJpbmRHcm91cDo6Y3Jl
YXRlKGJpbmRHcm91cCwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVjdEhl
YXAuYWRkT2JqZWN0KGlkZW50aWZpZXIsIHJlbW90ZUJpbmRHcm91cCk7CiB9CiAKIHZvaWQgUmVt
b3RlRGV2aWNlOjpjcmVhdGVTaGFkZXJNb2R1bGUoY29uc3QgV2ViR1BVOjpTaGFkZXJNb2R1bGVE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0g
ICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJv
bUJhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9v
YmplY3RIZWFwLmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKICAgICBBU1NFUlQoY29u
dmVydGVkRGVzY3JpcHRvcik7CiAgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKQogICAgICAg
ICByZXR1cm47CiAKICAgICBhdXRvIHNoYWRlck1vZHVsZSA9IG1fYmFja2luZy0+Y3JlYXRlU2hh
ZGVyTW9kdWxlKCpjb252ZXJ0ZWREZXNjcmlwdG9yKTsKLSAgICBhdXRvIHJlbW90ZVNoYWRlck1v
ZHVsZSA9IFJlbW90ZVNoYWRlck1vZHVsZTo6Y3JlYXRlKHNoYWRlck1vZHVsZSwgbV9vYmplY3RS
ZWdpc3RyeSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKLSAgICBtX29iamVjdEhlYXAuYWRk
T2JqZWN0KHJlbW90ZVNoYWRlck1vZHVsZSk7CisgICAgYXV0byByZW1vdGVTaGFkZXJNb2R1bGUg
PSBSZW1vdGVTaGFkZXJNb2R1bGU6OmNyZWF0ZShzaGFkZXJNb2R1bGUsIG1fb2JqZWN0SGVhcCwg
aWRlbnRpZmllcik7CisgICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChpZGVudGlmaWVyLCByZW1v
dGVTaGFkZXJNb2R1bGUpOwogfQogCiB2b2lkIFJlbW90ZURldmljZTo6Y3JlYXRlQ29tcHV0ZVBp
cGVsaW5lKGNvbnN0IFdlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRv
ciwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGF1dG8gY29udmVydGVkRGVz
Y3JpcHRvciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3Ip
OworICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0RnJv
bUJhY2tpbmcoZGVzY3JpcHRvcik7CiAgICAgQVNTRVJUKGNvbnZlcnRlZERlc2NyaXB0b3IpOwog
ICAgIGlmICghY29udmVydGVkRGVzY3JpcHRvcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0
byBjb21wdXRlUGlwZWxpbmUgPSBtX2JhY2tpbmctPmNyZWF0ZUNvbXB1dGVQaXBlbGluZSgqY29u
dmVydGVkRGVzY3JpcHRvcik7Ci0gICAgYXV0byByZW1vdGVDb21wdXRlUGlwZWxpbmUgPSBSZW1v
dGVDb21wdXRlUGlwZWxpbmU6OmNyZWF0ZShjb21wdXRlUGlwZWxpbmUsIG1fb2JqZWN0UmVnaXN0
cnksIG1fb2JqZWN0SGVhcCwgaWRlbnRpZmllcik7Ci0gICAgbV9vYmplY3RIZWFwLmFkZE9iamVj
dChyZW1vdGVDb21wdXRlUGlwZWxpbmUpOworICAgIGF1dG8gcmVtb3RlQ29tcHV0ZVBpcGVsaW5l
ID0gUmVtb3RlQ29tcHV0ZVBpcGVsaW5lOjpjcmVhdGUoY29tcHV0ZVBpcGVsaW5lLCBtX29iamVj
dEhlYXAsIGlkZW50aWZpZXIpOworICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QoaWRlbnRpZmll
ciwgcmVtb3RlQ29tcHV0ZVBpcGVsaW5lKTsKIH0KIAogdm9pZCBSZW1vdGVEZXZpY2U6OmNyZWF0
ZVJlbmRlclBpcGVsaW5lKGNvbnN0IFdlYkdQVTo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBjb252
ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoZGVz
Y3JpcHRvcik7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RIZWFwLmNv
bnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKICAgICBBU1NFUlQoY29udmVydGVkRGVzY3Jp
cHRvcik7CiAgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKQogICAgICAgICByZXR1cm47CiAK
ICAgICBhdXRvIHJlbmRlclBpcGVsaW5lID0gbV9iYWNraW5nLT5jcmVhdGVSZW5kZXJQaXBlbGlu
ZSgqY29udmVydGVkRGVzY3JpcHRvcik7Ci0gICAgYXV0byByZW1vdGVSZW5kZXJQaXBlbGluZSA9
IFJlbW90ZVJlbmRlclBpcGVsaW5lOjpjcmVhdGUocmVuZGVyUGlwZWxpbmUsIG1fb2JqZWN0UmVn
aXN0cnksIG1fb2JqZWN0SGVhcCwgaWRlbnRpZmllcik7Ci0gICAgbV9vYmplY3RIZWFwLmFkZE9i
amVjdChyZW1vdGVSZW5kZXJQaXBlbGluZSk7CisgICAgYXV0byByZW1vdGVSZW5kZXJQaXBlbGlu
ZSA9IFJlbW90ZVJlbmRlclBpcGVsaW5lOjpjcmVhdGUocmVuZGVyUGlwZWxpbmUsIG1fb2JqZWN0
SGVhcCwgaWRlbnRpZmllcik7CisgICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChpZGVudGlmaWVy
LCByZW1vdGVSZW5kZXJQaXBlbGluZSk7CiB9CiAKIHZvaWQgUmVtb3RlRGV2aWNlOjpjcmVhdGVD
b21wdXRlUGlwZWxpbmVBc3luYyhjb25zdCBXZWJHUFU6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0
b3ImIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgV1RGOjpDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7Ci0gICAgYXV0byBjb252ZXJ0ZWREZXNj
cmlwdG9yID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7
CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RIZWFwLmNvbnZlcnRGcm9t
QmFja2luZyhkZXNjcmlwdG9yKTsKICAgICBBU1NFUlQoY29udmVydGVkRGVzY3JpcHRvcik7CiAg
ICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKSB7CiAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2JhY2tpbmctPmNyZWF0ZUNvbXB1dGVQaXBlbGlu
ZUFzeW5jKCpjb252ZXJ0ZWREZXNjcmlwdG9yLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KSwgd2Vha09iamVjdEhlYXAgPSBXZWFrUHRyPFdlYkdQVTo6T2JqZWN0SGVhcD4obV9vYmplY3RI
ZWFwKSwgb2JqZWN0UmVnaXN0cnkgPSBtX29iamVjdFJlZ2lzdHJ5LCBpZGVudGlmaWVyXSAoUmVm
PFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmU+JiYgY29tcHV0ZVBpcGVsaW5lKSBtdXRhYmxl
IHsKLSAgICAgICAgaWYgKCF3ZWFrT2JqZWN0SGVhcCkKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgYXV0byByZW1vdGVDb21wdXRlUGlwZWxpbmUgPSBSZW1vdGVDb21wdXRlUGlwZWxpbmU6
OmNyZWF0ZShjb21wdXRlUGlwZWxpbmUsIG9iamVjdFJlZ2lzdHJ5LCAqd2Vha09iamVjdEhlYXAs
IGlkZW50aWZpZXIpOwotICAgICAgICB3ZWFrT2JqZWN0SGVhcC0+YWRkT2JqZWN0KHJlbW90ZUNv
bXB1dGVQaXBlbGluZSk7CisgICAgbV9iYWNraW5nLT5jcmVhdGVDb21wdXRlUGlwZWxpbmVBc3lu
YygqY29udmVydGVkRGVzY3JpcHRvciwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHN0
cm9uZ1RoaXMgPSBSZWYgeyAqdGhpcyB9XSAoUmVmPFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxp
bmU+JiYgY29tcHV0ZVBpcGVsaW5lKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byByZW1vdGVDb21w
dXRlUGlwZWxpbmUgPSBSZW1vdGVDb21wdXRlUGlwZWxpbmU6OmNyZWF0ZShjb21wdXRlUGlwZWxp
bmUsIHN0cm9uZ1RoaXMtPm1fb2JqZWN0SGVhcCwgc3Ryb25nVGhpcy0+bV9pZGVudGlmaWVyKTsK
KyAgICAgICAgc3Ryb25nVGhpcy0+bV9vYmplY3RIZWFwLmFkZE9iamVjdChzdHJvbmdUaGlzLT5t
X2lkZW50aWZpZXIsIHJlbW90ZUNvbXB1dGVQaXBlbGluZSk7CiAgICAgICAgIGNhbGxiYWNrKCk7
CiAgICAgfSk7CiB9CiAKIHZvaWQgUmVtb3RlRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZUFz
eW5jKGNvbnN0IFdlYkdQVTo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBX
ZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNhbGxiYWNrKQogewotICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0
UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOworICAgIGF1dG8gY29udmVy
dGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRv
cik7CiAgICAgQVNTRVJUKGNvbnZlcnRlZERlc2NyaXB0b3IpOwogICAgIGlmICghY29udmVydGVk
RGVzY3JpcHRvcikgewogICAgICAgICBjYWxsYmFjaygpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgbV9iYWNraW5nLT5jcmVhdGVSZW5kZXJQaXBlbGluZUFzeW5jKCpjb252ZXJ0ZWRE
ZXNjcmlwdG9yLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgd2Vha09iamVjdEhlYXAg
PSBXZWFrUHRyPFdlYkdQVTo6T2JqZWN0SGVhcD4obV9vYmplY3RIZWFwKSwgb2JqZWN0UmVnaXN0
cnkgPSBtX29iamVjdFJlZ2lzdHJ5LCBpZGVudGlmaWVyXSAoUmVmPFBBTDo6V2ViR1BVOjpSZW5k
ZXJQaXBlbGluZT4mJiByZW5kZXJQaXBlbGluZSkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghd2Vh
a09iamVjdEhlYXApCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGF1dG8gcmVtb3RlUmVu
ZGVyUGlwZWxpbmUgPSBSZW1vdGVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKHJlbmRlclBpcGVsaW5l
LCBvYmplY3RSZWdpc3RyeSwgKndlYWtPYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKLSAgICAgICAg
d2Vha09iamVjdEhlYXAtPmFkZE9iamVjdChyZW1vdGVSZW5kZXJQaXBlbGluZSk7CisgICAgbV9i
YWNraW5nLT5jcmVhdGVSZW5kZXJQaXBlbGluZUFzeW5jKCpjb252ZXJ0ZWREZXNjcmlwdG9yLCBb
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgc3Ryb25nVGhpcyA9IFJlZiB7ICp0aGlzIH1d
IChSZWY8UEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lPiYmIHJlbmRlclBpcGVsaW5lKSBtdXRh
YmxlIHsKKyAgICAgICAgYXV0byByZW1vdGVSZW5kZXJQaXBlbGluZSA9IFJlbW90ZVJlbmRlclBp
cGVsaW5lOjpjcmVhdGUocmVuZGVyUGlwZWxpbmUsIHN0cm9uZ1RoaXMtPm1fb2JqZWN0SGVhcCwg
c3Ryb25nVGhpcy0+bV9pZGVudGlmaWVyKTsKKyAgICAgICAgc3Ryb25nVGhpcy0+bV9vYmplY3RI
ZWFwLmFkZE9iamVjdChzdHJvbmdUaGlzLT5tX2lkZW50aWZpZXIsIHJlbW90ZVJlbmRlclBpcGVs
aW5lKTsKICAgICAgICAgY2FsbGJhY2soKTsKICAgICB9KTsKIH0KQEAgLTI1NiwzOSArMjQ2LDM5
IEBAIHZvaWQgUmVtb3RlRGV2aWNlOjpjcmVhdGVDb21tYW5kRW5jb2Rlcihjb25zdCBzdGQ6Om9w
dGlvbmFsPFdlYkdQVTo6Q29tbWFuZEVuY29kCiB7CiAgICAgc3RkOjpvcHRpb25hbDxQQUw6Oldl
YkdQVTo6Q29tbWFuZEVuY29kZXJEZXNjcmlwdG9yPiBjb252ZXJ0ZWREZXNjcmlwdG9yOwogICAg
IGlmIChkZXNjcmlwdG9yKSB7Ci0gICAgICAgIGF1dG8gcmVzdWx0RGVzY3JpcHRvciA9IG1fb2Jq
ZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKCpkZXNjcmlwdG9yKTsKKyAgICAgICAgYXV0
byByZXN1bHREZXNjcmlwdG9yID0gbV9vYmplY3RIZWFwLmNvbnZlcnRGcm9tQmFja2luZygqZGVz
Y3JpcHRvcik7CiAgICAgICAgIEFTU0VSVChyZXN1bHREZXNjcmlwdG9yKTsKICAgICAgICAgY29u
dmVydGVkRGVzY3JpcHRvciA9IFdURk1vdmUocmVzdWx0RGVzY3JpcHRvcik7CiAgICAgICAgIGlm
ICghY29udmVydGVkRGVzY3JpcHRvcikKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
YXV0byBjb21tYW5kRW5jb2RlciA9IG1fYmFja2luZy0+Y3JlYXRlQ29tbWFuZEVuY29kZXIoKmNv
bnZlcnRlZERlc2NyaXB0b3IpOwotICAgIGF1dG8gcmVtb3RlQ29tbWFuZEVuY29kZXIgPSBSZW1v
dGVDb21tYW5kRW5jb2Rlcjo6Y3JlYXRlKGNvbW1hbmRFbmNvZGVyLCBtX29iamVjdFJlZ2lzdHJ5
LCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIpOwotICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3Qo
cmVtb3RlQ29tbWFuZEVuY29kZXIpOworICAgIGF1dG8gcmVtb3RlQ29tbWFuZEVuY29kZXIgPSBS
ZW1vdGVDb21tYW5kRW5jb2Rlcjo6Y3JlYXRlKGNvbW1hbmRFbmNvZGVyLCBtX29iamVjdEhlYXAs
IGlkZW50aWZpZXIpOworICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QoaWRlbnRpZmllciwgcmVt
b3RlQ29tbWFuZEVuY29kZXIpOwogfQogCiB2b2lkIFJlbW90ZURldmljZTo6Y3JlYXRlUmVuZGVy
QnVuZGxlRW5jb2Rlcihjb25zdCBXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXJEZXNjcmlwdG9y
JiBkZXNjcmlwdG9yLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBj
b252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmco
ZGVzY3JpcHRvcik7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RIZWFw
LmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKICAgICBBU1NFUlQoY29udmVydGVkRGVz
Y3JpcHRvcik7CiAgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKQogICAgICAgICByZXR1cm47
CiAKICAgICBhdXRvIHJlbmRlckJ1bmRsZUVuY29kZXIgPSBtX2JhY2tpbmctPmNyZWF0ZVJlbmRl
ckJ1bmRsZUVuY29kZXIoKmNvbnZlcnRlZERlc2NyaXB0b3IpOwotICAgIGF1dG8gcmVtb3RlUmVu
ZGVyQnVuZGxlRW5jb2RlciA9IFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OmNyZWF0ZShyZW5k
ZXJCdW5kbGVFbmNvZGVyLCBtX29iamVjdFJlZ2lzdHJ5LCBtX29iamVjdEhlYXAsIGlkZW50aWZp
ZXIpOwotICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QocmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rl
cik7CisgICAgYXV0byByZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyID0gUmVtb3RlUmVuZGVyQnVu
ZGxlRW5jb2Rlcjo6Y3JlYXRlKHJlbmRlckJ1bmRsZUVuY29kZXIsIG1fb2JqZWN0SGVhcCwgaWRl
bnRpZmllcik7CisgICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChpZGVudGlmaWVyLCByZW1vdGVS
ZW5kZXJCdW5kbGVFbmNvZGVyKTsKIH0KIAogdm9pZCBSZW1vdGVEZXZpY2U6OmNyZWF0ZVF1ZXJ5
U2V0KGNvbnN0IFdlYkdQVTo6UXVlcnlTZXREZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBXZWJHUFVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0g
bV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgYXV0
byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RIZWFwLmNvbnZlcnRGcm9tQmFja2luZyhk
ZXNjcmlwdG9yKTsKICAgICBBU1NFUlQoY29udmVydGVkRGVzY3JpcHRvcik7CiAgICAgaWYgKCFj
b252ZXJ0ZWREZXNjcmlwdG9yKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHF1ZXJ5U2V0
ID0gbV9iYWNraW5nLT5jcmVhdGVRdWVyeVNldCgqY29udmVydGVkRGVzY3JpcHRvcik7Ci0gICAg
YXV0byByZW1vdGVRdWVyeVNldCA9IFJlbW90ZVF1ZXJ5U2V0OjpjcmVhdGUocXVlcnlTZXQsIG1f
b2JqZWN0UmVnaXN0cnksIG1fb2JqZWN0SGVhcCwgaWRlbnRpZmllcik7Ci0gICAgbV9vYmplY3RI
ZWFwLmFkZE9iamVjdChyZW1vdGVRdWVyeVNldCk7CisgICAgYXV0byByZW1vdGVRdWVyeVNldCA9
IFJlbW90ZVF1ZXJ5U2V0OjpjcmVhdGUocXVlcnlTZXQsIG1fb2JqZWN0SGVhcCwgaWRlbnRpZmll
cik7CisgICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChpZGVudGlmaWVyLCByZW1vdGVRdWVyeVNl
dCk7CiB9CiAKIHZvaWQgUmVtb3RlRGV2aWNlOjpwdXNoRXJyb3JTY29wZShQQUw6OldlYkdQVTo6
RXJyb3JGaWx0ZXIgZXJyb3JGaWx0ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZURldmljZS5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVEZXZpY2UuaAppbmRleCA0OTdjZGEwOTYxNGVl
NDZhZDBjMTU3OTI4ZDE2YTIyYWI2MGJlNzZhLi41YTc1OWNhZTAxOGZhZmRiMjU3NGNmNGMwYjAz
OTA0ZDY3OThmZDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZURldmljZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlRGV2aWNlLmgKQEAgLTQ5LDcgKzQ5LDYgQEAgc3RydWN0IENv
bW1hbmRFbmNvZGVyRGVzY3JpcHRvcjsKIHN0cnVjdCBDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9y
Owogc3RydWN0IEV4dGVybmFsVGV4dHVyZURlc2NyaXB0b3I7CiBjbGFzcyBPYmplY3RIZWFwOwot
Y2xhc3MgT2JqZWN0UmVnaXN0cnk7CiBzdHJ1Y3QgUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yOwog
c3RydWN0IFF1ZXJ5U2V0RGVzY3JpcHRvcjsKIHN0cnVjdCBSZW5kZXJCdW5kbGVFbmNvZGVyRGVz
Y3JpcHRvcjsKQEAgLTYwLDE4ICs1OSwxOSBAQCBzdHJ1Y3QgVGV4dHVyZURlc2NyaXB0b3I7CiB9
CiAKIGNsYXNzIFJlbW90ZURldmljZSBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VS
ZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxSZW1vdGVEZXZpY2U+IGNyZWF0ZShQQUw6OldlYkdQVTo6RGV2aWNlJiBkZXZpY2Us
IFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhl
YXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICBzdGF0aWMg
UmVmPFJlbW90ZURldmljZT4gY3JlYXRlKFBBTDo6V2ViR1BVOjpEZXZpY2UmIGRldmljZSwgV2Vi
R1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVEZXZpY2UoZGV2aWNl
LCBvYmplY3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVEZXZpY2UoZGV2aWNlLCBvYmplY3RIZWFwLCBpZGVudGlm
aWVyKSk7CiAgICAgfQogCiAgICAgflJlbW90ZURldmljZSgpOwogCi1wcml2YXRlOgotICAgIGZy
aWVuZCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKKyAgICBQQUw6OldlYkdQVTo6RGV2aWNlJiBiYWNr
aW5nKCkgeyByZXR1cm4gbV9iYWNraW5nOyB9CiAKLSAgICBSZW1vdGVEZXZpY2UoUEFMOjpXZWJH
UFU6OkRldmljZSYsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmLCBXZWJHUFU6Ok9iamVjdEhlYXAm
LCBXZWJHUFVJZGVudGlmaWVyKTsKK3ByaXZhdGU6CisgICAgUmVtb3RlRGV2aWNlKFBBTDo6V2Vi
R1BVOjpEZXZpY2UmLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAog
ICAgIFJlbW90ZURldmljZShjb25zdCBSZW1vdGVEZXZpY2UmKSA9IGRlbGV0ZTsKICAgICBSZW1v
dGVEZXZpY2UoUmVtb3RlRGV2aWNlJiYpID0gZGVsZXRlOwpAQCAtMTA4LDcgKzEwOCw2IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7CiAKICAgICBSZWY8UEFMOjpXZWJH
UFU6OkRldmljZT4gbV9iYWNraW5nOwotICAgIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG1fb2Jq
ZWN0UmVnaXN0cnk7CiAgICAgV2ViR1BVOjpPYmplY3RIZWFwJiBtX29iamVjdEhlYXA7CiAgICAg
V2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVFeHRlcm5hbFRleHR1cmUuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVFeHRlcm5h
bFRleHR1cmUuY3BwCmluZGV4IDk1M2QwZTRkODBhNmVmOGZkYjNkNzYxNTdkNzJjYTQ0OWU4NDAy
YmEuLjE4YTBmMTU2ZjI2MGNjMDhhZDMxMTdlYzlkZDE1MDI4NWY4YTBjNWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRXh0ZXJuYWxU
ZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZUV4dGVybmFsVGV4dHVyZS5jcHAKQEAgLTI5LDI0ICsyOSwxOCBAQAogI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKLSNpbmNsdWRl
ICJXZWJHUFVPYmplY3RSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUv
V2ViR1BVRXh0ZXJuYWxUZXh0dXJlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZW1vdGVF
eHRlcm5hbFRleHR1cmU6OlJlbW90ZUV4dGVybmFsVGV4dHVyZShQQUw6OldlYkdQVTo6RXh0ZXJu
YWxUZXh0dXJlJiBleHRlcm5hbFRleHR1cmUsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVj
dFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZp
ZXIgaWRlbnRpZmllcikKK1JlbW90ZUV4dGVybmFsVGV4dHVyZTo6UmVtb3RlRXh0ZXJuYWxUZXh0
dXJlKFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1cmUmIGV4dGVybmFsVGV4dHVyZSwgV2ViR1BV
OjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAg
ICAgOiBtX2JhY2tpbmcoZXh0ZXJuYWxUZXh0dXJlKQotICAgICwgbV9vYmplY3RSZWdpc3RyeShv
YmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQogICAgICwgbV9p
ZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5hZGRPYmplY3Qo
bV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOwogfQogCi1SZW1vdGVFeHRlcm5hbFRleHR1cmU6On5S
ZW1vdGVFeHRlcm5hbFRleHR1cmUoKQotewotICAgIG1fb2JqZWN0UmVnaXN0cnkucmVtb3ZlT2Jq
ZWN0KG1faWRlbnRpZmllcik7Ci19CitSZW1vdGVFeHRlcm5hbFRleHR1cmU6On5SZW1vdGVFeHRl
cm5hbFRleHR1cmUoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlOjpz
ZXRMYWJlbChTdHJpbmcmJiBsYWJlbCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlLmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4dHVyZS5o
CmluZGV4IDMxZDFjNTQzOTkyYmJiYmVmMTM0NjJiZDEwM2JiODI4ZTFmZjk2MGYuLjBjNDc3YWNk
M2RkNzRlYTgxOGJmNzExMzFjZmI1OTVmZTcxMTQ0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlLmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVFeHRlcm5h
bFRleHR1cmUuaApAQCAtNDAsMjIgKzQwLDIyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1l
c3BhY2UgV2ViR1BVIHsKIGNsYXNzIE9iamVjdEhlYXA7Ci1jbGFzcyBPYmplY3RSZWdpc3RyeTsK
IH0KIAogY2xhc3MgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlIGZpbmFsIDogcHVibGljIElQQzo6U3Ry
ZWFtTWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZUV4dGVybmFsVGV4dHVyZT4gY3JlYXRlKFBBTDo6V2Vi
R1BVOjpFeHRlcm5hbFRleHR1cmUmIGV4dGVybmFsVGV4dHVyZSwgV2ViR1BVOjpPYmplY3RSZWdp
c3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2Vi
R1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlRXh0ZXJuYWxU
ZXh0dXJlPiBjcmVhdGUoUEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZSYgZXh0ZXJuYWxUZXh0
dXJlLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRl
bnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUV4dGVy
bmFsVGV4dHVyZShleHRlcm5hbFRleHR1cmUsIG9iamVjdFJlZ2lzdHJ5LCBvYmplY3RIZWFwLCBp
ZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUV4dGVybmFs
VGV4dHVyZShleHRlcm5hbFRleHR1cmUsIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKICAgICB9
CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVFeHRlcm5hbFRleHR1cmUoKTsKIAotcHJpdmF0ZToKLSAg
ICBmcmllbmQgY2xhc3MgT2JqZWN0UmVnaXN0cnk7CisgICAgUEFMOjpXZWJHUFU6OkV4dGVybmFs
VGV4dHVyZSYgYmFja2luZygpIHsgcmV0dXJuIG1fYmFja2luZzsgfQogCi0gICAgUmVtb3RlRXh0
ZXJuYWxUZXh0dXJlKFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1cmUmLCBXZWJHUFU6Ok9iamVj
dFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7Citwcml2
YXRlOgorICAgIFJlbW90ZUV4dGVybmFsVGV4dHVyZShQQUw6OldlYkdQVTo6RXh0ZXJuYWxUZXh0
dXJlJiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1v
dGVFeHRlcm5hbFRleHR1cmUoY29uc3QgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlJikgPSBkZWxldGU7
CiAgICAgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlKFJlbW90ZUV4dGVybmFsVGV4dHVyZSYmKSA9IGRl
bGV0ZTsKQEAgLTY3LDcgKzY3LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0cmlu
ZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlPiBtX2JhY2tpbmc7
Ci0gICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgbV9vYmplY3RSZWdpc3RyeTsKICAgICBXZWJH
UFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKICAgICBXZWJHUFVJZGVudGlmaWVyIG1faWRl
bnRpZmllcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZUdQVS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZUdQVS5jcHAKaW5kZXggZDcyZWVlOWE4NTc0NjBmYjdhNWJkNzE1OTIy
NDk5YzllNGIyYzg5MC4uYzliOTkyYjQ1NDFjOWNmOWVjYzE5MTFiOGI4MTllZWM4Y2ZhOTAwZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVHUFUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlR1BVLmNwcApAQCAtMjgsNDggKzI4LDkxIEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCiAKKyNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAi
UmVtb3RlQWRhcHRlci5oIgorI2luY2x1ZGUgIlJlbW90ZUdQVU1lc3NhZ2VzLmgiCisjaW5jbHVk
ZSAiUmVtb3RlR1BVUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQuaCIKICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCi0jaW5jbHVkZSAiV2ViR1BV
T2JqZWN0UmVnaXN0cnkuaCIKKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVSW1wbC5oPgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVLmg+CiAjaW5j
bHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVBZGFwdGVyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1SZW1vdGVHUFU6OlJlbW90ZUdQVShQQUw6OldlYkdQVTo6R1BVJiBncHUsIFdl
YkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAm
IG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKLSAgICA6IG1fYmFja2lu
ZyhncHUpCi0gICAgLCBtX29iamVjdFJlZ2lzdHJ5KG9iamVjdFJlZ2lzdHJ5KQotICAgICwgbV9v
YmplY3RIZWFwKG9iamVjdEhlYXApCitSZW1vdGVHUFU6OlJlbW90ZUdQVShXZWJHUFVJZGVudGlm
aWVyIGlkZW50aWZpZXIsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIHJlbmRlcmluZ0JhY2tlbmQsIElQ
Qzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbSkKKyAgICA6IG1fZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2VzcyhncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKQorICAgICwgbV93b3JrUXVl
dWUoSVBDOjpTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjpjcmVhdGUoIldlYkdQVSB3b3JrIHF1
ZXVlIikpCisgICAgLCBtX3N0cmVhbUNvbm5lY3Rpb24oSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uOjpjcmVhdGUoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCksIFdURk1v
dmUoc3RyZWFtKSwgbV93b3JrUXVldWUpKQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIp
CisgICAgLCBtX3JlbmRlcmluZ0JhY2tlbmQocmVuZGVyaW5nQmFja2VuZCkKKyAgICAsIG1fd2Vi
UHJvY2Vzc0lkZW50aWZpZXIoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy53ZWJQcm9jZXNzSWRl
bnRpZmllcigpKQogewotICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1faWRlbnRpZmll
ciwgbV9iYWNraW5nKTsKKyAgICBpbml0aWFsaXplKCk7CiB9CiAKLVJlbW90ZUdQVTo6flJlbW90
ZUdQVSgpCitSZW1vdGVHUFU6On5SZW1vdGVHUFUoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgUmVtb3Rl
R1BVOjppbml0aWFsaXplKCkKIHsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdCht
X2lkZW50aWZpZXIpOworICAgIGFzc2VydElzTWFpblJ1bkxvb3AoKTsKKyAgICBtX3dvcmtRdWV1
ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSgpIG11dGFibGUgewor
ICAgICAgICBwcm90ZWN0ZWRUaGlzLT53b3JrUXVldWVJbml0aWFsaXplKCk7CisgICAgfSk7Cisg
ICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdGFydFJlY2VpdmluZ01lc3NhZ2VzKCp0aGlzLCBNZXNz
YWdlczo6UmVtb3RlR1BVOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJ
bnQ2NCgpKTsKIH0KIAotdm9pZCBSZW1vdGVHUFU6OnJlcXVlc3RBZGFwdGVyKGNvbnN0IFdlYkdQ
VTo6UmVxdWVzdEFkYXB0ZXJPcHRpb25zJiBvcHRpb25zLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50
aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJiwgV2ViR1BVOjpTdXBw
b3J0ZWRGZWF0dXJlcyYmLCBXZWJHUFU6OlN1cHBvcnRlZExpbWl0cyYmLCBib29sKT4mJiBjYWxs
YmFjaykKK3ZvaWQgUmVtb3RlR1BVOjpzdG9wTGlzdGVuaW5nRm9ySVBDKFJlZjxSZW1vdGVHUFU+
JiYgcmVmRnJvbUNvbm5lY3Rpb24pCiB7Ci0gICAgYXV0byBjb252ZXJ0ZWRPcHRpb25zID0gbV9v
YmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcob3B0aW9ucyk7CisgICAgYXNzZXJ0SXNN
YWluUnVuTG9vcCgpOworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+c3RvcFJlY2VpdmluZ01lc3Nh
Z2VzKE1lc3NhZ2VzOjpSZW1vdGVHUFU6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlm
aWVyLnRvVUludDY0KCkpOworICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhp
cyA9IFdURk1vdmUocmVmRnJvbUNvbm5lY3Rpb24pXSgpIHsKKyAgICAgICAgcHJvdGVjdGVkVGhp
cy0+d29ya1F1ZXVlVW5pbml0aWFsaXplKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgUmVtb3RlR1BV
Ojp3b3JrUXVldWVJbml0aWFsaXplKCkKK3sKKyAgICBtX3N0cmVhbVRocmVhZC5yZXNldCgpOwor
ICAgIGFzc2VydElzQ3VycmVudChtX3N0cmVhbVRocmVhZCk7CisgICAgYXV0byBiYWNraW5nID0g
UEFMOjpXZWJHUFU6OkdQVUltcGw6OmNyZWF0ZSgpOworICAgIGlmIChiYWNraW5nKSB7CisgICAg
ICAgIG1fYmFja2luZyA9IGJhY2tpbmcucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR1BVUHJveHk6Oldhc0NyZWF0ZWQodHJ1ZSwgbV93b3JrUXVldWUtPndh
a2VVcFNlbWFwaG9yZSgpKSk7CisgICAgfSBlbHNlCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdQVVByb3h5OjpXYXNDcmVhdGVkKGZhbHNlLCBtX3dvcmtRdWV1ZS0+d2FrZVVwU2VtYXBo
b3JlKCkpKTsKK30KKwordm9pZCBSZW1vdGVHUFU6OndvcmtRdWV1ZVVuaW5pdGlhbGl6ZSgpCit7
CisgICAgYXNzZXJ0SXNDdXJyZW50KG1fc3RyZWFtVGhyZWFkKTsKKyAgICBtX3N0cmVhbUNvbm5l
Y3Rpb24gPSBudWxscHRyOworfQorCit2b2lkIFJlbW90ZUdQVTo6cmVxdWVzdEFkYXB0ZXIoY29u
c3QgV2ViR1BVOjpSZXF1ZXN0QWRhcHRlck9wdGlvbnMmIG9wdGlvbnMsIFdlYkdQVUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8
UmVxdWVzdEFkYXB0ZXJSZXNwb25zZT4mJik+JiYgY2FsbGJhY2spCit7CisgICAgYXNzZXJ0SXND
dXJyZW50KG1fc3RyZWFtVGhyZWFkKTsKKyAgICBBU1NFUlQobV9iYWNraW5nKTsKKworICAgIGF1
dG8gY29udmVydGVkT3B0aW9ucyA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0RnJvbUJhY2tpbmcob3B0
aW9ucyk7CiAgICAgQVNTRVJUKGNvbnZlcnRlZE9wdGlvbnMpOwogICAgIGlmICghY29udmVydGVk
T3B0aW9ucykgewotICAgICAgICBjYWxsYmFjayhTdHJpbmdJbXBsOjplbXB0eSgpLCB7IHsgfSB9
LCB7IH0sIGZhbHNlKTsKKyAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIG1fYmFja2luZy0+cmVxdWVzdEFkYXB0ZXIoKmNvbnZlcnRl
ZE9wdGlvbnMsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB3ZWFrT2JqZWN0SGVhcCA9
IFdlYWtQdHI8V2ViR1BVOjpPYmplY3RIZWFwPihtX29iamVjdEhlYXApLCBvYmplY3RSZWdpc3Ry
eSA9IG1fb2JqZWN0UmVnaXN0cnksIGlkZW50aWZpZXJdIChSZWZQdHI8UEFMOjpXZWJHUFU6OkFk
YXB0ZXI+JiYgYWRhcHRlcikgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghd2Vha09iamVjdEhlYXAg
fHwgIWFkYXB0ZXIpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBEZWFsIHdpdGggZmFpbHVyZSBo
ZXJlLgorICAgIG1fYmFja2luZy0+cmVxdWVzdEFkYXB0ZXIoKmNvbnZlcnRlZE9wdGlvbnMsIFtj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBzdHJvbmdUaGlzID0gUmVmIHsgKnRoaXMgfV0g
KFJlZlB0cjxQQUw6OldlYkdQVTo6QWRhcHRlcj4mJiBhZGFwdGVyKSBtdXRhYmxlIHsKKyAgICAg
ICAgYXNzZXJ0SXNDdXJyZW50KHN0cm9uZ1RoaXMtPm1fc3RyZWFtVGhyZWFkKTsKKyAgICAgICAg
aWYgKCFhZGFwdGVyKSB7CisgICAgICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGF1dG8gcmVtb3RlQWRhcHRlciA9
IFJlbW90ZUFkYXB0ZXI6OmNyZWF0ZSgqYWRhcHRlciwgb2JqZWN0UmVnaXN0cnksICp3ZWFrT2Jq
ZWN0SGVhcCwgaWRlbnRpZmllcik7Ci0gICAgICAgIHdlYWtPYmplY3RIZWFwLT5hZGRPYmplY3Qo
cmVtb3RlQWRhcHRlcik7CisgICAgICAgIGF1dG8gcmVtb3RlQWRhcHRlciA9IFJlbW90ZUFkYXB0
ZXI6OmNyZWF0ZSgqYWRhcHRlciwgc3Ryb25nVGhpcy0+bV9vYmplY3RIZWFwLCBzdHJvbmdUaGlz
LT5tX2lkZW50aWZpZXIpOworICAgICAgICBzdHJvbmdUaGlzLT5tX29iamVjdEhlYXAuYWRkT2Jq
ZWN0KHN0cm9uZ1RoaXMtPm1faWRlbnRpZmllciwgcmVtb3RlQWRhcHRlcik7CiAgICAgICAgIGF1
dG8gbmFtZSA9IGFkYXB0ZXItPm5hbWUoKTsKICAgICAgICAgY29uc3QgYXV0byYgZmVhdHVyZXMg
PSBhZGFwdGVyLT5mZWF0dXJlcygpOwogICAgICAgICBjb25zdCBhdXRvJiBsaW1pdHMgPSBhZGFw
dGVyLT5saW1pdHMoKTsKLSAgICAgICAgY2FsbGJhY2soV1RGTW92ZShuYW1lKSwgV2ViR1BVOjpT
dXBwb3J0ZWRGZWF0dXJlcyB7IGZlYXR1cmVzLmZlYXR1cmVzKCkgfSwgV2ViR1BVOjpTdXBwb3J0
ZWRMaW1pdHMgeworICAgICAgICBjYWxsYmFjayh7IHsgV1RGTW92ZShuYW1lKSwgV2ViR1BVOjpT
dXBwb3J0ZWRGZWF0dXJlcyB7IGZlYXR1cmVzLmZlYXR1cmVzKCkgfSwgV2ViR1BVOjpTdXBwb3J0
ZWRMaW1pdHMgewogICAgICAgICAgICAgbGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24xRCgpLAog
ICAgICAgICAgICAgbGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24yRCgpLAogICAgICAgICAgICAg
bGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24zRCgpLApAQCAtOTYsNyArMTM5LDcgQEAgdm9pZCBS
ZW1vdGVHUFU6OnJlcXVlc3RBZGFwdGVyKGNvbnN0IFdlYkdQVTo6UmVxdWVzdEFkYXB0ZXJPcHRp
b25zJiBvcHRpb25zLCBXZWIKICAgICAgICAgICAgIGxpbWl0cy5tYXhDb21wdXRlV29ya2dyb3Vw
U2l6ZVkoKSwKICAgICAgICAgICAgIGxpbWl0cy5tYXhDb21wdXRlV29ya2dyb3VwU2l6ZVooKSwK
ICAgICAgICAgICAgIGxpbWl0cy5tYXhDb21wdXRlV29ya2dyb3Vwc1BlckRpbWVuc2lvbigpLAot
ICAgICAgICB9LCBhZGFwdGVyLT5pc0ZhbGxiYWNrQWRhcHRlcigpKTsKKyAgICAgICAgfSwgYWRh
cHRlci0+aXNGYWxsYmFja0FkYXB0ZXIoKSB9IH0pOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5oIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUuaAppbmRl
eCA3NTg1NTQzMzQ1NjBjMTIzYzNlMWZmYjlhODQxOTc4NGViYWZkMDc5Li40OTQ2NjE1ZTg2NGI5
YmE5Y2ZhY2Y4NzI2MDVhYTczMWU3NjZmZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLmgKQEAgLTI3LDEyICsyNywxNyBA
QAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZS5oIgogI2luY2x1ZGUgIlN0cmVhbU1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1
ZGUgIlN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJHUFVJZGVudGlmaWVy
LmgiCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0SGVhcC5oIgogI2luY2x1ZGUgIldlYkdQVVN1cHBv
cnRlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiV2ViR1BVU3VwcG9ydGVkTGltaXRzLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0
aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFk
QXNzZXJ0aW9ucy5oPgogCiBuYW1lc3BhY2UgUEFMOjpXZWJHUFUgewogY2xhc3MgR1BVOwpAQCAt
NDAsMzkgKzQ1LDk3IEBAIGNsYXNzIEdQVTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNz
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CitjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OworCiBuYW1lc3BhY2UgV2ViR1BVIHsKIGNsYXNzIE9iamVjdEhlYXA7Ci1jbGFzcyBPYmplY3RS
ZWdpc3RyeTsKIHN0cnVjdCBSZXF1ZXN0QWRhcHRlck9wdGlvbnM7CiB9CiAKIGNsYXNzIFJlbW90
ZUdQVSBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVHUFU+
IGNyZWF0ZShQQUw6OldlYkdQVTo6R1BVJiBncHUsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9i
amVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50
aWZpZXIgaWRlbnRpZmllcikKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUdQVT4gY3JlYXRlKFdlYkdQ
VUlkZW50aWZpZXIgaWRlbnRpZmllciwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2VzcywgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgcmVuZGVyaW5nQmFj
a2VuZCwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlR1BVKGdwdSwgb2JqZWN0UmVnaXN0cnksIG9i
amVjdEhlYXAsIGlkZW50aWZpZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVt
b3RlR1BVKGlkZW50aWZpZXIsIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIHJlbmRlcmluZ0Jh
Y2tlbmQsIFdURk1vdmUoc3RyZWFtKSkpOwogICAgIH0KIAorICAgIHZvaWQgc3RvcExpc3Rlbmlu
Z0ZvcklQQyhSZWY8UmVtb3RlR1BVPiYmIHJlZkZyb21Db25uZWN0aW9uKTsKKwogICAgIHZpcnR1
YWwgflJlbW90ZUdQVSgpOwogCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdp
c3RyeTsKKyAgICBzdHJ1Y3QgUmVxdWVzdEFkYXB0ZXJSZXNwb25zZSB7CisgICAgICAgIFN0cmlu
ZyBuYW1lOworICAgICAgICBXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVzIGZlYXR1cmVzOworICAg
ICAgICBXZWJHUFU6OlN1cHBvcnRlZExpbWl0cyBsaW1pdHM7CisgICAgICAgIGJvb2wgaXNGYWxs
YmFja0FkYXB0ZXI7CisKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgZW5jb2Rl
ciA8PCBuYW1lOworICAgICAgICAgICAgZW5jb2RlciA8PCBmZWF0dXJlczsKKyAgICAgICAgICAg
IGVuY29kZXIgPDwgbGltaXRzOworICAgICAgICAgICAgZW5jb2RlciA8PCBpc0ZhbGxiYWNrQWRh
cHRlcjsKKyAgICAgICAgfQorCisgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFJlcXVlc3RBZGFwdGVyUmVzcG9uc2U+IGRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQorICAgICAgICB7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbmFt
ZTsKKyAgICAgICAgICAgIGRlY29kZXIgPj4gbmFtZTsKKyAgICAgICAgICAgIGlmICghbmFtZSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgICAgICBzdGQ6
Om9wdGlvbmFsPFdlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXM+IGZlYXR1cmVzOworICAgICAgICAg
ICAgZGVjb2RlciA+PiBmZWF0dXJlczsKKyAgICAgICAgICAgIGlmICghZmVhdHVyZXMpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICAgICAgc3RkOjpvcHRp
b25hbDxXZWJHUFU6OlN1cHBvcnRlZExpbWl0cz4gbGltaXRzOworICAgICAgICAgICAgZGVjb2Rl
ciA+PiBsaW1pdHM7CisgICAgICAgICAgICBpZiAoIWxpbWl0cykKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlz
RmFsbGJhY2tBZGFwdGVyOworICAgICAgICAgICAgZGVjb2RlciA+PiBpc0ZhbGxiYWNrQWRhcHRl
cjsKKyAgICAgICAgICAgIGlmICghaXNGYWxsYmFja0FkYXB0ZXIpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICAgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpu
YW1lKSwgV1RGTW92ZSgqZmVhdHVyZXMpLCBXVEZNb3ZlKCpsaW1pdHMpLCAqaXNGYWxsYmFja0Fk
YXB0ZXIgfSB9OworICAgICAgICB9CisgICAgfTsKIAotICAgIFJlbW90ZUdQVShQQUw6OldlYkdQ
VTo6R1BVJiwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdl
YkdQVUlkZW50aWZpZXIpOworcHJpdmF0ZToKKyAgICBSZW1vdGVHUFUoV2ViR1BVSWRlbnRpZmll
ciwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmLCBJ
UEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CiAKICAgICBSZW1vdGVHUFUoY29uc3QgUmVt
b3RlR1BVJikgPSBkZWxldGU7CiAgICAgUmVtb3RlR1BVKFJlbW90ZUdQVSYmKSA9IGRlbGV0ZTsK
ICAgICBSZW1vdGVHUFUmIG9wZXJhdG9yPShjb25zdCBSZW1vdGVHUFUmKSA9IGRlbGV0ZTsKICAg
ICBSZW1vdGVHUFUmIG9wZXJhdG9yPShSZW1vdGVHUFUmJikgPSBkZWxldGU7CiAKLSAgICB2b2lk
IGRpZFJlY2VpdmVTdHJlYW1NZXNzYWdlKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2Um
LCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKyAgICB2b2lkIGluaXRpYWxpemUoKTsKKyAgICB2b2lk
IHdvcmtRdWV1ZUluaXRpYWxpemUoKTsKKyAgICB2b2lkIHdvcmtRdWV1ZVVuaW5pdGlhbGl6ZSgp
OwogCi0gICAgdm9pZCByZXF1ZXN0QWRhcHRlcihjb25zdCBXZWJHUFU6OlJlcXVlc3RBZGFwdGVy
T3B0aW9ucyYsIFdlYkdQVUlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dHJpbmcmJiwgV2ViR1BVOjpTdXBwb3J0ZWRGZWF0dXJlcyYmLCBXZWJHUFU6OlN1cHBvcnRlZExp
bWl0cyYmLCBib29sKT4mJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBib29sIHNl
bmQoVCYmIG1lc3NhZ2UpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9zdHJlYW1Db25u
ZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChXVEZNb3ZlKG1lc3NhZ2UpLCBtX2lkZW50aWZpZXIp
OworICAgIH0KKworICAgIHZvaWQgZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoSVBDOjpTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uQmFzZSYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCi0gICAgUmVmPFBB
TDo6V2ViR1BVOjpHUFU+IG1fYmFja2luZzsKLSAgICBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBt
X29iamVjdFJlZ2lzdHJ5OwotICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFwOwot
ICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAgIHZvaWQgcmVxdWVzdEFkYXB0
ZXIoY29uc3QgV2ViR1BVOjpSZXF1ZXN0QWRhcHRlck9wdGlvbnMmLCBXZWJHUFVJZGVudGlmaWVy
LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxSZXF1ZXN0QWRhcHRl
clJlc3BvbnNlPiYmKT4mJik7CisKKyAgICBXZWFrUHRyPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M+IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKKyAgICBSZWY8SVBDOjpTdHJlYW1Db25u
ZWN0aW9uV29ya1F1ZXVlPiBtX3dvcmtRdWV1ZTsKKyAgICBSZWZQdHI8SVBDOjpTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uPiBtX3N0cmVhbUNvbm5lY3Rpb247CisgICAgUmVmUHRyPFBBTDo6V2ViR1BV
OjpHUFU+IG1fYmFja2luZyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fc3RyZWFtVGhyZWFkKTsKKyAg
ICBXZWJHUFU6Ok9iamVjdEhlYXAgbV9vYmplY3RIZWFwIFdURl9HVUFSREVEX0JZX0xPQ0sobV9z
dHJlYW1UaHJlYWQpOworICAgIGNvbnN0IFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwor
ICAgIFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBtX3JlbmRlcmluZ0JhY2tlbmQ7CisgICAg
Tk9fVU5JUVVFX0FERFJFU1MgVGhyZWFkQXNzZXJ0aW9uIG1fc3RyZWFtVGhyZWFkOworICAgIGNv
bnN0IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXI7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUubWVzc2FnZXMuaW4KaW5k
ZXggZTRkOTUyNjVhYTVkMDAzODk0YWM4MDYyOTE0MDAwYTI0Y2I1M2UyOS4uZjljODViYjg4OTdk
OGI5MWI4MjEwYzJiM2IwODA5ZmYyOTM3ODU1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUubWVzc2FnZXMu
aW4KQEAgLTI0LDcgKzI0LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKIG1lc3NhZ2Vz
IC0+IFJlbW90ZUdQVSBOb3RSZWZDb3VudGVkIFN0cmVhbSB7Ci0gICAgdm9pZCBSZXF1ZXN0QWRh
cHRlcihXZWJLaXQ6OldlYkdQVTo6UmVxdWVzdEFkYXB0ZXJPcHRpb25zIG9wdGlvbnMsIFdlYktp
dDo6V2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoU3RyaW5nIG5hbWUsIFdlYktpdDo6
V2ViR1BVOjpTdXBwb3J0ZWRGZWF0dXJlcyBzdXBwb3J0ZWRGZWF0dXJlcywgV2ViS2l0OjpXZWJH
UFU6OlN1cHBvcnRlZExpbWl0cyBzdXBwb3J0ZWRMaW1pdHMsIGJvb2wgaXNGYWxsYmFja0FkYXB0
ZXIpIFN5bmNocm9ub3VzCisgICAgdm9pZCBSZXF1ZXN0QWRhcHRlcihXZWJLaXQ6OldlYkdQVTo6
UmVxdWVzdEFkYXB0ZXJPcHRpb25zIG9wdGlvbnMsIFdlYktpdDo6V2ViR1BVSWRlbnRpZmllciBp
ZGVudGlmaWVyKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJLaXQ6OlJlbW90ZUdQVTo6UmVxdWVzdEFk
YXB0ZXJSZXNwb25zZT4gcmVzcG9uc2UpIFN5bmNocm9ub3VzCiB9CiAKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVQaXBl
bGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZVBpcGVsaW5lTGF5b3V0LmNwcAppbmRleCA2Y2Q4YjY3N2Q1OTE4MDJjNjI5ZGI2ZmQz
NDg3NDc2YWEzZTZlMGMwLi5mMDY0MjdjZDZkNGY5OWZjYzg5NmIzM2VjMzkxZjhiOGZkMjQ3YzRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZVBpcGVsaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZVBpcGVsaW5lTGF5b3V0LmNwcApAQCAtMjksMjQgKzI5LDE4IEBA
CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVT2JqZWN0SGVhcC5o
IgotI2luY2x1ZGUgIldlYkdQVU9iamVjdFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBo
aWNzL1dlYkdQVS9XZWJHUFVQaXBlbGluZUxheW91dC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAotUmVtb3RlUGlwZWxpbmVMYXlvdXQ6OlJlbW90ZVBpcGVsaW5lTGF5b3V0KFBBTDo6V2ViR1BV
OjpQaXBlbGluZUxheW91dCYgcGlwZWxpbmVMYXlvdXQsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkm
IG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlk
ZW50aWZpZXIgaWRlbnRpZmllcikKK1JlbW90ZVBpcGVsaW5lTGF5b3V0OjpSZW1vdGVQaXBlbGlu
ZUxheW91dChQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQmIHBpcGVsaW5lTGF5b3V0LCBXZWJH
UFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikK
ICAgICA6IG1fYmFja2luZyhwaXBlbGluZUxheW91dCkKLSAgICAsIG1fb2JqZWN0UmVnaXN0cnko
b2JqZWN0UmVnaXN0cnkpCiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkKICAgICAsIG1f
aWRlbnRpZmllcihpZGVudGlmaWVyKQogewotICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0
KG1faWRlbnRpZmllciwgbV9iYWNraW5nKTsKIH0KIAotUmVtb3RlUGlwZWxpbmVMYXlvdXQ6On5S
ZW1vdGVQaXBlbGluZUxheW91dCgpCi17Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5yZW1vdmVPYmpl
Y3QobV9pZGVudGlmaWVyKTsKLX0KK1JlbW90ZVBpcGVsaW5lTGF5b3V0Ojp+UmVtb3RlUGlwZWxp
bmVMYXlvdXQoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVtb3RlUGlwZWxpbmVMYXlvdXQ6OnNldExh
YmVsKFN0cmluZyYmIGxhYmVsKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVQaXBlbGluZUxheW91dC5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVQaXBlbGluZUxheW91dC5oCmluZGV4
IDIzYmNhZWI2MDY0MTIwYjUzMjA3MmM3MzYyYTg2ZjBmNmM2N2YyMGUuLjAzYTJkMmE3ODI4OTZl
NjA3MmQ5Y2ExMTk1MWMyY2ZlZGY0MjdkOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUGlwZWxpbmVMYXlvdXQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVBpcGVsaW5lTGF5b3V0
LmgKQEAgLTQwLDIyICs0MCwyMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIFdl
YkdQVSB7CiBjbGFzcyBPYmplY3RIZWFwOwotY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiB9CiAKIGNs
YXNzIFJlbW90ZVBpcGVsaW5lTGF5b3V0IGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2Fn
ZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPFJlbW90ZVBpcGVsaW5lTGF5b3V0PiBjcmVhdGUoUEFMOjpXZWJHUFU6OlBpcGVs
aW5lTGF5b3V0JiBwaXBlbGluZUxheW91dCwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0
UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlUGlwZWxpbmVMYXlvdXQ+IGNyZWF0
ZShQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQmIHBpcGVsaW5lTGF5b3V0LCBXZWJHUFU6Ok9i
amVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVBpcGVsaW5lTGF5b3V0KHBpcGVs
aW5lTGF5b3V0LCBvYmplY3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxh
eW91dCwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJl
bW90ZVBpcGVsaW5lTGF5b3V0KCk7CiAKLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIE9iamVj
dFJlZ2lzdHJ5OworICAgIFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91dCYgYmFja2luZygpIHsg
cmV0dXJuIG1fYmFja2luZzsgfQogCi0gICAgUmVtb3RlUGlwZWxpbmVMYXlvdXQoUEFMOjpXZWJH
UFU6OlBpcGVsaW5lTGF5b3V0JiwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2Jq
ZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOworcHJpdmF0ZToKKyAgICBSZW1vdGVQaXBlbGlu
ZUxheW91dChQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQmLCBXZWJHUFU6Ok9iamVjdEhlYXAm
LCBXZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZVBpcGVsaW5lTGF5b3V0KGNvbnN0IFJl
bW90ZVBpcGVsaW5lTGF5b3V0JikgPSBkZWxldGU7CiAgICAgUmVtb3RlUGlwZWxpbmVMYXlvdXQo
UmVtb3RlUGlwZWxpbmVMYXlvdXQmJikgPSBkZWxldGU7CkBAIC02Nyw3ICs2Nyw2IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7CiAKICAgICBSZWY8UEFMOjpXZWJHUFU6
OlBpcGVsaW5lTGF5b3V0PiBtX2JhY2tpbmc7Ci0gICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYg
bV9vYmplY3RSZWdpc3RyeTsKICAgICBXZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsK
ICAgICBXZWJHUFVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVlcnlTZXQu
Y3BwCmluZGV4IGUwY2QxYzVjM2Q3YjE1NDU1NWRkMTE4OTFkNmFiMjAwN2NhZjRhNzUuLjBmNjA2
NTAwMDA4Yjk4N2Y4NmY1YTZhYjVkZWMzMWU2ZDliNWNmYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVlcnlTZXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVlcnlTZXQu
Y3BwCkBAIC0yOSwyNCArMjksMTggQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNs
dWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCi0jaW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnku
aCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVF1ZXJ5U2V0Lmg+CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi1SZW1vdGVRdWVyeVNldDo6UmVtb3RlUXVlcnlTZXQoUEFMOjpX
ZWJHUFU6OlF1ZXJ5U2V0JiBxdWVyeVNldCwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0
UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyKQorUmVtb3RlUXVlcnlTZXQ6OlJlbW90ZVF1ZXJ5U2V0KFBBTDo6V2ViR1BV
OjpRdWVyeVNldCYgcXVlcnlTZXQsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2Vi
R1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5nKHF1ZXJ5U2V0KQotICAg
ICwgbV9vYmplY3RSZWdpc3RyeShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChv
YmplY3RIZWFwKQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7Ci0gICAgbV9vYmpl
Y3RSZWdpc3RyeS5hZGRPYmplY3QobV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOwogfQogCi1SZW1v
dGVRdWVyeVNldDo6flJlbW90ZVF1ZXJ5U2V0KCkKLXsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LnJl
bW92ZU9iamVjdChtX2lkZW50aWZpZXIpOwotfQorUmVtb3RlUXVlcnlTZXQ6On5SZW1vdGVRdWVy
eVNldCgpID0gZGVmYXVsdDsKIAogdm9pZCBSZW1vdGVRdWVyeVNldDo6ZGVzdHJveSgpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZVF1ZXJ5U2V0LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZVF1ZXJ5U2V0LmgKaW5kZXggZTE3ZDczYzMyZWYzZWYwZjM3ZDZhYmVhNTU1OTBmOWQwNTEy
NjM4YS4uNGZhMDJkZGZkYTM0OThiZTA5Mzg0ZWFjZGYwNzhmZDYzMmU5NDM4OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWVyeVNl
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
UXVlcnlTZXQuaApAQCAtNDAsMjIgKzQwLDIyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1l
c3BhY2UgV2ViR1BVIHsKIGNsYXNzIE9iamVjdEhlYXA7Ci1jbGFzcyBPYmplY3RSZWdpc3RyeTsK
IH0KIAogY2xhc3MgUmVtb3RlUXVlcnlTZXQgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNz
YWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8UmVtb3RlUXVlcnlTZXQ+IGNyZWF0ZShQQUw6OldlYkdQVTo6UXVlcnlTZXQm
IHF1ZXJ5U2V0LCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BV
OjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisg
ICAgc3RhdGljIFJlZjxSZW1vdGVRdWVyeVNldD4gY3JlYXRlKFBBTDo6V2ViR1BVOjpRdWVyeVNl
dCYgcXVlcnlTZXQsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRp
ZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVt
b3RlUXVlcnlTZXQocXVlcnlTZXQsIG9iamVjdFJlZ2lzdHJ5LCBvYmplY3RIZWFwLCBpZGVudGlm
aWVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVF1ZXJ5U2V0KHF1ZXJ5
U2V0LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVt
b3RlUXVlcnlTZXQoKTsKIAotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgT2JqZWN0UmVnaXN0
cnk7CisgICAgUEFMOjpXZWJHUFU6OlF1ZXJ5U2V0JiBiYWNraW5nKCkgeyByZXR1cm4gbV9iYWNr
aW5nOyB9CiAKLSAgICBSZW1vdGVRdWVyeVNldChQQUw6OldlYkdQVTo6UXVlcnlTZXQmLCBXZWJH
UFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmll
cik7Citwcml2YXRlOgorICAgIFJlbW90ZVF1ZXJ5U2V0KFBBTDo6V2ViR1BVOjpRdWVyeVNldCYs
IFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlUXVl
cnlTZXQoY29uc3QgUmVtb3RlUXVlcnlTZXQmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVRdWVyeVNl
dChSZW1vdGVRdWVyeVNldCYmKSA9IGRlbGV0ZTsKQEAgLTY5LDcgKzY5LDYgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6UXVl
cnlTZXQ+IG1fYmFja2luZzsKLSAgICBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBtX29iamVjdFJl
Z2lzdHJ5OwogICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFwOwogICAgIFdlYkdQ
VUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVldWUuY3BwIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWV1ZS5jcHAKaW5kZXggZGVhNjQw
OThmYTZkNDVjODU3MzkzNDRlNWFhN2YwZjA4MjNiOWE5Ni4uZmZhYTY2ZDZiMDNkM2I3MjI0MzIx
YTdkNWM3MTAxNWM3NjExOTQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWV1ZS5jcHAKQEAgLTI5LDMxICsyOSwyNSBA
QAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAu
aCIKLSNpbmNsdWRlICJXZWJHUFVPYmplY3RSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHBhbC9ncmFw
aGljcy9XZWJHUFUvV2ViR1BVUXVldWUuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90
ZVF1ZXVlOjpSZW1vdGVRdWV1ZShQQUw6OldlYkdQVTo6UXVldWUmIHF1ZXVlLCBXZWJHUFU6Ok9i
amVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RI
ZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCitSZW1vdGVRdWV1ZTo6UmVtb3RlUXVl
dWUoUEFMOjpXZWJHUFU6OlF1ZXVlJiBxdWV1ZSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RI
ZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2JhY2tpbmcocXVldWUp
Ci0gICAgLCBtX29iamVjdFJlZ2lzdHJ5KG9iamVjdFJlZ2lzdHJ5KQogICAgICwgbV9vYmplY3RI
ZWFwKG9iamVjdEhlYXApCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKLSAgICBt
X29iamVjdFJlZ2lzdHJ5LmFkZE9iamVjdChtX2lkZW50aWZpZXIsIG1fYmFja2luZyk7CiB9CiAK
LVJlbW90ZVF1ZXVlOjp+UmVtb3RlUXVldWUoKQotewotICAgIG1fb2JqZWN0UmVnaXN0cnkucmVt
b3ZlT2JqZWN0KG1faWRlbnRpZmllcik7Ci19CitSZW1vdGVRdWV1ZTo6flJlbW90ZVF1ZXVlKCkg
PSBkZWZhdWx0OwogCiB2b2lkIFJlbW90ZVF1ZXVlOjpzdWJtaXQoVmVjdG9yPFdlYkdQVUlkZW50
aWZpZXI+JiYgY29tbWFuZEJ1ZmZlcnMpCiB7CiAgICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dy
YXBwZXI8UEFMOjpXZWJHUFU6OkNvbW1hbmRCdWZmZXI+PiBjb252ZXJ0ZWRDb21tYW5kQnVmZmVy
czsKICAgICBjb252ZXJ0ZWRDb21tYW5kQnVmZmVycy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNv
bW1hbmRCdWZmZXJzLnNpemUoKSk7CiAgICAgZm9yIChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZp
ZXIgOiBjb21tYW5kQnVmZmVycykgewotICAgICAgICBhdXRvIGNvbnZlcnRlZENvbW1hbmRCdWZm
ZXIgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRDb21tYW5kQnVmZmVyRnJvbUJhY2tpbmcoaWRl
bnRpZmllcik7CisgICAgICAgIGF1dG8gY29udmVydGVkQ29tbWFuZEJ1ZmZlciA9IG1fb2JqZWN0
SGVhcC5jb252ZXJ0Q29tbWFuZEJ1ZmZlckZyb21CYWNraW5nKGlkZW50aWZpZXIpOwogICAgICAg
ICBBU1NFUlQoY29udmVydGVkQ29tbWFuZEJ1ZmZlcik7CiAgICAgICAgIGlmICghY29udmVydGVk
Q29tbWFuZEJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKQEAgLTc0LDcgKzY4LDcgQEAgdm9p
ZCBSZW1vdGVRdWV1ZTo6d3JpdGVCdWZmZXIoCiAgICAgUEFMOjpXZWJHUFU6OlNpemU2NCBidWZm
ZXJPZmZzZXQsCiAgICAgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKLSAgICBhdXRvIGNvbnZl
cnRlZEJ1ZmZlciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEJ1ZmZlckZyb21CYWNraW5nKGJ1
ZmZlcik7CisgICAgYXV0byBjb252ZXJ0ZWRCdWZmZXIgPSBtX29iamVjdEhlYXAuY29udmVydEJ1
ZmZlckZyb21CYWNraW5nKGJ1ZmZlcik7CiAgICAgQVNTRVJUKGNvbnZlcnRlZEJ1ZmZlcik7CiAg
ICAgaWYgKCFjb252ZXJ0ZWRCdWZmZXIpCiAgICAgICAgIHJldHVybjsKQEAgLTg4LDExICs4Miwx
MSBAQCB2b2lkIFJlbW90ZVF1ZXVlOjp3cml0ZVRleHR1cmUoCiAgICAgY29uc3QgV2ViR1BVOjpJ
bWFnZURhdGFMYXlvdXQmIGRhdGFMYXlvdXQsCiAgICAgY29uc3QgV2ViR1BVOjpFeHRlbnQzRCYg
c2l6ZSkKIHsKLSAgICBhdXRvIGNvbnZlcnRlZERlc3RpbmF0aW9uID0gbV9vYmplY3RSZWdpc3Ry
eS5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzdGluYXRpb24pOworICAgIGF1dG8gY29udmVydGVkRGVz
dGluYXRpb24gPSBtX29iamVjdEhlYXAuY29udmVydEZyb21CYWNraW5nKGRlc3RpbmF0aW9uKTsK
ICAgICBBU1NFUlQoY29udmVydGVkRGVzdGluYXRpb24pOwotICAgIGF1dG8gY29udmVydGVkRGF0
YUxheW91dCA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGRhdGFMYXlvdXQp
OworICAgIGF1dG8gY29udmVydGVkRGF0YUxheW91dCA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0RnJv
bUJhY2tpbmcoZGF0YUxheW91dCk7CiAgICAgQVNTRVJUKGNvbnZlcnRlZERlc3RpbmF0aW9uKTsK
LSAgICBhdXRvIGNvbnZlcnRlZFNpemUgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFj
a2luZyhzaXplKTsKKyAgICBhdXRvIGNvbnZlcnRlZFNpemUgPSBtX29iamVjdEhlYXAuY29udmVy
dEZyb21CYWNraW5nKHNpemUpOwogICAgIEFTU0VSVChjb252ZXJ0ZWRTaXplKTsKICAgICBpZiAo
IWNvbnZlcnRlZERlc3RpbmF0aW9uIHx8ICFjb252ZXJ0ZWREZXN0aW5hdGlvbiB8fCAhY29udmVy
dGVkU2l6ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTA1LDExICs5OSwxMSBAQCB2b2lkIFJlbW90
ZVF1ZXVlOjpjb3B5RXh0ZXJuYWxJbWFnZVRvVGV4dHVyZSgKICAgICBjb25zdCBXZWJHUFU6Oklt
YWdlQ29weVRleHR1cmVUYWdnZWQmIGRlc3RpbmF0aW9uLAogICAgIGNvbnN0IFdlYkdQVTo6RXh0
ZW50M0QmIGNvcHlTaXplKQogewotICAgIGF1dG8gY29udmVydGVkU291cmNlID0gbV9vYmplY3RS
ZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoc291cmNlKTsKKyAgICBhdXRvIGNvbnZlcnRlZFNv
dXJjZSA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0RnJvbUJhY2tpbmcoc291cmNlKTsKICAgICBBU1NF
UlQoY29udmVydGVkU291cmNlKTsKLSAgICBhdXRvIGNvbnZlcnRlZERlc3RpbmF0aW9uID0gbV9v
YmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzdGluYXRpb24pOworICAgIGF1dG8g
Y29udmVydGVkRGVzdGluYXRpb24gPSBtX29iamVjdEhlYXAuY29udmVydEZyb21CYWNraW5nKGRl
c3RpbmF0aW9uKTsKICAgICBBU1NFUlQoY29udmVydGVkRGVzdGluYXRpb24pOwotICAgIGF1dG8g
Y29udmVydGVkQ29weVNpemUgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhj
b3B5U2l6ZSk7CisgICAgYXV0byBjb252ZXJ0ZWRDb3B5U2l6ZSA9IG1fb2JqZWN0SGVhcC5jb252
ZXJ0RnJvbUJhY2tpbmcoY29weVNpemUpOwogICAgIEFTU0VSVChjb252ZXJ0ZWRDb3B5U2l6ZSk7
CiAgICAgaWYgKCFjb252ZXJ0ZWREZXN0aW5hdGlvbiB8fCAhY29udmVydGVkRGVzdGluYXRpb24g
fHwgIWNvbnZlcnRlZENvcHlTaXplKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXVlLmggYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXVlLmgKaW5kZXgg
YTUwYWY4MjQ1MWZiOWZiZWRhOTdjMTA2NWU2OTM2NWYzOWY3YjM4Ni4uYmNhMmZmNGM4ODJlOWI2
NDYzOTU5MDRiZDZjNzE2ZGQ3MmIzZjQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVldWUuaApAQCAtNDksMjIgKzQ5LDIy
IEBAIHN0cnVjdCBJbWFnZUNvcHlUZXh0dXJlOwogc3RydWN0IEltYWdlQ29weVRleHR1cmVUYWdn
ZWQ7CiBzdHJ1Y3QgSW1hZ2VEYXRhTGF5b3V0OwogY2xhc3MgT2JqZWN0SGVhcDsKLWNsYXNzIE9i
amVjdFJlZ2lzdHJ5OwogfQogCiBjbGFzcyBSZW1vdGVRdWV1ZSBmaW5hbCA6IHB1YmxpYyBJUEM6
OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVRdWV1ZT4gY3JlYXRlKFBBTDo6V2ViR1BVOjpR
dWV1ZSYgcXVldWUsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJH
UFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikK
KyAgICBzdGF0aWMgUmVmPFJlbW90ZVF1ZXVlPiBjcmVhdGUoUEFMOjpXZWJHUFU6OlF1ZXVlJiBx
dWV1ZSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVRdWV1
ZShxdWV1ZSwgb2JqZWN0UmVnaXN0cnksIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlUXVldWUocXVldWUsIG9iamVjdEhlYXAsIGlk
ZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVRdWV1ZSgpOwogCi1wcml2
YXRlOgotICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKKyAgICBQQUw6OldlYkdQVTo6
UXVldWUmIGJhY2tpbmcoKSB7IHJldHVybiBtX2JhY2tpbmc7IH0KIAotICAgIFJlbW90ZVF1ZXVl
KFBBTDo6V2ViR1BVOjpRdWV1ZSYsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmLCBXZWJHUFU6Ok9i
amVjdEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKK3ByaXZhdGU6CisgICAgUmVtb3RlUXVldWUo
UEFMOjpXZWJHUFU6OlF1ZXVlJiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmll
cik7CiAKICAgICBSZW1vdGVRdWV1ZShjb25zdCBSZW1vdGVRdWV1ZSYpID0gZGVsZXRlOwogICAg
IFJlbW90ZVF1ZXVlKFJlbW90ZVF1ZXVlJiYpID0gZGVsZXRlOwpAQCAtOTYsNyArOTYsNiBAQCBw
cml2YXRlOgogICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCiAgICAgUmVmPFBBTDo6V2Vi
R1BVOjpRdWV1ZT4gbV9iYWNraW5nOwotICAgIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG1fb2Jq
ZWN0UmVnaXN0cnk7CiAgICAgV2ViR1BVOjpPYmplY3RIZWFwJiBtX29iamVjdEhlYXA7CiAgICAg
V2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGUuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5k
bGUuY3BwCmluZGV4IDE3ZTBhY2Y5MDE5YzM0ZDk5ZjJiMDY3NzI4NDFkMzVkMzhmOGM5ZTQuLjVh
ZDVkYzdhZjAwM2FiMWZiMzc4OWY5ZjYzZmFlOTY0MmNlMTY5OWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJl
bmRlckJ1bmRsZS5jcHAKQEAgLTI5LDI0ICsyOSwxOCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykKIAogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKLSNpbmNsdWRlICJXZWJHUFVPYmpl
Y3RSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUmVuZGVy
QnVuZGxlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZW1vdGVSZW5kZXJCdW5kbGU6OlJl
bW90ZVJlbmRlckJ1bmRsZShQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlJiByZW5kZXJCdW5kbGUs
IFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhl
YXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK1JlbW90ZVJlbmRl
ckJ1bmRsZTo6UmVtb3RlUmVuZGVyQnVuZGxlKFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGUmIHJl
bmRlckJ1bmRsZSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlm
aWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2JhY2tpbmcocmVuZGVyQnVuZGxlKQotICAgICwgbV9v
YmplY3RSZWdpc3RyeShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RI
ZWFwKQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7Ci0gICAgbV9vYmplY3RSZWdp
c3RyeS5hZGRPYmplY3QobV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOwogfQogCi1SZW1vdGVSZW5k
ZXJCdW5kbGU6On5SZW1vdGVSZW5kZXJCdW5kbGUoKQotewotICAgIG1fb2JqZWN0UmVnaXN0cnku
cmVtb3ZlT2JqZWN0KG1faWRlbnRpZmllcik7Ci19CitSZW1vdGVSZW5kZXJCdW5kbGU6On5SZW1v
dGVSZW5kZXJCdW5kbGUoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVtb3RlUmVuZGVyQnVuZGxlOjpz
ZXRMYWJlbChTdHJpbmcmJiBsYWJlbCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlLmggYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZS5oCmluZGV4
IDZiODBkNTliYTcyNzI4MjJkZTA3NmEyYTU3N2M2MTdlMTg5YTFjYWYuLjZjYTI0MGI2NjI2MzIx
MTU1ZDcxYTdhODllNzhlODc3YTlmMzg1MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlLmgKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGUuaApA
QCAtNDAsMjIgKzQwLDIyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgV2ViR1BV
IHsKIGNsYXNzIE9iamVjdEhlYXA7Ci1jbGFzcyBPYmplY3RSZWdpc3RyeTsKIH0KIAogY2xhc3Mg
UmVtb3RlUmVuZGVyQnVuZGxlIGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2Vp
dmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPFJlbW90ZVJlbmRlckJ1bmRsZT4gY3JlYXRlKFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGUm
IHJlbmRlckJ1bmRsZSwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdl
YkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
KQorICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyQnVuZGxlPiBjcmVhdGUoUEFMOjpXZWJHUFU6
OlJlbmRlckJ1bmRsZSYgcmVuZGVyQnVuZGxlLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhl
YXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFJlbW90ZVJlbmRlckJ1bmRsZShyZW5kZXJCdW5kbGUsIG9iamVjdFJlZ2lz
dHJ5LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFJlbW90ZVJlbmRlckJ1bmRsZShyZW5kZXJCdW5kbGUsIG9iamVjdEhlYXAsIGlkZW50aWZp
ZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVSZW5kZXJCdW5kbGUoKTsKIAotcHJp
dmF0ZToKLSAgICBmcmllbmQgY2xhc3MgT2JqZWN0UmVnaXN0cnk7CisgICAgUEFMOjpXZWJHUFU6
OlJlbmRlckJ1bmRsZSYgYmFja2luZygpIHsgcmV0dXJuIG1fYmFja2luZzsgfQogCi0gICAgUmVt
b3RlUmVuZGVyQnVuZGxlKFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGUmLCBXZWJHUFU6Ok9iamVj
dFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7Citwcml2
YXRlOgorICAgIFJlbW90ZVJlbmRlckJ1bmRsZShQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlJiwg
V2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVSZW5k
ZXJCdW5kbGUoY29uc3QgUmVtb3RlUmVuZGVyQnVuZGxlJikgPSBkZWxldGU7CiAgICAgUmVtb3Rl
UmVuZGVyQnVuZGxlKFJlbW90ZVJlbmRlckJ1bmRsZSYmKSA9IGRlbGV0ZTsKQEAgLTY3LDcgKzY3
LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQ
QUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlPiBtX2JhY2tpbmc7Ci0gICAgV2ViR1BVOjpPYmplY3RS
ZWdpc3RyeSYgbV9vYmplY3RSZWdpc3RyeTsKICAgICBXZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2Jq
ZWN0SGVhcDsKICAgICBXZWJHUFVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRl
ckJ1bmRsZUVuY29kZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyLmNwcAppbmRleCA3NzJjZjgyYTkxNjBhODZl
MzA0MTQ4ODQ0NjljYjEyYThlOWY1Y2FjLi43MzM3Njk5NDUwMWNjZjhiYzhiYzVhOWQ4YmQ1MDgw
NmJiZGI1ZTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlci5jcHAK
QEAgLTMwLDI5ICszMCwyMyBAQAogCiAjaW5jbHVkZSAiUmVtb3RlUmVuZGVyQnVuZGxlLmgiCiAj
aW5jbHVkZSAiV2ViR1BVT2JqZWN0SGVhcC5oIgotI2luY2x1ZGUgIldlYkdQVU9iamVjdFJlZ2lz
dHJ5LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJCdW5kbGUu
aD4KICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlckJ1bmRsZUVuY29k
ZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6
OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIoUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29k
ZXImIHJlbmRlckJ1bmRsZUVuY29kZXIsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJl
Z2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIg
aWRlbnRpZmllcikKK1JlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OlJlbW90ZVJlbmRlckJ1bmRs
ZUVuY29kZXIoUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXImIHJlbmRlckJ1bmRsZUVu
Y29kZXIsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBp
ZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5nKHJlbmRlckJ1bmRsZUVuY29kZXIpCi0gICAgLCBt
X29iamVjdFJlZ2lzdHJ5KG9iamVjdFJlZ2lzdHJ5KQogICAgICwgbV9vYmplY3RIZWFwKG9iamVj
dEhlYXApCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKLSAgICBtX29iamVjdFJl
Z2lzdHJ5LmFkZE9iamVjdChtX2lkZW50aWZpZXIsIG1fYmFja2luZyk7CiB9CiAKLVJlbW90ZVJl
bmRlckJ1bmRsZUVuY29kZXI6On5SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyKCkKLXsKLSAgICBt
X29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOwotfQorUmVtb3RlUmVu
ZGVyQnVuZGxlRW5jb2Rlcjo6flJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIoKSA9IGRlZmF1bHQ7
CiAKIHZvaWQgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6c2V0UGlwZWxpbmUoV2ViR1BVSWRl
bnRpZmllciByZW5kZXJQaXBlbGluZSkKIHsKLSAgICBhdXRvIGNvbnZlcnRlZFJlbmRlclBpcGVs
aW5lID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0UmVuZGVyUGlwZWxpbmVGcm9tQmFja2luZyhy
ZW5kZXJQaXBlbGluZSk7CisgICAgYXV0byBjb252ZXJ0ZWRSZW5kZXJQaXBlbGluZSA9IG1fb2Jq
ZWN0SGVhcC5jb252ZXJ0UmVuZGVyUGlwZWxpbmVGcm9tQmFja2luZyhyZW5kZXJQaXBlbGluZSk7
CiAgICAgQVNTRVJUKGNvbnZlcnRlZFJlbmRlclBpcGVsaW5lKTsKICAgICBpZiAoIWNvbnZlcnRl
ZFJlbmRlclBpcGVsaW5lKQogICAgICAgICByZXR1cm47CkBAIC02Miw3ICs1Niw3IEBAIHZvaWQg
UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6c2V0UGlwZWxpbmUoV2ViR1BVSWRlbnRpZmllciBy
ZW5kZXJQaXBlbGluZSkKIAogdm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpzZXRJbmRl
eEJ1ZmZlcihXZWJHUFVJZGVudGlmaWVyIGJ1ZmZlciwgUEFMOjpXZWJHUFU6OkluZGV4Rm9ybWF0
IGluZGV4Rm9ybWF0LCBQQUw6OldlYkdQVTo6U2l6ZTY0IG9mZnNldCwgc3RkOjpvcHRpb25hbDxQ
QUw6OldlYkdQVTo6U2l6ZTY0PiBzaXplKQogewotICAgIGF1dG8gY29udmVydGVkQnVmZmVyID0g
bV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoYnVmZmVyKTsKKyAgICBh
dXRvIGNvbnZlcnRlZEJ1ZmZlciA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0QnVmZmVyRnJvbUJhY2tp
bmcoYnVmZmVyKTsKICAgICBBU1NFUlQoY29udmVydGVkQnVmZmVyKTsKICAgICBpZiAoIWNvbnZl
cnRlZEJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwpAQCAtNzIsNyArNjYsNyBAQCB2b2lkIFJlbW90
ZVJlbmRlckJ1bmRsZUVuY29kZXI6OnNldEluZGV4QnVmZmVyKFdlYkdQVUlkZW50aWZpZXIgYnVm
ZmVyLCBQQUw6OldlYgogCiB2b2lkIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OnNldFZlcnRl
eEJ1ZmZlcihQQUw6OldlYkdQVTo6SW5kZXgzMiBzbG90LCBXZWJHUFVJZGVudGlmaWVyIGJ1ZmZl
ciwgUEFMOjpXZWJHUFU6OlNpemU2NCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6
OlNpemU2ND4gc2l6ZSkKIHsKLSAgICBhdXRvIGNvbnZlcnRlZEJ1ZmZlciA9IG1fb2JqZWN0UmVn
aXN0cnkuY29udmVydEJ1ZmZlckZyb21CYWNraW5nKGJ1ZmZlcik7CisgICAgYXV0byBjb252ZXJ0
ZWRCdWZmZXIgPSBtX29iamVjdEhlYXAuY29udmVydEJ1ZmZlckZyb21CYWNraW5nKGJ1ZmZlcik7
CiAgICAgQVNTRVJUKGNvbnZlcnRlZEJ1ZmZlcik7CiAgICAgaWYgKCFjb252ZXJ0ZWRCdWZmZXIp
CiAgICAgICAgIHJldHVybjsKQEAgLTk2LDcgKzkwLDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJCdW5k
bGVFbmNvZGVyOjpkcmF3SW5kZXhlZChQQUw6OldlYkdQVTo6U2l6ZTMyIGluZGV4Q291bnQsIFBB
TDoKIAogdm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpkcmF3SW5kaXJlY3QoV2ViR1BV
SWRlbnRpZmllciBpbmRpcmVjdEJ1ZmZlciwgUEFMOjpXZWJHUFU6OlNpemU2NCBpbmRpcmVjdE9m
ZnNldCkKIHsKLSAgICBhdXRvIGNvbnZlcnRlZEluZGlyZWN0QnVmZmVyID0gbV9vYmplY3RSZWdp
c3RyeS5jb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoaW5kaXJlY3RCdWZmZXIpOworICAgIGF1dG8g
Y29udmVydGVkSW5kaXJlY3RCdWZmZXIgPSBtX29iamVjdEhlYXAuY29udmVydEJ1ZmZlckZyb21C
YWNraW5nKGluZGlyZWN0QnVmZmVyKTsKICAgICBBU1NFUlQoY29udmVydGVkSW5kaXJlY3RCdWZm
ZXIpOwogICAgIGlmICghY29udmVydGVkSW5kaXJlY3RCdWZmZXIpCiAgICAgICAgIHJldHVybjsK
QEAgLTEwNiw3ICsxMDAsNyBAQCB2b2lkIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OmRyYXdJ
bmRpcmVjdChXZWJHUFVJZGVudGlmaWVyIGluZGlyZWN0QnVmZmVyLCBQQQogCiB2b2lkIFJlbW90
ZVJlbmRlckJ1bmRsZUVuY29kZXI6OmRyYXdJbmRleGVkSW5kaXJlY3QoV2ViR1BVSWRlbnRpZmll
ciBpbmRpcmVjdEJ1ZmZlciwgUEFMOjpXZWJHUFU6OlNpemU2NCBpbmRpcmVjdE9mZnNldCkKIHsK
LSAgICBhdXRvIGNvbnZlcnRlZEluZGlyZWN0QnVmZmVyID0gbV9vYmplY3RSZWdpc3RyeS5jb252
ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoaW5kaXJlY3RCdWZmZXIpOworICAgIGF1dG8gY29udmVydGVk
SW5kaXJlY3RCdWZmZXIgPSBtX29iamVjdEhlYXAuY29udmVydEJ1ZmZlckZyb21CYWNraW5nKGlu
ZGlyZWN0QnVmZmVyKTsKICAgICBBU1NFUlQoY29udmVydGVkSW5kaXJlY3RCdWZmZXIpOwogICAg
IGlmICghY29udmVydGVkSW5kaXJlY3RCdWZmZXIpCiAgICAgICAgIHJldHVybjsKQEAgLTExNyw3
ICsxMTEsNyBAQCB2b2lkIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OmRyYXdJbmRleGVkSW5k
aXJlY3QoV2ViR1BVSWRlbnRpZmllciBpbmRpcmVjdEJ1Zgogdm9pZCBSZW1vdGVSZW5kZXJCdW5k
bGVFbmNvZGVyOjpzZXRCaW5kR3JvdXAoUEFMOjpXZWJHUFU6OkluZGV4MzIgaW5kZXgsIFdlYkdQ
VUlkZW50aWZpZXIgYmluZEdyb3VwLAogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFBBTDo6V2Vi
R1BVOjpCdWZmZXJEeW5hbWljT2Zmc2V0Pj4mJiBkeW5hbWljT2Zmc2V0cykKIHsKLSAgICBhdXRv
IGNvbnZlcnRlZEJpbmRHcm91cCA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEJpbmRHcm91cEZy
b21CYWNraW5nKGJpbmRHcm91cCk7CisgICAgYXV0byBjb252ZXJ0ZWRCaW5kR3JvdXAgPSBtX29i
amVjdEhlYXAuY29udmVydEJpbmRHcm91cEZyb21CYWNraW5nKGJpbmRHcm91cCk7CiAgICAgQVNT
RVJUKGNvbnZlcnRlZEJpbmRHcm91cCk7CiAgICAgaWYgKCFjb252ZXJ0ZWRCaW5kR3JvdXApCiAg
ICAgICAgIHJldHVybjsKQEAgLTE0MiwxNCArMTM2LDE0IEBAIHZvaWQgUmVtb3RlUmVuZGVyQnVu
ZGxlRW5jb2Rlcjo6aW5zZXJ0RGVidWdNYXJrZXIoU3RyaW5nJiYgbWFya2VyTGFiZWwpCiAKIHZv
aWQgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6ZmluaXNoKGNvbnN0IFdlYkdQVTo6UmVuZGVy
QnVuZGxlRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
KQogewotICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0UmVnaXN0cnkuY29u
dmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOworICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRv
ciA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7CiAgICAgQVNT
RVJUKGNvbnZlcnRlZERlc2NyaXB0b3IpOwogICAgIGlmICghY29udmVydGVkRGVzY3JpcHRvcikK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byByZW5kZXJCdW5kbGUgPSBtX2JhY2tpbmctPmZp
bmlzaCgqY29udmVydGVkRGVzY3JpcHRvcik7Ci0gICAgYXV0byByZW1vdGVSZW5kZXJCdW5kbGUg
PSBSZW1vdGVSZW5kZXJCdW5kbGU6OmNyZWF0ZShyZW5kZXJCdW5kbGUsIG1fb2JqZWN0UmVnaXN0
cnksIG1fb2JqZWN0SGVhcCwgaWRlbnRpZmllcik7Ci0gICAgbV9vYmplY3RIZWFwLmFkZE9iamVj
dChyZW1vdGVSZW5kZXJCdW5kbGUpOworICAgIGF1dG8gcmVtb3RlUmVuZGVyQnVuZGxlID0gUmVt
b3RlUmVuZGVyQnVuZGxlOjpjcmVhdGUocmVuZGVyQnVuZGxlLCBtX29iamVjdEhlYXAsIGlkZW50
aWZpZXIpOworICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QoaWRlbnRpZmllciwgcmVtb3RlUmVu
ZGVyQnVuZGxlKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpzZXRMYWJl
bChTdHJpbmcmJiBsYWJlbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlci5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyLmgK
aW5kZXggZjg3YjczZTAxYzdhYTRiMWI2NmQ0YzVhNzZhYWJiNTUzZDc3MTYzMi4uODdkOWFkNGFj
MTM2NjMwOWY1ODNkZjQzZDU3MmFhOGY0NWJiY2RjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5k
ZXJCdW5kbGVFbmNvZGVyLmgKQEAgLTQyLDIzICs0MiwyMyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogbmFtZXNwYWNlIFdlYkdQVSB7CiBjbGFzcyBPYmplY3RIZWFwOwotY2xhc3MgT2JqZWN0UmVn
aXN0cnk7CiBzdHJ1Y3QgUmVuZGVyQnVuZGxlRGVzY3JpcHRvcjsKIH0KIAogY2xhc3MgUmVtb3Rl
UmVuZGVyQnVuZGxlRW5jb2RlciBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNl
aXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyPiBjcmVhdGUoUEFMOjpXZWJHUFU6OlJlbmRl
ckJ1bmRsZUVuY29kZXImIHJlbmRlckJ1bmRsZUVuY29kZXIsIFdlYkdQVTo6T2JqZWN0UmVnaXN0
cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQ
VUlkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlckJ1bmRs
ZUVuY29kZXI+IGNyZWF0ZShQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2RlciYgcmVuZGVy
QnVuZGxlRW5jb2RlciwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBS
ZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyKHJlbmRlckJ1bmRsZUVuY29kZXIsIG9iamVjdFJlZ2lz
dHJ5LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIocmVuZGVyQnVuZGxlRW5jb2Rlciwgb2JqZWN0
SGVhcCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIH5SZW1vdGVSZW5kZXJCdW5kbGVFbmNv
ZGVyKCk7CiAKLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIE9iamVjdFJlZ2lzdHJ5OworICAg
IFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyJiBiYWNraW5nKCkgeyByZXR1cm4gbV9i
YWNraW5nOyB9CiAKLSAgICBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyKFBBTDo6V2ViR1BVOjpS
ZW5kZXJCdW5kbGVFbmNvZGVyJiwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2Jq
ZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOworcHJpdmF0ZToKKyAgICBSZW1vdGVSZW5kZXJC
dW5kbGVFbmNvZGVyKFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyJiwgV2ViR1BVOjpP
YmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVSZW5kZXJCdW5kbGVF
bmNvZGVyKGNvbnN0IFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXImKSA9IGRlbGV0ZTsKICAgICBS
ZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyKFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXImJikgPSBk
ZWxldGU7CkBAIC05NCw3ICs5NCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRMYWJlbChTdHJp
bmcmJik7CiAKICAgICBSZWY8UEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXI+IG1fYmFj
a2luZzsKLSAgICBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBtX29iamVjdFJlZ2lzdHJ5OwogICAg
IFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFwOwogICAgIFdlYkdQVUlkZW50aWZpZXIg
bV9pZGVudGlmaWVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIuY3BwIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQYXNzRW5jb2Rlci5jcHAK
aW5kZXggOTdiODEyMzQwNzBkNjJmYThkMmMzMWQ4YzVmODE3YWQ2MjhmYzhmZS4uZmM1ZWMwMDY5
YzUxMjUzYmZkOGJhMzVmNWJhMzZjN2RiNDM4ODhkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQYXNzRW5jb2Rlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5k
ZXJQYXNzRW5jb2Rlci5jcHAKQEAgLTI5LDI4ICsyOSwyMiBAQAogI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKIAogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKLSNpbmNsdWRlICJXZWJHUFVP
YmplY3RSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUmVu
ZGVyUGFzc0VuY29kZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90ZVJlbmRlclBh
c3NFbmNvZGVyOjpSZW1vdGVSZW5kZXJQYXNzRW5jb2RlcihQQUw6OldlYkdQVTo6UmVuZGVyUGFz
c0VuY29kZXImIHJlbmRlclBhc3NFbmNvZGVyLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmpl
Y3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlm
aWVyIGlkZW50aWZpZXIpCitSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6UmVtb3RlUmVuZGVyUGFz
c0VuY29kZXIoUEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyJiByZW5kZXJQYXNzRW5jb2Rl
ciwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50
aWZpZXIpCiAgICAgOiBtX2JhY2tpbmcocmVuZGVyUGFzc0VuY29kZXIpCi0gICAgLCBtX29iamVj
dFJlZ2lzdHJ5KG9iamVjdFJlZ2lzdHJ5KQogICAgICwgbV9vYmplY3RIZWFwKG9iamVjdEhlYXAp
CiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKLSAgICBtX29iamVjdFJlZ2lzdHJ5
LmFkZE9iamVjdChtX2lkZW50aWZpZXIsIG1fYmFja2luZyk7CiB9CiAKLVJlbW90ZVJlbmRlclBh
c3NFbmNvZGVyOjp+UmVtb3RlUmVuZGVyUGFzc0VuY29kZXIoKQotewotICAgIG1fb2JqZWN0UmVn
aXN0cnkucmVtb3ZlT2JqZWN0KG1faWRlbnRpZmllcik7Ci19CitSZW1vdGVSZW5kZXJQYXNzRW5j
b2Rlcjo6flJlbW90ZVJlbmRlclBhc3NFbmNvZGVyKCkgPSBkZWZhdWx0OwogCiB2b2lkIFJlbW90
ZVJlbmRlclBhc3NFbmNvZGVyOjpzZXRQaXBlbGluZShXZWJHUFVJZGVudGlmaWVyIHJlbmRlclBp
cGVsaW5lKQogewotICAgIGF1dG8gY29udmVydGVkUmVuZGVyUGlwZWxpbmUgPSBtX29iamVjdFJl
Z2lzdHJ5LmNvbnZlcnRSZW5kZXJQaXBlbGluZUZyb21CYWNraW5nKHJlbmRlclBpcGVsaW5lKTsK
KyAgICBhdXRvIGNvbnZlcnRlZFJlbmRlclBpcGVsaW5lID0gbV9vYmplY3RIZWFwLmNvbnZlcnRS
ZW5kZXJQaXBlbGluZUZyb21CYWNraW5nKHJlbmRlclBpcGVsaW5lKTsKICAgICBBU1NFUlQoY29u
dmVydGVkUmVuZGVyUGlwZWxpbmUpOwogICAgIGlmICghY29udmVydGVkUmVuZGVyUGlwZWxpbmUp
CiAgICAgICAgIHJldHVybjsKQEAgLTYwLDcgKzU0LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJQYXNz
RW5jb2Rlcjo6c2V0UGlwZWxpbmUoV2ViR1BVSWRlbnRpZmllciByZW5kZXJQaXBlbGluZSkKIAog
dm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0SW5kZXhCdWZmZXIoV2ViR1BVSWRlbnRp
ZmllciBidWZmZXIsIFBBTDo6V2ViR1BVOjpJbmRleEZvcm1hdCBpbmRleEZvcm1hdCwgUEFMOjpX
ZWJHUFU6OlNpemU2NCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemU2ND4g
c2l6ZSkKIHsKLSAgICBhdXRvIGNvbnZlcnRlZEJ1ZmZlciA9IG1fb2JqZWN0UmVnaXN0cnkuY29u
dmVydEJ1ZmZlckZyb21CYWNraW5nKGJ1ZmZlcik7CisgICAgYXV0byBjb252ZXJ0ZWRCdWZmZXIg
PSBtX29iamVjdEhlYXAuY29udmVydEJ1ZmZlckZyb21CYWNraW5nKGJ1ZmZlcik7CiAgICAgQVNT
RVJUKGNvbnZlcnRlZEJ1ZmZlcik7CiAgICAgaWYgKCFjb252ZXJ0ZWRCdWZmZXIpCiAgICAgICAg
IHJldHVybjsKQEAgLTcwLDcgKzY0LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6
c2V0SW5kZXhCdWZmZXIoV2ViR1BVSWRlbnRpZmllciBidWZmZXIsIFBBTDo6V2ViR1AKIAogdm9p
ZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0VmVydGV4QnVmZmVyKFBBTDo6V2ViR1BVOjpJ
bmRleDMyIHNsb3QsIFdlYkdQVUlkZW50aWZpZXIgYnVmZmVyLCBQQUw6OldlYkdQVTo6U2l6ZTY0
IG9mZnNldCwgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0PiBzaXplKQogewotICAg
IGF1dG8gY29udmVydGVkQnVmZmVyID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0QnVmZmVyRnJv
bUJhY2tpbmcoYnVmZmVyKTsKKyAgICBhdXRvIGNvbnZlcnRlZEJ1ZmZlciA9IG1fb2JqZWN0SGVh
cC5jb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoYnVmZmVyKTsKICAgICBBU1NFUlQoY29udmVydGVk
QnVmZmVyKTsKICAgICBpZiAoIWNvbnZlcnRlZEJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwpAQCAt
OTQsNyArODgsNyBAQCB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpkcmF3SW5kZXhlZChQ
QUw6OldlYkdQVTo6U2l6ZTMyIGluZGV4Q291bnQsIFBBTDo6VwogCiB2b2lkIFJlbW90ZVJlbmRl
clBhc3NFbmNvZGVyOjpkcmF3SW5kaXJlY3QoV2ViR1BVSWRlbnRpZmllciBpbmRpcmVjdEJ1ZmZl
ciwgUEFMOjpXZWJHUFU6OlNpemU2NCBpbmRpcmVjdE9mZnNldCkKIHsKLSAgICBhdXRvIGNvbnZl
cnRlZEluZGlyZWN0QnVmZmVyID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0QnVmZmVyRnJvbUJh
Y2tpbmcoaW5kaXJlY3RCdWZmZXIpOworICAgIGF1dG8gY29udmVydGVkSW5kaXJlY3RCdWZmZXIg
PSBtX29iamVjdEhlYXAuY29udmVydEJ1ZmZlckZyb21CYWNraW5nKGluZGlyZWN0QnVmZmVyKTsK
ICAgICBBU1NFUlQoY29udmVydGVkSW5kaXJlY3RCdWZmZXIpOwogICAgIGlmICghY29udmVydGVk
SW5kaXJlY3RCdWZmZXIpCiAgICAgICAgIHJldHVybjsKQEAgLTEwNCw3ICs5OCw3IEBAIHZvaWQg
UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OmRyYXdJbmRpcmVjdChXZWJHUFVJZGVudGlmaWVyIGlu
ZGlyZWN0QnVmZmVyLCBQQUw6CiAKIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OmRyYXdJ
bmRleGVkSW5kaXJlY3QoV2ViR1BVSWRlbnRpZmllciBpbmRpcmVjdEJ1ZmZlciwgUEFMOjpXZWJH
UFU6OlNpemU2NCBpbmRpcmVjdE9mZnNldCkKIHsKLSAgICBhdXRvIGNvbnZlcnRlZEluZGlyZWN0
QnVmZmVyID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoaW5kaXJl
Y3RCdWZmZXIpOworICAgIGF1dG8gY29udmVydGVkSW5kaXJlY3RCdWZmZXIgPSBtX29iamVjdEhl
YXAuY29udmVydEJ1ZmZlckZyb21CYWNraW5nKGluZGlyZWN0QnVmZmVyKTsKICAgICBBU1NFUlQo
Y29udmVydGVkSW5kaXJlY3RCdWZmZXIpOwogICAgIGlmICghY29udmVydGVkSW5kaXJlY3RCdWZm
ZXIpCiAgICAgICAgIHJldHVybjsKQEAgLTExNSw3ICsxMDksNyBAQCB2b2lkIFJlbW90ZVJlbmRl
clBhc3NFbmNvZGVyOjpkcmF3SW5kZXhlZEluZGlyZWN0KFdlYkdQVUlkZW50aWZpZXIgaW5kaXJl
Y3RCdWZmZQogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0QmluZEdyb3VwKFBBTDo6
V2ViR1BVOjpJbmRleDMyIGluZGV4LCBXZWJHUFVJZGVudGlmaWVyIGJpbmRHcm91cCwKICAgICBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxQQUw6OldlYkdQVTo6QnVmZmVyRHluYW1pY09mZnNldD4+JiYg
ZHluYW1pY09mZnNldHMpCiB7Ci0gICAgYXV0byBjb252ZXJ0ZWRCaW5kR3JvdXAgPSBtX29iamVj
dFJlZ2lzdHJ5LmNvbnZlcnRCaW5kR3JvdXBGcm9tQmFja2luZyhiaW5kR3JvdXApOworICAgIGF1
dG8gY29udmVydGVkQmluZEdyb3VwID0gbV9vYmplY3RIZWFwLmNvbnZlcnRCaW5kR3JvdXBGcm9t
QmFja2luZyhiaW5kR3JvdXApOwogICAgIEFTU0VSVChjb252ZXJ0ZWRCaW5kR3JvdXApOwogICAg
IGlmICghY29udmVydGVkQmluZEdyb3VwKQogICAgICAgICByZXR1cm47CkBAIC0xNTMsNyArMTQ3
LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0U2Npc3NvclJlY3QoUEFMOjpX
ZWJHUFU6OkludGVnZXJDb29yZGluYXRlIHgsIFAKIAogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5j
b2Rlcjo6c2V0QmxlbmRDb25zdGFudChXZWJHUFU6OkNvbG9yIGNvbG9yKQogewotICAgIGF1dG8g
Y29udmVydGVkQ29sb3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhjb2xv
cik7CisgICAgYXV0byBjb252ZXJ0ZWRDb2xvciA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0RnJvbUJh
Y2tpbmcoY29sb3IpOwogICAgIEFTU0VSVChjb252ZXJ0ZWRDb2xvcik7CiAgICAgaWYgKCFjb252
ZXJ0ZWRDb2xvcikKICAgICAgICAgcmV0dXJuOwpAQCAtMTc4LDcgKzE3Miw3IEBAIHZvaWQgUmVt
b3RlUmVuZGVyUGFzc0VuY29kZXI6OmVuZE9jY2x1c2lvblF1ZXJ5KCkKIAogdm9pZCBSZW1vdGVS
ZW5kZXJQYXNzRW5jb2Rlcjo6YmVnaW5QaXBlbGluZVN0YXRpc3RpY3NRdWVyeShXZWJHUFVJZGVu
dGlmaWVyIHF1ZXJ5U2V0LCBQQUw6OldlYkdQVTo6U2l6ZTMyIHF1ZXJ5SW5kZXgpCiB7Ci0gICAg
YXV0byBjb252ZXJ0ZWRRdWVyeVNldCA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydFF1ZXJ5U2V0
RnJvbUJhY2tpbmcocXVlcnlTZXQpOworICAgIGF1dG8gY29udmVydGVkUXVlcnlTZXQgPSBtX29i
amVjdEhlYXAuY29udmVydFF1ZXJ5U2V0RnJvbUJhY2tpbmcocXVlcnlTZXQpOwogICAgIEFTU0VS
VChjb252ZXJ0ZWRRdWVyeVNldCk7CiAgICAgaWYgKCFjb252ZXJ0ZWRRdWVyeVNldCkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTk2LDcgKzE5MCw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29k
ZXI6OmV4ZWN1dGVCdW5kbGVzKFZlY3RvcjxXZWJHUFVJZGVudGlmaWVyPiYmIHJlbmRlckJ1CiAg
ICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRs
ZT4+IGNvbnZlcnRlZEJ1bmRsZXM7CiAgICAgY29udmVydGVkQnVuZGxlcy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KHJlbmRlckJ1bmRsZXMuc2l6ZSgpKTsKICAgICBmb3IgKFdlYkdQVUlkZW50aWZp
ZXIgaWRlbnRpZmllciA6IHJlbmRlckJ1bmRsZXMpIHsKLSAgICAgICAgYXV0byBjb252ZXJ0ZWRC
dW5kbGUgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRSZW5kZXJCdW5kbGVGcm9tQmFja2luZyhp
ZGVudGlmaWVyKTsKKyAgICAgICAgYXV0byBjb252ZXJ0ZWRCdW5kbGUgPSBtX29iamVjdEhlYXAu
Y29udmVydFJlbmRlckJ1bmRsZUZyb21CYWNraW5nKGlkZW50aWZpZXIpOwogICAgICAgICBBU1NF
UlQoY29udmVydGVkQnVuZGxlKTsKICAgICAgICAgaWYgKCFjb252ZXJ0ZWRCdW5kbGUpCiAgICAg
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBhc3NFbmNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBhc3NFbmNvZGVyLmgKaW5kZXgg
ZmI2ZDNkYjU5YTkzMjE0YWQ4ZDQwNGZkYWRjNWRjNzFhOTNlYWNlYy4uYjMxNGI3ZDJhMmY2YjQ5
ZDgyMzdhODIzYTQ3MjQwMTg1MGVmNzZlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQYXNzRW5jb2Rlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0Vu
Y29kZXIuaApAQCAtNDMsMjIgKzQzLDIyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3Bh
Y2UgV2ViR1BVIHsKIGNsYXNzIE9iamVjdEhlYXA7Ci1jbGFzcyBPYmplY3RSZWdpc3RyeTsKIH0K
IAogY2xhc3MgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJl
YW1NZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI+IGNyZWF0ZShQQUw6Oldl
YkdQVTo6UmVuZGVyUGFzc0VuY29kZXImIHJlbmRlclBhc3NFbmNvZGVyLCBXZWJHUFU6Ok9iamVj
dFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFw
LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxSZW1vdGVSZW5k
ZXJQYXNzRW5jb2Rlcj4gY3JlYXRlKFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRW5jb2RlciYgcmVu
ZGVyUGFzc0VuY29kZXIsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRl
bnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
UmVtb3RlUmVuZGVyUGFzc0VuY29kZXIocmVuZGVyUGFzc0VuY29kZXIsIG9iamVjdFJlZ2lzdHJ5
LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyKHJlbmRlclBhc3NFbmNvZGVyLCBvYmplY3RIZWFwLCBp
ZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgflJlbW90ZVJlbmRlclBhc3NFbmNvZGVyKCk7CiAK
LXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIE9iamVjdFJlZ2lzdHJ5OworICAgIFBBTDo6V2Vi
R1BVOjpSZW5kZXJQYXNzRW5jb2RlciYgYmFja2luZygpIHsgcmV0dXJuIG1fYmFja2luZzsgfQog
Ci0gICAgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIoUEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNv
ZGVyJiwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQ
VUlkZW50aWZpZXIpOworcHJpdmF0ZToKKyAgICBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlcihQQUw6
OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXImLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJ
ZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyKGNvbnN0IFJlbW90ZVJl
bmRlclBhc3NFbmNvZGVyJikgPSBkZWxldGU7CiAgICAgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIo
UmVtb3RlUmVuZGVyUGFzc0VuY29kZXImJikgPSBkZWxldGU7CkBAIC0xMTEsNyArMTExLDYgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6Oldl
YkdQVTo6UmVuZGVyUGFzc0VuY29kZXI+IG1fYmFja2luZzsKLSAgICBXZWJHUFU6Ok9iamVjdFJl
Z2lzdHJ5JiBtX29iamVjdFJlZ2lzdHJ5OwogICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmpl
Y3RIZWFwOwogICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVy
UGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVSZW5kZXJQaXBlbGluZS5jcHAKaW5kZXggMTU1MTUwMzdjNTE0MDI3MmIwYzk5ZGYzYzFk
ZWJjMzdkMDg1NWVkMS4uY2IwMDE5YzRiZjk5NzllN2Y3OTNiNDg0MTc5OGRlMjJmZWFkYjE4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVSZW5kZXJQaXBlbGluZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZS5jcHAKQEAgLTMwLDMxICszMCwyNSBAQAog
CiAjaW5jbHVkZSAiUmVtb3RlQmluZEdyb3VwTGF5b3V0LmgiCiAjaW5jbHVkZSAiV2ViR1BVT2Jq
ZWN0SGVhcC5oIgotI2luY2x1ZGUgIldlYkdQVU9iamVjdFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8
cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVCaW5kR3JvdXBMYXlvdXQuaD4KICNpbmNsdWRlIDxw
YWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlclBpcGVsaW5lLmg+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1SZW1vdGVSZW5kZXJQaXBlbGluZTo6UmVtb3RlUmVuZGVyUGlwZWxpbmUoUEFM
OjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lJiByZW5kZXJQaXBlbGluZSwgV2ViR1BVOjpPYmplY3RS
ZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwg
V2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorUmVtb3RlUmVuZGVyUGlwZWxpbmU6OlJlbW90
ZVJlbmRlclBpcGVsaW5lKFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZSYgcmVuZGVyUGlwZWxp
bmUsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVu
dGlmaWVyKQogICAgIDogbV9iYWNraW5nKHJlbmRlclBpcGVsaW5lKQotICAgICwgbV9vYmplY3RS
ZWdpc3RyeShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQog
ICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5h
ZGRPYmplY3QobV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOwogfQogCi1SZW1vdGVSZW5kZXJQaXBl
bGluZTo6flJlbW90ZVJlbmRlclBpcGVsaW5lKCkKLXsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LnJl
bW92ZU9iamVjdChtX2lkZW50aWZpZXIpOwotfQorUmVtb3RlUmVuZGVyUGlwZWxpbmU6On5SZW1v
dGVSZW5kZXJQaXBlbGluZSgpID0gZGVmYXVsdDsKIAogdm9pZCBSZW1vdGVSZW5kZXJQaXBlbGlu
ZTo6Z2V0QmluZEdyb3VwTGF5b3V0KHVpbnQzMl90IGluZGV4LCBXZWJHUFVJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCiB7CiAgICAgYXV0byBiaW5kR3JvdXBMYXlvdXQgPSBtX2JhY2tpbmctPmdldEJp
bmRHcm91cExheW91dChpbmRleCk7Ci0gICAgYXV0byByZW1vdGVCaW5kR3JvdXBMYXlvdXQgPSBS
ZW1vdGVCaW5kR3JvdXBMYXlvdXQ6OmNyZWF0ZShiaW5kR3JvdXBMYXlvdXQsIG1fb2JqZWN0UmVn
aXN0cnksIG1fb2JqZWN0SGVhcCwgaWRlbnRpZmllcik7Ci0gICAgbV9vYmplY3RIZWFwLmFkZE9i
amVjdChyZW1vdGVCaW5kR3JvdXBMYXlvdXQpOworICAgIGF1dG8gcmVtb3RlQmluZEdyb3VwTGF5
b3V0ID0gUmVtb3RlQmluZEdyb3VwTGF5b3V0OjpjcmVhdGUoYmluZEdyb3VwTGF5b3V0LCBtX29i
amVjdEhlYXAsIGlkZW50aWZpZXIpOworICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QoaWRlbnRp
ZmllciwgcmVtb3RlQmluZEdyb3VwTGF5b3V0KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQaXBl
bGluZTo6c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBpcGVsaW5lLmggYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBpcGVsaW5l
LmgKaW5kZXggYmM2Yjk2NTc1ZGNjZDNiZjljMDZjMjg5MjFjZjk1ZDYwYzg2NjU4MC4uMDZkOTJk
ZTY3MWVmN2ViNDMwNzMwNTRjZjY1ZGM1NmZkNzU2NDg5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVy
UGlwZWxpbmUuaApAQCAtNDAsMjIgKzQwLDIyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1l
c3BhY2UgV2ViR1BVIHsKIGNsYXNzIE9iamVjdEhlYXA7Ci1jbGFzcyBPYmplY3RSZWdpc3RyeTsK
IH0KIAogY2xhc3MgUmVtb3RlUmVuZGVyUGlwZWxpbmUgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJl
YW1NZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyUGlwZWxpbmU+IGNyZWF0ZShQQUw6OldlYkdQ
VTo6UmVuZGVyUGlwZWxpbmUmIHJlbmRlclBpcGVsaW5lLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5
JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxSZW1vdGVSZW5kZXJQaXBlbGlu
ZT4gY3JlYXRlKFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZSYgcmVuZGVyUGlwZWxpbmUsIFdl
YkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlUmVuZGVyUGlwZWxp
bmUocmVuZGVyUGlwZWxpbmUsIG9iamVjdFJlZ2lzdHJ5LCBvYmplY3RIZWFwLCBpZGVudGlmaWVy
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVJlbmRlclBpcGVsaW5lKHJl
bmRlclBpcGVsaW5lLCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmly
dHVhbCB+UmVtb3RlUmVuZGVyUGlwZWxpbmUoKTsKIAotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xh
c3MgT2JqZWN0UmVnaXN0cnk7CisgICAgUEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lJiBiYWNr
aW5nKCkgeyByZXR1cm4gbV9iYWNraW5nOyB9CiAKLSAgICBSZW1vdGVSZW5kZXJQaXBlbGluZShQ
QUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmUmLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2Vi
R1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7Citwcml2YXRlOgorICAgIFJlbW90
ZVJlbmRlclBpcGVsaW5lKFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZSYsIFdlYkdQVTo6T2Jq
ZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlUmVuZGVyUGlwZWxpbmUo
Y29uc3QgUmVtb3RlUmVuZGVyUGlwZWxpbmUmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVSZW5kZXJQ
aXBlbGluZShSZW1vdGVSZW5kZXJQaXBlbGluZSYmKSA9IGRlbGV0ZTsKQEAgLTY5LDcgKzY5LDYg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6
OldlYkdQVTo6UmVuZGVyUGlwZWxpbmU+IG1fYmFja2luZzsKLSAgICBXZWJHUFU6Ok9iamVjdFJl
Z2lzdHJ5JiBtX29iamVjdFJlZ2lzdHJ5OwogICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmpl
Y3RIZWFwOwogICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2FtcGxl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNh
bXBsZXIuY3BwCmluZGV4IGE3NmI2OTQ1ZDU3ODNmZjAwYzg5Nzk1ZWQ0MjNjNTJiMDBjMDRiYWQu
LjZmYzMyMTEzMTdiNjVjY2I1Yjg3N2QxMTgxMDQ1YWE4YWQ2ZDExY2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2FtcGxlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTYW1w
bGVyLmNwcApAQCAtMjksMjQgKzI5LDE4IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAj
aW5jbHVkZSAiV2ViR1BVT2JqZWN0SGVhcC5oIgotI2luY2x1ZGUgIldlYkdQVU9iamVjdFJlZ2lz
dHJ5LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVTYW1wbGVyLmg+CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZW1vdGVTYW1wbGVyOjpSZW1vdGVTYW1wbGVyKFBBTDo6
V2ViR1BVOjpTYW1wbGVyJiBzYW1wbGVyLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RS
ZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVy
IGlkZW50aWZpZXIpCitSZW1vdGVTYW1wbGVyOjpSZW1vdGVTYW1wbGVyKFBBTDo6V2ViR1BVOjpT
YW1wbGVyJiBzYW1wbGVyLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlk
ZW50aWZpZXIgaWRlbnRpZmllcikKICAgICA6IG1fYmFja2luZyhzYW1wbGVyKQotICAgICwgbV9v
YmplY3RSZWdpc3RyeShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RI
ZWFwKQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7Ci0gICAgbV9vYmplY3RSZWdp
c3RyeS5hZGRPYmplY3QobV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOwogfQogCi1SZW1vdGVTYW1w
bGVyOjp+UmVtb3RlU2FtcGxlcigpCi17Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5yZW1vdmVPYmpl
Y3QobV9pZGVudGlmaWVyKTsKLX0KK1JlbW90ZVNhbXBsZXI6On5SZW1vdGVTYW1wbGVyKCkgPSBk
ZWZhdWx0OwogCiB2b2lkIFJlbW90ZVNhbXBsZXI6OnNldExhYmVsKFN0cmluZyYmIGxhYmVsKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVTYW1wbGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZVNhbXBsZXIuaAppbmRleCBhYzkwMzhhNWI5Y2E4N2VjYmY1YmZlNDFmODc0NjA0M2Uw
MDBjYTMzLi4yZjUxZmJiNTM5NDlkMmNiNWFkN2EwOWRiMmE5NTVjMzZmZmViZWEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNhbXBs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZVNhbXBsZXIuaApAQCAtNDAsMjIgKzQwLDIyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1l
c3BhY2UgV2ViR1BVIHsKIGNsYXNzIE9iamVjdEhlYXA7Ci1jbGFzcyBPYmplY3RSZWdpc3RyeTsK
IH0KIAogY2xhc3MgUmVtb3RlU2FtcGxlciBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3Nh
Z2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxSZW1vdGVTYW1wbGVyPiBjcmVhdGUoUEFMOjpXZWJHUFU6OlNhbXBsZXImIHNh
bXBsZXIsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9i
amVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICBz
dGF0aWMgUmVmPFJlbW90ZVNhbXBsZXI+IGNyZWF0ZShQQUw6OldlYkdQVTo6U2FtcGxlciYgc2Ft
cGxlciwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVTYW1w
bGVyKHNhbXBsZXIsIG9iamVjdFJlZ2lzdHJ5LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVNhbXBsZXIoc2FtcGxlciwgb2JqZWN0
SGVhcCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90ZVNhbXBsZXIo
KTsKIAotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgT2JqZWN0UmVnaXN0cnk7CisgICAgUEFM
OjpXZWJHUFU6OlNhbXBsZXImIGJhY2tpbmcoKSB7IHJldHVybiBtX2JhY2tpbmc7IH0KIAotICAg
IFJlbW90ZVNhbXBsZXIoUEFMOjpXZWJHUFU6OlNhbXBsZXImLCBXZWJHUFU6Ok9iamVjdFJlZ2lz
dHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7Citwcml2YXRlOgor
ICAgIFJlbW90ZVNhbXBsZXIoUEFMOjpXZWJHUFU6OlNhbXBsZXImLCBXZWJHUFU6Ok9iamVjdEhl
YXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZVNhbXBsZXIoY29uc3QgUmVtb3Rl
U2FtcGxlciYpID0gZGVsZXRlOwogICAgIFJlbW90ZVNhbXBsZXIoUmVtb3RlU2FtcGxlciYmKSA9
IGRlbGV0ZTsKQEAgLTY3LDcgKzY3LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0
cmluZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6U2FtcGxlcj4gbV9iYWNraW5nOwotICAg
IFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7CiAgICAgV2ViR1BVOjpP
YmplY3RIZWFwJiBtX29iamVjdEhlYXA7CiAgICAgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZp
ZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVTaGFkZXJNb2R1bGUuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGUuY3BwCmluZGV4IDQ1YWMwZDNmNzM2NWMx
OWI1NDg4Y2MxZGQwOTRkMjJhMTQ3ZTAzNjcuLjgxYjQwNTA2NWYzMDBkMTAzNmMwMzYzNzgwYjNj
NjE1NGZkYzc5ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlU2hhZGVyTW9kdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNoYWRlck1vZHVsZS5jcHAKQEAgLTI5LDI2ICsy
OSwyMCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVU9iamVj
dEhlYXAuaCIKLSNpbmNsdWRlICJXZWJHUFVPYmplY3RSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHBh
bC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29tcGlsYXRpb25JbmZvLmg+CiAjaW5jbHVkZSA8cGFs
L2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVDb21waWxhdGlvbk1lc3NhZ2UuaD4KICNpbmNsdWRlIDxw
YWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVNoYWRlck1vZHVsZS5oPgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotUmVtb3RlU2hhZGVyTW9kdWxlOjpSZW1vdGVTaGFkZXJNb2R1bGUoUEFMOjpXZWJH
UFU6OlNoYWRlck1vZHVsZSYgc2hhZGVyTW9kdWxlLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBv
YmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCitSZW1vdGVTaGFkZXJNb2R1bGU6OlJlbW90ZVNoYWRlck1vZHVs
ZShQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlJiBzaGFkZXJNb2R1bGUsIFdlYkdQVTo6T2JqZWN0
SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDogbV9i
YWNraW5nKHNoYWRlck1vZHVsZSkKLSAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2JqZWN0UmVnaXN0
cnkpCiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkKICAgICAsIG1faWRlbnRpZmllcihp
ZGVudGlmaWVyKQogewotICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1faWRlbnRpZmll
ciwgbV9iYWNraW5nKTsKIH0KIAotUmVtb3RlU2hhZGVyTW9kdWxlOjp+UmVtb3RlU2hhZGVyTW9k
dWxlKCkKLXsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIp
OwotfQorUmVtb3RlU2hhZGVyTW9kdWxlOjp+UmVtb3RlU2hhZGVyTW9kdWxlKCkgPSBkZWZhdWx0
OwogCiB2b2lkIFJlbW90ZVNoYWRlck1vZHVsZTo6Y29tcGlsYXRpb25JbmZvKFdURjo6Q29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViR1BVOjpDb21waWxhdGlvbk1lc3NhZ2U+JiYpPiYm
IGNhbGxiYWNrKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGUuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2hhZGVyTW9kdWxlLmgKaW5kZXggZjk3ZjAxOTZiYjA2
N2VkYmNiOTIzNWNkZWMxMDY0ZWMzNDE2NzJiYi4uYTA0YzE5YTM4NzMyMTY3MjBkYTYwNTBkMWM3
MGM5Y2Y5MmQ5YzQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNoYWRlck1vZHVsZS5oCkBAIC00MywyMiArNDMs
MjIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogY2xhc3MgT2Jq
ZWN0SGVhcDsKLWNsYXNzIE9iamVjdFJlZ2lzdHJ5OwogfQogCiBjbGFzcyBSZW1vdGVTaGFkZXJN
b2R1bGUgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlU2hh
ZGVyTW9kdWxlPiBjcmVhdGUoUEFMOjpXZWJHUFU6OlNoYWRlck1vZHVsZSYgc2hhZGVyTW9kdWxl
LCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RI
ZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgc3RhdGlj
IFJlZjxSZW1vdGVTaGFkZXJNb2R1bGU+IGNyZWF0ZShQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxl
JiBzaGFkZXJNb2R1bGUsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRl
bnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
UmVtb3RlU2hhZGVyTW9kdWxlKHNoYWRlck1vZHVsZSwgb2JqZWN0UmVnaXN0cnksIG9iamVjdEhl
YXAsIGlkZW50aWZpZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlU2hh
ZGVyTW9kdWxlKHNoYWRlck1vZHVsZSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOwogICAgIH0K
IAogICAgIHZpcnR1YWwgflJlbW90ZVNoYWRlck1vZHVsZSgpOwogCi1wcml2YXRlOgotICAgIGZy
aWVuZCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKKyAgICBQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxl
JiBiYWNraW5nKCkgeyByZXR1cm4gbV9iYWNraW5nOyB9CiAKLSAgICBSZW1vdGVTaGFkZXJNb2R1
bGUoUEFMOjpXZWJHUFU6OlNoYWRlck1vZHVsZSYsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmLCBX
ZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKK3ByaXZhdGU6CisgICAgUmVt
b3RlU2hhZGVyTW9kdWxlKFBBTDo6V2ViR1BVOjpTaGFkZXJNb2R1bGUmLCBXZWJHUFU6Ok9iamVj
dEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZVNoYWRlck1vZHVsZShjb25z
dCBSZW1vdGVTaGFkZXJNb2R1bGUmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVTaGFkZXJNb2R1bGUo
UmVtb3RlU2hhZGVyTW9kdWxlJiYpID0gZGVsZXRlOwpAQCAtNzIsNyArNzIsNiBAQCBwcml2YXRl
OgogICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpT
aGFkZXJNb2R1bGU+IG1fYmFja2luZzsKLSAgICBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBtX29i
amVjdFJlZ2lzdHJ5OwogICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFwOwogICAg
IFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmUuY3BwCmlu
ZGV4IGEwMWY0MmQwMDllZTUyNmQxODY4NzYwNTQ4NmEwNDQyZmE1N2Q0M2IuLjY1Nzk2YzljNjJj
ZGFmZjBkYzAzMzkxOTU2ZTcxODQ5ODhhYTU1OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlLmNwcApAQCAt
MzAsNyArMzAsNiBAQAogCiAjaW5jbHVkZSAiUmVtb3RlVGV4dHVyZVZpZXcuaCIKICNpbmNsdWRl
ICJXZWJHUFVPYmplY3RIZWFwLmgiCi0jaW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIK
ICNpbmNsdWRlICJXZWJHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3IuaCIKICNpbmNsdWRlIDxwYWwv
Z3JhcGhpY3MvV2ViR1BVL1dlYkdQVVRleHR1cmUuaD4KICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3Mv
V2ViR1BVL1dlYkdQVVRleHR1cmVWaWV3Lmg+CkBAIC0zOCwyNSArMzcsMjAgQEAKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKLVJlbW90ZVRleHR1cmU6OlJlbW90ZVRleHR1cmUoUEFMOjpXZWJHUFU6
OlRleHR1cmUmIHRleHR1cmUsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5
LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRp
ZmllcikKK1JlbW90ZVRleHR1cmU6OlJlbW90ZVRleHR1cmUoUEFMOjpXZWJHUFU6OlRleHR1cmUm
IHRleHR1cmUsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5nKHRleHR1cmUpCi0gICAgLCBtX29iamVjdFJl
Z2lzdHJ5KG9iamVjdFJlZ2lzdHJ5KQogICAgICwgbV9vYmplY3RIZWFwKG9iamVjdEhlYXApCiAg
ICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LmFk
ZE9iamVjdChtX2lkZW50aWZpZXIsIG1fYmFja2luZyk7CiB9CiAKLVJlbW90ZVRleHR1cmU6On5S
ZW1vdGVUZXh0dXJlKCkKLXsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdChtX2lk
ZW50aWZpZXIpOwotfQorUmVtb3RlVGV4dHVyZTo6flJlbW90ZVRleHR1cmUoKSA9IGRlZmF1bHQ7
CiAKIHZvaWQgUmVtb3RlVGV4dHVyZTo6Y3JlYXRlVmlldyhjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkdQVTo6VGV4dHVyZVZpZXdEZXNjcmlwdG9yPiYgZGVzY3JpcHRvciwgV2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyKQogewogICAgIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlRleHR1cmVW
aWV3RGVzY3JpcHRvcj4gY29udmVydGVkRGVzY3JpcHRvcjsKICAgICBpZiAoZGVzY3JpcHRvcikg
ewotICAgICAgICBhdXRvIHJlc3VsdERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZl
cnRGcm9tQmFja2luZygqZGVzY3JpcHRvcik7CisgICAgICAgIGF1dG8gcmVzdWx0RGVzY3JpcHRv
ciA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0RnJvbUJhY2tpbmcoKmRlc2NyaXB0b3IpOwogICAgICAg
ICBBU1NFUlQocmVzdWx0RGVzY3JpcHRvcik7CiAgICAgICAgIGNvbnZlcnRlZERlc2NyaXB0b3Ig
PSBXVEZNb3ZlKHJlc3VsdERlc2NyaXB0b3IpOwogICAgICAgICBpZiAoIWNvbnZlcnRlZERlc2Ny
aXB0b3IpCkBAIC02NCw4ICs1OCw4IEBAIHZvaWQgUmVtb3RlVGV4dHVyZTo6Y3JlYXRlVmlldyhj
b25zdCBzdGQ6Om9wdGlvbmFsPFdlYkdQVTo6VGV4dHVyZVZpZXdEZXNjcmlwdG9yCiAgICAgfQog
ICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKICAgICBhdXRvIHRleHR1cmVWaWV3ID0g
bV9iYWNraW5nLT5jcmVhdGVWaWV3KCpjb252ZXJ0ZWREZXNjcmlwdG9yKTsKLSAgICBhdXRvIHJl
bW90ZVRleHR1cmVWaWV3ID0gUmVtb3RlVGV4dHVyZVZpZXc6OmNyZWF0ZSh0ZXh0dXJlVmlldywg
bV9vYmplY3RSZWdpc3RyeSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKLSAgICBtX29iamVj
dEhlYXAuYWRkT2JqZWN0KHJlbW90ZVRleHR1cmVWaWV3KTsKKyAgICBhdXRvIHJlbW90ZVRleHR1
cmVWaWV3ID0gUmVtb3RlVGV4dHVyZVZpZXc6OmNyZWF0ZSh0ZXh0dXJlVmlldywgbV9vYmplY3RI
ZWFwLCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KGlkZW50aWZpZXIs
IHJlbW90ZVRleHR1cmVWaWV3KTsKIH0KIAogdm9pZCBSZW1vdGVUZXh0dXJlOjpkZXN0cm95KCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlVGV4dHVyZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVUZXh0dXJlLmgKaW5kZXggZGZlY2Y5ZGFmNzA5MWU4OTgwZTkzZmYwZTZjYWMwZTY1MGFh
ODVjZS4uOTgxMzYzNjgyOGYxMTgzOTJiODllOTQxNDY2YmM2NzBhYTQ2NmNiNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJl
LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVU
ZXh0dXJlLmgKQEAgLTQwLDIzICs0MCwyMyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNw
YWNlIFdlYkdQVSB7CiBjbGFzcyBPYmplY3RIZWFwOwotY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiBz
dHJ1Y3QgVGV4dHVyZVZpZXdEZXNjcmlwdG9yOwogfQogCiBjbGFzcyBSZW1vdGVUZXh0dXJlIGZp
bmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZVRleHR1cmU+IGNy
ZWF0ZShQQUw6OldlYkdQVTo6VGV4dHVyZSYgdGV4dHVyZSwgV2ViR1BVOjpPYmplY3RSZWdpc3Ry
eSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BV
SWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlVGV4dHVyZT4gY3Jl
YXRlKFBBTDo6V2ViR1BVOjpUZXh0dXJlJiB0ZXh0dXJlLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9i
amVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVRleHR1cmUodGV4dHVyZSwgb2JqZWN0UmVnaXN0cnks
IG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
UmVtb3RlVGV4dHVyZSh0ZXh0dXJlLCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CiAgICAgfQog
CiAgICAgdmlydHVhbCB+UmVtb3RlVGV4dHVyZSgpOwogCi1wcml2YXRlOgotICAgIGZyaWVuZCBj
bGFzcyBPYmplY3RSZWdpc3RyeTsKKyAgICBQQUw6OldlYkdQVTo6VGV4dHVyZSYgYmFja2luZygp
IHsgcmV0dXJuIG1fYmFja2luZzsgfQogCi0gICAgUmVtb3RlVGV4dHVyZShQQUw6OldlYkdQVTo6
VGV4dHVyZSYsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBX
ZWJHUFVJZGVudGlmaWVyKTsKK3ByaXZhdGU6CisgICAgUmVtb3RlVGV4dHVyZShQQUw6OldlYkdQ
VTo6VGV4dHVyZSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAg
ICAgUmVtb3RlVGV4dHVyZShjb25zdCBSZW1vdGVUZXh0dXJlJikgPSBkZWxldGU7CiAgICAgUmVt
b3RlVGV4dHVyZShSZW1vdGVUZXh0dXJlJiYpID0gZGVsZXRlOwpAQCAtNzIsNyArNzIsNiBAQCBw
cml2YXRlOgogICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCiAgICAgUmVmPFBBTDo6V2Vi
R1BVOjpUZXh0dXJlPiBtX2JhY2tpbmc7Ci0gICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgbV9v
YmplY3RSZWdpc3RyeTsKICAgICBXZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKICAg
ICBXZWJHUFVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmVWaWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVZp
ZXcuY3BwCmluZGV4IGJlODYzZGY1ZjY0MmI4NGMxMDA3MjRmODA3YTY2OGIxZjNhZWNjNTEuLjdm
YzhhYjY1MzQ3YWY4NjM4MzExOTA2ZDhiNzI0YmIxMDE0Yjk1OTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4
dHVyZVZpZXcuY3BwCkBAIC0yOSwyNCArMjksMTggQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
CiAKICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCi0jaW5jbHVkZSAiV2ViR1BVT2JqZWN0
UmVnaXN0cnkuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVRleHR1cmVW
aWV3Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZW1vdGVUZXh0dXJlVmlldzo6UmVtb3Rl
VGV4dHVyZVZpZXcoUEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3JiB0ZXh0dXJlVmlldywgV2ViR1BV
OjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2Jq
ZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorUmVtb3RlVGV4dHVyZVZpZXc6
OlJlbW90ZVRleHR1cmVWaWV3KFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlldyYgdGV4dHVyZVZpZXcs
IFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyKQogICAgIDogbV9iYWNraW5nKHRleHR1cmVWaWV3KQotICAgICwgbV9vYmplY3RSZWdpc3Ry
eShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQogICAgICwg
bV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5hZGRPYmpl
Y3QobV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOwogfQogCi1SZW1vdGVUZXh0dXJlVmlldzo6flJl
bW90ZVRleHR1cmVWaWV3KCkKLXsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdCht
X2lkZW50aWZpZXIpOwotfQorUmVtb3RlVGV4dHVyZVZpZXc6On5SZW1vdGVUZXh0dXJlVmlldygp
ID0gZGVmYXVsdDsKIAogdm9pZCBSZW1vdGVUZXh0dXJlVmlldzo6c2V0TGFiZWwoU3RyaW5nJiYg
bGFiZWwpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZVRleHR1cmVWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmVWaWV3LmgKaW5kZXggNDY4N2MzYjgzMzk5ZjQzNjY0
ZDkyMTJmZjNhODc4NDQzOWNiZjZjNy4uZDdjMTM1ZWRmZDljNTFjOGIwZDdkZGYzYTFmNGU2OTM2
ZmQ2OWUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVUZXh0dXJlVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVZpZXcuaApAQCAtNDAsMjIgKzQwLDIyIEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIGNsYXNzIE9iamVjdEhlYXA7
Ci1jbGFzcyBPYmplY3RSZWdpc3RyeTsKIH0KIAogY2xhc3MgUmVtb3RlVGV4dHVyZVZpZXcgZmlu
YWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlVGV4dHVyZVZpZXc+
IGNyZWF0ZShQQUw6OldlYkdQVTo6VGV4dHVyZVZpZXcmIHRleHR1cmVWaWV3LCBXZWJHUFU6Ok9i
amVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RI
ZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxSZW1vdGVU
ZXh0dXJlVmlldz4gY3JlYXRlKFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlldyYgdGV4dHVyZVZpZXcs
IFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlVGV4dHVyZVZp
ZXcodGV4dHVyZVZpZXcsIG9iamVjdFJlZ2lzdHJ5LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVRleHR1cmVWaWV3KHRleHR1cmVW
aWV3LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVt
b3RlVGV4dHVyZVZpZXcoKTsKIAotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgT2JqZWN0UmVn
aXN0cnk7CisgICAgUEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3JiBiYWNraW5nKCkgeyByZXR1cm4g
bV9iYWNraW5nOyB9CiAKLSAgICBSZW1vdGVUZXh0dXJlVmlldyhQQUw6OldlYkdQVTo6VGV4dHVy
ZVZpZXcmLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2Vi
R1BVSWRlbnRpZmllcik7Citwcml2YXRlOgorICAgIFJlbW90ZVRleHR1cmVWaWV3KFBBTDo6V2Vi
R1BVOjpUZXh0dXJlVmlldyYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIp
OwogCiAgICAgUmVtb3RlVGV4dHVyZVZpZXcoY29uc3QgUmVtb3RlVGV4dHVyZVZpZXcmKSA9IGRl
bGV0ZTsKICAgICBSZW1vdGVUZXh0dXJlVmlldyhSZW1vdGVUZXh0dXJlVmlldyYmKSA9IGRlbGV0
ZTsKQEAgLTY3LDcgKzY3LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYm
KTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6VGV4dHVyZVZpZXc+IG1fYmFja2luZzsKLSAgICBX
ZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBtX29iamVjdFJlZ2lzdHJ5OwogICAgIFdlYkdQVTo6T2Jq
ZWN0SGVhcCYgbV9vYmplY3RIZWFwOwogICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVy
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJH
UFUvV2ViR1BVT2JqZWN0SGVhcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1dlYkdQVU9iamVjdEhlYXAuY3BwCmluZGV4IGQwYTBlYzMwOTQyODA1MjU0OWQz
MjEyMWQ4NDllZjRjODllMGY1YjEuLmVlMDZiMDAxN2Q1NTk1YjJiMzYyM2ExZDgyMGNlMGYwMjdl
MTNmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJH
UFUvV2ViR1BVT2JqZWN0SGVhcC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1dlYkdQVS9XZWJHUFVPYmplY3RIZWFwLmNwcApAQCAtNjEsMjY4ICs2MSwzMDQgQEAg
T2JqZWN0SGVhcDo6fk9iamVjdEhlYXAoKQogewogfQogCi12b2lkIE9iamVjdEhlYXA6OmFkZE9i
amVjdChSZW1vdGVBZGFwdGVyJiBhZGFwdGVyKQordm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3Qo
V2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZW1vdGVBZGFwdGVyJiBhZGFwdGVyKQogewot
ICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZCgmYWRhcHRlciwgYWRhcHRlcik7CisgICAg
YXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIGFkYXB0ZXIpOwogICAgIEFT
U0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLXZvaWQgT2JqZWN0
SGVhcDo6YWRkT2JqZWN0KFJlbW90ZUJpbmRHcm91cCYgYmluZEdyb3VwKQordm9pZCBPYmplY3RI
ZWFwOjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZW1vdGVCaW5kR3Jv
dXAmIGJpbmRHcm91cCkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoJmJpbmRH
cm91cCwgYmluZEdyb3VwKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRp
ZmllciwgYmluZEdyb3VwKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3
RW50cnkpOwogfQogCi12b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChSZW1vdGVCaW5kR3JvdXBM
YXlvdXQmIGJpbmRHcm91cExheW91dCkKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFdlYkdQ
VUlkZW50aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlQmluZEdyb3VwTGF5b3V0JiBiaW5kR3JvdXBM
YXlvdXQpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKCZiaW5kR3JvdXBMYXlv
dXQsIGJpbmRHcm91cExheW91dCk7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlk
ZW50aWZpZXIsIGJpbmRHcm91cExheW91dCk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJl
c3VsdC5pc05ld0VudHJ5KTsKIH0KIAotdm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoUmVtb3Rl
QnVmZmVyJiBidWZmZXIpCit2b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChXZWJHUFVJZGVudGlm
aWVyIGlkZW50aWZpZXIsIFJlbW90ZUJ1ZmZlciYgYnVmZmVyKQogewotICAgIGF1dG8gcmVzdWx0
ID0gbV9vYmplY3RzLmFkZCgmYnVmZmVyLCBidWZmZXIpOworICAgIGF1dG8gcmVzdWx0ID0gbV9v
YmplY3RzLmFkZChpZGVudGlmaWVyLCBidWZmZXIpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0
LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLXZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJl
bW90ZUNvbW1hbmRCdWZmZXImIGNvbW1hbmRCdWZmZXIpCit2b2lkIE9iamVjdEhlYXA6OmFkZE9i
amVjdChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlbW90ZUNvbW1hbmRCdWZmZXImIGNv
bW1hbmRCdWZmZXIpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKCZjb21tYW5k
QnVmZmVyLCBjb21tYW5kQnVmZmVyKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQo
aWRlbnRpZmllciwgY29tbWFuZEJ1ZmZlcik7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJl
c3VsdC5pc05ld0VudHJ5KTsKIH0KIAotdm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoUmVtb3Rl
Q29tbWFuZEVuY29kZXImIGNvbW1hbmRFbmNvZGVyKQordm9pZCBPYmplY3RIZWFwOjphZGRPYmpl
Y3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZW1vdGVDb21tYW5kRW5jb2RlciYgY29t
bWFuZEVuY29kZXIpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKCZjb21tYW5k
RW5jb2RlciwgY29tbWFuZEVuY29kZXIpOworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFk
ZChpZGVudGlmaWVyLCBjb21tYW5kRW5jb2Rlcik7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQs
IHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotdm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoUmVt
b3RlQ29tcHV0ZVBhc3NFbmNvZGVyJiBjb21wdXRlUGFzc0VuY29kZXIpCit2b2lkIE9iamVjdEhl
YXA6OmFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlbW90ZUNvbXB1dGVQ
YXNzRW5jb2RlciYgY29tcHV0ZVBhc3NFbmNvZGVyKQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9v
YmplY3RzLmFkZCgmY29tcHV0ZVBhc3NFbmNvZGVyLCBjb21wdXRlUGFzc0VuY29kZXIpOworICAg
IGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBjb21wdXRlUGFzc0VuY29k
ZXIpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAK
LXZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJlbW90ZUNvbXB1dGVQaXBlbGluZSYgY29tcHV0
ZVBpcGVsaW5lKQordm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBSZW1vdGVDb21wdXRlUGlwZWxpbmUmIGNvbXB1dGVQaXBlbGluZSkKIHsKLSAg
ICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoJmNvbXB1dGVQaXBlbGluZSwgY29tcHV0ZVBp
cGVsaW5lKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgY29t
cHV0ZVBpcGVsaW5lKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50
cnkpOwogfQogCi12b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChSZW1vdGVEZXZpY2UmIGRldmlj
ZSkKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmll
ciwgUmVtb3RlRGV2aWNlJiBkZXZpY2UpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMu
YWRkKCZkZXZpY2UsIGRldmljZSk7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlk
ZW50aWZpZXIsIGRldmljZSk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05l
d0VudHJ5KTsKIH0KIAotdm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoUmVtb3RlRXh0ZXJuYWxU
ZXh0dXJlJiBleHRlcm5hbFRleHR1cmUpCit2b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChXZWJH
UFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlbW90ZUV4dGVybmFsVGV4dHVyZSYgZXh0ZXJuYWxU
ZXh0dXJlKQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZCgmZXh0ZXJuYWxUZXh0
dXJlLCBleHRlcm5hbFRleHR1cmUpOworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChp
ZGVudGlmaWVyLCBleHRlcm5hbFRleHR1cmUpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCBy
ZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLXZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJlbW90
ZUdQVSYgZ3B1KQordm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBSZW1vdGVQaXBlbGluZUxheW91dCYgcGlwZWxpbmVMYXlvdXQpCiB7Ci0gICAg
YXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKCZncHUsIGdwdSk7CisgICAgYXV0byByZXN1bHQg
PSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIHBpcGVsaW5lTGF5b3V0KTsKICAgICBBU1NFUlRf
VU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi12b2lkIE9iamVjdEhlYXA6
OmFkZE9iamVjdChSZW1vdGVQaXBlbGluZUxheW91dCYgcGlwZWxpbmVMYXlvdXQpCit2b2lkIE9i
amVjdEhlYXA6OmFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlbW90ZVF1
ZXJ5U2V0JiBxdWVyeVNldCkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoJnBp
cGVsaW5lTGF5b3V0LCBwaXBlbGluZUxheW91dCk7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVj
dHMuYWRkKGlkZW50aWZpZXIsIHF1ZXJ5U2V0KTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwg
cmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi12b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChSZW1v
dGVRdWVyeVNldCYgcXVlcnlTZXQpCit2b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChXZWJHUFVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlbW90ZVF1ZXVlJiBxdWV1ZSkKIHsKLSAgICBhdXRvIHJl
c3VsdCA9IG1fb2JqZWN0cy5hZGQoJnF1ZXJ5U2V0LCBxdWVyeVNldCk7CisgICAgYXV0byByZXN1
bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIHF1ZXVlKTsKICAgICBBU1NFUlRfVU5VU0VE
KHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi12b2lkIE9iamVjdEhlYXA6OmFkZE9i
amVjdChSZW1vdGVRdWV1ZSYgcXVldWUpCit2b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChXZWJH
UFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXImIHJlbmRl
ckJ1bmRsZUVuY29kZXIpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKCZxdWV1
ZSwgcXVldWUpOworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBy
ZW5kZXJCdW5kbGVFbmNvZGVyKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0Lmlz
TmV3RW50cnkpOwogfQogCi12b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChSZW1vdGVSZW5kZXJC
dW5kbGVFbmNvZGVyJiByZW5kZXJCdW5kbGVFbmNvZGVyKQordm9pZCBPYmplY3RIZWFwOjphZGRP
YmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZW1vdGVSZW5kZXJCdW5kbGUmIHJl
bmRlckJ1bmRsZSkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoJnJlbmRlckJ1
bmRsZUVuY29kZXIsIHJlbmRlckJ1bmRsZUVuY29kZXIpOworICAgIGF1dG8gcmVzdWx0ID0gbV9v
YmplY3RzLmFkZChpZGVudGlmaWVyLCByZW5kZXJCdW5kbGUpOwogICAgIEFTU0VSVF9VTlVTRUQo
cmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLXZvaWQgT2JqZWN0SGVhcDo6YWRkT2Jq
ZWN0KFJlbW90ZVJlbmRlckJ1bmRsZSYgcmVuZGVyQnVuZGxlKQordm9pZCBPYmplY3RIZWFwOjph
ZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZW1vdGVSZW5kZXJQYXNzRW5j
b2RlciYgcmVuZGVyUGFzc0VuY29kZXIpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMu
YWRkKCZyZW5kZXJCdW5kbGUsIHJlbmRlckJ1bmRsZSk7CisgICAgYXV0byByZXN1bHQgPSBtX29i
amVjdHMuYWRkKGlkZW50aWZpZXIsIHJlbmRlclBhc3NFbmNvZGVyKTsKICAgICBBU1NFUlRfVU5V
U0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi12b2lkIE9iamVjdEhlYXA6OmFk
ZE9iamVjdChSZW1vdGVSZW5kZXJQYXNzRW5jb2RlciYgcmVuZGVyUGFzc0VuY29kZXIpCit2b2lk
IE9iamVjdEhlYXA6OmFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlbW90
ZVJlbmRlclBpcGVsaW5lJiByZW5kZXJQaXBlbGluZSkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1f
b2JqZWN0cy5hZGQoJnJlbmRlclBhc3NFbmNvZGVyLCByZW5kZXJQYXNzRW5jb2Rlcik7CisgICAg
YXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIHJlbmRlclBpcGVsaW5lKTsK
ICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi12b2lk
IE9iamVjdEhlYXA6OmFkZE9iamVjdChSZW1vdGVSZW5kZXJQaXBlbGluZSYgcmVuZGVyUGlwZWxp
bmUpCit2b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFJlbW90ZVNhbXBsZXImIHNhbXBsZXIpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVj
dHMuYWRkKCZyZW5kZXJQaXBlbGluZSwgcmVuZGVyUGlwZWxpbmUpOworICAgIGF1dG8gcmVzdWx0
ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBzYW1wbGVyKTsKICAgICBBU1NFUlRfVU5VU0VE
KHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi12b2lkIE9iamVjdEhlYXA6OmFkZE9i
amVjdChSZW1vdGVTYW1wbGVyJiBzYW1wbGVyKQordm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3Qo
V2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZW1vdGVTaGFkZXJNb2R1bGUmIHNoYWRlck1v
ZHVsZSkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoJnNhbXBsZXIsIHNhbXBs
ZXIpOworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBzaGFkZXJN
b2R1bGUpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9
CiAKLXZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJlbW90ZVNoYWRlck1vZHVsZSYgc2hhZGVy
TW9kdWxlKQordm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBSZW1vdGVUZXh0dXJlJiB0ZXh0dXJlKQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9v
YmplY3RzLmFkZCgmc2hhZGVyTW9kdWxlLCBzaGFkZXJNb2R1bGUpOworICAgIGF1dG8gcmVzdWx0
ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCB0ZXh0dXJlKTsKICAgICBBU1NFUlRfVU5VU0VE
KHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi12b2lkIE9iamVjdEhlYXA6OmFkZE9i
amVjdChSZW1vdGVUZXh0dXJlJiB0ZXh0dXJlKQordm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3Qo
V2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZW1vdGVUZXh0dXJlVmlldyYgdGV4dHVyZVZp
ZXcpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKCZ0ZXh0dXJlLCB0ZXh0dXJl
KTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgdGV4dHVyZVZp
ZXcpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAK
LXZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJlbW90ZVRleHR1cmVWaWV3JiB0ZXh0dXJlVmll
dykKK3ZvaWQgT2JqZWN0SGVhcDo6cmVtb3ZlT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRp
ZmllcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoJnRleHR1cmVWaWV3LCB0
ZXh0dXJlVmlldyk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5
KTsKLX0KLQotdm9pZCBPYmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlQWRhcHRlciYgYWRh
cHRlcikKLXsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJmFkYXB0ZXIpOwor
ICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZShpZGVudGlmaWVyKTsKICAgICBBU1NF
UlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKIH0KIAotdm9pZCBPYmplY3RIZWFwOjpyZW1vdmVP
YmplY3QoUmVtb3RlQmluZEdyb3VwJiBiaW5kR3JvdXApCitQQUw6OldlYkdQVTo6QWRhcHRlciog
T2JqZWN0SGVhcDo6Y29udmVydEFkYXB0ZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKCZiaW5kR3Jv
dXApOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworICAgIGF1dG8gaXRlcmF0
b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9v
YmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxSZW1vdGVBZGFwdGVy
Pj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJu
ICZzdGQ6OmdldDxSZWY8UmVtb3RlQWRhcHRlcj4+KGl0ZXJhdG9yLT52YWx1ZSktPmJhY2tpbmco
KTsKIH0KIAotdm9pZCBPYmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlQmluZEdyb3VwTGF5
b3V0JiBiaW5kR3JvdXBMYXlvdXQpCitQQUw6OldlYkdQVTo6QmluZEdyb3VwKiBPYmplY3RIZWFw
Ojpjb252ZXJ0QmluZEdyb3VwRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
KQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmYmluZEdyb3VwTGF5b3V0
KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKyAgICBhdXRvIGl0ZXJhdG9y
ID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2Jq
ZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8UmVtb3RlQmluZEdyb3Vw
Pj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJu
ICZzdGQ6OmdldDxSZWY8UmVtb3RlQmluZEdyb3VwPj4oaXRlcmF0b3ItPnZhbHVlKS0+YmFja2lu
ZygpOwogfQogCi12b2lkIE9iamVjdEhlYXA6OnJlbW92ZU9iamVjdChSZW1vdGVCdWZmZXImIGJ1
ZmZlcikKK1BBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXQqIE9iamVjdEhlYXA6OmNvbnZlcnRC
aW5kR3JvdXBMYXlvdXRGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7
Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKCZidWZmZXIpOwotICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMu
ZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8
ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxSZW1vdGVCaW5kR3JvdXBMYXlvdXQ+PihpdGVy
YXRvci0+dmFsdWUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6
Z2V0PFJlZjxSZW1vdGVCaW5kR3JvdXBMYXlvdXQ+PihpdGVyYXRvci0+dmFsdWUpLT5iYWNraW5n
KCk7CiB9CiAKLXZvaWQgT2JqZWN0SGVhcDo6cmVtb3ZlT2JqZWN0KFJlbW90ZUNvbW1hbmRCdWZm
ZXImIGNvbW1hbmRCdWZmZXIpCitQQUw6OldlYkdQVTo6QnVmZmVyKiBPYmplY3RIZWFwOjpjb252
ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAg
IGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmY29tbWFuZEJ1ZmZlcik7Ci0gICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0
cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkg
fHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFJlbW90ZUJ1ZmZlcj4+KGl0ZXJhdG9yLT52
YWx1ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAmc3RkOjpnZXQ8UmVm
PFJlbW90ZUJ1ZmZlcj4+KGl0ZXJhdG9yLT52YWx1ZSktPmJhY2tpbmcoKTsKIH0KIAotdm9pZCBP
YmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlQ29tbWFuZEVuY29kZXImIGNvbW1hbmRFbmNv
ZGVyKQorUEFMOjpXZWJHUFU6OkNvbW1hbmRCdWZmZXIqIE9iamVjdEhlYXA6OmNvbnZlcnRDb21t
YW5kQnVmZmVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAg
IGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmY29tbWFuZEVuY29kZXIpOwotICAgIEFT
U0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVj
dHMuZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgp
IHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxSZW1vdGVDb21tYW5kQnVmZmVyPj4oaXRl
cmF0b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZzdGQ6
OmdldDxSZWY8UmVtb3RlQ29tbWFuZEJ1ZmZlcj4+KGl0ZXJhdG9yLT52YWx1ZSktPmJhY2tpbmco
KTsKIH0KIAotdm9pZCBPYmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlQ29tcHV0ZVBhc3NF
bmNvZGVyJiBjb21wdXRlUGFzc0VuY29kZXIpCitQQUw6OldlYkdQVTo6Q29tbWFuZEVuY29kZXIq
IE9iamVjdEhlYXA6OmNvbnZlcnRDb21tYW5kRW5jb2RlckZyb21CYWNraW5nKFdlYkdQVUlkZW50
aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUo
JmNvbXB1dGVQYXNzRW5jb2Rlcik7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7
CisgICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlm
IChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8
UmVmPFJlbW90ZUNvbW1hbmRFbmNvZGVyPj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZzdGQ6OmdldDxSZWY8UmVtb3RlQ29tbWFuZEVuY29k
ZXI+PihpdGVyYXRvci0+dmFsdWUpLT5iYWNraW5nKCk7CiB9CiAKLXZvaWQgT2JqZWN0SGVhcDo6
cmVtb3ZlT2JqZWN0KFJlbW90ZUNvbXB1dGVQaXBlbGluZSYgY29tcHV0ZVBpcGVsaW5lKQorUEFM
OjpXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2RlciogT2JqZWN0SGVhcDo6Y29udmVydENvbXB1dGVQ
YXNzRW5jb2RlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAg
ICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJmNvbXB1dGVQaXBlbGluZSk7Ci0gICAg
QVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAgYXV0byBpdGVyYXRvciA9IG1fb2Jq
ZWN0cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5k
KCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rl
cj4+KGl0ZXJhdG9yLT52YWx1ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVy
biAmc3RkOjpnZXQ8UmVmPFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcj4+KGl0ZXJhdG9yLT52YWx1
ZSktPmJhY2tpbmcoKTsKIH0KIAotdm9pZCBPYmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3Rl
RGV2aWNlJiBkZXZpY2UpCitQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lKiBPYmplY3RIZWFw
Ojpjb252ZXJ0Q29tcHV0ZVBpcGVsaW5lRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVu
dGlmaWVyKQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmZGV2aWNlKTsK
LSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKyAgICBhdXRvIGl0ZXJhdG9yID0g
bV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0
cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8UmVtb3RlQ29tcHV0ZVBpcGVs
aW5lPj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0
dXJuICZzdGQ6OmdldDxSZWY8UmVtb3RlQ29tcHV0ZVBpcGVsaW5lPj4oaXRlcmF0b3ItPnZhbHVl
KS0+YmFja2luZygpOwogfQogCi12b2lkIE9iamVjdEhlYXA6OnJlbW92ZU9iamVjdChSZW1vdGVF
eHRlcm5hbFRleHR1cmUmIGV4dGVybmFsVGV4dHVyZSkKK1BBTDo6V2ViR1BVOjpEZXZpY2UqIE9i
amVjdEhlYXA6OmNvbnZlcnREZXZpY2VGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50
aWZpZXIpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKCZleHRlcm5hbFRl
eHR1cmUpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworICAgIGF1dG8gaXRl
cmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0g
bV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxSZW1vdGVEZXZp
Y2U+PihpdGVyYXRvci0+dmFsdWUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1
cm4gJnN0ZDo6Z2V0PFJlZjxSZW1vdGVEZXZpY2U+PihpdGVyYXRvci0+dmFsdWUpLT5iYWNraW5n
KCk7CiB9CiAKLXZvaWQgT2JqZWN0SGVhcDo6cmVtb3ZlT2JqZWN0KFJlbW90ZUdQVSYgZ3B1KQor
UEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZSogT2JqZWN0SGVhcDo6Y29udmVydEV4dGVybmFs
VGV4dHVyZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBh
dXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJmdwdSk7Ci0gICAgQVNTRVJUX1VOVVNFRChy
ZXN1bHQsIHJlc3VsdCk7CisgICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50
aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8UmVmPFJlbW90ZUV4dGVybmFsVGV4dHVyZT4+KGl0ZXJhdG9yLT52YWx1
ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAmc3RkOjpnZXQ8UmVmPFJl
bW90ZUV4dGVybmFsVGV4dHVyZT4+KGl0ZXJhdG9yLT52YWx1ZSktPmJhY2tpbmcoKTsKIH0KIAot
dm9pZCBPYmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlUGlwZWxpbmVMYXlvdXQmIHBpcGVs
aW5lTGF5b3V0KQorUEFMOjpXZWJHUFU6OlBpcGVsaW5lTGF5b3V0KiBPYmplY3RIZWFwOjpjb252
ZXJ0UGlwZWxpbmVMYXlvdXRGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIp
CiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKCZwaXBlbGluZUxheW91dCk7
Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAgYXV0byBpdGVyYXRvciA9
IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVj
dHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFJlbW90ZVBpcGVsaW5lTGF5
b3V0Pj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0
dXJuICZzdGQ6OmdldDxSZWY8UmVtb3RlUGlwZWxpbmVMYXlvdXQ+PihpdGVyYXRvci0+dmFsdWUp
LT5iYWNraW5nKCk7CiB9CiAKLXZvaWQgT2JqZWN0SGVhcDo6cmVtb3ZlT2JqZWN0KFJlbW90ZVF1
ZXJ5U2V0JiBxdWVyeVNldCkKK1BBTDo6V2ViR1BVOjpRdWVyeVNldCogT2JqZWN0SGVhcDo6Y29u
dmVydFF1ZXJ5U2V0RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewot
ICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmcXVlcnlTZXQpOwotICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMu
ZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8
ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxSZW1vdGVRdWVyeVNldD4+KGl0ZXJhdG9yLT52
YWx1ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAmc3RkOjpnZXQ8UmVm
PFJlbW90ZVF1ZXJ5U2V0Pj4oaXRlcmF0b3ItPnZhbHVlKS0+YmFja2luZygpOwogfQogCi12b2lk
IE9iamVjdEhlYXA6OnJlbW92ZU9iamVjdChSZW1vdGVRdWV1ZSYgcXVldWUpCitQQUw6OldlYkdQ
VTo6UXVldWUqIE9iamVjdEhlYXA6OmNvbnZlcnRRdWV1ZUZyb21CYWNraW5nKFdlYkdQVUlkZW50
aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUo
JnF1ZXVlKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKyAgICBhdXRvIGl0
ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09
IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8UmVtb3RlUXVl
dWU+PihpdGVyYXRvci0+dmFsdWUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1
cm4gJnN0ZDo6Z2V0PFJlZjxSZW1vdGVRdWV1ZT4+KGl0ZXJhdG9yLT52YWx1ZSktPmJhY2tpbmco
KTsKIH0KIAotdm9pZCBPYmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlUmVuZGVyQnVuZGxl
RW5jb2RlciYgcmVuZGVyQnVuZGxlRW5jb2RlcikKK1BBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVF
bmNvZGVyKiBPYmplY3RIZWFwOjpjb252ZXJ0UmVuZGVyQnVuZGxlRW5jb2RlckZyb21CYWNraW5n
KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2Jq
ZWN0cy5yZW1vdmUoJnJlbmRlckJ1bmRsZUVuY29kZXIpOwotICAgIEFTU0VSVF9VTlVTRUQocmVz
dWx0LCByZXN1bHQpOworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlm
aWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPFJlZjxSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyPj4oaXRlcmF0b3ItPnZh
bHVlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZzdGQ6OmdldDxSZWY8
UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcj4+KGl0ZXJhdG9yLT52YWx1ZSktPmJhY2tpbmcoKTsK
IH0KIAotdm9pZCBPYmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlUmVuZGVyQnVuZGxlJiBy
ZW5kZXJCdW5kbGUpCitQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlKiBPYmplY3RIZWFwOjpjb252
ZXJ0UmVuZGVyQnVuZGxlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQog
ewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmcmVuZGVyQnVuZGxlKTsKLSAg
ICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9v
YmplY3RzLmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5l
bmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8UmVtb3RlUmVuZGVyQnVuZGxlPj4o
aXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZz
dGQ6OmdldDxSZWY8UmVtb3RlUmVuZGVyQnVuZGxlPj4oaXRlcmF0b3ItPnZhbHVlKS0+YmFja2lu
ZygpOwogfQogCi12b2lkIE9iamVjdEhlYXA6OnJlbW92ZU9iamVjdChSZW1vdGVSZW5kZXJQYXNz
RW5jb2RlciYgcmVuZGVyUGFzc0VuY29kZXIpCitQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29k
ZXIqIE9iamVjdEhlYXA6OmNvbnZlcnRSZW5kZXJQYXNzRW5jb2RlckZyb21CYWNraW5nKFdlYkdQ
VUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5y
ZW1vdmUoJnJlbmRlclBhc3NFbmNvZGVyKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVz
dWx0KTsKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7Cisg
ICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxSZWY8UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI+PihpdGVyYXRvci0+dmFsdWUpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PFJlZjxSZW1vdGVSZW5k
ZXJQYXNzRW5jb2Rlcj4+KGl0ZXJhdG9yLT52YWx1ZSktPmJhY2tpbmcoKTsKIH0KIAotdm9pZCBP
YmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlUmVuZGVyUGlwZWxpbmUmIHJlbmRlclBpcGVs
aW5lKQorUEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lKiBPYmplY3RIZWFwOjpjb252ZXJ0UmVu
ZGVyUGlwZWxpbmVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0g
ICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKCZyZW5kZXJQaXBlbGluZSk7Ci0gICAg
QVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAgYXV0byBpdGVyYXRvciA9IG1fb2Jq
ZWN0cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5k
KCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFJlbW90ZVJlbmRlclBpcGVsaW5lPj4o
aXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZz
dGQ6OmdldDxSZWY8UmVtb3RlUmVuZGVyUGlwZWxpbmU+PihpdGVyYXRvci0+dmFsdWUpLT5iYWNr
aW5nKCk7CiB9CiAKLXZvaWQgT2JqZWN0SGVhcDo6cmVtb3ZlT2JqZWN0KFJlbW90ZVNhbXBsZXIm
IHNhbXBsZXIpCitQQUw6OldlYkdQVTo6U2FtcGxlciogT2JqZWN0SGVhcDo6Y29udmVydFNhbXBs
ZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBy
ZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKCZzYW1wbGVyKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJl
c3VsdCwgcmVzdWx0KTsKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRp
Zmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxSZWY8UmVtb3RlU2FtcGxlcj4+KGl0ZXJhdG9yLT52YWx1ZSkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAmc3RkOjpnZXQ8UmVmPFJlbW90ZVNhbXBs
ZXI+PihpdGVyYXRvci0+dmFsdWUpLT5iYWNraW5nKCk7CiB9CiAKLXZvaWQgT2JqZWN0SGVhcDo6
cmVtb3ZlT2JqZWN0KFJlbW90ZVNoYWRlck1vZHVsZSYgc2hhZGVyTW9kdWxlKQorUEFMOjpXZWJH
UFU6OlNoYWRlck1vZHVsZSogT2JqZWN0SGVhcDo6Y29udmVydFNoYWRlck1vZHVsZUZyb21CYWNr
aW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1f
b2JqZWN0cy5yZW1vdmUoJnNoYWRlck1vZHVsZSk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQs
IHJlc3VsdCk7CisgICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIp
OworICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8UmVmPFJlbW90ZVNoYWRlck1vZHVsZT4+KGl0ZXJhdG9yLT52YWx1ZSkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAmc3RkOjpnZXQ8UmVmPFJlbW90ZVNoYWRl
ck1vZHVsZT4+KGl0ZXJhdG9yLT52YWx1ZSktPmJhY2tpbmcoKTsKIH0KIAotdm9pZCBPYmplY3RI
ZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlVGV4dHVyZSYgdGV4dHVyZSkKK1BBTDo6V2ViR1BVOjpU
ZXh0dXJlKiBPYmplY3RIZWFwOjpjb252ZXJ0VGV4dHVyZUZyb21CYWNraW5nKFdlYkdQVUlkZW50
aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUo
JnRleHR1cmUpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworICAgIGF1dG8g
aXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3Ig
PT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxSZW1vdGVU
ZXh0dXJlPj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
cmV0dXJuICZzdGQ6OmdldDxSZWY8UmVtb3RlVGV4dHVyZT4+KGl0ZXJhdG9yLT52YWx1ZSktPmJh
Y2tpbmcoKTsKIH0KIAotdm9pZCBPYmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlVGV4dHVy
ZVZpZXcmIHRleHR1cmVWaWV3KQorUEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3KiBPYmplY3RIZWFw
Ojpjb252ZXJ0VGV4dHVyZVZpZXdGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKCZ0ZXh0dXJlVmlldyk7
Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAgYXV0byBpdGVyYXRvciA9
IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVj
dHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFJlbW90ZVRleHR1cmVWaWV3
Pj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJu
ICZzdGQ6OmdldDxSZWY8UmVtb3RlVGV4dHVyZVZpZXc+PihpdGVyYXRvci0+dmFsdWUpLT5iYWNr
aW5nKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9iamVjdEhlYXAu
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvV2ViR1BVT2JqZWN0
SGVhcC5oCmluZGV4IGExNmNkMjY2OTgxMzc3Y2E5MThlNTEwYjY4ZmM4NWYzOGU0MTlkOTIuLjc3
MjRlNTk4YjQ5YTE4N2NhYjY0MzBiNDRhYWNkY2EwYWFkNjIyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvV2ViR1BVT2JqZWN0SGVhcC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvV2ViR1BVT2JqZWN0
SGVhcC5oCkBAIC0yNywxMiArMjcsMzcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAot
I2luY2x1ZGUgIldlYkdQVU9iamVjdFJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVy
dEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVUlkZW50aWZpZXIuaCIKICNp
bmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHZhcmlhbnQ+CiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4K
KworbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKK2NsYXNzIEFkYXB0ZXI7CitjbGFzcyBCaW5kR3Jv
dXA7CitjbGFzcyBCaW5kR3JvdXBMYXlvdXQ7CitjbGFzcyBCdWZmZXI7CitjbGFzcyBDb21tYW5k
QnVmZmVyOworY2xhc3MgQ29tbWFuZEVuY29kZXI7CitjbGFzcyBDb21wdXRlUGFzc0VuY29kZXI7
CitjbGFzcyBDb21wdXRlUGlwZWxpbmU7CitjbGFzcyBEZXZpY2U7CitjbGFzcyBFeHRlcm5hbFRl
eHR1cmU7CitjbGFzcyBHUFU7CitjbGFzcyBQaXBlbGluZUxheW91dDsKK2NsYXNzIFF1ZXJ5U2V0
OworY2xhc3MgUXVldWU7CitjbGFzcyBSZW5kZXJCdW5kbGVFbmNvZGVyOworY2xhc3MgUmVuZGVy
QnVuZGxlOworY2xhc3MgUmVuZGVyUGFzc0VuY29kZXI7CitjbGFzcyBSZW5kZXJQaXBlbGluZTsK
K2NsYXNzIFNhbXBsZXI7CitjbGFzcyBTaGFkZXJNb2R1bGU7CitjbGFzcyBUZXh0dXJlOworY2xh
c3MgVGV4dHVyZVZpZXc7Cit9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgUmVtb3RlQWRh
cHRlcjsKQEAgLTQ1LDcgKzcwLDYgQEAgY2xhc3MgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOwog
Y2xhc3MgUmVtb3RlQ29tcHV0ZVBpcGVsaW5lOwogY2xhc3MgUmVtb3RlRGV2aWNlOwogY2xhc3Mg
UmVtb3RlRXh0ZXJuYWxUZXh0dXJlOwotY2xhc3MgUmVtb3RlR1BVOwogY2xhc3MgUmVtb3RlUGlw
ZWxpbmVMYXlvdXQ7CiBjbGFzcyBSZW1vdGVRdWVyeVNldDsKIGNsYXNzIFJlbW90ZVF1ZXVlOwpA
QCAtNjEsNTYgKzg1LDU3IEBAIGNsYXNzIFJlbW90ZVRleHR1cmVWaWV3OwogCiBuYW1lc3BhY2Ug
V2ViS2l0OjpXZWJHUFUgewogCi1jbGFzcyBPYmplY3RIZWFwIGZpbmFsIDogcHVibGljIENhbk1h
a2VXZWFrUHRyPE9iamVjdEhlYXA+IHsKK2NsYXNzIE9iamVjdEhlYXAgZmluYWwgOiBwdWJsaWMg
V2ViR1BVOjpDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBPYmplY3RIZWFwKCk7CiAgICAgfk9iamVjdEhlYXAoKTsK
IAotICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90ZUFkYXB0ZXImKTsKLSAgICB2b2lkIGFkZE9iamVj
dChSZW1vdGVCaW5kR3JvdXAmKTsKLSAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVCaW5kR3JvdXBM
YXlvdXQmKTsKLSAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVCdWZmZXImKTsKLSAgICB2b2lkIGFk
ZE9iamVjdChSZW1vdGVDb21tYW5kQnVmZmVyJik7Ci0gICAgdm9pZCBhZGRPYmplY3QoUmVtb3Rl
Q29tbWFuZEVuY29kZXImKTsKLSAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVDb21wdXRlUGFzc0Vu
Y29kZXImKTsKLSAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVDb21wdXRlUGlwZWxpbmUmKTsKLSAg
ICB2b2lkIGFkZE9iamVjdChSZW1vdGVEZXZpY2UmKTsKLSAgICB2b2lkIGFkZE9iamVjdChSZW1v
dGVFeHRlcm5hbFRleHR1cmUmKTsKLSAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVHUFUmKTsKLSAg
ICB2b2lkIGFkZE9iamVjdChSZW1vdGVQaXBlbGluZUxheW91dCYpOwotICAgIHZvaWQgYWRkT2Jq
ZWN0KFJlbW90ZVF1ZXJ5U2V0Jik7Ci0gICAgdm9pZCBhZGRPYmplY3QoUmVtb3RlUXVldWUmKTsK
LSAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyJik7Ci0gICAgdm9p
ZCBhZGRPYmplY3QoUmVtb3RlUmVuZGVyQnVuZGxlJik7Ci0gICAgdm9pZCBhZGRPYmplY3QoUmVt
b3RlUmVuZGVyUGFzc0VuY29kZXImKTsKLSAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVSZW5kZXJQ
aXBlbGluZSYpOwotICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90ZVNhbXBsZXImKTsKLSAgICB2b2lk
IGFkZE9iamVjdChSZW1vdGVTaGFkZXJNb2R1bGUmKTsKLSAgICB2b2lkIGFkZE9iamVjdChSZW1v
dGVUZXh0dXJlJik7Ci0gICAgdm9pZCBhZGRPYmplY3QoUmVtb3RlVGV4dHVyZVZpZXcmKTsKKyAg
ICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBSZW1vdGVBZGFwdGVyJik7CisgICAg
dm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUmVtb3RlQmluZEdyb3VwJik7CisgICAg
dm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUmVtb3RlQmluZEdyb3VwTGF5b3V0Jik7
CisgICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUmVtb3RlQnVmZmVyJik7Cisg
ICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUmVtb3RlQ29tbWFuZEJ1ZmZlciYp
OworICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIsIFJlbW90ZUNvbW1hbmRFbmNv
ZGVyJik7CisgICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUmVtb3RlQ29tcHV0
ZVBhc3NFbmNvZGVyJik7CisgICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUmVt
b3RlQ29tcHV0ZVBpcGVsaW5lJik7CisgICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmll
ciwgUmVtb3RlRGV2aWNlJik7CisgICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwg
UmVtb3RlRXh0ZXJuYWxUZXh0dXJlJik7CisgICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRp
ZmllciwgUmVtb3RlUGlwZWxpbmVMYXlvdXQmKTsKKyAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJ
ZGVudGlmaWVyLCBSZW1vdGVRdWVyeVNldCYpOworICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlk
ZW50aWZpZXIsIFJlbW90ZVF1ZXVlJik7CisgICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRp
ZmllciwgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlciYpOworICAgIHZvaWQgYWRkT2JqZWN0KFdl
YkdQVUlkZW50aWZpZXIsIFJlbW90ZVJlbmRlckJ1bmRsZSYpOworICAgIHZvaWQgYWRkT2JqZWN0
KFdlYkdQVUlkZW50aWZpZXIsIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyJik7CisgICAgdm9pZCBh
ZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUmVtb3RlUmVuZGVyUGlwZWxpbmUmKTsKKyAgICB2
b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBSZW1vdGVTYW1wbGVyJik7CisgICAgdm9p
ZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUmVtb3RlU2hhZGVyTW9kdWxlJik7CisgICAg
dm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUmVtb3RlVGV4dHVyZSYpOworICAgIHZv
aWQgYWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIsIFJlbW90ZVRleHR1cmVWaWV3Jik7CiAKLSAg
ICB2b2lkIHJlbW92ZU9iamVjdChSZW1vdGVBZGFwdGVyJik7Ci0gICAgdm9pZCByZW1vdmVPYmpl
Y3QoUmVtb3RlQmluZEdyb3VwJik7Ci0gICAgdm9pZCByZW1vdmVPYmplY3QoUmVtb3RlQmluZEdy
b3VwTGF5b3V0Jik7Ci0gICAgdm9pZCByZW1vdmVPYmplY3QoUmVtb3RlQnVmZmVyJik7Ci0gICAg
dm9pZCByZW1vdmVPYmplY3QoUmVtb3RlQ29tbWFuZEJ1ZmZlciYpOwotICAgIHZvaWQgcmVtb3Zl
T2JqZWN0KFJlbW90ZUNvbW1hbmRFbmNvZGVyJik7Ci0gICAgdm9pZCByZW1vdmVPYmplY3QoUmVt
b3RlQ29tcHV0ZVBhc3NFbmNvZGVyJik7Ci0gICAgdm9pZCByZW1vdmVPYmplY3QoUmVtb3RlQ29t
cHV0ZVBpcGVsaW5lJik7Ci0gICAgdm9pZCByZW1vdmVPYmplY3QoUmVtb3RlRGV2aWNlJik7Ci0g
ICAgdm9pZCByZW1vdmVPYmplY3QoUmVtb3RlRXh0ZXJuYWxUZXh0dXJlJik7Ci0gICAgdm9pZCBy
ZW1vdmVPYmplY3QoUmVtb3RlR1BVJik7Ci0gICAgdm9pZCByZW1vdmVPYmplY3QoUmVtb3RlUGlw
ZWxpbmVMYXlvdXQmKTsKLSAgICB2b2lkIHJlbW92ZU9iamVjdChSZW1vdGVRdWVyeVNldCYpOwot
ICAgIHZvaWQgcmVtb3ZlT2JqZWN0KFJlbW90ZVF1ZXVlJik7Ci0gICAgdm9pZCByZW1vdmVPYmpl
Y3QoUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlciYpOwotICAgIHZvaWQgcmVtb3ZlT2JqZWN0KFJl
bW90ZVJlbmRlckJ1bmRsZSYpOwotICAgIHZvaWQgcmVtb3ZlT2JqZWN0KFJlbW90ZVJlbmRlclBh
c3NFbmNvZGVyJik7Ci0gICAgdm9pZCByZW1vdmVPYmplY3QoUmVtb3RlUmVuZGVyUGlwZWxpbmUm
KTsKLSAgICB2b2lkIHJlbW92ZU9iamVjdChSZW1vdGVTYW1wbGVyJik7Ci0gICAgdm9pZCByZW1v
dmVPYmplY3QoUmVtb3RlU2hhZGVyTW9kdWxlJik7Ci0gICAgdm9pZCByZW1vdmVPYmplY3QoUmVt
b3RlVGV4dHVyZSYpOwotICAgIHZvaWQgcmVtb3ZlT2JqZWN0KFJlbW90ZVRleHR1cmVWaWV3Jik7
CisgICAgdm9pZCByZW1vdmVPYmplY3QoV2ViR1BVSWRlbnRpZmllcik7CisKKyAgICBQQUw6Oldl
YkdQVTo6QWRhcHRlciogY29udmVydEFkYXB0ZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVy
KSBmaW5hbDsKKyAgICBQQUw6OldlYkdQVTo6QmluZEdyb3VwKiBjb252ZXJ0QmluZEdyb3VwRnJv
bUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7CisgICAgUEFMOjpXZWJHUFU6OkJpbmRH
cm91cExheW91dCogY29udmVydEJpbmRHcm91cExheW91dEZyb21CYWNraW5nKFdlYkdQVUlkZW50
aWZpZXIpIGZpbmFsOworICAgIFBBTDo6V2ViR1BVOjpCdWZmZXIqIGNvbnZlcnRCdWZmZXJGcm9t
QmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKKyAgICBQQUw6OldlYkdQVTo6Q29tbWFu
ZEJ1ZmZlciogY29udmVydENvbW1hbmRCdWZmZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVy
KSBmaW5hbDsKKyAgICBQQUw6OldlYkdQVTo6Q29tbWFuZEVuY29kZXIqIGNvbnZlcnRDb21tYW5k
RW5jb2RlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOworICAgIFBBTDo6V2Vi
R1BVOjpDb21wdXRlUGFzc0VuY29kZXIqIGNvbnZlcnRDb21wdXRlUGFzc0VuY29kZXJGcm9tQmFj
a2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKKyAgICBQQUw6OldlYkdQVTo6Q29tcHV0ZVBp
cGVsaW5lKiBjb252ZXJ0Q29tcHV0ZVBpcGVsaW5lRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmll
cikgZmluYWw7CisgICAgUEFMOjpXZWJHUFU6OkRldmljZSogY29udmVydERldmljZUZyb21CYWNr
aW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOworICAgIFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRl
eHR1cmUqIGNvbnZlcnRFeHRlcm5hbFRleHR1cmVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVy
KSBmaW5hbDsKKyAgICBQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQqIGNvbnZlcnRQaXBlbGlu
ZUxheW91dEZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOworICAgIFBBTDo6V2Vi
R1BVOjpRdWVyeVNldCogY29udmVydFF1ZXJ5U2V0RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmll
cikgZmluYWw7CisgICAgUEFMOjpXZWJHUFU6OlF1ZXVlKiBjb252ZXJ0UXVldWVGcm9tQmFja2lu
ZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKKyAgICBQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxl
RW5jb2RlciogY29udmVydFJlbmRlckJ1bmRsZUVuY29kZXJGcm9tQmFja2luZyhXZWJHUFVJZGVu
dGlmaWVyKSBmaW5hbDsKKyAgICBQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlKiBjb252ZXJ0UmVu
ZGVyQnVuZGxlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7CisgICAgUEFMOjpX
ZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyKiBjb252ZXJ0UmVuZGVyUGFzc0VuY29kZXJGcm9tQmFj
a2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKKyAgICBQQUw6OldlYkdQVTo6UmVuZGVyUGlw
ZWxpbmUqIGNvbnZlcnRSZW5kZXJQaXBlbGluZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIp
IGZpbmFsOworICAgIFBBTDo6V2ViR1BVOjpTYW1wbGVyKiBjb252ZXJ0U2FtcGxlckZyb21CYWNr
aW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOworICAgIFBBTDo6V2ViR1BVOjpTaGFkZXJNb2R1
bGUqIGNvbnZlcnRTaGFkZXJNb2R1bGVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5h
bDsKKyAgICBQQUw6OldlYkdQVTo6VGV4dHVyZSogY29udmVydFRleHR1cmVGcm9tQmFja2luZyhX
ZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKKyAgICBQQUw6OldlYkdQVTo6VGV4dHVyZVZpZXcqIGNv
bnZlcnRUZXh0dXJlVmlld0Zyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOwogCiBw
cml2YXRlOgogICAgIHVzaW5nIE9iamVjdCA9IHN0ZDo6dmFyaWFudDwKQEAgLTEyNSw3ICsxNTAs
NiBAQCBwcml2YXRlOgogICAgICAgICBSZWY8UmVtb3RlQ29tcHV0ZVBpcGVsaW5lPiwKICAgICAg
ICAgUmVmPFJlbW90ZURldmljZT4sCiAgICAgICAgIFJlZjxSZW1vdGVFeHRlcm5hbFRleHR1cmU+
LAotICAgICAgICBSZWY8UmVtb3RlR1BVPiwKICAgICAgICAgUmVmPFJlbW90ZVBpcGVsaW5lTGF5
b3V0PiwKICAgICAgICAgUmVmPFJlbW90ZVF1ZXJ5U2V0PiwKICAgICAgICAgUmVmPFJlbW90ZVF1
ZXVlPiwKQEAgLTEzOCw5ICsxNjIsNyBAQCBwcml2YXRlOgogICAgICAgICBSZWY8UmVtb3RlVGV4
dHVyZT4sCiAgICAgICAgIFJlZjxSZW1vdGVUZXh0dXJlVmlldz4KICAgICA+OwotICAgIEhhc2hN
YXA8dm9pZCosIE9iamVjdD4gbV9vYmplY3RzOwotCi0gICAgT2JqZWN0UmVnaXN0cnkgbV9vYmpl
Y3RSZWdpc3RyeTsKKyAgICBIYXNoTWFwPFdlYkdQVUlkZW50aWZpZXIsIE9iamVjdD4gbV9vYmpl
Y3RzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvV2ViR1BVT2JqZWN0UmVnaXN0
cnkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVP
YmplY3RSZWdpc3RyeS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiMjdhMWE1
ZmJlNGRlNDBiYmJlMmQ1NjVlZDBkYzMzNTdmZTA1YTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9XZWJHUFVPYmplY3RSZWdpc3RyeS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzODAg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJH
UFVPYmplY3RSZWdpc3RyeS5oIgotCi0jaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotCi0jaW5jbHVk
ZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFUuaD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3Mv
V2ViR1BVL1dlYkdQVUFkYXB0ZXIuaD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dl
YkdQVUJpbmRHcm91cC5oPgotI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQmlu
ZEdyb3VwTGF5b3V0Lmg+Ci0jaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVCdWZm
ZXIuaD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbW1hbmRCdWZmZXIu
aD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbW1hbmRFbmNvZGVyLmg+
Ci0jaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXIu
aD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbXB1dGVQaXBlbGluZS5o
PgotI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVRGV2aWNlLmg+Ci0jaW5jbHVk
ZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVFeHRlcm5hbFRleHR1cmUuaD4KLSNpbmNsdWRl
IDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVBpcGVsaW5lTGF5b3V0Lmg+Ci0jaW5jbHVkZSA8
cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVRdWVyeVNldC5oPgotI2luY2x1ZGUgPHBhbC9ncmFw
aGljcy9XZWJHUFUvV2ViR1BVUXVldWUuaD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BV
L1dlYkdQVVJlbmRlckJ1bmRsZS5oPgotI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2Vi
R1BVUmVuZGVyQnVuZGxlRW5jb2Rlci5oPgotI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUv
V2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BV
L1dlYkdQVVJlbmRlclBpcGVsaW5lLmg+Ci0jaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9X
ZWJHUFVTYW1wbGVyLmg+Ci0jaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVTaGFk
ZXJNb2R1bGUuaD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVRleHR1cmUu
aD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVRleHR1cmVWaWV3Lmg+Ci0K
LW5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7Ci0KLU9iamVjdFJlZ2lzdHJ5OjpPYmplY3RSZWdp
c3RyeSgpCi17Ci19Ci0KLU9iamVjdFJlZ2lzdHJ5Ojp+T2JqZWN0UmVnaXN0cnkoKQotewotfQot
Ci12b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyLCBQQUw6OldlYkdQVTo6QWRhcHRlciYgYWRhcHRlcikKLXsKLSAgICBhdXRvIHJlc3VsdCA9
IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgYWRhcHRlcik7Ci0gICAgQVNTRVJUX1VOVVNFRChy
ZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKLX0KLQotdm9pZCBPYmplY3RSZWdpc3RyeTo6YWRk
T2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OkJpbmRHcm91
cCYgYmluZEdyb3VwKQotewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlm
aWVyLCBiaW5kR3JvdXApOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdF
bnRyeSk7Ci19Ci0KLXZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChXZWJHUFVJZGVudGlm
aWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXQmIGJpbmRHcm91cExh
eW91dCkKLXsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgYmlu
ZEdyb3VwTGF5b3V0KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50
cnkpOwotfQotCi12b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6QnVmZmVyJiBidWZmZXIpCi17Ci0gICAgYXV0byBy
ZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIGJ1ZmZlcik7Ci0gICAgQVNTRVJUX1VO
VVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKLX0KLQotdm9pZCBPYmplY3RSZWdpc3Ry
eTo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OkNv
bW1hbmRCdWZmZXImIGNvbW1hbmRCdWZmZXIpCi17Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVj
dHMuYWRkKGlkZW50aWZpZXIsIGNvbW1hbmRCdWZmZXIpOwotICAgIEFTU0VSVF9VTlVTRUQocmVz
dWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7Ci19Ci0KLXZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9i
amVjdChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpDb21tYW5kRW5j
b2RlciYgY29tbWFuZEVuY29kZXIpCi17Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRk
KGlkZW50aWZpZXIsIGNvbW1hbmRFbmNvZGVyKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwg
cmVzdWx0LmlzTmV3RW50cnkpOwotfQotCi12b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3Qo
V2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNv
ZGVyJiBjb21wdXRlUGFzc0VuY29kZXIpCi17Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMu
YWRkKGlkZW50aWZpZXIsIGNvbXB1dGVQYXNzRW5jb2Rlcik7Ci0gICAgQVNTRVJUX1VOVVNFRChy
ZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKLX0KLQotdm9pZCBPYmplY3RSZWdpc3RyeTo6YWRk
T2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OkNvbXB1dGVQ
aXBlbGluZSYgY29tcHV0ZVBpcGVsaW5lKQotewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3Rz
LmFkZChpZGVudGlmaWVyLCBjb21wdXRlUGlwZWxpbmUpOwotICAgIEFTU0VSVF9VTlVTRUQocmVz
dWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7Ci19Ci0KLXZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9i
amVjdChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpEZXZpY2UmIGRl
dmljZSkKLXsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgZGV2
aWNlKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwotfQot
Ci12b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyLCBQQUw6OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlJiBleHRlcm5hbFRleHR1cmUpCi17Ci0g
ICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIGV4dGVybmFsVGV4dHVy
ZSk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKLX0KLQot
dm9pZCBPYmplY3RSZWdpc3RyeTo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmll
ciwgUEFMOjpXZWJHUFU6OkdQVSYgZ3B1KQotewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3Rz
LmFkZChpZGVudGlmaWVyLCBncHUpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQu
aXNOZXdFbnRyeSk7Ci19Ci0KLXZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChXZWJHUFVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91dCYgcGlwZWxp
bmVMYXlvdXQpCi17Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIs
IHBpcGVsaW5lTGF5b3V0KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3
RW50cnkpOwotfQotCi12b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6UXVlcnlTZXQmIHF1ZXJ5U2V0KQotewotICAg
IGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBxdWVyeVNldCk7Ci0gICAg
QVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKLX0KLQotdm9pZCBPYmpl
Y3RSZWdpc3RyeTo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpX
ZWJHUFU6OlF1ZXVlJiBxdWV1ZSkKLXsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQo
aWRlbnRpZmllciwgcXVldWUpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNO
ZXdFbnRyeSk7Ci19Ci0KLXZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyJiByZW5k
ZXJCdW5kbGVFbmNvZGVyKQotewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVu
dGlmaWVyLCByZW5kZXJCdW5kbGVFbmNvZGVyKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwg
cmVzdWx0LmlzTmV3RW50cnkpOwotfQotCi12b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3Qo
V2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlJiBy
ZW5kZXJCdW5kbGUpCi17Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZp
ZXIsIHJlbmRlckJ1bmRsZSk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05l
d0VudHJ5KTsKLX0KLQotdm9pZCBPYmplY3RSZWdpc3RyeTo6YWRkT2JqZWN0KFdlYkdQVUlkZW50
aWZpZXIgaWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyJiByZW5kZXJQ
YXNzRW5jb2RlcikKLXsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmll
ciwgcmVuZGVyUGFzc0VuY29kZXIpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQu
aXNOZXdFbnRyeSk7Ci19Ci0KLXZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChXZWJHUFVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZSYgcmVuZGVy
UGlwZWxpbmUpCi17Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIs
IHJlbmRlclBpcGVsaW5lKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3
RW50cnkpOwotfQotCi12b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6U2FtcGxlciYgc2FtcGxlcikKLXsKLSAgICBh
dXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgc2FtcGxlcik7Ci0gICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKLX0KLQotdm9pZCBPYmplY3RS
ZWdpc3RyeTo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpXZWJH
UFU6OlNoYWRlck1vZHVsZSYgc2hhZGVyTW9kdWxlKQotewotICAgIGF1dG8gcmVzdWx0ID0gbV9v
YmplY3RzLmFkZChpZGVudGlmaWVyLCBzaGFkZXJNb2R1bGUpOwotICAgIEFTU0VSVF9VTlVTRUQo
cmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7Ci19Ci0KLXZvaWQgT2JqZWN0UmVnaXN0cnk6OmFk
ZE9iamVjdChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpUZXh0dXJl
JiB0ZXh0dXJlKQotewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVy
LCB0ZXh0dXJlKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkp
OwotfQotCi12b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6VGV4dHVyZVZpZXcmIHRleHR1cmVWaWV3KQotewotICAg
IGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCB0ZXh0dXJlVmlldyk7Ci0g
ICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKLX0KLQotdm9pZCBP
YmplY3RSZWdpc3RyeTo6cmVtb3ZlT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikK
LXsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoaWRlbnRpZmllcik7Ci0gICAg
QVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Ci19Ci0KLVBBTDo6V2ViR1BVOjpBZGFwdGVy
KiBPYmplY3RSZWdpc3RyeTo6Y29udmVydEFkYXB0ZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlm
aWVyIGlkZW50aWZpZXIpCi17Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlk
ZW50aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6QWRh
cHRlcj4+KGl0ZXJhdG9yLT52YWx1ZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJl
dHVybiAmc3RkOjpnZXQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6QWRhcHRl
cj4+KGl0ZXJhdG9yLT52YWx1ZSkuZ2V0KCk7Ci19Ci0KLVBBTDo6V2ViR1BVOjpCaW5kR3JvdXAq
IE9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0QmluZEdyb3VwRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRp
ZmllciBpZGVudGlmaWVyKQotewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChp
ZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkJp
bmRHcm91cD4+KGl0ZXJhdG9yLT52YWx1ZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IHJldHVybiAmc3RkOjpnZXQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6Qmlu
ZEdyb3VwPj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKLX0KLQotUEFMOjpXZWJHUFU6OkJpbmRH
cm91cExheW91dCogT2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRCaW5kR3JvdXBMYXlvdXRGcm9tQmFj
a2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCi17Ci0gICAgYXV0byBpdGVyYXRvciA9
IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVj
dHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBl
cjxQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0Pj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93
cmFwcGVyPFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXQ+PihpdGVyYXRvci0+dmFsdWUpLmdl
dCgpOwotfQotCi1QQUw6OldlYkdQVTo6QnVmZmVyKiBPYmplY3RSZWdpc3RyeTo6Y29udmVydEJ1
ZmZlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKLXsKLSAgICBhdXRv
IGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7Ci0gICAgaWYgKGl0ZXJhdG9y
ID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnJlZmVy
ZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpCdWZmZXI+PihpdGVyYXRvci0+dmFsdWUpKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0ZDo6cmVmZXJlbmNl
X3dyYXBwZXI8UEFMOjpXZWJHUFU6OkJ1ZmZlcj4+KGl0ZXJhdG9yLT52YWx1ZSkuZ2V0KCk7Ci19
Ci0KLVBBTDo6V2ViR1BVOjpDb21tYW5kQnVmZmVyKiBPYmplY3RSZWdpc3RyeTo6Y29udmVydENv
bW1hbmRCdWZmZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCi17Ci0g
ICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOwotICAgIGlmIChp
dGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZlcj4+KGl0ZXJhdG9y
LT52YWx1ZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiAmc3RkOjpnZXQ8
c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZlcj4+KGl0ZXJh
dG9yLT52YWx1ZSkuZ2V0KCk7Ci19Ci0KLVBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2RlciogT2Jq
ZWN0UmVnaXN0cnk6OmNvbnZlcnRDb21tYW5kRW5jb2RlckZyb21CYWNraW5nKFdlYkdQVUlkZW50
aWZpZXIgaWRlbnRpZmllcikKLXsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQo
aWRlbnRpZmllcik7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpD
b21tYW5kRW5jb2Rlcj4+KGl0ZXJhdG9yLT52YWx1ZSkpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiAmc3RkOjpnZXQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQ
VTo6Q29tbWFuZEVuY29kZXI+PihpdGVyYXRvci0+dmFsdWUpLmdldCgpOwotfQotCi1QQUw6Oldl
YkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyKiBPYmplY3RSZWdpc3RyeTo6Y29udmVydENvbXB1dGVQ
YXNzRW5jb2RlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKLXsKLSAg
ICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7Ci0gICAgaWYgKGl0
ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpDb21wdXRlUGFzc0VuY29kZXI+PihpdGVy
YXRvci0+dmFsdWUpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gJnN0ZDo6
Z2V0PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2Rl
cj4+KGl0ZXJhdG9yLT52YWx1ZSkuZ2V0KCk7Ci19Ci0KLVBBTDo6V2ViR1BVOjpDb21wdXRlUGlw
ZWxpbmUqIE9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0Q29tcHV0ZVBpcGVsaW5lRnJvbUJhY2tpbmco
V2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQotewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29i
amVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVu
ZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFM
OjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZT4+KGl0ZXJhdG9yLT52YWx1ZSkpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIHJldHVybiAmc3RkOjpnZXQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBl
cjxQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lPj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsK
LX0KLQotUEFMOjpXZWJHUFU6OkRldmljZSogT2JqZWN0UmVnaXN0cnk6OmNvbnZlcnREZXZpY2VG
cm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCi17Ci0gICAgYXV0byBpdGVy
YXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBt
X29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpyZWZlcmVuY2Vf
d3JhcHBlcjxQQUw6OldlYkdQVTo6RGV2aWNlPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFw
cGVyPFBBTDo6V2ViR1BVOjpEZXZpY2U+PihpdGVyYXRvci0+dmFsdWUpLmdldCgpOwotfQotCi1Q
QUw6OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlKiBPYmplY3RSZWdpc3RyeTo6Y29udmVydEV4dGVy
bmFsVGV4dHVyZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKLXsKLSAg
ICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7Ci0gICAgaWYgKGl0
ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1cmU+PihpdGVyYXRv
ci0+dmFsdWUpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gJnN0ZDo6Z2V0
PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZT4+KGl0
ZXJhdG9yLT52YWx1ZSkuZ2V0KCk7Ci19Ci0KLVBBTDo6V2ViR1BVOjpHUFUqIE9iamVjdFJlZ2lz
dHJ5Ojpjb252ZXJ0R1BVRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQot
ewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBp
ZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZl
PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkdQVT4+KGl0ZXJhdG9yLT52YWx1
ZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiAmc3RkOjpnZXQ8c3RkOjpy
ZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6R1BVPj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQo
KTsKLX0KLQotUEFMOjpXZWJHUFU6OlBpcGVsaW5lTGF5b3V0KiBPYmplY3RSZWdpc3RyeTo6Y29u
dmVydFBpcGVsaW5lTGF5b3V0RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
KQotewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAg
ICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlBpcGVsaW5lTGF5b3V0Pj4o
aXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuICZz
dGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91
dD4+KGl0ZXJhdG9yLT52YWx1ZSkuZ2V0KCk7Ci19Ci0KLVBBTDo6V2ViR1BVOjpRdWVyeVNldCog
T2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRRdWVyeVNldEZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZp
ZXIgaWRlbnRpZmllcikKLXsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRl
bnRpZmllcik7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpRdWVy
eVNldD4+KGl0ZXJhdG9yLT52YWx1ZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJl
dHVybiAmc3RkOjpnZXQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UXVlcnlT
ZXQ+PihpdGVyYXRvci0+dmFsdWUpLmdldCgpOwotfQotCi1QQUw6OldlYkdQVTo6UXVldWUqIE9i
amVjdFJlZ2lzdHJ5Ojpjb252ZXJ0UXVldWVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCi17Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZp
ZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UXVldWU+Pihp
dGVyYXRvci0+dmFsdWUpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gJnN0
ZDo6Z2V0PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlF1ZXVlPj4oaXRlcmF0
b3ItPnZhbHVlKS5nZXQoKTsKLX0KLQotUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXIq
IE9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0UmVuZGVyQnVuZGxlRW5jb2RlckZyb21CYWNraW5nKFdl
YkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKLXsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmpl
Y3RzLmZpbmQoaWRlbnRpZmllcik7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQo
KSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6
V2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFw
cGVyPFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyPj4oaXRlcmF0b3ItPnZhbHVlKS5n
ZXQoKTsKLX0KLQotUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZSogT2JqZWN0UmVnaXN0cnk6OmNv
bnZlcnRSZW5kZXJCdW5kbGVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIp
Ci17Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOwotICAg
IGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlPj4oaXRl
cmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuICZzdGQ6
OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGU+Pihp
dGVyYXRvci0+dmFsdWUpLmdldCgpOwotfQotCi1QQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29k
ZXIqIE9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0UmVuZGVyUGFzc0VuY29kZXJGcm9tQmFja2luZyhX
ZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCi17Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fb2Jq
ZWN0cy5maW5kKGlkZW50aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5k
KCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6
OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXI+PihpdGVyYXRvci0+dmFsdWUpKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0ZDo6cmVmZXJlbmNlX3dyYXBw
ZXI8UEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyPj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQo
KTsKLX0KLQotUEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lKiBPYmplY3RSZWdpc3RyeTo6Y29u
dmVydFJlbmRlclBpcGVsaW5lRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
KQotewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAg
ICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lPj4o
aXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuICZz
dGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGlu
ZT4+KGl0ZXJhdG9yLT52YWx1ZSkuZ2V0KCk7Ci19Ci0KLVBBTDo6V2ViR1BVOjpTYW1wbGVyKiBP
YmplY3RSZWdpc3RyeTo6Y29udmVydFNhbXBsZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVy
IGlkZW50aWZpZXIpCi17Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50
aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6U2FtcGxl
cj4+KGl0ZXJhdG9yLT52YWx1ZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVy
biAmc3RkOjpnZXQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6U2FtcGxlcj4+
KGl0ZXJhdG9yLT52YWx1ZSkuZ2V0KCk7Ci19Ci0KLVBBTDo6V2ViR1BVOjpTaGFkZXJNb2R1bGUq
IE9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0U2hhZGVyTW9kdWxlRnJvbUJhY2tpbmcoV2ViR1BVSWRl
bnRpZmllciBpZGVudGlmaWVyKQotewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmlu
ZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6
OlNoYWRlck1vZHVsZT4+KGl0ZXJhdG9yLT52YWx1ZSkpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiAmc3RkOjpnZXQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQ
VTo6U2hhZGVyTW9kdWxlPj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKLX0KLQotUEFMOjpXZWJH
UFU6OlRleHR1cmUqIE9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0VGV4dHVyZUZyb21CYWNraW5nKFdl
YkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKLXsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmpl
Y3RzLmZpbmQoaWRlbnRpZmllcik7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQo
KSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6
V2ViR1BVOjpUZXh0dXJlPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgcmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2Vi
R1BVOjpUZXh0dXJlPj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKLX0KLQotUEFMOjpXZWJHUFU6
OlRleHR1cmVWaWV3KiBPYmplY3RSZWdpc3RyeTo6Y29udmVydFRleHR1cmVWaWV3RnJvbUJhY2tp
bmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQotewotICAgIGF1dG8gaXRlcmF0b3IgPSBt
X29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3Rz
LmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8
UEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3Pj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVy
PFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlldz4+KGl0ZXJhdG9yLT52YWx1ZSkuZ2V0KCk7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBIQVZFKEdQVV9QUk9D
RVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQ
VS9XZWJHUFVPYmplY3RSZWdpc3RyeS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9XZWJHUFVPYmplY3RSZWdpc3RyeS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBmMzM3Nzg1NDdhM2E0YmEzNTVhNzUyM2QyZWNkNjIwNjUzN2UxMDkwLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvV2ViR1BVT2JqZWN0UmVnaXN0cnkuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDE0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCi0KLSNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdD
b250ZXh0LmgiCi0jaW5jbHVkZSAiV2ViR1BVSWRlbnRpZmllci5oIgotI2luY2x1ZGUgPGZ1bmN0
aW9uYWw+Ci0jaW5jbHVkZSA8dmFyaWFudD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotCi1u
YW1lc3BhY2UgUEFMOjpXZWJHUFUgewotY2xhc3MgQWRhcHRlcjsKLWNsYXNzIEJpbmRHcm91cDsK
LWNsYXNzIEJpbmRHcm91cExheW91dDsKLWNsYXNzIEJ1ZmZlcjsKLWNsYXNzIENvbW1hbmRCdWZm
ZXI7Ci1jbGFzcyBDb21tYW5kRW5jb2RlcjsKLWNsYXNzIENvbXB1dGVQYXNzRW5jb2RlcjsKLWNs
YXNzIENvbXB1dGVQaXBlbGluZTsKLWNsYXNzIERldmljZTsKLWNsYXNzIEV4dGVybmFsVGV4dHVy
ZTsKLWNsYXNzIEdQVTsKLWNsYXNzIFBpcGVsaW5lTGF5b3V0OwotY2xhc3MgUXVlcnlTZXQ7Ci1j
bGFzcyBRdWV1ZTsKLWNsYXNzIFJlbmRlckJ1bmRsZUVuY29kZXI7Ci1jbGFzcyBSZW5kZXJCdW5k
bGU7Ci1jbGFzcyBSZW5kZXJQYXNzRW5jb2RlcjsKLWNsYXNzIFJlbmRlclBpcGVsaW5lOwotY2xh
c3MgU2FtcGxlcjsKLWNsYXNzIFNoYWRlck1vZHVsZTsKLWNsYXNzIFRleHR1cmU7Ci1jbGFzcyBU
ZXh0dXJlVmlldzsKLX0KLQotbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKLQotY2xhc3MgT2Jq
ZWN0UmVnaXN0cnkgZmluYWwgOiBwdWJsaWMgV2ViR1BVOjpDb252ZXJ0RnJvbUJhY2tpbmdDb250
ZXh0IHsKLXB1YmxpYzoKLSAgICBPYmplY3RSZWdpc3RyeSgpOwotICAgIH5PYmplY3RSZWdpc3Ry
eSgpOwotCi0gICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUEFMOjpXZWJHUFU6
OkFkYXB0ZXImKTsKLSAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6Oldl
YkdQVTo6QmluZEdyb3VwJik7Ci0gICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwg
UEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dCYpOwotICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQ
VUlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpCdWZmZXImKTsKLSAgICB2b2lkIGFkZE9iamVjdChX
ZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZlciYpOwotICAgIHZvaWQg
YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2RlciYp
OwotICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpDb21w
dXRlUGFzc0VuY29kZXImKTsKLSAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQ
QUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lJik7Ci0gICAgdm9pZCBhZGRPYmplY3QoV2ViR1BV
SWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OkRldmljZSYpOwotICAgIHZvaWQgYWRkT2JqZWN0KFdl
YkdQVUlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1cmUmKTsKLSAgICB2b2lk
IGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6R1BVJik7Ci0gICAgdm9p
ZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OlBpcGVsaW5lTGF5b3V0
Jik7Ci0gICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OlF1
ZXJ5U2V0Jik7Ci0gICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUEFMOjpXZWJH
UFU6OlF1ZXVlJik7Ci0gICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUEFMOjpX
ZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXImKTsKLSAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJ
ZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlJik7Ci0gICAgdm9pZCBhZGRPYmpl
Y3QoV2ViR1BVSWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyJik7Ci0g
ICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OlJlbmRlclBp
cGVsaW5lJik7Ci0gICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUEFMOjpXZWJH
UFU6OlNhbXBsZXImKTsKLSAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6
OldlYkdQVTo6U2hhZGVyTW9kdWxlJik7Ci0gICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRp
ZmllciwgUEFMOjpXZWJHUFU6OlRleHR1cmUmKTsKLSAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJ
ZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6VGV4dHVyZVZpZXcmKTsKLQotICAgIHZvaWQgcmVtb3Zl
T2JqZWN0KFdlYkdQVUlkZW50aWZpZXIpOwotCi0gICAgUEFMOjpXZWJHUFU6OkFkYXB0ZXIqIGNv
bnZlcnRBZGFwdGVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7Ci0gICAgUEFM
OjpXZWJHUFU6OkJpbmRHcm91cCogY29udmVydEJpbmRHcm91cEZyb21CYWNraW5nKFdlYkdQVUlk
ZW50aWZpZXIpIGZpbmFsOwotICAgIFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXQqIGNvbnZl
cnRCaW5kR3JvdXBMYXlvdXRGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKLSAg
ICBQQUw6OldlYkdQVTo6QnVmZmVyKiBjb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoV2ViR1BVSWRl
bnRpZmllcikgZmluYWw7Ci0gICAgUEFMOjpXZWJHUFU6OkNvbW1hbmRCdWZmZXIqIGNvbnZlcnRD
b21tYW5kQnVmZmVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7Ci0gICAgUEFM
OjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyKiBjb252ZXJ0Q29tbWFuZEVuY29kZXJGcm9tQmFja2lu
ZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKLSAgICBQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NF
bmNvZGVyKiBjb252ZXJ0Q29tcHV0ZVBhc3NFbmNvZGVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRp
ZmllcikgZmluYWw7Ci0gICAgUEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZSogY29udmVydENv
bXB1dGVQaXBlbGluZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOwotICAgIFBB
TDo6V2ViR1BVOjpEZXZpY2UqIGNvbnZlcnREZXZpY2VGcm9tQmFja2luZyhXZWJHUFVJZGVudGlm
aWVyKSBmaW5hbDsKLSAgICBQQUw6OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlKiBjb252ZXJ0RXh0
ZXJuYWxUZXh0dXJlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7Ci0gICAgUEFM
OjpXZWJHUFU6OkdQVSogY29udmVydEdQVUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZp
bmFsOwotICAgIFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91dCogY29udmVydFBpcGVsaW5lTGF5
b3V0RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7Ci0gICAgUEFMOjpXZWJHUFU6
OlF1ZXJ5U2V0KiBjb252ZXJ0UXVlcnlTZXRGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBm
aW5hbDsKLSAgICBQQUw6OldlYkdQVTo6UXVldWUqIGNvbnZlcnRRdWV1ZUZyb21CYWNraW5nKFdl
YkdQVUlkZW50aWZpZXIpIGZpbmFsOwotICAgIFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNv
ZGVyKiBjb252ZXJ0UmVuZGVyQnVuZGxlRW5jb2RlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZp
ZXIpIGZpbmFsOwotICAgIFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGUqIGNvbnZlcnRSZW5kZXJC
dW5kbGVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKLSAgICBQQUw6OldlYkdQ
VTo6UmVuZGVyUGFzc0VuY29kZXIqIGNvbnZlcnRSZW5kZXJQYXNzRW5jb2RlckZyb21CYWNraW5n
KFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOwotICAgIFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGlu
ZSogY29udmVydFJlbmRlclBpcGVsaW5lRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmlu
YWw7Ci0gICAgUEFMOjpXZWJHUFU6OlNhbXBsZXIqIGNvbnZlcnRTYW1wbGVyRnJvbUJhY2tpbmco
V2ViR1BVSWRlbnRpZmllcikgZmluYWw7Ci0gICAgUEFMOjpXZWJHUFU6OlNoYWRlck1vZHVsZSog
Y29udmVydFNoYWRlck1vZHVsZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOwot
ICAgIFBBTDo6V2ViR1BVOjpUZXh0dXJlKiBjb252ZXJ0VGV4dHVyZUZyb21CYWNraW5nKFdlYkdQ
VUlkZW50aWZpZXIpIGZpbmFsOwotICAgIFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlldyogY29udmVy
dFRleHR1cmVWaWV3RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7Ci0KLXByaXZh
dGU6Ci0gICAgdXNpbmcgT2JqZWN0ID0gc3RkOjp2YXJpYW50PAotICAgICAgICBzdGQ6Om1vbm9z
dGF0ZSwKLSAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6QWRhcHRl
cj4sCi0gICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkJpbmRHcm91
cD4sCi0gICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkJpbmRHcm91
cExheW91dD4sCi0gICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkJ1
ZmZlcj4sCi0gICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkNvbW1h
bmRCdWZmZXI+LAotICAgICAgICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpD
b21tYW5kRW5jb2Rlcj4sCi0gICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJH
UFU6OkNvbXB1dGVQYXNzRW5jb2Rlcj4sCi0gICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8
UEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZT4sCi0gICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dy
YXBwZXI8UEFMOjpXZWJHUFU6OkRldmljZT4sCi0gICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBw
ZXI8UEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZT4sCi0gICAgICAgIHN0ZDo6cmVmZXJlbmNl
X3dyYXBwZXI8UEFMOjpXZWJHUFU6OkdQVT4sCi0gICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBw
ZXI8UEFMOjpXZWJHUFU6OlBpcGVsaW5lTGF5b3V0PiwKLSAgICAgICAgc3RkOjpyZWZlcmVuY2Vf
d3JhcHBlcjxQQUw6OldlYkdQVTo6UXVlcnlTZXQ+LAotICAgICAgICBzdGQ6OnJlZmVyZW5jZV93
cmFwcGVyPFBBTDo6V2ViR1BVOjpRdWV1ZT4sCi0gICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBw
ZXI8UEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXI+LAotICAgICAgICBzdGQ6OnJlZmVy
ZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGU+LAotICAgICAgICBzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRW5jb2Rlcj4sCi0gICAgICAg
IHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lPiwKLSAg
ICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6U2FtcGxlcj4sCi0gICAg
ICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlNoYWRlck1vZHVsZT4sCi0g
ICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlRleHR1cmU+LAotICAg
ICAgICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlldz4KLSAg
ICA+OwotICAgIEhhc2hNYXA8V2ViR1BVSWRlbnRpZmllciwgT2JqZWN0PiBtX29iamVjdHM7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQotCi0jZW5kaWYgLy8gRU5BQkxFKEdQ
VV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUF1ZGlvU291cmNlUHJvdmlkZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlclByb3h5LmNwcAppbmRleCBjOTJkMjEy
MWU2ZjI5YTdhZGMwNDEwNGFlNzY2NjkxNTM5ZmY0ZjFmLi5hNWY0ZTUxMzVmZjcwMDE5YmY3NjI4
NTA1NmZjMTQ0ZmM5M2YwZTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlclByb3h5LmNwcApA
QCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVmPFJlbW90ZUF1ZGlv
U291cmNlUHJvdmlkZXJQcm94eT4gUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlclByb3h5OjpjcmVh
dGUoV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZjxJUEM6OkNv
bm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMmIGxvY2Fs
UHJvdmlkZXIpCitSZWY8UmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlclByb3h5PiBSZW1vdGVBdWRp
b1NvdXJjZVByb3ZpZGVyUHJveHk6OmNyZWF0ZShXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBXZWJDb3Jl
OjpBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQyYgbG9jYWxQcm92aWRlcikKIHsKICAgICBhdXRv
IHJlbW90ZVByb3ZpZGVyID0gYWRvcHRSZWYoKm5ldyBSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVy
UHJveHkoaWRlbnRpZmllciwgV1RGTW92ZShjb25uZWN0aW9uKSkpOwogCkBAIC01NSw5ICs1NSw5
IEBAIFJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJQcm94eTo6UmVtb3RlQXVkaW9Tb3VyY2VQcm92
aWRlclByb3h5KFdlYkNvcmU6Ok1lZGlhUGxhCiAKIFJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJQ
cm94eTo6flJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJQcm94eSgpID0gZGVmYXVsdDsKIAotVW5p
cXVlUmVmPENBUmluZ0J1ZmZlcj4gUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlclByb3h5OjpjcmVh
dGVSaW5nQnVmZmVyKCkKK1VuaXF1ZVJlZjxXZWJDb3JlOjpDQVJpbmdCdWZmZXI+IFJlbW90ZUF1
ZGlvU291cmNlUHJvdmlkZXJQcm94eTo6Y3JlYXRlUmluZ0J1ZmZlcigpCiB7Ci0gICAgcmV0dXJu
IG1ha2VVbmlxdWVSZWY8Q0FSaW5nQnVmZmVyPihtYWtlVW5pcXVlUmVmPFNoYXJlZFJpbmdCdWZm
ZXJTdG9yYWdlPihbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKFNoYXJlZE1lbW9yeSog
bWVtb3J5LCBjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGZvcm1hdCwgc2l6ZV90IGZy
YW1lQ291bnQpIG11dGFibGUgeworICAgIHJldHVybiBtYWtlVW5pcXVlUmVmPFdlYkNvcmU6OkNB
UmluZ0J1ZmZlcj4obWFrZVVuaXF1ZVJlZjxTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZT4oW3Byb3Rl
Y3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShTaGFyZWRNZW1vcnkqIG1lbW9yeSwgY29uc3QgV2Vi
Q29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBmb3JtYXQsIHNpemVfdCBmcmFtZUNvdW50
KSBtdXRhYmxlIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+c3RvcmFnZUNoYW5nZWQobWVtb3J5
LCBmb3JtYXQsIGZyYW1lQ291bnQpOwogICAgIH0pKTsKIH0KQEAgLTY3LDcgKzY3LDcgQEAgdm9p
ZCBSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyUHJveHk6Om5ld0F1ZGlvU2FtcGxlcyh1aW50NjRf
dCBzdGFydEZyYW1lLCB1aW50NjQKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJl
bW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyOjpBdWRpb1NhbXBsZXNBdmFpbGFibGUgeyBt
X2lkZW50aWZpZXIsIHN0YXJ0RnJhbWUsIG51bWJlck9mRnJhbWVzIH0sIDApOwogfQogCi12b2lk
IFJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJQcm94eTo6c3RvcmFnZUNoYW5nZWQoU2hhcmVkTWVt
b3J5KiBtZW1vcnksIGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZm9ybWF0LCBzaXpl
X3QgZnJhbWVDb3VudCkKK3ZvaWQgUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlclByb3h5OjpzdG9y
YWdlQ2hhbmdlZChTaGFyZWRNZW1vcnkqIG1lbW9yeSwgY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uJiBmb3JtYXQsIHNpemVfdCBmcmFtZUNvdW50KQogewogICAgIFNoYXJl
ZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKICAgICBpZiAobWVtb3J5KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdD
b250ZXh0LmgKaW5kZXggYTk0NjhmNTI3YzRjMWQxMTMyYTBkODQzZTJkNGZmMTI2YmFmYjZmOS4u
OTkyZjI3ZGEwZTRiYTUxNWNmYmZkOTgwNjY5NDc3MGQzYzk4ODQxNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29udmVydEZyb21CYWNr
aW5nQ29udGV4dC5oCkBAIC0yNzQsNyArMjc0LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUEFM
OjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZSogY29udmVydENvbXB1dGVQaXBlbGluZUZyb21CYWNr
aW5nKFdlYkdQVUlkZW50aWZpZXIpID0gMDsKICAgICB2aXJ0dWFsIFBBTDo6V2ViR1BVOjpEZXZp
Y2UqIGNvbnZlcnREZXZpY2VGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSA9IDA7CiAgICAg
dmlydHVhbCBQQUw6OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlKiBjb252ZXJ0RXh0ZXJuYWxUZXh0
dXJlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgPSAwOwotICAgIHZpcnR1YWwgUEFMOjpX
ZWJHUFU6OkdQVSogY29udmVydEdQVUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpID0gMDsK
ICAgICB2aXJ0dWFsIFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91dCogY29udmVydFBpcGVsaW5l
TGF5b3V0RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwgUEFM
OjpXZWJHUFU6OlF1ZXJ5U2V0KiBjb252ZXJ0UXVlcnlTZXRGcm9tQmFja2luZyhXZWJHUFVJZGVu
dGlmaWVyKSA9IDA7CiAgICAgdmlydHVhbCBQQUw6OldlYkdQVTo6UXVldWUqIGNvbnZlcnRRdWV1
ZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IGRjMmRi
ZDUyNmQ1YjhhYTRlOTExOTAxYjcyMDQ2N2YwZTIzZDMyOTUuLmUxMzM3MzhkMjM4YjkwYjVjNWQ2
ZGUxMDAxZTIzNGQ0YjJhNDU5OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtNTMsNyArNTMsNiBAQCBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGUuY3BwCiBHUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlLmNwcAogR1BVUHJvY2Vzcy9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlVGV4dHVyZVZpZXcuY3BwCiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9X
ZWJHUFVPYmplY3RIZWFwLmNwcAotR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvV2ViR1BVT2Jq
ZWN0UmVnaXN0cnkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvSGFyZHdhcmVMaXN0
ZW5lclByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eS5j
cHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyLmNwcApA
QCAtODU4LDYgKzg1Nyw3IEBAIFJlbW90ZUNvbXB1dGVQaXBlbGluZU1lc3NhZ2VSZWNlaXZlci5j
cHAKIFJlbW90ZURldmljZU1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZUV4dGVybmFsVGV4dHVy
ZU1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZUdQVU1lc3NhZ2VSZWNlaXZlci5jcHAKK1JlbW90
ZUdQVVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlUGlwZWxpbmVMYXlvdXRNZXNzYWdl
UmVjZWl2ZXIuY3BwCiBSZW1vdGVRdWVyeVNldE1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZVF1
ZXVlTWVzc2FnZVJlY2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjUyYzJiZTNiOGJmMGQ2YWNmZGU3OGViMGM5MDE1NTBi
NTlhZDE0Zi4uODI2NjUyNTM3ZDBjMzI3ZjY5MWNlOWZjMTRkMTc1MGRiYTU1NDM5OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yOTEx
LDEzICsyOTExLDExIEBACiAJCTFDOEUyQTMyMTI3Nzg1MjQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0
b3JNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJJbnNwZWN0
b3JNZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0b3JN
ZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkxQzhFMkRB
RDEyNzhDNUIyMDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yVUlNYWMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJJbnNwZWN0b3JVSU1hYy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5OEMwMUQyNzQ0NkEwMzAwMkNDQjc4IC8qIFJlbW90ZUdQ
VS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHUFUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkxQzk4QzAxRTI3NDQ2QTAzMDAyQ0NCNzggLyogV2ViR1BVT2JqZWN0UmVn
aXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVT2JqZWN0UmVnaXN0cnkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5OEMwMUYyNzQ0NkEwMzAwMkNDQjc4IC8qIFJlbW90ZVF1
ZXJ5U2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVF1ZXJ5U2V0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFDOThDMDIwMjc0NDZBMDQwMDJDQ0I3OCAvKiBSZW1vdGVSZW5kZXJC
dW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlUmVuZGVyQnVuZGxlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFDOThDMDIxMjc0NDZBMDQwMDJDQ0I3OCAvKiBSZW1vdGVRdWV1
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFDOThDMDIyMjc0NDZBMDQwMDJDQ0I3OCAvKiBSZW1vdGVSZW5kZXJC
dW5kbGVFbmNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5OEMwMjMyNzQ0NkEwNTAwMkNDQjc4
IC8qIFJlbW90ZVNoYWRlck1vZHVsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVTaGFk
ZXJNb2R1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzk4QzAyNDI3NDQ2
QTA1MDAyQ0NCNzggLyogV2ViR1BVT2JqZWN0UmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViR1BVT2JqZWN0UmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQzk4QzAyNTI3NDQ2QTA2MDAyQ0NCNzggLyogUmVtb3RlVGV4dHVyZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZW1vdGVUZXh0dXJlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOThD
MDI2Mjc0NDZBMDYwMDJDQ0I3OCAvKiBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFDOThDMDI3Mjc0NDZBMDYwMDJDQ0I3OCAvKiBSZW1vdGVSZW5kZXJQ
YXNzRW5jb2Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzE3MSw2ICszMTY5LDcgQEAKIAkJMUNCRDc1
M0QyNzQ3QUEzMTAwNEZBMEZGIC8qIFdlYkdQVU9iamVjdEhlYXAuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViR1BVT2JqZWN0SGVhcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0JGOTAx
MjI3MTAxOEI1MDAwQzQ1N0QgLyogUXVhbGlmaWVkUmVzb3VyY2VIZWFwLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFF1YWxpZmllZFJlc291cmNlSGVhcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQ0M1NEFGRDI3MEY5NjU0MDA1QkY4QkUgLyogUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0Q0MTJFNzI3NTFFMEVD
MDBDQTJFMjIgLyogUmVtb3RlR1BVUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlR1BVUHJv
eHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRjE4RjNFMjZC
QjVEOTAwMDRCMTcyMiAvKiBMb2dJbml0aWFsaXphdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBMb2dJbml0aWFsaXphdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFE
MDUzMEM5MjU4RUFCNDQwMEU0MzZGNyAvKiBjb21iaW5lLWZlYXR1cmUtZmxhZ3MtcGxpc3QucHkg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNj
cmlwdC5weXRob247IHBhdGggPSAiY29tYmluZS1mZWF0dXJlLWZsYWdzLXBsaXN0LnB5Ijsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUQwNTMwRDEyNTkxNjJDODAwRTQzNkY3IC8qIFdl
YktpdC1pb3MucGxpc3QgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0LnBsaXN0LnhtbDsgcGF0aCA9ICJXZWJLaXQtaW9zLnBsaXN0Ijsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc0MTYsOCArNzQxNSw2IEBACiAJCQkJMUM5OEMwODgy
NzQ0QkQ5OTAwMkNDQjc4IC8qIFJlbW90ZVRleHR1cmVWaWV3Lm1lc3NhZ2VzLmluICovLAogCQkJ
CTFDQkQ3NTNDMjc0N0FBMzEwMDRGQTBGRiAvKiBXZWJHUFVPYmplY3RIZWFwLmNwcCAqLywKIAkJ
CQkxQ0JENzUzRDI3NDdBQTMxMDA0RkEwRkYgLyogV2ViR1BVT2JqZWN0SGVhcC5oICovLAotCQkJ
CTFDOThDMDI0Mjc0NDZBMDUwMDJDQ0I3OCAvKiBXZWJHUFVPYmplY3RSZWdpc3RyeS5jcHAgKi8s
Ci0JCQkJMUM5OEMwMUUyNzQ0NkEwMzAwMkNDQjc4IC8qIFdlYkdQVU9iamVjdFJlZ2lzdHJ5Lmgg
Ki8sCiAJCQkpOwogCQkJcGF0aCA9IFdlYkdQVTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CkBAIC03NDQ3LDYgKzc0NDQsNyBAQAogCQkJCTFDQjc0NjI1Mjc0MzZFRTYwMEYxOTg3NCAvKiBS
ZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eS5oICovLAogCQkJCTFDQjc0NjYyMjc0MzlBMUEwMEYx
OTg3NCAvKiBSZW1vdGVHUFVQcm94eS5jcHAgKi8sCiAJCQkJMUNCNzQ2NjMyNzQzOUExQTAwRjE5
ODc0IC8qIFJlbW90ZUdQVVByb3h5LmggKi8sCisJCQkJMUNENDEyRTcyNzUxRTBFQzAwQ0EyRTIy
IC8qIFJlbW90ZUdQVVByb3h5Lm1lc3NhZ2VzLmluICovLAogCQkJCTFDQjc0NjI3Mjc0MzZFRTYw
MEYxOTg3NCAvKiBSZW1vdGVQaXBlbGluZUxheW91dFByb3h5LmNwcCAqLywKIAkJCQkxQ0I3NDYy
RjI3NDM2RUU4MDBGMTk4NzQgLyogUmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eS5oICovLAogCQkJ
CTFDQjc0NjM3Mjc0MzZFRTkwMEYxOTg3NCAvKiBSZW1vdGVRdWVyeVNldFByb3h5LmNwcCAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai94Y3NoYXJlZGRhdGEv
eGNzY2hlbWVzL1dlYktpdC54Y3NjaGVtZSBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1dlYktpdC54Y3NjaGVtZQppbmRleCA2MTAzOWIxYzcx
NzM4ZjMyMzNkYjhiMzU5ODQzYzQ0YzgzZWY5YzlmLi4xMWJmMDE4NWRmMjkyNzM4ZDRmNTQyM2Nl
Yjc2MDhlMjc5ODQ3NjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9XZWJLaXQueGNzY2hlbWUKKysrIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvV2ViS2l0Lnhjc2No
ZW1lCkBAIC0zMSw3ICszMSw3IEBACiAgICAgICA8L1Rlc3RhYmxlcz4KICAgIDwvVGVzdEFjdGlv
bj4KICAgIDxMYXVuY2hBY3Rpb24KLSAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9ICJSZWxlYXNl
IgorICAgICAgYnVpbGRDb25maWd1cmF0aW9uID0gIkRlYnVnIgogICAgICAgc2VsZWN0ZWREZWJ1
Z2dlcklkZW50aWZpZXIgPSAiWGNvZGUuRGVidWdnZXJGb3VuZGF0aW9uLkRlYnVnZ2VyLkxMREIi
CiAgICAgICBzZWxlY3RlZExhdW5jaGVySWRlbnRpZmllciA9ICJYY29kZS5EZWJ1Z2dlckZvdW5k
YXRpb24uTGF1bmNoZXIuTExEQiIKICAgICAgIGxhdW5jaFN0eWxlID0gIjAiCkBAIC00MCw2ICs0
MCwxMCBAQAogICAgICAgZGVidWdEb2N1bWVudFZlcnNpb25pbmcgPSAiWUVTIgogICAgICAgZGVi
dWdTZXJ2aWNlRXh0ZW5zaW9uID0gImludGVybmFsIgogICAgICAgYWxsb3dMb2NhdGlvblNpbXVs
YXRpb24gPSAiWUVTIj4KKyAgICAgIDxQYXRoUnVubmFibGUKKyAgICAgICAgIHJ1bm5hYmxlRGVi
dWdnaW5nTW9kZSA9ICIwIgorICAgICAgICAgRmlsZVBhdGggPSAiL1VzZXJzL21tYXhmaWVsZC9C
dWlsZC9Qcm9kdWN0cy9EZWJ1Zy9NaW5pQnJvd3Nlci5hcHAiPgorICAgICAgPC9QYXRoUnVubmFi
bGU+CiAgICA8L0xhdW5jaEFjdGlvbj4KICAgIDxQcm9maWxlQWN0aW9uCiAgICAgICBidWlsZENv
bmZpZ3VyYXRpb24gPSAiUmVsZWFzZSIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUFkYXB0ZXJQcm94eS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQWRhcHRlclByb3h5LmgK
aW5kZXggOWMzZDk1NzE1ZmY0MTNkYjljNTM5NDI1YzdiNTk2ZWZlMzY2NzljZC4uODA4ZGRhYTRi
MGFiMDljMDMyNDAxMjNkMDE0NDVhNDVkMWZiMGY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQWRhcHRlclByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQWRh
cHRlclByb3h5LmgKQEAgLTMyLDEyICszMiwxNiBAQAogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9X
ZWJHUFUvV2ViR1BVQWRhcHRlci5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogCituYW1lc3Bh
Y2UgV2ViS2l0IHsKK2NsYXNzIFJlbW90ZUdQVVByb3h5OworfQorCiBuYW1lc3BhY2UgV2ViS2l0
OjpXZWJHUFUgewogCiBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKLWNsYXNzIFJlbW90
ZUdQVVByb3h5OwogCiBjbGFzcyBSZW1vdGVBZGFwdGVyUHJveHkgZmluYWwgOiBwdWJsaWMgUEFM
OjpXZWJHUFU6OkFkYXB0ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIHN0YXRpYyBSZWY8UmVtb3RlQWRhcHRlclByb3h5PiBjcmVhdGUoU3RyaW5nJiYgbmFt
ZSwgUEFMOjpXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVzJiBmZWF0dXJlcywgUEFMOjpXZWJHUFU6
OlN1cHBvcnRlZExpbWl0cyYgbGltaXRzLCBib29sIGlzRmFsbGJhY2tBZGFwdGVyLCBSZW1vdGVH
UFVQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2lu
Z0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7CkBAIC00Nyw3ICs1
MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SZW1vdGVBZGFwdGVyUHJveHkoKTsKIAogICAg
IFJlbW90ZUdQVVByb3h5JiBwYXJlbnQoKSB7IHJldHVybiBtX3BhcmVudDsgfQotICAgIFJlbW90
ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQ7IH0KKyAgICBSZW1vdGVHUFVQcm94
eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5yb290KCk7IH0KIAogcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRH
cm91cExheW91dFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eS5oCmluZGV4IGQ0N2Q3ZWM3MGI4YTZk
MWY5YmExNTA3MTg1MWJiZWM3YzJkNjliYmQuLjk0MmJhZGQ3ZDUxYzYwNWVkMDY1ZmI5ZWQyYTg3
MjczZDhhMDE4NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExheW91dFByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwTGF5b3V0
UHJveHkuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogY2xh
c3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90ZUJpbmRHcm91cExheW91
dFByb3h5IGZpbmFsIDogcHVibGljIFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UmVtb3Rl
QmluZEdyb3VwTGF5b3V0UHJveHk+IGNyZWF0ZShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50LCBD
b252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlk
ZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7CkBAIC00NSw3ICs0Niw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5SZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eSgpOwogCiAgICAgUmVtb3RlRGV2
aWNlUHJveHkmIHBhcmVudCgpIHsgcmV0dXJuIG1fcGFyZW50OyB9Ci0gICAgUmVtb3RlR1BVUHJv
eHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+cGFyZW50KCkucGFyZW50KCk7IH0KKyAgICBS
ZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5yb290KCk7IH0KIAogcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZUJpbmRHcm91cFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBQcm94eS5oCmluZGV4IDhkY2ExMmI4YzcxNmMy
MTg4ZTZhOGNlNDBhNjgzNGZkZmY5MGYxMmIuLjVmYTU2NjFjMmRjYWJlMDFmZjRiMjNhMjg0MTNi
MmJmNmY2NTkwODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwUHJveHkuaApAQCAt
MzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRv
QmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90ZUJpbmRHcm91cFByb3h5IGZpbmFsIDogcHVi
bGljIFBBTDo6V2ViR1BVOjpCaW5kR3JvdXAgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UmVtb3RlQmluZEdyb3VwUHJveHk+IGNyZWF0ZShS
ZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVy
dFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7CkBA
IC00NSw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SZW1vdGVCaW5kR3JvdXBQcm94
eSgpOwogCiAgICAgUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCgpIHsgcmV0dXJuIG1fcGFyZW50
OyB9Ci0gICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+cGFyZW50
KCkucGFyZW50KCk7IH0KKyAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFy
ZW50LT5yb290KCk7IH0KIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRG93bmNhc3RDb252
ZXJ0VG9CYWNraW5nQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZmZXJQcm94eS5oCmluZGV4
IDQwOTMwMGE1NDhhZTIyNmY3ZmExNjliNDJmODczN2M2MGQ1ZmIwMmQuLjdiYTU2YTcwNmE4MDE4
NjVjODQzMjZjMTBmYjBmNGM5NGUyYjg0ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZlclByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVyUHJv
eHkuaApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogY2xhc3Mg
Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90ZUJ1ZmZlclByb3h5IGZpbmFs
IDogcHVibGljIFBBTDo6V2ViR1BVOjpCdWZmZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UmVtb3RlQnVmZmVyUHJveHk+IGNyZWF0ZShS
ZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVy
dFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7CkBA
IC00Niw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SZW1vdGVCdWZmZXJQcm94eSgp
OwogCiAgICAgUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCgpIHsgcmV0dXJuIG1fcGFyZW50OyB9
Ci0gICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+cGFyZW50KCku
cGFyZW50KCk7IH0KKyAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50
LT5yb290KCk7IH0KIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0
VG9CYWNraW5nQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRCdWZmZXJQcm94eS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEJ1ZmZlclBy
b3h5LmgKaW5kZXggMzNhYzUzNDNkMDZiODk5MzQ1YjI2YmFiMDFlYTEwYmZmZjI4MTYzYy4uZTZh
M2I3MjhjOGFkMTUwZDhjMmYzMDNhMmFjY2U4NmY3ZDMzZjdhMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEJ1ZmZl
clByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5LmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNl
IFdlYktpdDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFz
cyBSZW1vdGVDb21tYW5kQnVmZmVyUHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OkNv
bW1hbmRCdWZmZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IHN0YXRpYyBSZWY8UmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5PiBjcmVhdGUoUmVtb3RlRGV2aWNl
UHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdD
b250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewpAQCAtNDUsNyArNDYs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5KCk7CiAK
ICAgICBSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50KCkgeyByZXR1cm4gbV9wYXJlbnQ7IH0KLSAg
ICBSZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5wYXJlbnQoKS5wYXJl
bnQoKTsgfQorICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnJv
b3QoKTsgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBEb3duY2FzdENvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94
eS5oCmluZGV4IDgzYjVkMGJmMDkyZmEzNjBjYjdlNDEwNWU3YmM5NmUzN2I1YjJhMWYuLjExZTY3
ODE1OWE0YjQxMjM2NjdlNjdkM2JhMjA4NTY4ZmM4MzViMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRFbmNvZGVy
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVDb21tYW5kRW5jb2RlclByb3h5LmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNl
IFdlYktpdDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFz
cyBSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5IGZpbmFsIDogcHVibGljIFBBTDo6V2ViR1BVOjpD
b21tYW5kRW5jb2RlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlZjxSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5PiBjcmVhdGUoUmVtb3RlRGV2
aWNlUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tp
bmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewpAQCAtNDUsNyAr
NDYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eSgp
OwogCiAgICAgUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCgpIHsgcmV0dXJuIG1fcGFyZW50OyB9
Ci0gICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+cGFyZW50KCku
cGFyZW50KCk7IH0KKyAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50
LT5yb290KCk7IH0KIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0
VG9CYWNraW5nQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFz
c0VuY29kZXJQcm94eS5oCmluZGV4IGQ2OTgwYjg3MjRjY2JiNjY1NTViZTE1MmZkMTQ4NDJiZGY2
Mjg1ZjYuLjNmMmRhNzk3YTkyOTY1ZDc0YmQ5MGQ1OGFjMmY1ODc3NmY1NDBjMWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNv
bXB1dGVQYXNzRW5jb2RlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHkuaApAQCAtMzYs
NiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFj
a2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5IGZpbmFs
IDogcHVibGljIFBBTDo6V2ViR1BVOjpDb21wdXRlUGFzc0VuY29kZXIgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UmVtb3RlQ29tcHV0ZVBh
c3NFbmNvZGVyUHJveHk+IGNyZWF0ZShSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5JiBwYXJlbnQs
IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BV
SWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKQEAgLTQ1LDcgKzQ2LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgflJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5KCk7CiAKICAgICBSZW1v
dGVDb21tYW5kRW5jb2RlclByb3h5JiBwYXJlbnQoKSB7IHJldHVybiBtX3BhcmVudDsgfQotICAg
IFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnBhcmVudCgpLnBhcmVu
dCgpLnBhcmVudCgpOyB9CisgICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiBtX3Bh
cmVudC0+cm9vdCgpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIERvd25jYXN0Q29u
dmVydFRvQmFja2luZ0NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBp
cGVsaW5lUHJveHkuaAppbmRleCA2YjczYjlkNjA0ZDU4MTIyYjVlODc3NzhkY2YzOTQwYmJlOWRm
NDYxLi45Mjk0YjllM2Q0ZDgzZjc2Njk5NTViMGNjNTMzZTBlN2E4OTczYmUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21w
dXRlUGlwZWxpbmVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQaXBlbGluZVByb3h5LmgKQEAgLTM2LDYgKzM2LDcg
QEAgbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250
ZXh0OwogCiBjbGFzcyBSZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eSBmaW5hbCA6IHB1YmxpYyBQ
QUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlbW90ZUNvbXB1dGVQaXBlbGluZVByb3h5PiBj
cmVhdGUoUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQm
IGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAg
ICAgewpAQCAtNDUsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UmVtb3RlQ29tcHV0
ZVBpcGVsaW5lUHJveHkoKTsKIAogICAgIFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQoKSB7IHJl
dHVybiBtX3BhcmVudDsgfQotICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9w
YXJlbnQtPnBhcmVudCgpLnBhcmVudCgpOyB9CisgICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7
IHJldHVybiBtX3BhcmVudC0+cm9vdCgpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNz
IERvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVEZXZpY2VQcm94eS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRGV2aWNl
UHJveHkuaAppbmRleCA4ZWJlMzVjNWQ5MDliNGU1NmExZWNiMmEyOTM1NDc5ZDFlZTI2NzdiLi44
MDE4YTBhNDU4NjdlMjExYzA4OWMyYzQ5Mzk0ZWE4NDJjYWM1NDhkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVEZXZpY2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZURldmljZVByb3h5LmgKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYktpdDo6V2Vi
R1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBSZW1vdGVEZXZp
Y2VQcm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6RGV2aWNlIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlbW90ZURldmljZVBy
b3h5PiBjcmVhdGUoUmVmPFBBTDo6V2ViR1BVOjpTdXBwb3J0ZWRGZWF0dXJlcz4mJiBmZWF0dXJl
cywgUmVmPFBBTDo6V2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHM+JiYgbGltaXRzLCBSZW1vdGVBZGFw
dGVyUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tp
bmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewpAQCAtNDcsNyAr
NDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UmVtb3RlRGV2aWNlUHJveHkoKTsKIAogICAg
IFJlbW90ZUFkYXB0ZXJQcm94eSYgcGFyZW50KCkgeyByZXR1cm4gbV9wYXJlbnQ7IH0KLSAgICBS
ZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5wYXJlbnQoKTsgfQorICAg
IFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnJvb3QoKTsgfQogCiBw
cml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4dHVyZVByb3h5LmgKaW5kZXgg
ZmU0YjhjMzljNmY3NjA2MTI2MDk5NWU5ZjEyZDE4MDMxY2Y1ZGM2ZS4uY2NiOTMyNDE4MzA1MGI2
NTVmNjQzZDA1YmRjMzNjZjNkOTA4NDgyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVF
eHRlcm5hbFRleHR1cmVQcm94eS5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQ6
OldlYkdQVSB7CiBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUmVtb3Rl
RXh0ZXJuYWxUZXh0dXJlUHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OkV4dGVybmFs
VGV4dHVyZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZjxSZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eT4gY3JlYXRlKFJlbW90ZURldmljZVBy
b3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKQEAgLTQ1LDcgKzQ2LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgflJlbW90ZUV4dGVybmFsVGV4dHVyZVByb3h5KCk7CiAK
ICAgICBSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50KCkgeyByZXR1cm4gbV9wYXJlbnQ7IH0KLSAg
ICBSZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5wYXJlbnQoKS5wYXJl
bnQoKTsgfQorICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnJv
b3QoKTsgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBEb3duY2FzdENvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVUHJveHkuY3BwCmluZGV4IDY0OTIyODM4
ZDljNmFlYzNlMWI4YmRlMTM2Mjc3MWY4YWQ1NzI2ZDMuLjU4OTlmNDBhYjU3NmNjOWQ2N2QwYzVj
NTg2NDcyMjkzZTNjNDI4NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFVQcm94eS5jcHAKQEAgLTI4
LDc2ICsyOCwxMjUgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIkdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3ND
b25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3RlQWRhcHRlclByb3h5LmgiCisjaW5jbHVkZSAi
UmVtb3RlR1BVLmgiCiAjaW5jbHVkZSAiUmVtb3RlR1BVTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJS
ZW1vdGVHUFVQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2lu
Z0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVN1cHBvcnRl
ZEZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVTdXBwb3J0
ZWRMaW1pdHMuaD4KIAotbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKK25hbWVzcGFjZSBXZWJL
aXQgewogCiBzdGF0aWMgY29uc3RleHByIHNpemVfdCBkZWZhdWx0U3RyZWFtU2l6ZSA9IDEgPDwg
MjE7CiAKLVJlbW90ZUdQVVByb3h5OjpSZW1vdGVHUFVQcm94eShHUFVQcm9jZXNzQ29ubmVjdGlv
biYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0
VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorUmVtb3RlR1BV
UHJveHk6OlJlbW90ZUdQVVByb3h5KEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29u
bmVjdGlvbiwgV2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2lu
Z0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkKICAgICA6IG1fYmFja2luZyhpZGVudGlmaWVyKQog
ICAgICwgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkK
KyAgICAsIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oJmdwdVByb2Nlc3NDb25uZWN0aW9uKQogICAg
ICwgbV9zdHJlYW1Db25uZWN0aW9uKGdwdVByb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24oKSwg
ZGVmYXVsdFN0cmVhbVNpemUpCiB7CisgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+YWRkQ2xp
ZW50KCp0aGlzKTsKKyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5tZXNzYWdlUmVjZWl2ZXJN
YXAoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdQVVByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOworICAgIGNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVS
ZW1vdGVHUFUoaWRlbnRpZmllciwgcmVuZGVyaW5nQmFja2VuZCwgbV9zdHJlYW1Db25uZWN0aW9u
LnN0cmVhbUJ1ZmZlcigpKSwgMCwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVu
V2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOworICAgIC8vIFRPRE86IFdlIG11c3Qgd2FpdCB1bnRp
bCBpbml0aWFsaXplZCwgYmVjYXVzZSBhdCB0aGUgbW9tZW50IHdlIGNhbm5vdCByZWNlaXZlIElQ
QyBtZXNzYWdlcworICAgIC8vIGR1cmluZyB3YWl0IHdoaWxlIGluIHN5bmNocm9ub3VzIHN0cmVh
bSBzZW5kLiBTaG91bGQgYmUgZml4ZWQgYXMgcGFydCBvZiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MjExLgorICAgIHdhaXRVbnRpbEluaXRpYWxpemVkKCk7CiB9
CiAKIFJlbW90ZUdQVVByb3h5Ojp+UmVtb3RlR1BVUHJveHkoKQogewogfQogCit2b2lkIFJlbW90
ZUdQVVByb3h5OjpncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0
aW9uJiBjb25uZWN0aW9uKQoreworICAgIEFTU0VSVChtX2dwdVByb2Nlc3NDb25uZWN0aW9uKTsK
KyAgICBBU1NFUlQoJmNvbm5lY3Rpb24gPT0gbV9ncHVQcm9jZXNzQ29ubmVjdGlvbik7CisgICAg
YWJhbmRvbkdQVVByb2Nlc3MoKTsKK30KKwordm9pZCBSZW1vdGVHUFVQcm94eTo6YWJhbmRvbkdQ
VVByb2Nlc3MoKQoreworICAgIGF1dG8gZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24gPSBzdGQ6OmV4Y2hh
bmdlKG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIG51bGxwdHIpOworICAgIGdwdVByb2Nlc3NDb25u
ZWN0aW9uLT5yZW1vdmVDbGllbnQoKnRoaXMpOworICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uLT5t
ZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90
ZUdQVVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fYmFja2luZy50b1VJbnQ2NCgpKTsK
KyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uID0gbnVsbHB0cjsKKyAgICBtX2xvc3QgPSB0cnVl
OworfQorCit2b2lkIFJlbW90ZUdQVVByb3h5Ojp3YXNDcmVhdGVkKGJvb2wgZGlkU3VjY2VlZCwg
SVBDOjpTZW1hcGhvcmUmJiBzZW1hcGhvcmUpCit7CisgICAgQVNTRVJUKCFtX2RpZEluaXRpYWxp
emUpOworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi5zZXRXYWtlVXBTZW1hcGhvcmUoV1RGTW92ZShz
ZW1hcGhvcmUpKTsKKyAgICBtX2RpZEluaXRpYWxpemUgPSB0cnVlOworICAgIG1fbG9zdCA9ICFk
aWRTdWNjZWVkOworfQorCit2b2lkIFJlbW90ZUdQVVByb3h5Ojp3YWl0VW50aWxJbml0aWFsaXpl
ZCgpCit7CisgICAgaWYgKG1fZGlkSW5pdGlhbGl6ZSkKKyAgICAgICAgcmV0dXJuOworICAgIGlm
IChjb25uZWN0aW9uKCkud2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OlJl
bW90ZUdQVVByb3h5OjpXYXNDcmVhdGVkPihtX2JhY2tpbmcsIGRlZmF1bHRTZW5kVGltZW91dCkp
CisgICAgICAgIHJldHVybjsKKyAgICBtX2xvc3QgPSB0cnVlOworfQorCiB2b2lkIFJlbW90ZUdQ
VVByb3h5OjpyZXF1ZXN0QWRhcHRlcihjb25zdCBQQUw6OldlYkdQVTo6UmVxdWVzdEFkYXB0ZXJP
cHRpb25zJiBvcHRpb25zLCBXVEY6OkZ1bmN0aW9uPHZvaWQoUmVmUHRyPFBBTDo6V2ViR1BVOjpB
ZGFwdGVyPiYmKT4mJiBjYWxsYmFjaykKIHsKKyAgICBpZiAobV9sb3N0KSB7CisgICAgICAgIGNh
bGxiYWNrKG51bGxwdHIpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgYXV0byBjb252
ZXJ0ZWRPcHRpb25zID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2lu
ZyhvcHRpb25zKTsKICAgICBBU1NFUlQoY29udmVydGVkT3B0aW9ucyk7Ci0gICAgaWYgKCFjb252
ZXJ0ZWRPcHRpb25zKQorICAgIGlmICghY29udmVydGVkT3B0aW9ucykgeworICAgICAgICBjYWxs
YmFjayhudWxscHRyKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIGF1dG8gaWRlbnRp
ZmllciA9IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7Ci0gICAgU3RyaW5nIG5hbWU7Ci0g
ICAgU3VwcG9ydGVkRmVhdHVyZXMgc3VwcG9ydGVkRmVhdHVyZXM7Ci0gICAgU3VwcG9ydGVkTGlt
aXRzIHN1cHBvcnRlZExpbWl0czsKLSAgICBib29sIGlzRmFsbGJhY2tBZGFwdGVyOwotICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHUFU6OlJlcXVlc3RBZGFw
dGVyKCpjb252ZXJ0ZWRPcHRpb25zLCBpZGVudGlmaWVyKSwgeyBuYW1lLCBzdXBwb3J0ZWRGZWF0
dXJlcywgc3VwcG9ydGVkTGltaXRzLCBpc0ZhbGxiYWNrQWRhcHRlciB9KTsKLSAgICBpZiAoIXNl
bmRSZXN1bHQpCisgICAgc3RkOjpvcHRpb25hbDxSZW1vdGVHUFU6OlJlcXVlc3RBZGFwdGVyUmVz
cG9uc2U+IHJlc3BvbnNlOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHUFU6OlJlcXVlc3RBZGFwdGVyKCpjb252ZXJ0ZWRPcHRpb25zLCBpZGVudGlmaWVy
KSwgeyByZXNwb25zZSB9KTsKKyAgICBpZiAoIXNlbmRSZXN1bHQgfHwgIXJlc3BvbnNlKSB7Cisg
ICAgICAgIGNhbGxiYWNrKG51bGxwdHIpOwogICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAg
YXV0byByZXN1bHRTdXBwb3J0ZWRGZWF0dXJlcyA9IFBBTDo6V2ViR1BVOjpTdXBwb3J0ZWRGZWF0
dXJlczo6Y3JlYXRlKFdURk1vdmUoc3VwcG9ydGVkRmVhdHVyZXMuZmVhdHVyZXMpKTsKKyAgICBh
dXRvIHJlc3VsdFN1cHBvcnRlZEZlYXR1cmVzID0gUEFMOjpXZWJHUFU6OlN1cHBvcnRlZEZlYXR1
cmVzOjpjcmVhdGUoV1RGTW92ZShyZXNwb25zZS0+ZmVhdHVyZXMuZmVhdHVyZXMpKTsKICAgICBh
dXRvIHJlc3VsdFN1cHBvcnRlZExpbWl0cyA9IFBBTDo6V2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHM6
OmNyZWF0ZSgKLSAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24xRCwK
LSAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24yRCwKLSAgICAgICAg
c3VwcG9ydGVkTGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24zRCwKLSAgICAgICAgc3VwcG9ydGVk
TGltaXRzLm1heFRleHR1cmVBcnJheUxheWVycywKLSAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1h
eEJpbmRHcm91cHMsCi0gICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhEeW5hbWljVW5pZm9ybUJ1
ZmZlcnNQZXJQaXBlbGluZUxheW91dCwKLSAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heER5bmFt
aWNTdG9yYWdlQnVmZmVyc1BlclBpcGVsaW5lTGF5b3V0LAotICAgICAgICBzdXBwb3J0ZWRMaW1p
dHMubWF4U2FtcGxlZFRleHR1cmVzUGVyU2hhZGVyU3RhZ2UsCi0gICAgICAgIHN1cHBvcnRlZExp
bWl0cy5tYXhTYW1wbGVyc1BlclNoYWRlclN0YWdlLAotICAgICAgICBzdXBwb3J0ZWRMaW1pdHMu
bWF4U3RvcmFnZUJ1ZmZlcnNQZXJTaGFkZXJTdGFnZSwKLSAgICAgICAgc3VwcG9ydGVkTGltaXRz
Lm1heFN0b3JhZ2VUZXh0dXJlc1BlclNoYWRlclN0YWdlLAotICAgICAgICBzdXBwb3J0ZWRMaW1p
dHMubWF4VW5pZm9ybUJ1ZmZlcnNQZXJTaGFkZXJTdGFnZSwKLSAgICAgICAgc3VwcG9ydGVkTGlt
aXRzLm1heFVuaWZvcm1CdWZmZXJCaW5kaW5nU2l6ZSwKLSAgICAgICAgc3VwcG9ydGVkTGltaXRz
Lm1heFN0b3JhZ2VCdWZmZXJCaW5kaW5nU2l6ZSwKLSAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1p
blVuaWZvcm1CdWZmZXJPZmZzZXRBbGlnbm1lbnQsCi0gICAgICAgIHN1cHBvcnRlZExpbWl0cy5t
aW5TdG9yYWdlQnVmZmVyT2Zmc2V0QWxpZ25tZW50LAotICAgICAgICBzdXBwb3J0ZWRMaW1pdHMu
bWF4VmVydGV4QnVmZmVycywKLSAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heFZlcnRleEF0dHJp
YnV0ZXMsCi0gICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhWZXJ0ZXhCdWZmZXJBcnJheVN0cmlk
ZSwKLSAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heEludGVyU3RhZ2VTaGFkZXJDb21wb25lbnRz
LAotICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFN0b3JhZ2VTaXpl
LAotICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4Q29tcHV0ZUludm9jYXRpb25zUGVyV29ya2dy
b3VwLAotICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFNpemVYLAot
ICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFNpemVZLAotICAgICAg
ICBzdXBwb3J0ZWRMaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFNpemVaLAotICAgICAgICBzdXBw
b3J0ZWRMaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cHNQZXJEaW1lbnNpb24KKyAgICAgICAgcmVz
cG9uc2UtPmxpbWl0cy5tYXhUZXh0dXJlRGltZW5zaW9uMUQsCisgICAgICAgIHJlc3BvbnNlLT5s
aW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjJELAorICAgICAgICByZXNwb25zZS0+bGltaXRzLm1h
eFRleHR1cmVEaW1lbnNpb24zRCwKKyAgICAgICAgcmVzcG9uc2UtPmxpbWl0cy5tYXhUZXh0dXJl
QXJyYXlMYXllcnMsCisgICAgICAgIHJlc3BvbnNlLT5saW1pdHMubWF4QmluZEdyb3VwcywKKyAg
ICAgICAgcmVzcG9uc2UtPmxpbWl0cy5tYXhEeW5hbWljVW5pZm9ybUJ1ZmZlcnNQZXJQaXBlbGlu
ZUxheW91dCwKKyAgICAgICAgcmVzcG9uc2UtPmxpbWl0cy5tYXhEeW5hbWljU3RvcmFnZUJ1ZmZl
cnNQZXJQaXBlbGluZUxheW91dCwKKyAgICAgICAgcmVzcG9uc2UtPmxpbWl0cy5tYXhTYW1wbGVk
VGV4dHVyZXNQZXJTaGFkZXJTdGFnZSwKKyAgICAgICAgcmVzcG9uc2UtPmxpbWl0cy5tYXhTYW1w
bGVyc1BlclNoYWRlclN0YWdlLAorICAgICAgICByZXNwb25zZS0+bGltaXRzLm1heFN0b3JhZ2VC
dWZmZXJzUGVyU2hhZGVyU3RhZ2UsCisgICAgICAgIHJlc3BvbnNlLT5saW1pdHMubWF4U3RvcmFn
ZVRleHR1cmVzUGVyU2hhZGVyU3RhZ2UsCisgICAgICAgIHJlc3BvbnNlLT5saW1pdHMubWF4VW5p
Zm9ybUJ1ZmZlcnNQZXJTaGFkZXJTdGFnZSwKKyAgICAgICAgcmVzcG9uc2UtPmxpbWl0cy5tYXhV
bmlmb3JtQnVmZmVyQmluZGluZ1NpemUsCisgICAgICAgIHJlc3BvbnNlLT5saW1pdHMubWF4U3Rv
cmFnZUJ1ZmZlckJpbmRpbmdTaXplLAorICAgICAgICByZXNwb25zZS0+bGltaXRzLm1pblVuaWZv
cm1CdWZmZXJPZmZzZXRBbGlnbm1lbnQsCisgICAgICAgIHJlc3BvbnNlLT5saW1pdHMubWluU3Rv
cmFnZUJ1ZmZlck9mZnNldEFsaWdubWVudCwKKyAgICAgICAgcmVzcG9uc2UtPmxpbWl0cy5tYXhW
ZXJ0ZXhCdWZmZXJzLAorICAgICAgICByZXNwb25zZS0+bGltaXRzLm1heFZlcnRleEF0dHJpYnV0
ZXMsCisgICAgICAgIHJlc3BvbnNlLT5saW1pdHMubWF4VmVydGV4QnVmZmVyQXJyYXlTdHJpZGUs
CisgICAgICAgIHJlc3BvbnNlLT5saW1pdHMubWF4SW50ZXJTdGFnZVNoYWRlckNvbXBvbmVudHMs
CisgICAgICAgIHJlc3BvbnNlLT5saW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFN0b3JhZ2VTaXpl
LAorICAgICAgICByZXNwb25zZS0+bGltaXRzLm1heENvbXB1dGVJbnZvY2F0aW9uc1Blcldvcmtn
cm91cCwKKyAgICAgICAgcmVzcG9uc2UtPmxpbWl0cy5tYXhDb21wdXRlV29ya2dyb3VwU2l6ZVgs
CisgICAgICAgIHJlc3BvbnNlLT5saW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFNpemVZLAorICAg
ICAgICByZXNwb25zZS0+bGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBTaXplWiwKKyAgICAgICAg
cmVzcG9uc2UtPmxpbWl0cy5tYXhDb21wdXRlV29ya2dyb3Vwc1BlckRpbWVuc2lvbgogICAgICk7
Ci0gICAgY2FsbGJhY2soUmVtb3RlQWRhcHRlclByb3h5OjpjcmVhdGUoV1RGTW92ZShuYW1lKSwg
V1RGTW92ZShyZXN1bHRTdXBwb3J0ZWRGZWF0dXJlcyksIFdURk1vdmUocmVzdWx0U3VwcG9ydGVk
TGltaXRzKSwgaXNGYWxsYmFja0FkYXB0ZXIsICp0aGlzLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250
ZXh0LCBpZGVudGlmaWVyKSk7CisgICAgY2FsbGJhY2soV2ViR1BVOjpSZW1vdGVBZGFwdGVyUHJv
eHk6OmNyZWF0ZShXVEZNb3ZlKHJlc3BvbnNlLT5uYW1lKSwgV1RGTW92ZShyZXN1bHRTdXBwb3J0
ZWRGZWF0dXJlcyksIFdURk1vdmUocmVzdWx0U3VwcG9ydGVkTGltaXRzKSwgcmVzcG9uc2UtPmlz
RmFsbGJhY2tBZGFwdGVyLCAqdGhpcywgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgaWRlbnRp
ZmllcikpOwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQorfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFVQcm94
eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
R1BVUHJveHkuaAppbmRleCAwZmZlYTM4Y2Y4YzZmYmE3ODhhYTkwZWNiYWJkYTNmMjA1NjA0ODkw
Li5iMDA2ODQzODEyMjM1MzNlMzdjZDZhOWNiZTBlZTUyYmE3MzIxNWVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFVQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZUdQVVByb3h5LmgKQEAgLTI3LDYgKzI3LDggQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykKIAorI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiUmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTdHJlYW1DbGllbnRDb25uZWN0aW9u
LmgiCiAjaW5jbHVkZSAiV2ViR1BVSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGlj
cy9XZWJHUFUvV2ViR1BVLmg+CkBAIC0zNiwxNSArMzgsMTkgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiBjbGFzcyBHUFVQcm9jZXNzQ29ubmVjdGlvbjsKIH0KIAotbmFtZXNwYWNlIFdlYktpdDo6V2Vi
R1BVIHsKK25hbWVzcGFjZSBXZWJLaXQgewogCituYW1lc3BhY2UgV2ViR1BVIHsKIGNsYXNzIENv
bnZlcnRUb0JhY2tpbmdDb250ZXh0OworY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dDsKK30KIAotY2xhc3MgUmVtb3RlR1BVUHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJH
UFU6OkdQVSB7CitjbGFzcyBSZW1vdGVHUFVQcm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQ
VTo6R1BVLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwcml2YXRlIEdQVVByb2Nlc3ND
b25uZWN0aW9uOjpDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8UmVtb3RlR1BVUHJveHk+IGNyZWF0ZShHUFVQcm9jZXNzQ29ubmVj
dGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252
ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIHN0
YXRpYyBSZWY8UmVtb3RlR1BVUHJveHk+IGNyZWF0ZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1
UHJvY2Vzc0Nvbm5lY3Rpb24sIFdlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZl
cnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmQpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVHUFVQcm94eShncHVQcm9jZXNzQ29ubmVjdGlvbiwgY29u
dmVydFRvQmFja2luZ0NvbnRleHQsIGlkZW50aWZpZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgUmVtb3RlR1BVUHJveHkoZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGNvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0LCBpZGVudGlmaWVyLCByZW5kZXJpbmdCYWNrZW5kKSk7CiAgICAgfQogCiAg
ICAgdmlydHVhbCB+UmVtb3RlR1BVUHJveHkoKTsKQEAgLTU0LDE1ICs2MCwyNiBAQCBwdWJsaWM6
CiAgICAgSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uJiBzdHJlYW1DbGllbnRDb25uZWN0aW9u
KCkgeyByZXR1cm4gbV9zdHJlYW1Db25uZWN0aW9uOyB9CiAKIHByaXZhdGU6Ci0gICAgZnJpZW5k
IGNsYXNzIERvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CisgICAgZnJpZW5kIGNsYXNz
IFdlYkdQVTo6RG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAotICAgIFJlbW90ZUdQ
VVByb3h5KEdQVVByb2Nlc3NDb25uZWN0aW9uJiwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmLCBX
ZWJHUFVJZGVudGlmaWVyKTsKKyAgICBSZW1vdGVHUFVQcm94eShHUFVQcm9jZXNzQ29ubmVjdGlv
biYsIFdlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQmLCBXZWJHUFVJZGVudGlmaWVyLCBS
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVHUFVQcm94eShjb25zdCBS
ZW1vdGVHUFVQcm94eSYpID0gZGVsZXRlOwogICAgIFJlbW90ZUdQVVByb3h5KFJlbW90ZUdQVVBy
b3h5JiYpID0gZGVsZXRlOwogICAgIFJlbW90ZUdQVVByb3h5JiBvcGVyYXRvcj0oY29uc3QgUmVt
b3RlR1BVUHJveHkmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVHUFVQcm94eSYgb3BlcmF0b3I9KFJl
bW90ZUdQVVByb3h5JiYpID0gZGVsZXRlOwogCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIK
KyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYpIGZpbmFsOworCisgICAgLy8gR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVudAorICAgIHZv
aWQgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYpIGZp
bmFsOworCisgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCisgICAgdm9pZCB3YXNDcmVh
dGVkKGJvb2wgZGlkU3VjY2VlZCwgSVBDOjpTZW1hcGhvcmUmJik7CisKKyAgICB2b2lkIHdhaXRV
bnRpbEluaXRpYWxpemVkKCk7CisKICAgICBXZWJHUFVJZGVudGlmaWVyIGJhY2tpbmcoKSBjb25z
dCB7IHJldHVybiBtX2JhY2tpbmc7IH0KICAgICAKICAgICBzdGF0aWMgaW5saW5lIGNvbnN0ZXhw
ciBTZWNvbmRzIGRlZmF1bHRTZW5kVGltZW91dCA9IDMwX3M7CkBAIC03NiwxNiArOTMsMjIgQEAg
cHJpdmF0ZToKICAgICB7CiAgICAgICAgIHJldHVybiByb290KCkuc3RyZWFtQ2xpZW50Q29ubmVj
dGlvbigpLnNlbmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBiYWNraW5n
KCksIGRlZmF1bHRTZW5kVGltZW91dCk7CiAgICAgfQorICAgIElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rp
b24oKTsgfQogCiAgICAgdm9pZCByZXF1ZXN0QWRhcHRlcihjb25zdCBQQUw6OldlYkdQVTo6UmVx
dWVzdEFkYXB0ZXJPcHRpb25zJiwgV1RGOjpGdW5jdGlvbjx2b2lkKFJlZlB0cjxQQUw6OldlYkdQ
VTo6QWRhcHRlcj4mJik+JiYpIGZpbmFsOwogCisgICAgdm9pZCBhYmFuZG9uR1BVUHJvY2Vzcygp
OworCiAgICAgRGVxdWU8V1RGOjpGdW5jdGlvbjx2b2lkKFJlZlB0cjxQQUw6OldlYkdQVTo6QWRh
cHRlcj4mJik+PiBtX2NhbGxiYWNrczsKIAogICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5n
OwotICAgIFJlZjxDb252ZXJ0VG9CYWNraW5nQ29udGV4dD4gbV9jb252ZXJ0VG9CYWNraW5nQ29u
dGV4dDsKKyAgICBSZWY8V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dD4gbV9jb252ZXJ0
VG9CYWNraW5nQ29udGV4dDsKKyAgICBHUFVQcm9jZXNzQ29ubmVjdGlvbiogbV9ncHVQcm9jZXNz
Q29ubmVjdGlvbjsKKyAgICBib29sIG1fZGlkSW5pdGlhbGl6ZSB7IGZhbHNlIH07CisgICAgYm9v
bCBtX2xvc3QgeyBmYWxzZSB9OwogICAgIElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbiBtX3N0
cmVhbUNvbm5lY3Rpb247CiB9OwogCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQorfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVHUFVQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwMzVl
OTU1ZTA2ZjdmZTFmNmYyOGNiY2QyY2E5ZjQ1MThhYjhiYjUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFVQcm94
eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI5IEBACisjIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQK
KyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKK21lc3NhZ2VzIC0+IFJl
bW90ZUdQVVByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIHZvaWQgV2FzQ3JlYXRlZChib29sIGRp
ZFN1Y2NlZWQsIElQQzo6U2VtYXBob3JlIHN0cmVhbVdha2VVcFNlbWFwaG9yZSkKK30KKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVQaXBlbGluZUxheW91dFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVQaXBlbGluZUxheW91dFByb3h5LmgKaW5kZXgg
MGM5ZDM0N2U4MWI2Mjg2YzNkNzc0YWNiYjM2M2UyMTc3MWJiYmJlNC4uYzQ1MjI1YTU1YWU1ZmJi
NjNkMTIyYTBhYTFmYThmN2YzOGZhODlhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVBp
cGVsaW5lTGF5b3V0UHJveHkuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0OjpX
ZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90ZVBp
cGVsaW5lTGF5b3V0UHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OlBpcGVsaW5lTGF5
b3V0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UmVmPFJlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHk+IGNyZWF0ZShSZW1vdGVEZXZpY2VQcm94eSYg
cGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQs
IFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7CkBAIC00NSw3ICs0Niw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5SZW1vdGVQaXBlbGluZUxheW91dFByb3h5KCk7CiAKICAgICBS
ZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50KCkgeyByZXR1cm4gbV9wYXJlbnQ7IH0KLSAgICBSZW1v
dGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5wYXJlbnQoKS5wYXJlbnQoKTsg
fQorICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnJvb3QoKTsg
fQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdD
b250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlUXVlcnlTZXRQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVlcnlTZXRQcm94eS5oCmluZGV4IGQ4YzZjYTcx
NmFmMzkxNzE5ZWZkY2ZlZTBjNDA3ZTYzYjllOGU0ZDMuLjExN2E4YTM5ZDdmYzI5NWRjYzNiZWVk
MDY4ZWUzOGM0MDY5ZDgzNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0UHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWVyeVNldFByb3h5LmgK
QEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIGNsYXNzIENvbnZl
cnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBSZW1vdGVRdWVyeVNldFByb3h5IGZpbmFsIDog
cHVibGljIFBBTDo6V2ViR1BVOjpRdWVyeVNldCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZW1vdGVRdWVyeVNldFByb3h5PiBjcmVhdGUo
UmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZl
cnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewpA
QCAtNDUsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UmVtb3RlUXVlcnlTZXRQcm94
eSgpOwogCiAgICAgUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCgpIHsgcmV0dXJuIG1fcGFyZW50
OyB9Ci0gICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+cGFyZW50
KCkucGFyZW50KCk7IH0KKyAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFy
ZW50LT5yb290KCk7IH0KIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRG93bmNhc3RDb252
ZXJ0VG9CYWNraW5nQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXVlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXVlUHJveHkuaAppbmRleCBk
ODIzMjRkZTE1MjBjYTRjZTIxNGE1ZGJjNzc2N2M2NTExMTlhOGVhLi41ZWEyMTAzYzFmZGI5YTJl
NTI3MDM1ZGQxNmM0NmQ0NGUyZDdkZWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWV1ZVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVldWVQcm94eS5o
CkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiBjbGFzcyBDb252
ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUmVtb3RlUXVldWVQcm94eSBmaW5hbCA6IHB1
YmxpYyBQQUw6OldlYkdQVTo6UXVldWUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIHN0YXRpYyBSZWY8UmVtb3RlUXVldWVQcm94eT4gY3JlYXRlKFJlbW90ZURl
dmljZVByb3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKQEAgLTQ2LDcg
KzQ3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflJlbW90ZVF1ZXVlUHJveHkoKTsKIAogICAg
IFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQoKSB7IHJldHVybiBtX3BhcmVudDsgfQotICAgIFJl
bW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnBhcmVudCgpLnBhcmVudCgp
OyB9CisgICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+cm9vdCgp
OyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIERvd25jYXN0Q29udmVydFRvQmFja2lu
Z0NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZUVuY29k
ZXJQcm94eS5oCmluZGV4IDEwMDQ1YWUyZWJmMjllNDFlZThkZWViOTI0ODRhZDE0MTM4N2ExMjMu
LmMxYzZjMzlmM2VkMWJmMzM5MjE5MWFmZjRkMmU4NzQ1NzAwYWRlYjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1
bmRsZUVuY29kZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eS5oCkBAIC0zNiw2ICsz
Niw3IEBAIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiBjbGFzcyBDb252ZXJ0VG9CYWNraW5n
Q29udGV4dDsKIAogY2xhc3MgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5IGZpbmFsIDog
cHVibGljIFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlckJ1bmRs
ZUVuY29kZXJQcm94eT4gY3JlYXRlKFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQsIENvbnZlcnRU
b0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyKQogICAgIHsKQEAgLTQ1LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgflJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eSgpOwogCiAgICAgUmVtb3RlRGV2aWNl
UHJveHkmIHBhcmVudCgpIHsgcmV0dXJuIG1fcGFyZW50OyB9Ci0gICAgUmVtb3RlR1BVUHJveHkm
IHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+cGFyZW50KCkucGFyZW50KCk7IH0KKyAgICBSZW1v
dGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5yb290KCk7IH0KIAogcHJpdmF0
ZToKICAgICBmcmllbmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZVJlbmRlckJ1bmRsZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVQcm94eS5oCmluZGV4IDdjMGRjNWVlOWY0
ZmQyZDU0YzE3YzFkMjU3MTAwNzdlZWJhZGJkMTcuLmNlN2E3MDc4OTZhOTgwNGEwNzUwOGY2Yjg0
MjJhNmQwNGU4MzJiYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZVByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlUHJv
eHkuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogY2xhc3Mg
Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90ZVJlbmRlckJ1bmRsZVByb3h5
IGZpbmFsIDogcHVibGljIFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGUgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyQnVu
ZGxlUHJveHk+IGNyZWF0ZShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRl
bnRpZmllcikKICAgICB7CkBAIC00NSw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5S
ZW1vdGVSZW5kZXJCdW5kbGVQcm94eSgpOwogCiAgICAgUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVu
dCgpIHsgcmV0dXJuIG1fcGFyZW50OyB9Ci0gICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJl
dHVybiBtX3BhcmVudC0+cGFyZW50KCkucGFyZW50KCk7IH0KKyAgICBSZW1vdGVHUFVQcm94eSYg
cm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5yb290KCk7IH0KIAogcHJpdmF0ZToKICAgICBmcmll
bmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBh
c3NFbmNvZGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHkuaAppbmRleCA3NDI3OWQxOTZhNzQ4
NzM1ODg3MzBjZTE4ZDExZTFlZWZmN2UyZmZlLi5lNWY2OTNkOGM4ZWJmNmU5MDVkOTE0MmUwZDNl
YmU3MzRjMTg0YzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0Vu
Y29kZXJQcm94eS5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7
CiBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUmVtb3RlUmVuZGVyUGFz
c0VuY29kZXJQcm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29k
ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eT4gY3JlYXRlKFJlbW90ZUNvbW1hbmRFbmNv
ZGVyUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tp
bmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewpAQCAtNDUsNyAr
NDYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94
eSgpOwogCiAgICAgUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eSYgcGFyZW50KCkgeyByZXR1cm4g
bV9wYXJlbnQ7IH0KLSAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50
LT5wYXJlbnQoKS5wYXJlbnQoKS5wYXJlbnQoKTsgfQorICAgIFJlbW90ZUdQVVByb3h5JiByb290
KCkgeyByZXR1cm4gbV9wYXJlbnQtPnJvb3QoKTsgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBj
bGFzcyBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGlwZWxp
bmVQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eS5oCmluZGV4IDAzY2Q0Y2M2OTRmNWY5ZGEzYWIyMDNl
MDY3YjcwNmYwMWY0MTIwOWEuLjIzZTA2Y2U4OGNjMWQ2ZjU1YzhmYzBhZjE0ZjkwNDdjYWI2ZDNk
YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZVJlbmRlclBpcGVsaW5lUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5LmgKQEAg
LTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRU
b0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBSZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5IGZpbmFs
IDogcHVibGljIFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZSB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZW1vdGVSZW5kZXJQaXBlbGlu
ZVByb3h5PiBjcmVhdGUoUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2lu
Z0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50
aWZpZXIpCiAgICAgewpAQCAtNDUsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UmVt
b3RlUmVuZGVyUGlwZWxpbmVQcm94eSgpOwogCiAgICAgUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVu
dCgpIHsgcmV0dXJuIG1fcGFyZW50OyB9Ci0gICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJl
dHVybiBtX3BhcmVudC0+cGFyZW50KCkucGFyZW50KCk7IH0KKyAgICBSZW1vdGVHUFVQcm94eSYg
cm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5yb290KCk7IH0KIAogcHJpdmF0ZToKICAgICBmcmll
bmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNhbXBsZXJQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlU2FtcGxlclByb3h5LmgKaW5kZXggMWI3MWMwMTgzYTlhYzI5ZTk5ZjkxZDAyZWUwYTlkNjUx
Y2M3MTkyZi4uYTBmZTRhNjRlMWE5YjA4Njk2MjY4MDg2NjE5NGE2MzBmMWYwODYxMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
U2FtcGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlU2FtcGxlclByb3h5LmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNl
IFdlYktpdDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFz
cyBSZW1vdGVTYW1wbGVyUHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OlNhbXBsZXIg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8
UmVtb3RlU2FtcGxlclByb3h5PiBjcmVhdGUoUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCwgQ29u
dmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewpAQCAtNDUsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB+UmVtb3RlU2FtcGxlclByb3h5KCk7CiAKICAgICBSZW1vdGVEZXZpY2VQcm94eSYg
cGFyZW50KCkgeyByZXR1cm4gbV9wYXJlbnQ7IH0KLSAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgp
IHsgcmV0dXJuIG1fcGFyZW50LT5wYXJlbnQoKS5wYXJlbnQoKTsgfQorICAgIFJlbW90ZUdQVVBy
b3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnJvb3QoKTsgfQogCiBwcml2YXRlOgogICAg
IGZyaWVuZCBjbGFzcyBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2hh
ZGVyTW9kdWxlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZVNoYWRlck1vZHVsZVByb3h5LmgKaW5kZXggZjYxYWQ5NTRiY2UzNzFjYWE5
YzAyY2U5ZWZiNzgzMTM2MTEwZmNhMC4uM2MyYTA4NDQ0MjJmNDY0ODJmZTliZGFhZmJiZmRhZDI5
NGZjZWUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlU2hhZGVyTW9kdWxlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGVQcm94eS5oCkBA
IC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiBjbGFzcyBDb252ZXJ0
VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUmVtb3RlU2hhZGVyTW9kdWxlUHJveHkgZmluYWwg
OiBwdWJsaWMgUEFMOjpXZWJHUFU6OlNoYWRlck1vZHVsZSB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZW1vdGVTaGFkZXJNb2R1bGVQcm94
eT4gY3JlYXRlKFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250
ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
KQogICAgIHsKQEAgLTQ1LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflJlbW90ZVNo
YWRlck1vZHVsZVByb3h5KCk7CiAKICAgICBSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50KCkgeyBy
ZXR1cm4gbV9wYXJlbnQ7IH0KLSAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1f
cGFyZW50LT5wYXJlbnQoKS5wYXJlbnQoKTsgfQorICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkg
eyByZXR1cm4gbV9wYXJlbnQtPnJvb3QoKTsgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFz
cyBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0
dXJlUHJveHkuaAppbmRleCA5NDdmZWIyYTllNmY2M2QxMTQ2MDRlNzUwZmYyZjhiNWQzYmJlMDdk
Li42ZTkwMTAzYmU2NjVkYTIzYmNiNjBhN2U1YTM3NzE1NDYzYzM3YWM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJl
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVUZXh0dXJlUHJveHkuaApAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgV2ViS2l0
OjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90
ZVRleHR1cmVQcm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6VGV4dHVyZSB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZW1vdGVU
ZXh0dXJlUHJveHk+IGNyZWF0ZShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9C
YWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIg
aWRlbnRpZmllcikKICAgICB7CkBAIC00OSw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5SZW1vdGVUZXh0dXJlUHJveHkoKTsKIAogICAgIFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQo
KSB7IHJldHVybiBtX3BhcmVudDsgfQotICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1
cm4gbV9wYXJlbnQtPnBhcmVudCgpLnBhcmVudCgpOyB9CisgICAgUmVtb3RlR1BVUHJveHkmIHJv
b3QoKSB7IHJldHVybiBtX3BhcmVudC0+cm9vdCgpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5k
IGNsYXNzIERvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlVmll
d1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVUZXh0dXJlVmlld1Byb3h5LmgKaW5kZXggNTdjMWM5OGQ1YzVmZDg2MTZkMzE0MmYzZDI3
ZWQ2YmE0MjQ1Njc2ZC4uNDlmY2ZmYTc4ODBjNDQyZmYwZjU4NjhkN2M3MDIxY2I3MDdlZWQzYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlVGV4dHVyZVZpZXdQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmVWaWV3UHJveHkuaApAQCAtMzYsNiArMzYs
NyBAQCBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFja2luZ0Nv
bnRleHQ7CiAKIGNsYXNzIFJlbW90ZVRleHR1cmVWaWV3UHJveHkgZmluYWwgOiBwdWJsaWMgUEFM
OjpXZWJHUFU6OlRleHR1cmVWaWV3IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlbW90ZVRleHR1cmVWaWV3UHJveHk+IGNyZWF0ZShSZW1v
dGVUZXh0dXJlUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRU
b0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewpAQCAt
NDUsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UmVtb3RlVGV4dHVyZVZpZXdQcm94
eSgpOwogCiAgICAgUmVtb3RlVGV4dHVyZVByb3h5JiBwYXJlbnQoKSB7IHJldHVybiBtX3BhcmVu
dDsgfQotICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnBhcmVu
dCgpLnBhcmVudCgpLnBhcmVudCgpOyB9CisgICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJl
dHVybiBtX3BhcmVudC0+cm9vdCgpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIERv
d25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVEb3duY2FzdENvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dl
YkdQVS9XZWJHUFVEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgKaW5kZXggNDQ3MWQw
ZWYwNzQ4YjY0NWVlYmQ0ZTk1MGY1Y2Y1MDAwNTM2Njk1ZC4uMTQzM2FjZTcxZTAyYjY1OTQwYTY4
ODIzMDA1ZWQzYTRhOTNiNTExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9XZWJHUFUvV2ViR1BVRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1dl
YkdQVURvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQuaApAQCAtMzIsNyArMzIsMTMgQEAK
IG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKIGNsYXNzIERvd25jYXN0Q29udmVydFRvQmFj
a2luZ0NvbnRleHQgZmluYWwgOiBwdWJsaWMgQ29udmVydFRvQmFja2luZ0NvbnRleHQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgorICAgIHN0YXRpYyBSZWY8RG93bmNh
c3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dD4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IERvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQoKSk7CisgICAg
fQorCiAgICAgdmlydHVhbCB+RG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dCgpID0gZGVm
YXVsdDsKIAogICAgIFdlYkdQVUlkZW50aWZpZXIgY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6
OldlYkdQVTo6QWRhcHRlciYpIGZpbmFsOwpAQCAtNTcsNiArNjMsOSBAQCBwdWJsaWM6CiAgICAg
V2ViR1BVSWRlbnRpZmllciBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpTaGFk
ZXJNb2R1bGUmKSBmaW5hbDsKICAgICBXZWJHUFVJZGVudGlmaWVyIGNvbnZlcnRUb0JhY2tpbmco
Y29uc3QgUEFMOjpXZWJHUFU6OlRleHR1cmUmKSBmaW5hbDsKICAgICBXZWJHUFVJZGVudGlmaWVy
IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3JikgZmluYWw7
CisKK3ByaXZhdGU6CisgICAgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dCgpID0gZGVm
YXVsdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwCmluZGV4IDQzNmE1YTUyMDM1YTA2NTc1ODljMGU5MGIwODQyYzQzMzY1ODFlM2QuLmFj
OWY0YWQ4MjExNTc0ZGI0YzAxNjRlOWFiZjU3YWE0MzQyNjM3MmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLmgiCiAjaW5jbHVkZSAiUGFnZUJhbm5lci5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXcuaCIK
KyNpbmNsdWRlICJSZW1vdGVHUFVQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlICJV
c2VyRGF0YS5oIgpAQCAtNTAsNiArNTEsNyBAQAogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5j
bHVkZSAiV2ViRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJXZWJGdWxsU2NyZWVuTWFu
YWdlci5oIgorI2luY2x1ZGUgIldlYkdQVURvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQu
aCIKICNpbmNsdWRlICJXZWJIaXRUZXN0UmVzdWx0RGF0YS5oIgogI2luY2x1ZGUgIldlYkltYWdl
LmgiCiAjaW5jbHVkZSAiV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCIKQEAgLTkwLDYgKzky
LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2V0dGluZ3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRJbmRpY2F0b3IuaD4K
KyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVSW1wbC5oPgogCiAjaWYg
RU5BQkxFKEFQUExFX1BBWV9BTVNfVUkpCiAjaW5jbHVkZSA8V2ViQ29yZS9BcHBsZVBheUFNU1VJ
UmVxdWVzdC5oPgpAQCAtOTQ4LDYgKzk1MSwxNSBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+
IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpYwog
CiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQogCitSZWZQdHI8UEFMOjpXZWJHUFU6OkdQ
VT4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVHUFVGb3JXZWJHUFUoKSBjb25zdAoreworI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKKyAgICByZXR1cm4gUmVtb3RlR1BVUHJveHk6OmNyZWF0ZShXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLCBXZWJHUFU6
OkRvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNyZWF0ZSgpLCBXZWJHUFVJZGVudGlm
aWVyOjpnZW5lcmF0ZSgpLCBtX3BhZ2UuZW5zdXJlUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
KCkuZW5zdXJlQmFja2VuZENyZWF0ZWQoKSk7CisjZWxzZQorICAgIHJldHVybiBQQUw6OldlYkdQ
VTo6R1BVSW1wbDo6Y3JlYXRlKCk7CisjZW5kaWYKK30KKwogdm9pZCBXZWJDaHJvbWVDbGllbnQ6
OmF0dGFjaFJvb3RHcmFwaGljc0xheWVyKEZyYW1lJiwgR3JhcGhpY3NMYXllciogbGF5ZXIpCiB7
CiAgICAgaWYgKGxheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDJmZTMyOTAzNDM0N2NlZDI4
ZjgxMDU3ZGEzZmVjMjMzMDdhZTcwODQuLjlhZWNjNGMyNzM5NjI0NWFlOTIyMDJmMGQ0NTkzNDcz
MTc2NmZlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTI1Miw2ICsyNTIsNyBAQCBwcml2YXRl
OgogI2VuZGlmCiAjZW5kaWYKIAorICAgIFJlZlB0cjxQQUw6OldlYkdQVTo6R1BVPiBjcmVhdGVH
UFVGb3JXZWJHUFUoKSBjb25zdCBmaW5hbDsKIAogICAgIENvbXBvc2l0aW5nVHJpZ2dlckZsYWdz
IGFsbG93ZWRDb21wb3NpdGluZ1RyaWdnZXJzKCkgY29uc3QgZmluYWwKICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Db25maWd1cmF0aW9ucy9XZWJLaXRMZWdhY3ku
eGNjb25maWcgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Db25maWd1cmF0aW9ucy9XZWJLaXRM
ZWdhY3kueGNjb25maWcKaW5kZXggZmI1NWRhNzc2ZTBmODIyNmRhOWZjMzI2NjIzMDliNDY3MzU3
YWM5Ny4uZjc4NDk2NjUxZDBlYjkzYmMwZDNlM2UzZWE1Zjk3OTg3ZTRmNzA0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ29uZmlndXJhdGlvbnMvV2ViS2l0TGVnYWN5Lnhj
Y29uZmlnCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NvbmZpZ3VyYXRpb25zL1dlYktp
dExlZ2FjeS54Y2NvbmZpZwpAQCAtNTgsNyArNTgsNyBAQCBHQ0NfUFJFUFJPQ0VTU09SX0RFRklO
SVRJT05TID0gJChERUJVR19ERUZJTkVTKSBCVUlMRElOR19XRUJLSVQgRlJBTUVXT1JLX05BTUU9
VwogV0VCS0lUQURESVRJT05TX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvdXNyL2xvY2FsL2luY2x1ZGUvV2ViS2l0QWRkaXRpb25zICQoU0RLUk9PVCkvdXNyL2xv
Y2FsL2luY2x1ZGUvV2ViS2l0QWRkaXRpb25zOwogTElCV0VCUlRDX0hFQURFUl9TRUFSQ0hfUEFU
SFMgPSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvdXNyL2xvY2FsL2luY2x1ZGUvd2VicnRjICQoU0RL
Uk9PVCkvdXNyL2xvY2FsL2luY2x1ZGUvd2VicnRjOwogCi1IRUFERVJfU0VBUkNIX1BBVEhTID0g
IiQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9Gb3J3YXJkaW5nSGVhZGVycyIgIiQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXRMZWdhY3kiICIkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvdXNyL2xvY2FsL2luY2x1ZGUiICQoV0VCS0lUQURESVRJT05TX0hFQURFUl9T
RUFSQ0hfUEFUSFMpICQoTElCV0VCUlRDX0hFQURFUl9TRUFSQ0hfUEFUSFMpICQoSEVBREVSX1NF
QVJDSF9QQVRIUykgJChTUkNST09UKTsKK0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiJChXRUJDT1JF
X1BSSVZBVEVfSEVBREVSU19ESVIpL0ZvcndhcmRpbmdIZWFkZXJzIiAiJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdExlZ2FjeSIgIiQoQlVJTFRfUFJPRFVDVFNfRElS
KS91c3IvbG9jYWwvaW5jbHVkZSIgIiQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5j
bHVkZS9wYWwvZ3JhcGhpY3MvV2ViR1BVIiAkKFdFQktJVEFERElUSU9OU19IRUFERVJfU0VBUkNI
X1BBVEhTKSAkKExJQldFQlJUQ19IRUFERVJfU0VBUkNIX1BBVEhTKSAkKEhFQURFUl9TRUFSQ0hf
UEFUSFMpICQoU1JDUk9PVCk7CiBJTkZPUExJU1RfRklMRSA9IG1hYy9JbmZvLnBsaXN0OwogSU5T
VEFMTF9QQVRIID0gJChJTlNUQUxMX1BBVEhfQ09DT0FfVE9VQ0hfJChXS19JU19DT0NPQV9UT1VD
SCkpOwogSU5TVEFMTF9QQVRIX0NPQ09BX1RPVUNIX1lFUyA9ICQoV0tfQUxURVJOQVRFX1dFQktJ
VF9TREtfUEFUSCkkKFNZU1RFTV9MSUJSQVJZX0RJUikvUHJpdmF0ZUZyYW1ld29ya3M7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oCmluZGV4IGEzNjVkOGQ4NjRhMjA2OWU0ZmE4MjIxZmE4ODM5MjQ2M2JlMDY2Njku
LjQ0OTEzMDY0NDc0ZDEzYzJiOTM5YmI4NDBhMTQ5ZmM2NzUyYWY5YzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oCkBAIC0yNTUsNiArMjU1LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGNoYW5nZVVuaXZlcnNh
bEFjY2Vzc1pvb21Gb2N1cyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYpIGZpbmFsOwogI2VuZGlmCiAKKyAgICBSZWZQdHI8UEFMOjpXZWJHUFU6OkdQVT4g
Y3JlYXRlR1BVRm9yV2ViR1BVKCkgY29uc3QgZmluYWw7CisKICNpZiBFTkFCTEUoVklERU9fUFJF
U0VOVEFUSU9OX01PREUpCiAgICAgYm9vbCBtX21vY2tWaWRlb1ByZXNlbnRhdGlvbk1vZGVFbmFi
bGVkIHsgZmFsc2UgfTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCmluZGV4IGExNzUxYjAyOTg0
Zjc3ZTdhN2M2ZDU1YjU5NGZmYjg4MDAwOThmYWYuLmE0MTE2ZjdiMDI3Y2MyZGM5MTYyNTgxZDUy
ODBmNWNmMjM3MGQ2ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KQEAgLTg3LDYgKzg3LDcgQEAKICNp
bXBvcnQgPFdlYkNvcmUvVW5pdmVyc2FsQWNjZXNzWm9vbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9X
aWRnZXQuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2luZG93RmVhdHVyZXMuaD4KKyNpbXBvcnQgPHBh
bC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVJbXBsLmg+CiAjaW1wb3J0IDxwYWwvc3BpL21h
Yy9OU1ZpZXdTUEkuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAjaW1w
b3J0IDx3dGYvUmVmUHRyLmg+CkBAIC0xMTUzLDMgKzExNTQsOCBAQCB2b2lkIFdlYkNocm9tZUNs
aWVudDo6Y2hhbmdlVW5pdmVyc2FsQWNjZXNzWm9vbUZvY3VzKGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIHZpZQogICAgIFdlYkNvcmU6OmNoYW5nZVVuaXZlcnNhbEFjY2Vzc1pvb21Gb2N1cyh2aWV3
UmVjdCwgc2VsZWN0aW9uUmVjdCk7CiB9CiAjZW5kaWYKKworUmVmUHRyPFBBTDo6V2ViR1BVOjpH
UFU+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlR1BVRm9yV2ViR1BVKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gUEFMOjpXZWJHUFU6OkdQVUltcGw6OmNyZWF0ZSgpOworfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8t
Y3Jhc2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9mYXN0L2Rv
bS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0CmluZGV4IGYyOGE4YzBl
Mjg5NDFlYWU2ZTFhNTRkMTA2YTQ5YzI5ZjkxMDk4YmQuLmQ0YzRmOWY0ZWEyOGU0ZDBlZjBlYzVm
NzVkNmVmZGNjYTY5NzkyN2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azEvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hl
ZC1uby1jcmFzaC1leHBlY3RlZC50eHQKQEAgLTUsNiArNSw3IEBAIG5hdmlnYXRvci5hcHBOYW1l
IGlzIE9LCiBuYXZpZ2F0b3IuYXBwVmVyc2lvbiBpcyBPSwogbmF2aWdhdG9yLmNvb2tpZUVuYWJs
ZWQgaXMgT0sKIG5hdmlnYXRvci5nZXRTdG9yYWdlVXBkYXRlcygpIGlzIE9LCituYXZpZ2F0b3Iu
Z3B1IGlzIE9LCiBuYXZpZ2F0b3IuamF2YUVuYWJsZWQoKSBpcyBPSwogbmF2aWdhdG9yLmxhbmd1
YWdlIGlzIE9LCiBuYXZpZ2F0b3IubGFuZ3VhZ2VzIGlzIE9LCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2syL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFz
aC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL2Zhc3QvZG9tL25h
dmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQKaW5kZXggZGNmYTI3NTcyMjll
OTI2MmQ3YjNkYWY3NjNjYzRiNzRhNTFlZjYyNS4uZDM0NDc5YmY2OTg5ZDU4OGYxNDVhN2NjMmJh
ZGNlNzVkM2MxZTNjYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9m
YXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5v
LWNyYXNoLWV4cGVjdGVkLnR4dApAQCAtOSw2ICs5LDcgQEAgbmF2aWdhdG9yLmNvbnRhY3RzIGlz
IE9LCiBuYXZpZ2F0b3IuY29va2llRW5hYmxlZCBpcyBPSwogbmF2aWdhdG9yLmNyZWRlbnRpYWxz
IGlzIE9LCiBuYXZpZ2F0b3IuZ2V0U3RvcmFnZVVwZGF0ZXMoKSBpcyBPSworbmF2aWdhdG9yLmdw
dSBpcyBPSwogbmF2aWdhdG9yLmlzTG9nZ2VkSW4oKSBpcyBPSwogbmF2aWdhdG9yLmphdmFFbmFi
bGVkKCkgaXMgT0sKIG5hdmlnYXRvci5sYW5ndWFnZSBpcyBPSwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20vbmF2aWdhdG9y
LWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dAppbmRleCBkYWI1NTVkYmZiOTQyMjNlYzY3
Yzg5OGMxN2YzNjY0MGZjNjI1M2IzLi40MGJlNTQxNjg5ODhhMjVhYjkyNDliNzlmN2RlMThjYTk1
MjEwMDgzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20vbmF2
aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVk
LnR4dApAQCAtOSw2ICs5LDcgQEAgbmF2aWdhdG9yLmNvbnRhY3RzIGlzIE9LCiBuYXZpZ2F0b3Iu
Y29va2llRW5hYmxlZCBpcyBPSwogbmF2aWdhdG9yLmNyZWRlbnRpYWxzIGlzIE9LCiBuYXZpZ2F0
b3IuZ2V0U3RvcmFnZVVwZGF0ZXMoKSBpcyBPSworbmF2aWdhdG9yLmdwdSBpcyBPSwogbmF2aWdh
dG9yLmphdmFFbmFibGVkKCkgaXMgT0sKIG5hdmlnYXRvci5sYW5ndWFnZSBpcyBPSwogbmF2aWdh
dG9yLmxhbmd1YWdlcyBpcyBPSwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445244</attachid>
            <date>2021-11-28 17:16:56 -0800</date>
            <delta_ts>2021-11-28 19:12:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233534-20211128171656.patch</filename>
            <type>text/plain</type>
            <size>299985</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGVhYjNiMjBkYTVmNDFhMjYwMTM4NDhj
OTViMmViNTZmMzFjZDE3ODEuLmY1Mjg2YjVmZTEzZGYzMjhhY2YxMTRkYmM1NzIzYzgxNmJkZDBk
MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMTEtMjcgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViR1BVXSBIb29rIHVwIGZpcnN0IEFQ
SSBmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMzNTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzLnlhbWw6CisKIDIwMjEtMTEt
MTkgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW01vZGVs
XSBhZGQgYXVkaW8gc3VwcG9ydApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDI4YzUzMmQ0YjE5ZmU0MzdkODJjNDdm
NmQzZmJhMjI1ZmI3NTk0OTIuLmE0NzBlODQ0NWI1MGYzNDllMzRiNmZjMjgzMGViYzg0YzllMDY5
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAyMS0xMS0yNyAgTXlsZXMgQy4gTWF4
ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJHUFVdIEhvb2sgdXAg
Zmlyc3QgQVBJIGZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzM1MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNjb25maWc6CisgICAgICAgICog
TW9kdWxlcy9XZWJHUFUvR1BVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdQVTo6c2V0QmFja2lu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpHUFU6OnJlcXVlc3RBZGFwdGVyKToKKyAgICAgICAgKiBN
b2R1bGVzL1dlYkdQVS9HUFUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdQVTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdQVTo6YmFja2luZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHUFU6OmJhY2tpbmcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R1BVOjpH
UFUpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNocm9tZTo6Y3JlYXRlR1BVRm9yV2ViR1BVIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0No
cm9tZS5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpDaHJvbWVDbGllbnQ6OmNyZWF0ZUdQVUZvcldlYkdQVSBjb25zdCk6CisgICAgICAgICogcGFn
ZS9OYXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpncHUpOgorICAg
ICAgICAqIHBhZ2UvTmF2aWdhdG9yLmg6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3JCYXNlLmg6
CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JCYXNlOjpncHUpOiBEZWxldGVkLgorICAgICAg
ICAqIHBhZ2UvV29ya2VyTmF2aWdhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck5h
dmlnYXRvcjo6Z3B1KToKKyAgICAgICAgKiBwYWdlL1dvcmtlck5hdmlnYXRvci5oOgorCiAyMDIx
LTExLTI4ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAg
ICAgW1dlYkdQVV0gQWRkIGRlcml2ZWQgc291cmNlcyB0byBYY29kZSBwcm9qZWN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0No
YW5nZUxvZwppbmRleCA1ZDZkNjc3MDI5ZGMyMDZjZDFlNGFkMDBlNjAzMWM5ODAyYjVkMjY5Li5k
YmMxYTUyNjViNjgxMmY4NDA2ZGMyOWMzOWVmMzNiNmY3ZmU3OGU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw2MSBAQAorMjAyMS0xMS0yNyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4
ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJHUFVdIEhvb2sgdXAgZmlyc3QgQVBJIGZ1
bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzM1MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFBBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVBZGFwdGVySW1wbC5jcHA6CisgICAgICAgICogcGFsL2dyYXBoaWNz
L1dlYkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNz
L1dlYkdQVS9JbXBsL1dlYkdQVUJpbmRHcm91cEltcGwuY3BwOgorICAgICAgICAqIHBhbC9ncmFw
aGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCaW5kR3JvdXBJbXBsLmg6CisgICAgICAgICogcGFsL2dy
YXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUJpbmRHcm91cExheW91dEltcGwuY3BwOgorICAgICAg
ICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCaW5kR3JvdXBMYXlvdXRJbXBsLmg6
CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUJ1ZmZlckltcGwuY3Bw
OgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCdWZmZXJJbXBsLmg6
CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbW1hbmRCdWZmZXJJ
bXBsLmNwcDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tbWFu
ZEJ1ZmZlckltcGwuaDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BV
Q29tbWFuZEVuY29kZXJJbXBsLmNwcDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0lt
cGwvV2ViR1BVQ29tbWFuZEVuY29kZXJJbXBsLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dl
YkdQVS9JbXBsL1dlYkdQVUNvbXB1dGVQYXNzRW5jb2RlckltcGwuY3BwOgorICAgICAgICAqIHBh
bC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXJJbXBsLmg6Cisg
ICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbXB1dGVQaXBlbGluZUlt
cGwuY3BwOgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb21wdXRl
UGlwZWxpbmVJbXBsLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQ
VUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2Vi
R1BVL0ltcGwvV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaDoKKyAgICAgICAgKiBwYWwv
Z3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNlSW1wbC5jcHA6CisgICAgICAgICogcGFs
L2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVURldmljZUltcGwuaDoKKyAgICAgICAgKiBwYWwv
Z3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4
dC5jcHA6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVURvd25jYXN0
Q29udmVydFRvQmFja2luZ0NvbnRleHQuaDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVRXh0ZXJuYWxUZXh0dXJlSW1wbC5jcHA6CisgICAgICAgICogcGFsL2dyYXBo
aWNzL1dlYkdQVS9JbXBsL1dlYkdQVUV4dGVybmFsVGV4dHVyZUltcGwuaDoKKyAgICAgICAgKiBw
YWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVSW1wbC5jcHA6CisgICAgICAgIChQQUw6Oldl
YkdQVTo6R1BVSW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0lt
cGwvV2ViR1BVSW1wbC5oOgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJH
UFVQaXBlbGluZUxheW91dEltcGwuY3BwOgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUv
SW1wbC9XZWJHUFVQaXBlbGluZUxheW91dEltcGwuaDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3Mv
V2ViR1BVL0ltcGwvV2ViR1BVUXVlcnlTZXRJbXBsLmNwcDoKKyAgICAgICAgKiBwYWwvZ3JhcGhp
Y3MvV2ViR1BVL0ltcGwvV2ViR1BVUXVlcnlTZXRJbXBsLmg6CisgICAgICAgICogcGFsL2dyYXBo
aWNzL1dlYkdQVS9JbXBsL1dlYkdQVVF1ZXVlSW1wbC5jcHA6CisgICAgICAgICogcGFsL2dyYXBo
aWNzL1dlYkdQVS9JbXBsL1dlYkdQVVF1ZXVlSW1wbC5oOgorICAgICAgICAqIHBhbC9ncmFwaGlj
cy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJCdW5kbGVFbmNvZGVySW1wbC5jcHA6CisgICAgICAg
ICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlckJ1bmRsZUVuY29kZXJJbXBs
Lmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlckJ1bmRs
ZUltcGwuY3BwOgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5k
ZXJCdW5kbGVJbXBsLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQ
VVJlbmRlclBhc3NFbmNvZGVySW1wbC5jcHA6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQ
VS9JbXBsL1dlYkdQVVJlbmRlclBhc3NFbmNvZGVySW1wbC5oOgorICAgICAgICAqIHBhbC9ncmFw
aGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJQaXBlbGluZUltcGwuY3BwOgorICAgICAgICAq
IHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJQaXBlbGluZUltcGwuaDoKKyAg
ICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVU2FtcGxlckltcGwuY3BwOgor
ICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVTYW1wbGVySW1wbC5oOgor
ICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVTaGFkZXJNb2R1bGVJbXBs
LmNwcDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVU2hhZGVyTW9k
dWxlSW1wbC5oOgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVUZXh0
dXJlSW1wbC5jcHA6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVRl
eHR1cmVJbXBsLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVRl
eHR1cmVWaWV3SW1wbC5jcHA6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dl
YkdQVVRleHR1cmVWaWV3SW1wbC5oOgorCiAyMDIxLTExLTI1ICBLaW1tbyBLaW5udW5lbiAgPGtr
aW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgQU5HTEUgTWV0YWw6IFRoZSBtZW1vcnkgYmFj
a2luZyBJT1N1cmZhY2VzIG9mIGZvcm1lciBjbGllbnQgYnVmZmVyIHBidWZmZXJzIGlzIGxlYWtl
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCBhZDhlNjg4MGYwNTU5ODE2YTQ3MGQ3NTUwNWIxODllZjE5MmE2ODU0Li5k
OGVkZjY5YjRkMTY5Y2I4MzgzZWE2ZjhhNWI5N2EwNjUxZWVjMjQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDkwIEBACisyMDIxLTExLTI3ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBs
ZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gSG9vayB1cCBmaXJzdCBBUEkgZnVuY3Rpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzUzNAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogQ29uZmlndXJhdGlvbnMvQmFzZVRhcmdldC54Y2NvbmZpZzoKKyAg
ICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2
ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1h
a2U6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVtb3Rl
R1BVKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMu
aW46CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQWRhcHRlci5o
OgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cC5o
OgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExh
eW91dC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZl
ci5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRC
dWZmZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21t
YW5kRW5jb2Rlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZUNvbXB1dGVQYXNzRW5jb2Rlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZUNvbXB1dGVQaXBlbGluZS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZURldmljZS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4dHVyZS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdQVTo6
UmVtb3RlR1BVKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR1BVOjp+UmVtb3RlR1BVKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR1BVOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR1BVOjpzdG9wTGlzdGVuaW5nRm9ySVBDKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R1BVOjp3b3JrUXVldWVJbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR1BVOjp3
b3JrUXVldWVVbmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHUFU6OnJlcXVl
c3RBZGFwdGVyKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVH
UFUuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVQaXBlbGlu
ZUxheW91dC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1
ZXJ5U2V0Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVl
dWUuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJC
dW5kbGUuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5k
ZXJCdW5kbGVFbmNvZGVyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlUmVuZGVyUGFzc0VuY29kZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZVNhbXBsZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGUuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVZpZXcuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL1dlYkdQVS9XZWJHUFVPYmplY3RIZWFwLmg6CisgICAgICAgICogU291cmNlcy50eHQ6
CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUFkYXB0ZXJQcm94eS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBMYXlv
dXRQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVCaW5kR3JvdXBQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVCdWZmZXJQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kQnVmZmVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFzc0Vu
Y29kZXJQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVEZXZpY2VQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFVQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdQVVByb3h5OjpSZW1vdGVHUFVQcm94eSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdQVVByb3h5OjpncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR1BVUHJveHk6OmFiYW5kb25HUFVQcm9jZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR1BVUHJveHk6Ondhc0NyZWF0ZWQpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHUFVQcm94eTo6d2FpdFVudGlsSW5pdGlhbGl6ZWQpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHUFVQcm94eTo6cmVxdWVzdEFkYXB0ZXIpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJHUFU6OlJlbW90ZUdQVVByb3h5OjpSZW1vdGVHUFVQcm94eSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlR1BVUHJveHk6On5SZW1vdGVHUFVQcm94eSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlR1BVUHJveHk6OnJlcXVlc3RBZGFw
dGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlR1BVUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlR1BVUHJveHkubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVQaXBlbGluZUxheW91dFByb3h5Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0UHJveHku
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVldWVQ
cm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVS
ZW5kZXJCdW5kbGVFbmNvZGVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBl
bGluZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZVNhbXBsZXJQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVTaGFkZXJNb2R1bGVQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVZpZXdQcm94eS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVEb3duY2FzdENvbnZlcnRU
b0JhY2tpbmdDb250ZXh0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNy
ZWF0ZUdQVUZvcldlYkdQVSBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKwogMjAyMS0xMS0yNiAgQWRyaWFuIFBlcmV6IGRlIENh
c3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFVwZGF0ZSBP
cHRpb25zV1BFLmNtYWtlIGFuZCBORVdTIGZvciB0aGUgMi4zNS4xIHJlbGVhc2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwppbmRleCA1MDFkNTAxYWIzODAxN2YxZDhmOWU4MWM5YmVmZGMyZDdm
NmYxNmZlLi4xMmE1Y2FhZjQ3ODdlN2NkYzU0NTUzNTg2Y2FjYmM0MDhmNzM0MDc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMTEtMjcgIE15bGVz
IEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViR1BVXSBI
b29rIHVwIGZpcnN0IEFQSSBmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9XZWJLaXRMZWdhY3kueGNjb25maWc6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tOgorICAgICAgICAoV2ViQ2hyb21lQ2xp
ZW50OjpjcmVhdGVHUFVGb3JXZWJHUFUgY29uc3QpOgorCiAyMDIxLTExLTI0ICBEYXZpZCBLaWx6
ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgQ29tcGlsZXIgc2hvdWxkIGJlIGFi
bGUgdG8gY2hlY2sgbG9jYWxpemVkIGZvcm1hdCBzdHJpbmdzIGZvciBjb25zaXN0ZW5jeQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzLnlh
bWwgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbApp
bmRleCBlYzgyYmY1YjVhMjk5ZDcxMjA3MDM0OGVjNDFiYmQ5YjYzNjc2OWUyLi41NzNlMDI1ZDhk
OWY3MDM2ZGJiMzgyZjUwZmI0MTUyNTJlN2E4N2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1Nj
cmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbAorKysgYi9Tb3VyY2UvV1RGL1Nj
cmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbApAQCAtMjU1MSwxMSArMjU1MSwx
MSBAQCBXZWJHUFU6CiAgIHR5cGU6IGJvb2wKICAgZGVmYXVsdFZhbHVlOgogICAgIFdlYktpdExl
Z2FjeToKLSAgICAgIGRlZmF1bHQ6IGZhbHNlCisgICAgICBkZWZhdWx0OiB0cnVlCiAgICAgV2Vi
S2l0OgotICAgICAgZGVmYXVsdDogZmFsc2UKKyAgICAgIGRlZmF1bHQ6IHRydWUKICAgICBXZWJD
b3JlOgotICAgICAgZGVmYXVsdDogZmFsc2UKKyAgICAgIGRlZmF1bHQ6IHRydWUKIAogV2ViU2Vj
dXJpdHlFbmFibGVkOgogICB0eXBlOiBib29sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybUhhdmUuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCmluZGV4IGNjZWMx
ZWZkMTFkMjk4NzU5MTkyNTVmZWU3YTZhYzIzNjQzNzY2ODEuLjAwYmNmOTc4YzhmOTYwNTAyYmFi
YzNkZmFmNDUyMzQ0ZGFjMjJjZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
SGF2ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCkBAIC0xMDk3LDMgKzEw
OTcsNyBAQAogI2lmIFBMQVRGT1JNKE1BQykKICNkZWZpbmUgSEFWRV9TQ0VORUtJVCAxCiAjZW5k
aWYKKworI2lmIFBMQVRGT1JNKENPQ09BKQorI2RlZmluZSBIQVZFX1dFQkdQVV9JTVBMRU1FTlRB
VElPTiAxCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25z
L1dlYkNvcmUueGNjb25maWcgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9XZWJDb3Jl
LnhjY29uZmlnCmluZGV4IGI4YmE0YzZhNjRhZGJjODg5Zjc2YmZmYWZkODQ5NzFjNmFjOGEyY2Qu
LjZjZWYyNDQ3ZDA3MDhkNWFhOTMyZDhmNmIzOGQ3Zjk2YTg3MTI1YjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNjb25maWcKKysrIGIvU291cmNl
L1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2NvbmZpZwpAQCAtNzMsNiArNzMsOCBA
QCBVTkVYUE9SVEVEX1NZTUJPTFNfRklMRSA9IENvbmZpZ3VyYXRpb25zL1dlYkNvcmUudW5leHA7
CiAKIFdLX0FOR0xFX0xERkxBR1MgPSAtd2Vhay1sQU5HTEUtc2hhcmVkOwogCitXS19XRUJHUFVf
TERGTEFHUyA9IC13ZWFrX2ZyYW1ld29yayBXZWJHUFU7CisKIFdLX0FQUEtJVF9MREZMQUdTID0g
JChXS19BUFBLSVRfTERGTEFHU18kKFdLX1BMQVRGT1JNX05BTUUpKTsKIFdLX0FQUEtJVF9MREZM
QUdTX21hY29zeCA9IC1mcmFtZXdvcmsgQXBwS2l0OwogV0tfQVBQS0lUX0xERkxBR1NfbWFjY2F0
YWx5c3QgPSAtZnJhbWV3b3JrIEFwcEtpdDsKQEAgLTEzMCw3ICsxMzIsNyBAQCBXS19TQ0VORUtJ
VF9MREZMQUdTID0gJChXS19TQ0VORUtJVF9MREZMQUdTXyQoV0tfUExBVEZPUk1fTkFNRSkpOwog
V0tfU0NFTkVLSVRfTERGTEFHU19tYWNvc3ggPSAtd2Vha19mcmFtZXdvcmsgU2NlbmVLaXQ7CiAK
IC8vIEZJWE1FOiBSZWR1Y2UgdGhlIG51bWJlciBvZiBhbGxvd2FibGVfY2xpZW50cyA8cmRhcjov
L3Byb2JsZW0vMzE4MjM5Njk+Ci1PVEhFUl9MREZMQUdTID0gJChpbmhlcml0ZWQpICQoV0tfUkVM
T0NBVEFCTEVfRlJBTUVXT1JLX0xERkxBR1MpIC1sc3FsaXRlMyAtbG9iamMgLWFsbG93YWJsZV9j
bGllbnQgV2ViQ29yZVRlc3RTdXBwb3J0IC1hbGxvd2FibGVfY2xpZW50IFdlYktpdExlZ2FjeSAt
Zm9yY2VfbG9hZCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvbGliUEFMLmEgLWZyYW1ld29yayBDRk5l
dHdvcmsgLWZyYW1ld29yayBDb3JlQXVkaW8gLWZyYW1ld29yayBDb3JlR3JhcGhpY3MgLWZyYW1l
d29yayBDb3JlVGV4dCAtZnJhbWV3b3JrIEZvdW5kYXRpb24gLWZyYW1ld29yayBJT1N1cmZhY2Ug
LWZyYW1ld29yayBJbWFnZUlPIC1mcmFtZXdvcmsgTWV0YWwgJChPVEhFUl9MREZMQUdTX1BMQVRG
T1JNXyQoV0tfQ09DT0FfVE9VQ0gpKSAkKE9USEVSX0xERkxBR1NfUExBVEZPUk1fJChXS19QTEFU
Rk9STV9OQU1FKSkgJChXS19BTkdMRV9MREZMQUdTKSAkKFdLX0FQUEtJVF9MREZMQUdTKSAkKFdL
X0FQUFNVUFBPUlRfTERGTEFHUykgJChXS19BVURJT19VTklUX0xERkxBR1MpICQoV0tfQ0FSQk9O
X0xERkxBR1MpICQoV0tfQ09SRV9VSV9MREZMQUdTKSAkKFdLX0RBVEFfREVURUNUT1JTX0NPUkVf
TERGTEFHUykgJChXS19HUkFQSElDU19TRVJWSUNFU19MREZMQUdTKSAkKFdLX0lPU1VSRkFDRV9B
Q0NFTEVSQVRPUl9MREZMQUdTKSAkKFdLX0xJQldFQlJUQ19MREZMQUdTKSAkKFdLX01PQklMRV9D
T1JFX1NFUlZJQ0VTX0xERkxBR1MpICQoV0tfTU9CSUxFX0dFU1RBTFRfTERGTEFHUykgJChXS19O
RVRXT1JLX0VYVEVOU0lPTl9MRF9GTEFHUykgJChXS19TWVNURU1fQ09ORklHVVJBVElPTl9MREZM
QUdTKSAkKFdLX0NPUkVfSU1BR0VfTERGTEFHUykgJChXS19VUkxfRk9STUFUVElOR19MREZMQUdT
KSAkKFdLX1NDRU5FS0lUX0xERkxBR1MpOworT1RIRVJfTERGTEFHUyA9ICQoaW5oZXJpdGVkKSAk
KFdLX1JFTE9DQVRBQkxFX0ZSQU1FV09SS19MREZMQUdTKSAtbHNxbGl0ZTMgLWxvYmpjIC1hbGxv
d2FibGVfY2xpZW50IFdlYkNvcmVUZXN0U3VwcG9ydCAtYWxsb3dhYmxlX2NsaWVudCBXZWJLaXRM
ZWdhY3kgLWZvcmNlX2xvYWQgJChCVUlMVF9QUk9EVUNUU19ESVIpL2xpYlBBTC5hIC1mcmFtZXdv
cmsgQ0ZOZXR3b3JrIC1mcmFtZXdvcmsgQ29yZUF1ZGlvIC1mcmFtZXdvcmsgQ29yZUdyYXBoaWNz
IC1mcmFtZXdvcmsgQ29yZVRleHQgLWZyYW1ld29yayBGb3VuZGF0aW9uIC1mcmFtZXdvcmsgSU9T
dXJmYWNlIC1mcmFtZXdvcmsgSW1hZ2VJTyAtZnJhbWV3b3JrIE1ldGFsICQoT1RIRVJfTERGTEFH
U19QTEFURk9STV8kKFdLX0NPQ09BX1RPVUNIKSkgJChPVEhFUl9MREZMQUdTX1BMQVRGT1JNXyQo
V0tfUExBVEZPUk1fTkFNRSkpICQoV0tfQU5HTEVfTERGTEFHUykgJChXS19XRUJHUFVfTERGTEFH
UykgJChXS19BUFBLSVRfTERGTEFHUykgJChXS19BUFBTVVBQT1JUX0xERkxBR1MpICQoV0tfQVVE
SU9fVU5JVF9MREZMQUdTKSAkKFdLX0NBUkJPTl9MREZMQUdTKSAkKFdLX0NPUkVfVUlfTERGTEFH
UykgJChXS19EQVRBX0RFVEVDVE9SU19DT1JFX0xERkxBR1MpICQoV0tfR1JBUEhJQ1NfU0VSVklD
RVNfTERGTEFHUykgJChXS19JT1NVUkZBQ0VfQUNDRUxFUkFUT1JfTERGTEFHUykgJChXS19MSUJX
RUJSVENfTERGTEFHUykgJChXS19NT0JJTEVfQ09SRV9TRVJWSUNFU19MREZMQUdTKSAkKFdLX01P
QklMRV9HRVNUQUxUX0xERkxBR1MpICQoV0tfTkVUV09SS19FWFRFTlNJT05fTERfRkxBR1MpICQo
V0tfU1lTVEVNX0NPTkZJR1VSQVRJT05fTERGTEFHUykgJChXS19DT1JFX0lNQUdFX0xERkxBR1Mp
ICQoV0tfVVJMX0ZPUk1BVFRJTkdfTERGTEFHUykgJChXS19TQ0VORUtJVF9MREZMQUdTKTsKIAog
T1RIRVJfTERGTEFHU19QTEFURk9STV9jb2NvYXRvdWNoID0gLWFsbG93YWJsZV9jbGllbnQgV2Vi
S2l0IC1hbGxvd2FibGVfY2xpZW50IGlUdW5lc1UgLWFsbG93YWJsZV9jbGllbnQgQ2FzYWJsYW5j
YSAtYWxsb3dhYmxlX2NsaWVudCBSZW1vdGUgLWFsbG93YWJsZV9jbGllbnQgVFZCb29rcyAtYWxs
b3dhYmxlX2NsaWVudCBEdW1wUmVuZGVyVHJlZSAtYWxsb3dhYmxlX2NsaWVudCBXZWJLaXRUZXN0
UnVubmVyIC1hbGxvd2FibGVfY2xpZW50IFRlc3RXZWJLaXRBUEk7CiBPVEhFUl9MREZMQUdTX1BM
QVRGT1JNX21hY29zeCA9IC1zdWJfbGlicmFyeSBsaWJvYmpjIC11bWJyZWxsYSBXZWJLaXQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVLmNwcAppbmRleCAyNjEzZjJmNzg5NGZlMGIzYTFk
ZDNkZjM4MGZlM2RiYTI0YjcwZmFkLi4zOGZlZjhmN2E5ZGNmMmY3MjE5N2ExMWE3MTRmZjk5ZWM2
MDc2MDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVS5jcHAKQEAgLTM4LDggKzM4
LDIyIEBAIHN0YXRpYyBQQUw6OldlYkdQVTo6UmVxdWVzdEFkYXB0ZXJPcHRpb25zIGNvbnZlcnRU
b0JhY2tpbmcoY29uc3Qgc3RkOjpvcHRpb25hbDxHCiAgICAgcmV0dXJuIG9wdGlvbnMtPmNvbnZl
cnRUb0JhY2tpbmcoKTsKIH0KIAordm9pZCBHUFU6OnNldEJhY2tpbmcoUEFMOjpXZWJHUFU6OkdQ
VSYgYmFja2luZykKK3sKKyAgICBtX2JhY2tpbmcgPSAmYmFja2luZzsKKyAgICB3aGlsZSAoIW1f
cGVuZGluZ1JlcXVlc3RBZGFwdGVyQXJndW1lbnRzLmlzRW1wdHkoKSkgeworICAgICAgICBhdXRv
IGFyZ3VtZW50cyA9IG1fcGVuZGluZ1JlcXVlc3RBZGFwdGVyQXJndW1lbnRzLnRha2VGaXJzdCgp
OworICAgICAgICByZXF1ZXN0QWRhcHRlcihhcmd1bWVudHMub3B0aW9ucywgV1RGTW92ZShhcmd1
bWVudHMucHJvbWlzZSkpOworICAgIH0KK30KKwogdm9pZCBHUFU6OnJlcXVlc3RBZGFwdGVyKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8R1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zPiYgb3B0aW9ucywgUmVx
dWVzdEFkYXB0ZXJQcm9taXNlJiYgcHJvbWlzZSkKIHsKKyAgICBpZiAoIW1fYmFja2luZykgewor
ICAgICAgICBtX3BlbmRpbmdSZXF1ZXN0QWRhcHRlckFyZ3VtZW50cy5hcHBlbmQoeyBvcHRpb25z
LCBXVEZNb3ZlKHByb21pc2UpIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgbV9i
YWNraW5nLT5yZXF1ZXN0QWRhcHRlcihjb252ZXJ0VG9CYWNraW5nKG9wdGlvbnMpLCBbcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSldIChSZWZQdHI8UEFMOjpXZWJHUFU6OkFkYXB0ZXI+JiYgYWRh
cHRlcikgbXV0YWJsZSB7CiAgICAgICAgIGlmICghYWRhcHRlcikKICAgICAgICAgICAgIHByb21p
c2UucmVzb2x2ZShudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
V2ViR1BVL0dQVS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVLmgKaW5kZXgg
MTZlNDc3NGIzMWM4ZDZlMmFlYzg3MTg2NzkwMTU3YTdlZmVmZTA3MC4uZDMwNGU4ZThmN2ExNTM1
Yjc4YjkzMGY3ZTFjNjhiMDYzMzViOTU1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9XZWJHUFUvR1BVLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BV
LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgog
I2luY2x1ZGUgPG9wdGlvbmFsPgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BV
Lmg+CisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTM3LDI0ICszOCwyNSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEdQVSA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVT4gewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8R1BVPiBjcmVhdGUoUmVmPFBBTDo6V2ViR1BVOjpHUFU+JiYgYmFja2lu
ZykKKyAgICBzdGF0aWMgUmVmPEdQVT4gY3JlYXRlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEdQVShXVEZNb3ZlKGJhY2tpbmcpKSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEdQVSgpKTsKICAgICB9CiAKICAgICB1c2luZyBSZXF1ZXN0QWRhcHRlclByb21p
c2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURMTnVsbGFibGU8SURMSW50ZXJmYWNlPEdQVUFkYXB0
ZXI+Pj47CiAgICAgdm9pZCByZXF1ZXN0QWRhcHRlcihjb25zdCBzdGQ6Om9wdGlvbmFsPEdQVVJl
cXVlc3RBZGFwdGVyT3B0aW9ucz4mLCBSZXF1ZXN0QWRhcHRlclByb21pc2UmJik7CiAKLSAgICBQ
QUw6OldlYkdQVTo6R1BVJiBiYWNraW5nKCkgeyByZXR1cm4gbV9iYWNraW5nOyB9Ci0gICAgY29u
c3QgUEFMOjpXZWJHUFU6OkdQVSYgYmFja2luZygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2luZzsg
fQorICAgIHZvaWQgc2V0QmFja2luZyhQQUw6OldlYkdQVTo6R1BVJik7CiAKIHByaXZhdGU6Ci0g
ICAgR1BVKFJlZjxQQUw6OldlYkdQVTo6R1BVPiYmIGJhY2tpbmcpCi0gICAgICAgIDogbV9iYWNr
aW5nKFdURk1vdmUoYmFja2luZykpCi0gICAgewotICAgIH0KLQotICAgIFJlZjxQQUw6OldlYkdQ
VTo6R1BVPiBtX2JhY2tpbmc7CisgICAgR1BVKCkgPSBkZWZhdWx0OworCisgICAgc3RydWN0IFBl
bmRpbmdSZXF1ZXN0QWRhcHRlckFyZ3VtZW50cyB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BV
UmVxdWVzdEFkYXB0ZXJPcHRpb25zPiBvcHRpb25zOworICAgICAgICBSZXF1ZXN0QWRhcHRlclBy
b21pc2UgcHJvbWlzZTsKKyAgICB9OworICAgIERlcXVlPFBlbmRpbmdSZXF1ZXN0QWRhcHRlckFy
Z3VtZW50cz4gbV9wZW5kaW5nUmVxdWVzdEFkYXB0ZXJBcmd1bWVudHM7CisgICAgUmVmUHRyPFBB
TDo6V2ViR1BVOjpHUFU+IG1fYmFja2luZzsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhZTY5OTc1ZmJiYjZjY2I5
YjYxZTQ3MDc3YTFhMjUzYmNkYzNhZGIwLi5kMzQ4YmY3NjY5MmQ0NjcxMGRjNjFlMmI4YTRkMzEx
N2YwZjJlMjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xNDEsNiArMTQxLDcgQEAKIAkJMUNDM0FDRTgyMkJEN0VDNTAwRjM2
MEYwIC8qIE1ldGFsU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQ0MzQUNFNzIyQkQ3RUI4MDBGMzYwRjAgLyogTWV0YWxTUEkuaCAqLzsgfTsKIAkJ
MUNDRUU0RjUyMEQ4NzE5MzAwNDdCMDk3IC8qIENvcmVVSVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNDRUU0RjQyMEQ4NzE5MzAwNDdCMDk3IC8q
IENvcmVVSVNQSS5oICovOyB9OwogCQkxQ0NFRTRGNzIwRDg3NDNGMDA0N0IwOTcgLyogTlNBcHBl
YXJhbmNlU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQ0NFRTRGNjIwRDg3NDNGMDA0N0IwOTcgLyogTlNBcHBlYXJhbmNlU1BJLmggKi87IH07CisJ
CTFDRDQxMkU4Mjc1MUU0REMwMENBMkUyMiAvKiBXZWJHUFVJbXBsLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE5RTY5QjI3M0Y0MjQyMDA0QjE3QjAg
LyogV2ViR1BVSW1wbC5oICovOyB9OwogCQkxQ0VGQTFDMzI3MzdBNEM4MDBGMERBOTUgLyogV2Vi
R1BVQmluZEdyb3VwRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUNDNUU0NkUyNzM3NDk0ODAwNkY2RkY0IC8qIFdlYkdQVUJpbmRHcm91
cERlc2NyaXB0b3IuaCAqLzsgfTsKIAkJMUNFRkExQzQyNzM3QTRDODAwRjBEQTk1IC8qIFdlYkdQ
VVNhbXBsZXJEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQ0M1RTQyMzI3Mzc0OTJDMDA2RjZGRjQgLyogV2ViR1BVU2FtcGxlckRlc2Ny
aXB0b3IuaCAqLzsgfTsKIAkJMUNFRkExQzUyNzM3QTRDODAwRjBEQTk1IC8qIFdlYkdQVVN0b3Jh
Z2VUZXh0dXJlQWNjZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQ0M1RTQyMDI3Mzc0OTJDMDA2RjZGRjQgLyogV2ViR1BVU3RvcmFnZVRleHR1cmVB
Y2Nlc3MuaCAqLzsgfTsKQEAgLTE2MjQsNiArMTYyNSw3IEBACiAJCQkJMUNFRkEyMzIyNzM3QTRD
ODAwRjBEQTk1IC8qIFdlYkdQVUltYWdlQ29weVRleHR1cmUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFDRUZBMjNGMjczN0E0QzgwMEYwREE5NSAvKiBXZWJHUFVJbWFnZUNvcHlUZXh0dXJlVGFnZ2Vk
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQ0VGQTIzQjI3MzdBNEM4MDBGMERBOTUgLyogV2ViR1BV
SW1hZ2VEYXRhTGF5b3V0LmggaW4gSGVhZGVycyAqLywKKwkJCQkxQ0Q0MTJFODI3NTFFNERDMDBD
QTJFMjIgLyogV2ViR1BVSW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUNFRkEyMDcyNzM3QTRD
ODAwRjBEQTk1IC8qIFdlYkdQVUluZGV4Rm9ybWF0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQ0VG
QTIxNDI3MzdBNEM4MDBGMERBOTUgLyogV2ViR1BVSW50ZWdyYWxUeXBlcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUNFRkEyMUQyNzM3QTRDODAwRjBEQTk1IC8qIFdlYkdQVUxvYWRPcC5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dl
YkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dy
YXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmgKaW5kZXggODE0YTI1NzBiMjhl
YWU3YmJkY2E5ZmY2YTI4Yzc4NzdiNWVkMzljNy4uOWI1ZTI3NTBkMThiYTQxZDVhOGFkNWEyOWQ3
ZTQ5M2VmMDMyZmFjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGlj
cy9XZWJHUFUvSW1wbC9XZWJHUFVBZGFwdGVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwuaApAQCAtMzYsNiAr
MzYsNyBAQCBuYW1lc3BhY2UgUEFMOjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFja2luZ0Nv
bnRleHQ7CiAKIGNsYXNzIEFkYXB0ZXJJbXBsIGZpbmFsIDogcHVibGljIEFkYXB0ZXIgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8QWRhcHRl
ckltcGw+IGNyZWF0ZShXR1BVQWRhcHRlciBhZGFwdGVyLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4
dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCaW5kR3JvdXBJbXBsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUJpbmRH
cm91cEltcGwuaAppbmRleCAzNWFkNDMzMWVhZDk5MGJlMmM3YzExNDNiYWVkNzJmY2NlNTllMDZl
Li43Nzc4M2ExNGVkZDdjM2M3NzUxMTJkYjZjODFmMDhjMWUyNTU3YWYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUJpbmRHcm91
cEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBs
L1dlYkdQVUJpbmRHcm91cEltcGwuaApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgUEFMOjpX
ZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIEJpbmRHcm91
cEltcGwgZmluYWwgOiBwdWJsaWMgQmluZEdyb3VwIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEJpbmRHcm91cEltcGw+IGNyZWF0ZShXR1BV
QmluZEdyb3VwIGJpbmRHcm91cCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Z3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQmluZEdyb3VwTGF5b3V0SW1wbC5oIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCaW5kR3JvdXBMYXlv
dXRJbXBsLmgKaW5kZXggODY1Y2RjOTgyMDgzYjJlMzZiNDcyNjMzYTAxMTIzNTYyNDBkNjI5MS4u
ZWQ0ZDU3OGE0ZWNlZjRiYjU1OWY3ZmJiM2VkZDNjMTAwODU5ZjMyYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCaW5kR3JvdXBM
YXlvdXRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUv
SW1wbC9XZWJHUFVCaW5kR3JvdXBMYXlvdXRJbXBsLmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNw
YWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFz
cyBCaW5kR3JvdXBMYXlvdXRJbXBsIGZpbmFsIDogcHVibGljIEJpbmRHcm91cExheW91dCB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxCaW5k
R3JvdXBMYXlvdXRJbXBsPiBjcmVhdGUoV0dQVUJpbmRHcm91cExheW91dCBiaW5kR3JvdXBMYXlv
dXQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9J
bXBsL1dlYkdQVUJ1ZmZlckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3Mv
V2ViR1BVL0ltcGwvV2ViR1BVQnVmZmVySW1wbC5oCmluZGV4IGMzNjdlN2JjNzM5Zjc3M2VlNjIy
NDgzY2NjNzE1ZTUwYzQzYWM1MjcuLmMxNDY1ZWM0NzdkZjU1NjUyNWZhODhjNWEzYTAxMTEwY2U5
MGYyODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQnVmZmVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3Jh
cGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQnVmZmVySW1wbC5oCkBAIC0zNiw2ICszNiw3IEBAIG5h
bWVzcGFjZSBQQUw6OldlYkdQVSB7CiBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAog
Y2xhc3MgQnVmZmVySW1wbCBmaW5hbCA6IHB1YmxpYyBCdWZmZXIgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8QnVmZmVySW1wbD4gY3JlYXRl
KFdHUFVCdWZmZXIgYnVmZmVyLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFj
a2luZ0NvbnRleHQpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9n
cmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb21tYW5kQnVmZmVySW1wbC5oIGIvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb21tYW5kQnVmZmVySW1w
bC5oCmluZGV4IDRiYzNjMWVkN2MzYjQ4ZTgwMzdhOTU3MTExM2M2ZjViODA1NDlhM2EuLjIwNGM4
YTY5ZDVhNThhM2UwNzZlNTU0Y2JhZjFjMTM2NzE5NGU2ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tbWFuZEJ1ZmZlcklt
cGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dl
YkdQVUNvbW1hbmRCdWZmZXJJbXBsLmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFBBTDo6
V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBDb21tYW5k
QnVmZmVySW1wbCBmaW5hbCA6IHB1YmxpYyBDb21tYW5kQnVmZmVyIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPENvbW1hbmRCdWZmZXJJbXBs
PiBjcmVhdGUoV0dQVUNvbW1hbmRCdWZmZXIgY29tbWFuZEJ1ZmZlciwgQ29udmVydFRvQmFja2lu
Z0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tbWFuZEVu
Y29kZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBs
L1dlYkdQVUNvbW1hbmRFbmNvZGVySW1wbC5oCmluZGV4IGY1NTY2MmRjNDRlZjZmZjQwYzQ3NTA5
OGRjZWRmZTdkYzBlM2EzODUuLmFkNjBhYzAyYjFhZDZlMjQwODk0YjlkNWEyOTEwYmJiZDQzNjEx
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0lt
cGwvV2ViR1BVQ29tbWFuZEVuY29kZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb21tYW5kRW5jb2RlckltcGwuaApAQCAtMzUs
NiArMzUsNyBAQCBuYW1lc3BhY2UgUEFMOjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFja2lu
Z0NvbnRleHQ7CiAKIGNsYXNzIENvbW1hbmRFbmNvZGVySW1wbCBmaW5hbCA6IHB1YmxpYyBDb21t
YW5kRW5jb2RlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFJlZjxDb21tYW5kRW5jb2RlckltcGw+IGNyZWF0ZShXR1BVQ29tbWFuZEVuY29kZXIg
Q29tbWFuZEVuY29kZXIsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5n
Q29udGV4dCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBo
aWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbXB1dGVQYXNzRW5jb2RlckltcGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tcHV0ZVBhc3NFbmNv
ZGVySW1wbC5oCmluZGV4IDJiNTc2MmVhNzUzYWU1YjljNGZhNWZhMWFkM2Y5NTg4OGY4MmQ4M2Qu
LjUyODhiNWI4YzBkYmU3YTYxMGViMTE2NTMxNTVmMzNjYTE1M2Q1MTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tcHV0ZVBh
c3NFbmNvZGVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2Vi
R1BVL0ltcGwvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVySW1wbC5oCkBAIC0zNSw2ICszNSw3IEBA
IG5hbWVzcGFjZSBQQUw6OldlYkdQVSB7CiBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsK
IAogY2xhc3MgQ29tcHV0ZVBhc3NFbmNvZGVySW1wbCBmaW5hbCA6IHB1YmxpYyBDb21wdXRlUGFz
c0VuY29kZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0
YXRpYyBSZWY8Q29tcHV0ZVBhc3NFbmNvZGVySW1wbD4gY3JlYXRlKFdHUFVDb21wdXRlUGFzc0Vu
Y29kZXIgY29tcHV0ZVBhc3NFbmNvZGVyLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVy
dFRvQmFja2luZ0NvbnRleHQpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb21wdXRlUGlwZWxpbmVJbXBsLmggYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbXB1dGVQ
aXBlbGluZUltcGwuaAppbmRleCBjODk4Yzk5YWU3YzQxZWQwYWViNWRhOWRjYjQ4YzAxMWU1ODUw
NzUwLi4yMmU2MTM0NmQxN2JmMTUxNTM4MjY3Y2FhMzdiNzVhNjc4MzM3ZGIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbXB1
dGVQaXBlbGluZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dl
YkdQVS9JbXBsL1dlYkdQVUNvbXB1dGVQaXBlbGluZUltcGwuaApAQCAtMzUsNiArMzUsNyBAQCBu
YW1lc3BhY2UgUEFMOjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAK
IGNsYXNzIENvbXB1dGVQaXBlbGluZUltcGwgZmluYWwgOiBwdWJsaWMgQ29tcHV0ZVBpcGVsaW5l
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVm
PENvbXB1dGVQaXBlbGluZUltcGw+IGNyZWF0ZShXR1BVQ29tcHV0ZVBpcGVsaW5lIGNvbXB1dGVQ
aXBlbGluZSwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0
KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2Vi
R1BVL0ltcGwvV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRl
eHQuaAppbmRleCAzYzliNWM3YjRkNTgzZDJhNjcyOGJiZDcyNzNiNWJiMjYwYzYyZDM5Li4wOTNk
ODMzYzRlM2FmMDAzNGMyOGVmOTRmZjE5NmY4MzlhZGE0MDI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbnZlcnRUb0JhY2tp
bmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUv
SW1wbC9XZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oCkBAIC05Myw2ICs5Myw3IEBAIGVu
dW0gY2xhc3MgVmVydGV4Rm9ybWF0IDogdWludDhfdDsKIGVudW0gY2xhc3MgVmVydGV4U3RlcE1v
ZGUgOiB1aW50OF90OwogCiBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCA6IHB1YmxpYyBS
ZWZDb3VudGVkPENvbnZlcnRUb0JhY2tpbmdDb250ZXh0PiB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q29udmVydFRvQmFja2luZ0NvbnRleHQo
KSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhp
Y3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNlSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmgKaW5kZXggNjI0OTM2YmU5
NzI0YTJmY2MyYWNkOTkwZDEzZDIwMzlkZjQ4Y2M1YS4uMTM4YzVmYjBjM2MxMTEwNjUzOGNhNTEx
MzkwYjE5ODFiNzg1NTRkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFw
aGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmgKQEAgLTM2LDYg
KzM2LDcgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdD
b250ZXh0OwogCiBjbGFzcyBEZXZpY2VJbXBsIGZpbmFsIDogcHVibGljIERldmljZSB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxEZXZpY2VJ
bXBsPiBjcmVhdGUoV0dQVURldmljZSBkZXZpY2UsIFJlZjxTdXBwb3J0ZWRGZWF0dXJlcz4mJiBm
ZWF0dXJlcywgUmVmPFN1cHBvcnRlZExpbWl0cz4mJiBsaW1pdHMsIENvbnZlcnRUb0JhY2tpbmdD
b250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVURvd25jYXN0Q29u
dmVydFRvQmFja2luZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3Mv
V2ViR1BVL0ltcGwvV2ViR1BVRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oCmluZGV4
IGJkMGZjYTE2MmUxYWU5MDUxMWUzZGZiNmY1ZTNjZmM3YzMxNDIwNTYuLjM5Yzk0MTZjYTFiZjM1
YjRlMzYyMThmYjc2OTE3ODY2NDgwMzg0ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRG93bmNhc3RDb252ZXJ0VG9CYWNraW5n
Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0lt
cGwvV2ViR1BVRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oCkBAIC0zMiw2ICszMiw3
IEBACiBuYW1lc3BhY2UgUEFMOjpXZWJHUFUgewogCiBjbGFzcyBEb3duY2FzdENvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0IGZpbmFsIDogcHVibGljIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPERvd25j
YXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ+IGNyZWF0ZSgpCiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVFeHRlcm5h
bFRleHR1cmVJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9J
bXBsL1dlYkdQVUV4dGVybmFsVGV4dHVyZUltcGwuaAppbmRleCAyYWFjOTdlYWM1OTVhNDZlYTg5
ZjQxOTQ3MGU4ZjI2MmVmNTRhMTYxLi5kMGFkMTYyZTZjOTU4MzVjYjlkZmY0N2M4ZGIxMzRiZGQx
ZDFmMzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQ
VS9JbXBsL1dlYkdQVUV4dGVybmFsVGV4dHVyZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUV4dGVybmFsVGV4dHVyZUltcGwuaApA
QCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgUEFMOjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRv
QmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIEV4dGVybmFsVGV4dHVyZUltcGwgZmluYWwgOiBwdWJs
aWMgRXh0ZXJuYWxUZXh0dXJlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmPEV4dGVybmFsVGV4dHVyZUltcGw+IGNyZWF0ZShDb252ZXJ0VG9C
YWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVJbXBs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BV
SW1wbC5jcHAKaW5kZXggOGNjNDVmMGNiMTE2OTE1MDYxZTk0MmI1MWNmZmIwOTE5Yzc3NDBlZS4u
NTgxZDkyODAxNzI4YzcyNDMyZTcwYjQzZGJiMWNiOTc1MGQ5ZjNmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUlt
cGwuY3BwCkBAIC0yOSwxMSArMjksMjkgQEAKICNpZiBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElP
TikKIAogI2luY2x1ZGUgIldlYkdQVUFkYXB0ZXJJbXBsLmgiCi0jaW5jbHVkZSAiV2ViR1BVQ29u
dmVydFRvQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVEb3duY2FzdENvbnZlcnRU
b0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8V2ViR1BVL1dlYkdQVUV4dC5oPgogCisjaWYg
UExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8d3RmL2Rhcndpbi9XZWFrTGlua2luZy5oPgorCitX
VEZfV0VBS19MSU5LX0ZPUkNFX0lNUE9SVCh3Z3B1Q3JlYXRlSW5zdGFuY2UpOworI2VuZGlmCisK
IG5hbWVzcGFjZSBQQUw6OldlYkdQVSB7CiAKK1JlZlB0cjxHUFVJbXBsPiBHUFVJbXBsOjpjcmVh
dGUoKQoreworICAgIFdHUFVJbnN0YW5jZURlc2NyaXB0b3IgZGVzY3JpcHRvciA9IHsgbnVsbHB0
ciB9OworICAgIGlmICghJndncHVDcmVhdGVJbnN0YW5jZSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgYXV0byBpbnN0YW5jZSA9IHdncHVDcmVhdGVJbnN0YW5jZSgmZGVzY3JpcHRvcik7
CisgICAgaWYgKCFpbnN0YW5jZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0byBj
b252ZXJ0VG9CYWNraW5nQ29udGV4dCA9IERvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ6
OmNyZWF0ZSgpOworICAgIHJldHVybiBjcmVhdGUoaW5zdGFuY2UsIGNvbnZlcnRUb0JhY2tpbmdD
b250ZXh0KTsKK30KKwogR1BVSW1wbDo6R1BVSW1wbChXR1BVSW5zdGFuY2UgaW5zdGFuY2UsIENv
bnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKICAgICA6IG1f
YmFja2luZyhpbnN0YW5jZSkKICAgICAsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQoY29udmVy
dFRvQmFja2luZ0NvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dy
YXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Z3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVSW1wbC5oCmluZGV4IGM3MzVhMjRlMGZjYTY0MWU0
OTQ5MmRiNWU1NjY4NzhjMzkzZmE3MTIuLmQ1NTIzZWNjYmUzNGMwODYyY2VkMTVhNmYwYzQwMWQ4
YjgxNzU1M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2Vi
R1BVL0ltcGwvV2ViR1BVSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhp
Y3MvV2ViR1BVL0ltcGwvV2ViR1BVSW1wbC5oCkBAIC0zNiw3ICszNiwxMCBAQCBuYW1lc3BhY2Ug
UEFMOjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIEdQ
VUltcGwgZmluYWwgOiBwdWJsaWMgR1BVIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKKyAgICBQQUxfRVhQT1JUIHN0YXRpYyBSZWZQdHI8R1BVSW1wbD4gY3JlYXRlKCk7
CisKICAgICBzdGF0aWMgUmVmPEdQVUltcGw+IGNyZWF0ZShXR1BVSW5zdGFuY2UgaW5zdGFuY2Us
IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKICAgICB7
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdQVUltcGwoaW5zdGFuY2UsIGNvbnZlcnRU
b0JhY2tpbmdDb250ZXh0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dy
YXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVBpcGVsaW5lTGF5b3V0SW1wbC5oIGIvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVQaXBlbGluZUxheW91dElt
cGwuaAppbmRleCAwMDljMmI1YzgxNDE5N2FmMGRiNmVkZTBiMjg1Y2Y2MWFlZTg0NTk2Li5lNjJl
OTVjYTk3Y2M4ODBhYTRjMmIxYjI1MzA4ODUxZTdlZjVkMjMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVBpcGVsaW5lTGF5b3V0
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVUGlwZWxpbmVMYXlvdXRJbXBsLmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFBB
TDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBQaXBl
bGluZUxheW91dEltcGwgZmluYWwgOiBwdWJsaWMgUGlwZWxpbmVMYXlvdXQgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UGlwZWxpbmVMYXlv
dXRJbXBsPiBjcmVhdGUoV0dQVVBpcGVsaW5lTGF5b3V0IHBpcGVsaW5lTGF5b3V0LCBDb252ZXJ0
VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCiAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVR
dWVyeVNldEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0lt
cGwvV2ViR1BVUXVlcnlTZXRJbXBsLmgKaW5kZXggODk5YWE3MzFiNjBhNTVhOTc5YWRkY2VlYTU3
OWFiYjEwZjViOTU0Yy4uNWQ4OWI3NmIyZjIzOTE4Y2NmNDU4MzBlZDQ2MDA0YzJiNzMyZWUwYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9X
ZWJHUFVRdWVyeVNldEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNz
L1dlYkdQVS9JbXBsL1dlYkdQVVF1ZXJ5U2V0SW1wbC5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVz
cGFjZSBQQUw6OldlYkdQVSB7CiBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xh
c3MgUXVlcnlTZXRJbXBsIGZpbmFsIDogcHVibGljIFF1ZXJ5U2V0IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFF1ZXJ5U2V0SW1wbD4gY3Jl
YXRlKFdHUFVRdWVyeVNldCBxdWVyeVNldCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZl
cnRUb0JhY2tpbmdDb250ZXh0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUXVldWVJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVF1ZXVlSW1wbC5oCmluZGV4
IGRkOTFmOGMxYTczMmNlMWM0ZTA2YTkzNzkwNTliYWY2OTZmMGUwNzQuLjk3YmFmMGEyNDk5ZmQ5
YjQzZWIwZWUyZmU3N2NlZTM1OWQwODMzNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUXVldWVJbXBsLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVRdWV1ZUltcGwuaApA
QCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgUEFMOjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRv
QmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFF1ZXVlSW1wbCBmaW5hbCA6IHB1YmxpYyBRdWV1ZSB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxR
dWV1ZUltcGw+IGNyZWF0ZShXR1BVUXVldWUgcXVldWUsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0
JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlckJ1bmRsZUVuY29k
ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dl
YkdQVVJlbmRlckJ1bmRsZUVuY29kZXJJbXBsLmgKaW5kZXggMzE3ZDFjNGZmODg2ZGUxNzUyNzdm
MjU4MmY5ZmY1OGNiMWI0MWU5ZC4uNzdmNGI0ZDBjMTQ2ZTViZmRmOGY3ZTkwMmUyODJiMDAwNzdh
YjM0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUv
SW1wbC9XZWJHUFVSZW5kZXJCdW5kbGVFbmNvZGVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUmVuZGVyQnVuZGxlRW5jb2Rlcklt
cGwuaApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgUEFMOjpXZWJHUFUgewogY2xhc3MgQ29u
dmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbmRlckJ1bmRsZUVuY29kZXJJbXBsIGZp
bmFsIDogcHVibGljIFJlbmRlckJ1bmRsZUVuY29kZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UmVuZGVyQnVuZGxlRW5jb2RlckltcGw+
IGNyZWF0ZShXR1BVUmVuZGVyQnVuZGxlRW5jb2RlciByZW5kZXJCdW5kbGVFbmNvZGVyLCBDb252
ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJH
UFVSZW5kZXJCdW5kbGVJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dl
YkdQVS9JbXBsL1dlYkdQVVJlbmRlckJ1bmRsZUltcGwuaAppbmRleCBkMjY2NWYxOWI3MTk5M2Rk
YTBjNTQzMzU1OTE0MTViYzNhNDYyMTU5Li5mY2ViOTJiYTc2ODIzY2IxMjY0NTE2NTYwODNlOTAx
MjFmMTkzNWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dl
YkdQVS9JbXBsL1dlYkdQVVJlbmRlckJ1bmRsZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlckJ1bmRsZUltcGwuaApAQCAt
MzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgUEFMOjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFj
a2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbmRlckJ1bmRsZUltcGwgZmluYWwgOiBwdWJsaWMgUmVu
ZGVyQnVuZGxlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmPFJlbmRlckJ1bmRsZUltcGw+IGNyZWF0ZShXR1BVUmVuZGVyQnVuZGxlIHJlbmRl
ckJ1bmRsZSwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0
KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2Vi
R1BVL0ltcGwvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlclBhc3NFbmNvZGVySW1wbC5o
CmluZGV4IDljNGUxMDE2ZTRiNTdiMThhODM2MzYxYjQ1MjRkNTA5NThjOWQ5YTcuLjNlZTkwNzE0
NTgyOTdlYmE5ZTcwOTgxN2E2MjI4YmYyZTJlZWNmMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXJJ
bXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9X
ZWJHUFVSZW5kZXJQYXNzRW5jb2RlckltcGwuaApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2Ug
UEFMOjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJl
bmRlclBhc3NFbmNvZGVySW1wbCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJQYXNzRW5jb2RlciB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZW5k
ZXJQYXNzRW5jb2RlckltcGw+IGNyZWF0ZShXR1BVUmVuZGVyUGFzc0VuY29kZXIgcmVuZGVyUGFz
c0VuY29kZXIsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4
dCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dl
YkdQVS9JbXBsL1dlYkdQVVJlbmRlclBpcGVsaW5lSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJQaXBlbGluZUltcGwuaAppbmRl
eCA0ZjNmYmY4OWIzOTE2ODg2YzQ4OTcxNDkyZWZlZDA2MTUwZGY5NmZmLi41Yzc2ZWRlMTE0ZjEx
MmEzYmM3ODI0NGUzNTcxYzg4YjE3MTU3NDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlclBpcGVsaW5lSW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUmVu
ZGVyUGlwZWxpbmVJbXBsLmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BV
IHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBSZW5kZXJQaXBlbGlu
ZUltcGwgZmluYWwgOiBwdWJsaWMgUmVuZGVyUGlwZWxpbmUgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UmVuZGVyUGlwZWxpbmVJbXBsPiBj
cmVhdGUoV0dQVVJlbmRlclBpcGVsaW5lIHJlbmRlclBpcGVsaW5lLCBDb252ZXJ0VG9CYWNraW5n
Q29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVTYW1wbGVySW1w
bC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVT
YW1wbGVySW1wbC5oCmluZGV4IGFmNDM2Y2MwNmY2ZjA2MDEwZDljODJjZjExOGU2MmE0MGMxMzgw
OWEuLjIzOTEwMDNmY2Y5ZTMxOTdjM2EyNTQ0NjU0NGQyYjZkYjk0OTJhMzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVU2FtcGxl
ckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBs
L1dlYkdQVVNhbXBsZXJJbXBsLmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFBBTDo6V2Vi
R1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBTYW1wbGVySW1w
bCBmaW5hbCA6IHB1YmxpYyBTYW1wbGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFNhbXBsZXJJbXBsPiBjcmVhdGUoV0dQVVNhbXBsZXIg
c2FtcGxlciwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0
KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2Vi
R1BVL0ltcGwvV2ViR1BVU2hhZGVyTW9kdWxlSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVTaGFkZXJNb2R1bGVJbXBsLmgKaW5kZXggMjAx
NTZkZWM2YTFjODY5YzY4MWI3NWRiMDg1YzIxZWY2YjVmYTY2NC4uMzRiZTFmZTQ0YmZhODFiZDY5
YTViYWY1MGMxZWI2YTVkNDJkZGUxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVTaGFkZXJNb2R1bGVJbXBsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVTaGFkZXJNb2R1
bGVJbXBsLmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNz
IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBTaGFkZXJNb2R1bGVJbXBsIGZpbmFs
IDogcHVibGljIFNoYWRlck1vZHVsZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZjxTaGFkZXJNb2R1bGVJbXBsPiBjcmVhdGUoV0dQVVNoYWRl
ck1vZHVsZSBzaGFkZXJNb2R1bGUsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9C
YWNraW5nQ29udGV4dCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVRleHR1cmVJbXBsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVRleHR1cmVJbXBsLmgKaW5kZXgg
MzM4M2VhMTM2OTRjYzlmMDc5NDUzMGUwOGIwYjJjMjRhNTZjZDhhMC4uZjlhZjM0MTA1MWEyMzA3
NTJmYmE1YmUzZTAxNmZiYmEyM2M5NjgwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVUZXh0dXJlSW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVVGV4dHVyZUltcGwu
aApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgUEFMOjpXZWJHUFUgewogY2xhc3MgQ29udmVy
dFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFRleHR1cmVJbXBsIGZpbmFsIDogcHVibGljIFRl
eHR1cmUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRp
YyBSZWY8VGV4dHVyZUltcGw+IGNyZWF0ZShXR1BVVGV4dHVyZSB0ZXh0dXJlLCBUZXh0dXJlRm9y
bWF0IGZvcm1hdCwgVGV4dHVyZURpbWVuc2lvbiBkaW1lbnNpb24sIENvbnZlcnRUb0JhY2tpbmdD
b250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVRleHR1cmVWaWV3
SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJH
UFVUZXh0dXJlVmlld0ltcGwuaAppbmRleCA2ZDg1NjgzMDg3ZGE2MTdlMTYzZWI4NWNmMzVlODE2
NjhjNWVmYzU2Li40ODgyYTQwYTVjMGNmYTBhMjg0MTVhODE1ODdiM2QxMDJhZTc2YTA5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQ
VVRleHR1cmVWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3Mv
V2ViR1BVL0ltcGwvV2ViR1BVVGV4dHVyZVZpZXdJbXBsLmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFt
ZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBj
bGFzcyBUZXh0dXJlVmlld0ltcGwgZmluYWwgOiBwdWJsaWMgVGV4dHVyZVZpZXcgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8VGV4dHVyZVZp
ZXdJbXBsPiBjcmVhdGUoV0dQVVRleHR1cmVWaWV3IHRleHR1cmVWaWV3LCBDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWUuY3BwCmluZGV4IGMxM2Y2Y2Y5ZDZlMTc4N2VhNjA1ODlmZTQ2YTJlMTc3ZDkzNzQ4MWQuLjIy
YjAwZGQ5NGRhZmFmMjU1MTg4OTk5OTY2ZjFmM2JmZjM0MDA0ODAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9t
ZS5jcHAKQEAgLTU0Niw2ICs1NDYsMTEgQEAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBDaHJv
bWU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEcKIH0KICNl
bmRpZgogCitSZWZQdHI8UEFMOjpXZWJHUFU6OkdQVT4gQ2hyb21lOjpjcmVhdGVHUFVGb3JXZWJH
UFUoKSBjb25zdAoreworICAgIHJldHVybiBtX2NsaWVudC5jcmVhdGVHUFVGb3JXZWJHUFUoKTsK
K30KKwogUGxhdGZvcm1EaXNwbGF5SUQgQ2hyb21lOjpkaXNwbGF5SUQoKSBjb25zdAogewogICAg
IHJldHVybiBtX3BhZ2UuZGlzcGxheUlEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAppbmRleCAzNzIxODJm
ZWM2MjBmZWQ5ZGZlNzNkYTg5MjI0NmFmOTEzYzU1MzNlLi4xMjQzOWMxMGNjM2ZjMjYyODQ5Yzc3
OGZlYTY5NmU4ZmQ0MjkzNTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9t
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKQEAgLTMyLDYgKzMyLDEwIEBA
CiBPQkpDX0NMQVNTIE5TVmlldzsKICNlbmRpZgogCituYW1lc3BhY2UgUEFMOjpXZWJHUFUgewor
Y2xhc3MgR1BVOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENocm9tZUNsaWVu
dDsKQEAgLTkxLDYgKzk1LDggQEAgcHVibGljOgogICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRH
TD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzJikgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKIAorICAgIFJlZlB0cjxQQUw6OldlYkdQVTo6
R1BVPiBjcmVhdGVHUFVGb3JXZWJHUFUoKSBjb25zdDsKKwogICAgIFBsYXRmb3JtRGlzcGxheUlE
IGRpc3BsYXlJRCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hh
bmdlKFBsYXRmb3JtRGlzcGxheUlELCBzdGQ6Om9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4pIG92
ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCBmMjM5MTQ1NzA2ZDBi
MTkwNTQxMGFkOGU2NmNmZTk5MDBjZGM3NmVlLi5mMTE2NDM5MGIzOGFmODEzMDkyN2I1ZjMzMWUz
M2IwZjgxYTk0MGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTUyLDYgKzUy
LDcgQEAKICNpbmNsdWRlICJTZWFyY2hQb3B1cE1lbnUuaCIKICNpbmNsdWRlICJXZWJDb3JlS2V5
Ym9hcmRVSU1vZGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlVHlwZXMuaD4K
KyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVS5oPgogI2luY2x1ZGUgPHd0Zi9B
c3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTM1Niw2ICszNTcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0
IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlE
KSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKIAorICAgIHZpcnR1YWwgUmVmUHRy
PFBBTDo6V2ViR1BVOjpHUFU+IGNyZWF0ZUdQVUZvcldlYkdQVSgpIGNvbnN0IHsgcmV0dXJuIG51
bGxwdHI7IH0KKwogICAgIC8vIFBhc3MgbnVsbHB0ciBhcyB0aGUgR3JhcGhpY3NMYXllciB0byBk
ZXRhdGNoIHRoZSByb290IGxheWVyLgogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hSb290R3JhcGhp
Y3NMYXllcihGcmFtZSYsIEdyYXBoaWNzTGF5ZXIqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGF0
dGFjaFZpZXdPdmVybGF5R3JhcGhpY3NMYXllcihHcmFwaGljc0xheWVyKikgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9OYXZpZ2F0b3IuY3BwCmluZGV4IDZmMTliMmViM2JlNDc5ODY1ZTVjNTQ0ZWQwNDVjZTQ3
YzRmZDEzYmMuLmY1YmQ0YjBhNmVmMmI1MGU3ZDI0ZmM5MWRkYzc3MDBmOWUyMDM5Y2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL05hdmlnYXRvci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJGcmFt
ZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGll
bnQuaCIKKyNpbmNsdWRlICJHUFUuaCIKICNpbmNsdWRlICJHZW9sb2NhdGlvbi5oIgogI2luY2x1
ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiTG9hZGVyU3RyYXRlZ3kuaCIK
QEAgLTM0Nyw0ICszNDgsMjQgQEAgdm9pZCBOYXZpZ2F0b3I6OmdldFN0b3JhZ2VVcGRhdGVzKCkK
IHsKIH0KIAorR1BVKiBOYXZpZ2F0b3I6OmdwdSgpCit7CisgICAgaWYgKCFtX2dwdUZvcldlYkdQ
VSkgeworICAgICAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CisgICAgICAgIGlmICgh
ZnJhbWUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgYXV0byogcGFnZSA9
IGZyYW1lLT5wYWdlKCk7CisgICAgICAgIGlmICghcGFnZSkKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICBhdXRvIGdwdSA9IHBhZ2UtPmNocm9tZSgpLmNyZWF0ZUdQVUZvcldl
YkdQVSgpOworICAgICAgICBpZiAoIWdwdSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgICAgIG1fZ3B1Rm9yV2ViR1BVID0gR1BVOjpjcmVhdGUoKTsKKyAgICAgICAgbV9ncHVG
b3JXZWJHUFUtPnNldEJhY2tpbmcoKmdwdSk7CisgICAgfQorCisgICAgcmV0dXJuIG1fZ3B1Rm9y
V2ViR1BVLmdldCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZp
Z2F0b3IuaAppbmRleCBiZGQwNDY0N2JkMjg3YjY2NmY2ZGE3MzUxMGU1ZDNkMmE3ZjUxZmQ4Li5i
YWM0OWIzNDExYmRjOGM2Y2VkYjU4MmIzOWI2OTQzNGEwZDk0NDYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2
aWdhdG9yLmgKQEAgLTY0LDYgKzY0LDggQEAgcHVibGljOgogICAgIGludCBtYXhUb3VjaFBvaW50
cygpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICNlbmRpZgogCisgICAgR1BVKiBncHUoKTsKKwogcHJp
dmF0ZToKICAgICB2b2lkIHNob3dTaGFyZURhdGEoRXhjZXB0aW9uT3I8U2hhcmVEYXRhV2l0aFBh
cnNlZFVSTCY+LCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKICAgICBleHBsaWNpdCBOYXZpZ2F0
b3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIERPTVdpbmRvdyYpOwpAQCAtNzYsNSArNzgsNiBA
QCBwcml2YXRlOgogICAgIG11dGFibGUgUmVmUHRyPERPTU1pbWVUeXBlQXJyYXk+IG1fbWltZVR5
cGVzOwogICAgIG11dGFibGUgU3RyaW5nIG1fdXNlckFnZW50OwogICAgIG11dGFibGUgU3RyaW5n
IG1fcGxhdGZvcm07CisgICAgUmVmUHRyPEdQVT4gbV9ncHVGb3JXZWJHUFU7CiB9OwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL05hdmlnYXRvckJhc2UuaAppbmRleCBiNTEyMmE0YmRhZTMwNjlhZWIzN2ZkYWJj
MWE2ZDY2NGEyYzQ2Y2VlLi5kNWNiNTZlMzM3YWE0YTRkNGFhMjY0YWVhNzJmMWM2NDdhZGNjYTBj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJhc2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJhc2UuaApAQCAtNjMsNyArNjMsNiBAQCBwdWJs
aWM6CiAKICAgICBTdG9yYWdlTWFuYWdlciYgc3RvcmFnZSgpOwogICAgIFdlYkxvY2tNYW5hZ2Vy
JiBsb2NrcygpOwotICAgIEdQVSYgZ3B1KCkgeyByZXR1cm4gKm1fZ3B1Rm9yV2ViR1BVOyB9Owog
CiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgTmF2aWdhdG9yQmFzZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0Kik7CkBAIC03MSw3ICs3MCw2IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgUmVm
UHRyPFN0b3JhZ2VNYW5hZ2VyPiBtX3N0b3JhZ2VNYW5hZ2VyOwogICAgIFJlZlB0cjxXZWJMb2Nr
TWFuYWdlcj4gbV93ZWJMb2NrTWFuYWdlcjsKLSAgICBSZWZQdHI8R1BVPiBtX2dwdUZvcldlYkdQ
VTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvV29ya2VyTmF2aWdhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvV29ya2VyTmF2aWdhdG9yLmNwcAppbmRleCA1NWRlMDA0YjAwMDQ0ZGQzZGFkMzQ1Mjc3MzQ4
MGNmOGFlMWFlNDU3Li4wMDQxMjRmZGJiMmY3ZWNkNWQ4MTc1MzIwNWQ4ZTVjNDU5OWNjNTFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dvcmtlck5hdmlnYXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9Xb3JrZXJOYXZpZ2F0b3IuY3BwCkBAIC0yNyw2ICsyNyw4IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV29ya2VyTmF2aWdhdG9yLmgiCiAKKyNp
bmNsdWRlICJHUFUuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXb3JrZXJOYXZpZ2F0b3I6
Oldvcmtlck5hdmlnYXRvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09ubGluZSkKQEAgLTQ2LDQgKzQ4LDE0IEBAIGJvb2wg
V29ya2VyTmF2aWdhdG9yOjpvbkxpbmUoKSBjb25zdAogICAgIHJldHVybiBtX2lzT25saW5lOwog
fQogCitHUFUqIFdvcmtlck5hdmlnYXRvcjo6Z3B1KCkKK3sKKyAgICBpZiAoIW1fZ3B1Rm9yV2Vi
R1BVKSB7CisgICAgICAgIC8vIEZJWE1FOiBTdGFydCB0aGUgcHJvY2VzcyBvZiBzZXR0aW5nIHRo
ZSBiYWNraW5nLgorICAgICAgICBtX2dwdUZvcldlYkdQVSA9IEdQVTo6Y3JlYXRlKCk7CisgICAg
fQorCisgICAgcmV0dXJuIG1fZ3B1Rm9yV2ViR1BVLmdldCgpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dvcmtlck5hdmlnYXRv
ci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Xb3JrZXJOYXZpZ2F0b3IuaAppbmRleCA0NWVjZjY2
YzdkMjBjODJiZDUyY2Y1NWQxZmI5NGE4YzMyYjRiNDUwLi5jNTdiZmY0YWU5ODQxYjVlNTllMTY1
Yzg2OWEzNWZjMGFkNzU2MWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dvcmtl
ck5hdmlnYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV29ya2VyTmF2aWdhdG9yLmgK
QEAgLTM5LDExICszOSwxNCBAQCBwdWJsaWM6CiAgICAgYm9vbCBvbkxpbmUoKSBjb25zdCBmaW5h
bDsKICAgICB2b2lkIHNldElzT25saW5lKGJvb2wgaXNPbmxpbmUpIHsgbV9pc09ubGluZSA9IGlz
T25saW5lOyB9CiAKKyAgICBHUFUqIGdwdSgpOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdv
cmtlck5hdmlnYXRvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJiwgYm9v
bCBpc09ubGluZSk7CiAKICAgICBTdHJpbmcgbV91c2VyQWdlbnQ7CiAgICAgYm9vbCBtX2lzT25s
aW5lOworICAgIFJlZlB0cjxHUFU+IG1fZ3B1Rm9yV2ViR1BVOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXggYzMyOTc0YTg0YjJhNjY5NDA3MzhmMGQ0
ZjNjMmJmOWU2MTBiYzAyYi4uODJhYTVmMjJkZDcyMGMxOTE4NDZhOTQyYTM5MTRjYmZlYWM4NmM3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC05Miw2ICs5Miw3IEBAIHNldChXZWJLaXRfSU5DTFVE
RV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVF9ESVJ9L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24i
CiAgICAgIiR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vzcy9HUFUiCiAgICAgIiR7V0VCS0lUX0RJUn0v
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MiCisgICAgIiR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvV2ViR1BVIgogICAgICIke1dFQktJVF9ESVJ9L1dlYlByb2Nlc3MvR1BVL21l
ZGlhIgogICAgICIke1dFQktJVF9ESVJ9L1dlYlByb2Nlc3MvR1BVL3dlYnJ0YyIKICAgICAiJHtX
RUJLSVRfRElSfS9XZWJQcm9jZXNzL0ljb25EYXRhYmFzZSIKQEAgLTI2MSw2ICsyNjIsOCBAQCBz
ZXQoV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAgICAgV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eQogICAgIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eQogCisgICAgV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5CisKICAgICBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVBdWRpb0hhcmR3YXJlTGlzdGVuZXIKICAgICBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBs
YXllclByaXZhdGVSZW1vdGUKICAgICBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVNvdXJjZVBy
aXZhdGVSZW1vdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ29uZmlndXJhdGlvbnMvQmFz
ZVRhcmdldC54Y2NvbmZpZyBiL1NvdXJjZS9XZWJLaXQvQ29uZmlndXJhdGlvbnMvQmFzZVRhcmdl
dC54Y2NvbmZpZwppbmRleCAyMDIxNTg1YmIwYzRhZWFjZTE3MWFiMmViOTdlM2UxZTZiZjBiNzk1
Li4zYjFjMmMzNjE5Mjg1M2QzN2I5MDgxMzdhZmNhOGRiZGY2MDVkMjQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL0Jhc2VUYXJnZXQueGNjb25maWcKKysrIGIvU291
cmNlL1dlYktpdC9Db25maWd1cmF0aW9ucy9CYXNlVGFyZ2V0LnhjY29uZmlnCkBAIC00Nyw3ICs0
Nyw3IEBAIEdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSAkKERFQlVHX0RFRklORVMpICQo
V0tfRU5BQkxFX0VYUEVSSU1FTlRBTF9GRUFUVVJFCiBXRUJLSVRBRERJVElPTlNfSEVBREVSX1NF
QVJDSF9QQVRIUyA9ICQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5jbHVkZS9XZWJL
aXRBZGRpdGlvbnMgJChTREtST09UKS91c3IvbG9jYWwvaW5jbHVkZS9XZWJLaXRBZGRpdGlvbnM7
CiBMSUJXRUJSVENfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICQoQlVJTFRfUFJPRFVDVFNfRElSKS91
c3IvbG9jYWwvaW5jbHVkZS93ZWJydGMgJChTREtST09UKS91c3IvbG9jYWwvaW5jbHVkZS93ZWJy
dGM7CiAKLUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvdXNyL2xv
Y2FsL2luY2x1ZGUgIiQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9Gb3J3YXJkaW5nSGVh
ZGVycyIgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIgJChXRUJL
SVRBRERJVElPTlNfSEVBREVSX1NFQVJDSF9QQVRIUykgJChMSUJXRUJSVENfSEVBREVSX1NFQVJD
SF9QQVRIUykgJChTUkNST09UKSAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpOworSEVBREVSX1NFQVJD
SF9QQVRIUyA9ICQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5jbHVkZSAiJChXRUJD
T1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0ZvcndhcmRpbmdIZWFkZXJzIiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0MiAiJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vz
ci9sb2NhbC9pbmNsdWRlL3BhbC9ncmFwaGljcy9XZWJHUFUiICQoV0VCS0lUQURESVRJT05TX0hF
QURFUl9TRUFSQ0hfUEFUSFMpICQoTElCV0VCUlRDX0hFQURFUl9TRUFSQ0hfUEFUSFMpICQoU1JD
Uk9PVCkgJChIRUFERVJfU0VBUkNIX1BBVEhTKTsKIAogT1RIRVJfQ0ZMQUdTID0gJChpbmhlcml0
ZWQpIC1pZnJhbWV3b3JrICQoU0RLUk9PVCkkKFNZU1RFTV9MSUJSQVJZX0RJUikvUHJpdmF0ZUZy
YW1ld29ya3M7CiBPVEhFUl9DUExVU1BMVVNGTEFHUyA9ICQoT1RIRVJfQ0ZMQUdTKSAtaXN5c3Rl
bSAkKFNES1JPT1QpL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU3lzdGVtLmZyYW1ld29yay9Q
cml2YXRlSGVhZGVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMt
aW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNm
aWxlbGlzdAppbmRleCA3OTlhZDc1YjJhMWFiMjEwZDA4MWQ1OWZkNWI0YjAyZDhiNmRhZWI0Li5h
Nzg5N2I5NjFhMzlkYWY5MjdjNTRkMTJlZmEzYzg5NzE0OTdiMDJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0xNzQsNiArMTc0LDcgQEAg
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2Vy
Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29u
bmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJ
UikvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1l
c3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlR1BVUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BV
L21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJ
UikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlLm1lc3NhZ2Vz
LmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0hhcmR3
YXJlTGlzdGVuZXIubWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
LW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IGE2NWZjMzYxODRjZmY4Zjc3NTJkNjg1Mjc5ODYxNTRi
NmFmODAxYzQuLjkzYTYxNDZkNmIxMzljYjhhMTZhMTcxYmI3N2Q0NGJkM2I1OGI2NWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysr
IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMjQy
LDYgKzI0Miw5IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
L1JlbW90ZUV4dGVybmFsVGV4dHVyZU1lc3NhZ2VzUmVwbGllCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHUFVNZXNzYWdlUmVjZWl2ZXIuY3BwCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHUFVNZXNz
YWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1v
dGVHUFVNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvUmVtb3RlR1BVUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHUFVQcm94eU1lc3NhZ2Vz
LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdQ
VVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZVJlY2VpdmVyLmNwcAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9SZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzUmVwbGllcy5oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZGRlNWM2M2ZlM2Y0YjMxNTI5N2RiNGI2ODQ4OWMy
OWRlNWJiYTQ1Yy4uNDU3NDM4NjVhNGFjODMyZDNlNWRiZDRhZmQ0MzhiZDc1MzJjZDkyMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTg2LDYgKzE4Niw3IEBAIE1FU1NBR0VfUkVD
RUlWRVJTID0gXAogCVdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uIFwKIAlXZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgXAogCVdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgXAorCVdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFVQcm94eSBcCiAJV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcyBcCiAJV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllciBcCiAJV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA1MmFlODgxOTM3MWEzZWRkNjBjZDcyMGNk
MDg0YmIzYzg1N2ZhN2NkLi40NmYwNjBhYzRkMWE4ZTBkMjAzZjdiMGQ3Yzc3YmJmMDI2M2VjZmI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9I
YXJkd2FyZUxpc3RlbmVyUHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXJNZXNzYWdlcy5oIgor
I2luY2x1ZGUgIlJlbW90ZUdQVS5oIgogI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oIgog
I2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKQEAgLTYz
LDYgKzY0LDcgQEAKICNpbmNsdWRlICJSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0
aW9uLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2Vi
RXJyb3JzLmgiCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0SGVhcC5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTG9nSW5pdGlhbGl6YXRpb24uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmg+CkBAIC01
NTUsNiArNTU3LDE5IEBAIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVsZWFzZUdy
YXBoaWNzQ29udGV4dEdMRm9yVGVzdGluZyhHcmFwaGljc0NvbnRlCiB9CiAjZW5kaWYKIAordm9p
ZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVSZW1vdGVHUFUoV2ViR1BVSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllciwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtKQorewor
ICAgIGF1dG8gaXQgPSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAuZmluZChyZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllcik7CisgICAgaWYgKGl0ID09IG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZE1hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8qIHJlbmRlcmluZ0JhY2tlbmQg
PSBpdC0+dmFsdWUuZ2V0KCk7CisKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmVtb3RlR1BVTWFw
LmVuc3VyZShpZGVudGlmaWVyLCBbJl0oKSB7CisgICAgICAgIHJldHVybiBJUEM6OlNjb3BlZEFj
dGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUgeyBSZW1vdGVHUFU6OmNyZWF0ZShpZGVudGlmaWVyLCAq
dGhpcywgKnJlbmRlcmluZ0JhY2tlbmQsIFdURk1vdmUoc3RyZWFtKSkgfTsKKyAgICB9KTsKKyAg
ICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOworfQorCiB2
b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNsZWFyTm93UGxheWluZ0luZm8oKQogewog
ICAgIG1faXNBY3RpdmVOb3dQbGF5aW5nUHJvY2VzcyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggYWU3
OTUwNTI1ODYwZGUzY2Y2YTJiMTc4OGZlMzVhNWVhYmRhNTY3ZC4uZTQzY2Y3NjQxZmRjNjk5YTQ5
ZDZlNzQ3NjUxMjdjYzg3NDBkYTM3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0zMiw5ICszMiwxMSBAQAogI2lu
Y2x1ZGUgIk1lc3NhZ2VSZWNlaXZlck1hcC5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvSGFyZHdh
cmVMaXN0ZW5lcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb1Nlc3Npb25JZGVu
dGlmaWVyLmgiCisjaW5jbHVkZSAiUmVtb3RlR1BVLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVtb3Rl
Q29tbWFuZExpc3RlbmVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5o
IgorI2luY2x1ZGUgIldlYkdQVUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0xpYldl
YlJUQ0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vd1BsYXlpbmdNYW5hZ2VyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgpAQCAtMjEyLDYgKzIxNCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgUmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsK
ICAgICB2b2lkIHJlbGVhc2VHcmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOwogI2VuZGlmCisgICAgdm9pZCBjcmVhdGVSZW1vdGVHUFUoV2ViR1BVSWRlbnRpZmll
ciwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
ciYmKTsKIAogICAgIHZvaWQgY2xlYXJOb3dQbGF5aW5nSW5mbygpOwogICAgIHZvaWQgc2V0Tm93
UGxheWluZ0luZm8oV2ViQ29yZTo6Tm93UGxheWluZ0luZm8mJik7CkBAIC0zMDgsNiArMzExLDgg
QEAgcHJpdmF0ZToKICAgICB1c2luZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcCA9IEhhc2hN
YXA8R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VS
ZWNlaXZlUXVldWU8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+PjsKICAgICBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTE1hcCBtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwOwogI2VuZGlmCisgICAg
dXNpbmcgUmVtb3RlR1BVTWFwID0gSGFzaE1hcDxXZWJHUFVJZGVudGlmaWVyLCBJUEM6OlNjb3Bl
ZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlR1BVPj47CisgICAgUmVtb3RlR1BVTWFw
IG1fcmVtb3RlR1BVTWFwOwogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4gbV9jZG1GYWN0b3J5UHJveHk7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMzkxYzE5ZmU5ZDg1MTRmNzRmYzFh
NDM4ODY0OTBiNmFhZDNhNWFlNS4uOTE5YjVkMzBlMTBmZTUwYTliMGE2OWQyOTlhMDZlODMwYTU4
OTRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTI5LDYgKzI5LDcgQEAgbWVz
c2FnZXMgLT4gR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBXYW50c0Rpc3BhdGNoTWVzc2FnZSB7
CiAgICAgdm9pZCBDcmVhdGVHcmFwaGljc0NvbnRleHRHTChzdHJ1Y3QgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIFdlYktpdDo6R3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgV2ViS2l0OjpSZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgSVBDOjpTdHJl
YW1Db25uZWN0aW9uQnVmZmVyIHN0cmVhbSkKICAgICB2b2lkIFJlbGVhc2VHcmFwaGljc0NvbnRl
eHRHTChXZWJLaXQ6OkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpCiAjZW5kaWYKKyAgICB2b2lkIENyZWF0ZVJlbW90ZUdQVShXZWJLaXQ6Oldl
YkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRp
ZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVm
ZmVyIHN0cmVhbSkKICAgICB2b2lkIENsZWFyTm93UGxheWluZ0luZm8oKQogICAgIHZvaWQgU2V0
Tm93UGxheWluZ0luZm8oc3RydWN0IFdlYkNvcmU6Ok5vd1BsYXlpbmdJbmZvIG5vd1BsYXlpbmdJ
bmZvKQogI2lmIFVTRShBVURJT19TRVNTSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVBZGFwdGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQWRhcHRlci5jcHAKaW5kZXggNDFi
ZGYxNjUyMDZiMDk2OTlhYjE1MzYyMWFkM2MyZWUxZTg2ODg0OC4uZmFjNjRjNzU1ZmRjZDkxYTYw
MjRlNGY2NGQ4ZDBjODQ5NWRlNjU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVBZGFwdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUFkYXB0ZXIuY3BwCkBAIC0yOCwxMCAr
MjgsMTEgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZUFk
YXB0ZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZURldmljZS5oIgorI2luY2x1ZGUgIlN0
cmVhbVNlcnZlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJHUFVEZXZpY2VEZXNjcmlwdG9y
LmgiCiAjaW5jbHVkZSAiV2ViR1BVT2JqZWN0SGVhcC5oIgotI2luY2x1ZGUgIldlYkdQVU9iamVj
dFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiV2ViR1BVU3VwcG9ydGVkRmVhdHVyZXMuaCIKICNpbmNs
dWRlICJXZWJHUFVTdXBwb3J0ZWRMaW1pdHMuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2Vi
R1BVL1dlYkdQVUFkYXB0ZXIuaD4KQEAgLTM5LDM0ICs0MCwzNCBAQAogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotUmVtb3RlQWRhcHRlcjo6UmVtb3RlQWRhcHRlcihQQUw6OldlYkdQVTo6QWRhcHRl
ciYgYWRhcHRlciwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQ
VTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQor
UmVtb3RlQWRhcHRlcjo6UmVtb3RlQWRhcHRlcihQQUw6OldlYkdQVTo6QWRhcHRlciYgYWRhcHRl
ciwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBSZWY8SVBDOjpTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uPiYmIHN0cmVhbUNvbm5lY3Rpb24sIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmll
cikKICAgICA6IG1fYmFja2luZyhhZGFwdGVyKQotICAgICwgbV9vYmplY3RSZWdpc3RyeShvYmpl
Y3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQorICAgICwgbV9zdHJl
YW1Db25uZWN0aW9uKFdURk1vdmUoc3RyZWFtQ29ubmVjdGlvbikpCiAgICAgLCBtX2lkZW50aWZp
ZXIoaWRlbnRpZmllcikKIHsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LmFkZE9iamVjdChtX2lkZW50
aWZpZXIsIG1fYmFja2luZyk7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdGFydFJlY2Vpdmlu
Z01lc3NhZ2VzKCp0aGlzLCBNZXNzYWdlczo6UmVtb3RlQWRhcHRlcjo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKLVJlbW90ZUFkYXB0ZXI6On5S
ZW1vdGVBZGFwdGVyKCkKK1JlbW90ZUFkYXB0ZXI6On5SZW1vdGVBZGFwdGVyKCkgPSBkZWZhdWx0
OworCit2b2lkIFJlbW90ZUFkYXB0ZXI6OnN0b3BMaXN0ZW5pbmdGb3JJUEMoKQogewotICAgIG1f
b2JqZWN0UmVnaXN0cnkucmVtb3ZlT2JqZWN0KG1faWRlbnRpZmllcik7CisgICAgbV9zdHJlYW1D
b25uZWN0aW9uLT5zdG9wUmVjZWl2aW5nTWVzc2FnZXMoTWVzc2FnZXM6OlJlbW90ZUFkYXB0ZXI6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCiB2
b2lkIFJlbW90ZUFkYXB0ZXI6OnJlcXVlc3REZXZpY2UoY29uc3QgV2ViR1BVOjpEZXZpY2VEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdURjo6Q29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVzJiYsIFdlYkdQVTo6
U3VwcG9ydGVkTGltaXRzJiYpPiYmIGNhbGxiYWNrKQogewotICAgIGF1dG8gY29udmVydGVkRGVz
Y3JpcHRvciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3Ip
OworICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0RnJv
bUJhY2tpbmcoZGVzY3JpcHRvcik7CiAgICAgQVNTRVJUKGNvbnZlcnRlZERlc2NyaXB0b3IpOwog
ICAgIGlmICghY29udmVydGVkRGVzY3JpcHRvcikgewogICAgICAgICBjYWxsYmFjayh7IHsgfSB9
LCB7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9iYWNraW5nLT5yZXF1ZXN0
RGV2aWNlKCpjb252ZXJ0ZWREZXNjcmlwdG9yLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KSwgd2Vha09iamVjdEhlYXAgPSBXZWFrUHRyPFdlYkdQVTo6T2JqZWN0SGVhcD4obV9vYmplY3RI
ZWFwKSwgb2JqZWN0UmVnaXN0cnkgPSBtX29iamVjdFJlZ2lzdHJ5LCBpZGVudGlmaWVyXSAoUmVm
PFBBTDo6V2ViR1BVOjpEZXZpY2U+JiYgZGV2aWNlKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCF3
ZWFrT2JqZWN0SGVhcCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgYXV0byByZW1vdGVE
ZXZpY2UgPSBSZW1vdGVEZXZpY2U6OmNyZWF0ZShkZXZpY2UsIG9iamVjdFJlZ2lzdHJ5LCAqd2Vh
a09iamVjdEhlYXAsIGlkZW50aWZpZXIpOwotICAgICAgICB3ZWFrT2JqZWN0SGVhcC0+YWRkT2Jq
ZWN0KHJlbW90ZURldmljZSk7CisgICAgbV9iYWNraW5nLT5yZXF1ZXN0RGV2aWNlKCpjb252ZXJ0
ZWREZXNjcmlwdG9yLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgb2JqZWN0SGVhcCA9
IFJlZiB7IG1fb2JqZWN0SGVhcCB9LCBzdHJlYW1Db25uZWN0aW9uID0gbV9zdHJlYW1Db25uZWN0
aW9uLmNvcHlSZWYoKSwgaWRlbnRpZmllciA9IG1faWRlbnRpZmllcl0gKFJlZjxQQUw6OldlYkdQ
VTo6RGV2aWNlPiYmIGRldmljZSkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gcmVtb3RlRGV2aWNl
ID0gUmVtb3RlRGV2aWNlOjpjcmVhdGUoZGV2aWNlLCBvYmplY3RIZWFwLCBXVEZNb3ZlKHN0cmVh
bUNvbm5lY3Rpb24pLCBpZGVudGlmaWVyKTsKKyAgICAgICAgb2JqZWN0SGVhcC0+YWRkT2JqZWN0
KGlkZW50aWZpZXIsIHJlbW90ZURldmljZSk7CiAgICAgICAgIGNvbnN0IGF1dG8mIGZlYXR1cmVz
ID0gZGV2aWNlLT5mZWF0dXJlcygpOwogICAgICAgICBjb25zdCBhdXRvJiBsaW1pdHMgPSBkZXZp
Y2UtPmxpbWl0cygpOwogICAgICAgICBjYWxsYmFjayhXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVz
IHsgZmVhdHVyZXMuZmVhdHVyZXMoKSB9LCBXZWJHUFU6OlN1cHBvcnRlZExpbWl0cyB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUFk
YXB0ZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
QWRhcHRlci5oCmluZGV4IDFlYTJjMTAxODZlMWI2Zjg4YjBhMzJjZTA0Mjc4NWJmYzI4YWYzMmEu
LmEzZjMzY2IwNTk4MDRkY2RjNDFhZjhlNGNkYzg0Y2I1Y2ZjNmRlZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQWRhcHRlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQWRhcHRl
ci5oCkBAIC0zNiwyOSArMzYsMzUgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNzIEFk
YXB0ZXI7CiB9CiAKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgU3RyZWFtU2VydmVyQ29ubmVjdGlv
bjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogc3RydWN0
IERldmljZURlc2NyaXB0b3I7CiBjbGFzcyBPYmplY3RIZWFwOwotY2xhc3MgT2JqZWN0UmVnaXN0
cnk7CiBzdHJ1Y3QgU3VwcG9ydGVkRmVhdHVyZXM7CiBzdHJ1Y3QgU3VwcG9ydGVkTGltaXRzOwog
fQogCiBjbGFzcyBSZW1vdGVBZGFwdGVyIGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2Fn
ZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPFJlbW90ZUFkYXB0ZXI+IGNyZWF0ZShQQUw6OldlYkdQVTo6QWRhcHRlciYgYWRh
cHRlciwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2Jq
ZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIHN0
YXRpYyBSZWY8UmVtb3RlQWRhcHRlcj4gY3JlYXRlKFBBTDo6V2ViR1BVOjpBZGFwdGVyJiBhZGFw
dGVyLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFJlZjxJUEM6OlN0cmVhbVNlcnZl
ckNvbm5lY3Rpb24+JiYgc3RyZWFtQ29ubmVjdGlvbiwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQWRhcHRlcihh
ZGFwdGVyLCBvYmplY3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVBZGFwdGVyKGFkYXB0ZXIsIG9iamVjdEhlYXAs
IFdURk1vdmUoc3RyZWFtQ29ubmVjdGlvbiksIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB2
aXJ0dWFsIH5SZW1vdGVBZGFwdGVyKCk7CiAKLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIE9i
amVjdFJlZ2lzdHJ5OworICAgIHZvaWQgc3RvcExpc3RlbmluZ0ZvcklQQygpOwogCi0gICAgUmVt
b3RlQWRhcHRlcihQQUw6OldlYkdQVTo6QWRhcHRlciYsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkm
LCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKKyAgICBQQUw6OldlYkdQ
VTo6QWRhcHRlciYgYmFja2luZygpIHsgcmV0dXJuIG1fYmFja2luZzsgfQorCitwcml2YXRlOgor
ICAgIFJlbW90ZUFkYXB0ZXIoUEFMOjpXZWJHUFU6OkFkYXB0ZXImLCBXZWJHUFU6Ok9iamVjdEhl
YXAmLCBSZWY8SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiYmLCBXZWJHUFVJZGVudGlmaWVy
KTsKIAogICAgIFJlbW90ZUFkYXB0ZXIoY29uc3QgUmVtb3RlQWRhcHRlciYpID0gZGVsZXRlOwog
ICAgIFJlbW90ZUFkYXB0ZXIoUmVtb3RlQWRhcHRlciYmKSA9IGRlbGV0ZTsKQEAgLTcwLDggKzc2
LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlcXVlc3REZXZpY2UoY29uc3QgV2ViR1BVOjpEZXZp
Y2VEZXNjcmlwdG9yJiwgV2ViR1BVSWRlbnRpZmllciwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXMmJiwgV2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHMm
Jik+JiYpOwogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpBZGFwdGVyPiBtX2JhY2tpbmc7Ci0gICAg
V2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgbV9vYmplY3RSZWdpc3RyeTsKICAgICBXZWJHUFU6Ok9i
amVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKKyAgICBSZWY8SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uPiBtX3N0cmVhbUNvbm5lY3Rpb247CiAgICAgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZp
ZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZUJpbmRHcm91cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cC5jcHAKaW5kZXggMDg1ZjQ5NTM4NGUzZWYzY2M0
NGE1MzJjNTY4ODViNDE5ZmY0MTc1ZC4uYzNiYmQ0YWE2ZmEwZjZkMDhlMTc0MTE3MGM0ZjdkNWMz
Mzk4MTEwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVCaW5kR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwLmNwcApAQCAtMjgsMjQgKzI4LDI3IEBACiAK
ICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVCaW5kR3JvdXBNZXNz
YWdlcy5oIgorI2luY2x1ZGUgIlN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJX
ZWJHUFVPYmplY3RIZWFwLmgiCi0jaW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIKICNp
bmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJpbmRHcm91cC5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotUmVtb3RlQmluZEdyb3VwOjpSZW1vdGVCaW5kR3JvdXAoUEFMOjpXZWJH
UFU6OkJpbmRHcm91cCYgYmluZEdyb3VwLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RS
ZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVy
IGlkZW50aWZpZXIpCitSZW1vdGVCaW5kR3JvdXA6OlJlbW90ZUJpbmRHcm91cChQQUw6OldlYkdQ
VTo6QmluZEdyb3VwJiBiaW5kR3JvdXAsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwg
UmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiBzdHJlYW1Db25uZWN0aW9uLCBXZWJH
UFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2JhY2tpbmcoYmluZEdyb3VwKQotICAg
ICwgbV9vYmplY3RSZWdpc3RyeShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChv
YmplY3RIZWFwKQorICAgICwgbV9zdHJlYW1Db25uZWN0aW9uKFdURk1vdmUoc3RyZWFtQ29ubmVj
dGlvbikpCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKLSAgICBtX29iamVjdFJl
Z2lzdHJ5LmFkZE9iamVjdChtX2lkZW50aWZpZXIsIG1fYmFja2luZyk7CisgICAgbV9zdHJlYW1D
b25uZWN0aW9uLT5zdGFydFJlY2VpdmluZ01lc3NhZ2VzKCp0aGlzLCBNZXNzYWdlczo6UmVtb3Rl
QmluZEdyb3VwOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKIH0KIAotUmVtb3RlQmluZEdyb3VwOjp+UmVtb3RlQmluZEdyb3VwKCkKK1JlbW90ZUJpbmRH
cm91cDo6flJlbW90ZUJpbmRHcm91cCgpID0gZGVmYXVsdDsKKwordm9pZCBSZW1vdGVCaW5kR3Jv
dXA6OnN0b3BMaXN0ZW5pbmdGb3JJUEMoKQogewotICAgIG1fb2JqZWN0UmVnaXN0cnkucmVtb3Zl
T2JqZWN0KG1faWRlbnRpZmllcik7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdG9wUmVjZWl2
aW5nTWVzc2FnZXMoTWVzc2FnZXM6OlJlbW90ZUJpbmRHcm91cDo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgUmVtb3RlQmluZEdyb3Vw
OjpzZXRMYWJlbChTdHJpbmcmJiBsYWJlbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwLmggYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cC5oCmluZGV4IGNlMTQw
OGM2N2Q1NDgxMmQ5ZGQ0YzE3ZTYzZGQwYjBiMjQ2NzBmNWYuLjVjY2UyNDBjZWRmOThmYWJkMDU3
NzVkM2Y5NGMyMWQ1NGM3MzM5OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwLmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXAuaApAQCAtMzYsMjYgKzM2
LDMyIEBAIG5hbWVzcGFjZSBQQUw6OldlYkdQVSB7CiBjbGFzcyBCaW5kR3JvdXA7CiB9CiAKK25h
bWVzcGFjZSBJUEMgeworY2xhc3MgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjsKK30KKwogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogY2xhc3MgT2JqZWN0SGVhcDsKLWNs
YXNzIE9iamVjdFJlZ2lzdHJ5OwogfQogCiBjbGFzcyBSZW1vdGVCaW5kR3JvdXAgZmluYWwgOiBw
dWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlQmluZEdyb3VwPiBjcmVhdGUo
UEFMOjpXZWJHUFU6OkJpbmRHcm91cCYgYmluZEdyb3VwLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5
JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxSZW1vdGVCaW5kR3JvdXA+IGNy
ZWF0ZShQQUw6OldlYkdQVTo6QmluZEdyb3VwJiBiaW5kR3JvdXAsIFdlYkdQVTo6T2JqZWN0SGVh
cCYgb2JqZWN0SGVhcCwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiBzdHJlYW1D
b25uZWN0aW9uLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVCaW5kR3JvdXAoYmluZEdyb3VwLCBvYmplY3RSZWdp
c3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBSZW1vdGVCaW5kR3JvdXAoYmluZEdyb3VwLCBvYmplY3RIZWFwLCBXVEZNb3ZlKHN0cmVh
bUNvbm5lY3Rpb24pLCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3Rl
QmluZEdyb3VwKCk7CiAKLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIE9iamVjdFJlZ2lzdHJ5
OworICAgIHZvaWQgc3RvcExpc3RlbmluZ0ZvcklQQygpOwogCi0gICAgUmVtb3RlQmluZEdyb3Vw
KFBBTDo6V2ViR1BVOjpCaW5kR3JvdXAmLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BV
OjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7CisgICAgUEFMOjpXZWJHUFU6OkJpbmRH
cm91cCYgYmFja2luZygpIHsgcmV0dXJuIG1fYmFja2luZzsgfQorCitwcml2YXRlOgorICAgIFJl
bW90ZUJpbmRHcm91cChQQUw6OldlYkdQVTo6QmluZEdyb3VwJiwgV2ViR1BVOjpPYmplY3RIZWFw
JiwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiwgV2ViR1BVSWRlbnRpZmllcik7
CiAKICAgICBSZW1vdGVCaW5kR3JvdXAoY29uc3QgUmVtb3RlQmluZEdyb3VwJikgPSBkZWxldGU7
CiAgICAgUmVtb3RlQmluZEdyb3VwKFJlbW90ZUJpbmRHcm91cCYmKSA9IGRlbGV0ZTsKQEAgLTY3
LDggKzczLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogICAg
IFJlZjxQQUw6OldlYkdQVTo6QmluZEdyb3VwPiBtX2JhY2tpbmc7Ci0gICAgV2ViR1BVOjpPYmpl
Y3RSZWdpc3RyeSYgbV9vYmplY3RSZWdpc3RyeTsKICAgICBXZWJHUFU6Ok9iamVjdEhlYXAmIG1f
b2JqZWN0SGVhcDsKKyAgICBSZWY8SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiBtX3N0cmVh
bUNvbm5lY3Rpb247CiAgICAgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZUJpbmRHcm91cExheW91dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZUJpbmRHcm91cExheW91dC5jcHAKaW5kZXggMGIxNmZmMjk4N2QxNTQyYTNh
YWEyYWVkMDY0MmVlYWYyZTdkNTE5Mi4uMmMyZTFhNDViOTliOWMxYzA1ZWQwNDUwMzVlMTI5NTJi
YzI4YWQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVCaW5kR3JvdXBMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwTGF5b3V0LmNwcApAQCAtMjgsMjQg
KzI4LDI3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVC
aW5kR3JvdXBMYXlvdXRNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlN0cmVhbVNlcnZlckNvbm5lY3Rp
b24uaCIKICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCi0jaW5jbHVkZSAiV2ViR1BVT2Jq
ZWN0UmVnaXN0cnkuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJpbmRH
cm91cExheW91dC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlQmluZEdyb3VwTGF5
b3V0OjpSZW1vdGVCaW5kR3JvdXBMYXlvdXQoUEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dCYg
YmluZEdyb3VwTGF5b3V0LCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwg
V2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCitSZW1vdGVCaW5kR3JvdXBMYXlvdXQ6OlJlbW90ZUJpbmRHcm91cExheW91dChQQUw6Oldl
YkdQVTo6QmluZEdyb3VwTGF5b3V0JiBiaW5kR3JvdXBMYXlvdXQsIFdlYkdQVTo6T2JqZWN0SGVh
cCYgb2JqZWN0SGVhcCwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiBzdHJlYW1D
b25uZWN0aW9uLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2JhY2tpbmco
YmluZEdyb3VwTGF5b3V0KQotICAgICwgbV9vYmplY3RSZWdpc3RyeShvYmplY3RSZWdpc3RyeSkK
ICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQorICAgICwgbV9zdHJlYW1Db25uZWN0aW9u
KFdURk1vdmUoc3RyZWFtQ29ubmVjdGlvbikpCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmll
cikKIHsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LmFkZE9iamVjdChtX2lkZW50aWZpZXIsIG1fYmFj
a2luZyk7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdGFydFJlY2VpdmluZ01lc3NhZ2VzKCp0
aGlzLCBNZXNzYWdlczo6UmVtb3RlQmluZEdyb3VwTGF5b3V0OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAotUmVtb3RlQmluZEdyb3VwTGF5b3V0
Ojp+UmVtb3RlQmluZEdyb3VwTGF5b3V0KCkKK1JlbW90ZUJpbmRHcm91cExheW91dDo6flJlbW90
ZUJpbmRHcm91cExheW91dCgpID0gZGVmYXVsdDsKKwordm9pZCBSZW1vdGVCaW5kR3JvdXBMYXlv
dXQ6OnN0b3BMaXN0ZW5pbmdGb3JJUEMoKQogewotICAgIG1fb2JqZWN0UmVnaXN0cnkucmVtb3Zl
T2JqZWN0KG1faWRlbnRpZmllcik7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdG9wUmVjZWl2
aW5nTWVzc2FnZXMoTWVzc2FnZXM6OlJlbW90ZUJpbmRHcm91cExheW91dDo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgUmVtb3RlQmlu
ZEdyb3VwTGF5b3V0OjpzZXRMYWJlbChTdHJpbmcmJiBsYWJlbCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwTGF5b3V0
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRH
cm91cExheW91dC5oCmluZGV4IDI4ZDBiZTRiYjQzOTA4NzU1YmJmODkzOGVkMjA4ZTY3ZmRmY2Zj
ODcuLmE3YThmMjkzYjE2ZDIxZGNmNjBlNTJlN2I0NzM2M2JlYzY3YWFiMjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3Vw
TGF5b3V0LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVCaW5kR3JvdXBMYXlvdXQuaApAQCAtMzYsMjYgKzM2LDMyIEBAIG5hbWVzcGFjZSBQQUw6
OldlYkdQVSB7CiBjbGFzcyBCaW5kR3JvdXBMYXlvdXQ7CiB9CiAKK25hbWVzcGFjZSBJUEMgewor
Y2xhc3MgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAK
IG5hbWVzcGFjZSBXZWJHUFUgewogY2xhc3MgT2JqZWN0SGVhcDsKLWNsYXNzIE9iamVjdFJlZ2lz
dHJ5OwogfQogCiBjbGFzcyBSZW1vdGVCaW5kR3JvdXBMYXlvdXQgZmluYWwgOiBwdWJsaWMgSVBD
OjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlQmluZEdyb3VwTGF5b3V0PiBjcmVhdGUoUEFM
OjpXZWJHUFU6OkJpbmRHcm91cExheW91dCYgYmluZEdyb3VwTGF5b3V0LCBXZWJHUFU6Ok9iamVj
dFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFw
LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxSZW1vdGVCaW5k
R3JvdXBMYXlvdXQ+IGNyZWF0ZShQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0JiBiaW5kR3Jv
dXBMYXlvdXQsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgUmVmPElQQzo6U3RyZWFt
U2VydmVyQ29ubmVjdGlvbj4mJiBzdHJlYW1Db25uZWN0aW9uLCBXZWJHUFVJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVCaW5k
R3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0LCBvYmplY3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwg
aWRlbnRpZmllcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVCaW5kR3Jv
dXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0LCBvYmplY3RIZWFwLCBXVEZNb3ZlKHN0cmVhbUNvbm5l
Y3Rpb24pLCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlQmluZEdy
b3VwTGF5b3V0KCk7CiAKLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIE9iamVjdFJlZ2lzdHJ5
OworICAgIHZvaWQgc3RvcExpc3RlbmluZ0ZvcklQQygpOwogCi0gICAgUmVtb3RlQmluZEdyb3Vw
TGF5b3V0KFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXQmLCBXZWJHUFU6Ok9iamVjdFJlZ2lz
dHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7CisgICAgUEFMOjpX
ZWJHUFU6OkJpbmRHcm91cExheW91dCYgYmFja2luZygpIHsgcmV0dXJuIG1fYmFja2luZzsgfQor
Citwcml2YXRlOgorICAgIFJlbW90ZUJpbmRHcm91cExheW91dChQQUw6OldlYkdQVTo6QmluZEdy
b3VwTGF5b3V0JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29u
bmVjdGlvbj4mJiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVCaW5kR3JvdXBMYXlv
dXQoY29uc3QgUmVtb3RlQmluZEdyb3VwTGF5b3V0JikgPSBkZWxldGU7CiAgICAgUmVtb3RlQmlu
ZEdyb3VwTGF5b3V0KFJlbW90ZUJpbmRHcm91cExheW91dCYmKSA9IGRlbGV0ZTsKQEAgLTY3LDgg
KzczLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJl
ZjxQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0PiBtX2JhY2tpbmc7Ci0gICAgV2ViR1BVOjpP
YmplY3RSZWdpc3RyeSYgbV9vYmplY3RSZWdpc3RyeTsKICAgICBXZWJHUFU6Ok9iamVjdEhlYXAm
IG1fb2JqZWN0SGVhcDsKKyAgICBSZWY8SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiBtX3N0
cmVhbUNvbm5lY3Rpb247CiAgICAgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZUJ1ZmZlci5jcHAKaW5kZXggYzY2NGIzODM5OThiNzNjMmQ3Y2JjYTMxMmY1OWY5Yjdl
NGJkMjdkNy4uMjY1MDkzNGMzYzllNTJmMDdmNDViMGE4YWRjMmQ0N2M0YzRkM2Q0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZm
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlQnVmZmVyLmNwcApAQCAtMjgsMjMgKzI4LDI2IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCiAKKyNpbmNsdWRlICJSZW1vdGVCdWZmZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlN0cmVh
bVNlcnZlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCi0jaW5j
bHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJl
bW90ZUJ1ZmZlcjo6UmVtb3RlQnVmZmVyKFBBTDo6V2ViR1BVOjpCdWZmZXImIGJ1ZmZlciwgV2Vi
R1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYg
b2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorUmVtb3RlQnVmZmVyOjpS
ZW1vdGVCdWZmZXIoUEFMOjpXZWJHUFU6OkJ1ZmZlciYgYnVmZmVyLCBXZWJHUFU6Ok9iamVjdEhl
YXAmIG9iamVjdEhlYXAsIFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+JiYgc3RyZWFt
Q29ubmVjdGlvbiwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5n
KGJ1ZmZlcikKLSAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2JqZWN0UmVnaXN0cnkpCiAgICAgLCBt
X29iamVjdEhlYXAob2JqZWN0SGVhcCkKKyAgICAsIG1fc3RyZWFtQ29ubmVjdGlvbihXVEZNb3Zl
KHN0cmVhbUNvbm5lY3Rpb24pKQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7Ci0g
ICAgbV9vYmplY3RSZWdpc3RyeS5hZGRPYmplY3QobV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOwor
ICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+c3RhcnRSZWNlaXZpbmdNZXNzYWdlcygqdGhpcywgTWVz
c2FnZXM6OlJlbW90ZUJ1ZmZlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIu
dG9VSW50NjQoKSk7CiB9CiAKLVJlbW90ZUJ1ZmZlcjo6flJlbW90ZUJ1ZmZlcigpCitSZW1vdGVC
dWZmZXI6On5SZW1vdGVCdWZmZXIoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgUmVtb3RlQnVmZmVyOjpz
dG9wTGlzdGVuaW5nRm9ySVBDKCkKIHsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVj
dChtX2lkZW50aWZpZXIpOworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+c3RvcFJlY2VpdmluZ01l
c3NhZ2VzKE1lc3NhZ2VzOjpSZW1vdGVCdWZmZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9p
ZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCiB2b2lkIFJlbW90ZUJ1ZmZlcjo6bWFwQXN5bmMo
UEFMOjpXZWJHUFU6Ok1hcE1vZGVGbGFncyBtYXBNb2RlRmxhZ3MsIHN0ZDo6b3B0aW9uYWw8UEFM
OjpXZWJHUFU6OlNpemU2ND4gb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXpl
NjQ+IHNpemUsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjx1aW50OF90Pj4mJik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZlci5oIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZmZXIuaAppbmRleCBhNWZhZDViMmVm
ZDA4MTM2YzAyY2ViODU5ZmFkMzdlMjVjMzIzZjMzLi44YTI5OWE3YjdiNmYxODIxNzU1NTkwNGNj
ODg3OTU2ZDAyYTE4MzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVyLmgKQEAgLTQxLDI2ICs0MSwzMiBAQCBuYW1l
c3BhY2UgUEFMOjpXZWJHUFUgewogY2xhc3MgQnVmZmVyOwogfQogCituYW1lc3BhY2UgSVBDIHsK
K2NsYXNzIFN0cmVhbVNlcnZlckNvbm5lY3Rpb247Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBuYW1lc3BhY2UgV2ViR1BVIHsKIGNsYXNzIE9iamVjdEhlYXA7Ci1jbGFzcyBPYmplY3RSZWdp
c3RyeTsKIH0KIAogY2xhc3MgUmVtb3RlQnVmZmVyIGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFt
TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPFJlbW90ZUJ1ZmZlcj4gY3JlYXRlKFBBTDo6V2ViR1BVOjpCdWZmZXIm
IGJ1ZmZlciwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6
T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAg
IHN0YXRpYyBSZWY8UmVtb3RlQnVmZmVyPiBjcmVhdGUoUEFMOjpXZWJHUFU6OkJ1ZmZlciYgYnVm
ZmVyLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFJlZjxJUEM6OlN0cmVhbVNlcnZl
ckNvbm5lY3Rpb24+JiYgc3RyZWFtQ29ubmVjdGlvbiwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQnVmZmVyKGJ1
ZmZlciwgb2JqZWN0UmVnaXN0cnksIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQnVmZmVyKGJ1ZmZlciwgb2JqZWN0SGVhcCwgV1RG
TW92ZShzdHJlYW1Db25uZWN0aW9uKSwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1
YWwgflJlbW90ZUJ1ZmZlcigpOwogCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBPYmplY3RS
ZWdpc3RyeTsKKyAgICB2b2lkIHN0b3BMaXN0ZW5pbmdGb3JJUEMoKTsKIAotICAgIFJlbW90ZUJ1
ZmZlcihQQUw6OldlYkdQVTo6QnVmZmVyJiwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQ
VTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOworICAgIFBBTDo6V2ViR1BVOjpCdWZm
ZXImIGJhY2tpbmcoKSB7IHJldHVybiBtX2JhY2tpbmc7IH0KKworcHJpdmF0ZToKKyAgICBSZW1v
dGVCdWZmZXIoUEFMOjpXZWJHUFU6OkJ1ZmZlciYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFJlZjxJ
UEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+JiYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAg
UmVtb3RlQnVmZmVyKGNvbnN0IFJlbW90ZUJ1ZmZlciYpID0gZGVsZXRlOwogICAgIFJlbW90ZUJ1
ZmZlcihSZW1vdGVCdWZmZXImJikgPSBkZWxldGU7CkBAIC03Nyw4ICs4Myw4IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7CiAKICAgICBSZWY8UEFMOjpXZWJHUFU6OkJ1
ZmZlcj4gbV9iYWNraW5nOwotICAgIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVn
aXN0cnk7CiAgICAgV2ViR1BVOjpPYmplY3RIZWFwJiBtX29iamVjdEhlYXA7CisgICAgUmVmPElQ
Qzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4gbV9zdHJlYW1Db25uZWN0aW9uOwogICAgIFdlYkdQ
VUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIGJvb2wgbV9pc01hcHBlZCB7IGZhbHNlIH07
CiAgICAgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6QnVmZmVyOjpNYXBwZWRSYW5nZT4gbV9t
YXBwZWRSYW5nZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlQ29tbWFuZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRCdWZmZXIuY3BwCmluZGV4IGE5YzZhMmI2
ZTYwM2Y0MDc4MGNhZWEwMDdiNTczYjJlNGQ2ZDRhMzUuLmZlZmVjMjE3YTA2ZGM5ZDc5NDBkM2M0
YjY5ZThiYTdhODVmZWIyZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kQnVmZmVyLmNwcApAQCAt
MjgsMjQgKzI4LDI3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJS
ZW1vdGVDb21tYW5kQnVmZmVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViR1BVT2JqZWN0SGVhcC5oIgotI2luY2x1ZGUgIldlYkdQ
VU9iamVjdFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVD
b21tYW5kQnVmZmVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZW1vdGVDb21tYW5kQnVm
ZmVyOjpSZW1vdGVDb21tYW5kQnVmZmVyKFBBTDo6V2ViR1BVOjpDb21tYW5kQnVmZmVyJiBjb21t
YW5kQnVmZmVyLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BV
OjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCitS
ZW1vdGVDb21tYW5kQnVmZmVyOjpSZW1vdGVDb21tYW5kQnVmZmVyKFBBTDo6V2ViR1BVOjpDb21t
YW5kQnVmZmVyJiBjb21tYW5kQnVmZmVyLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAs
IFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+JiYgc3RyZWFtQ29ubmVjdGlvbiwgV2Vi
R1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5nKGNvbW1hbmRCdWZmZXIp
Ci0gICAgLCBtX29iamVjdFJlZ2lzdHJ5KG9iamVjdFJlZ2lzdHJ5KQogICAgICwgbV9vYmplY3RI
ZWFwKG9iamVjdEhlYXApCisgICAgLCBtX3N0cmVhbUNvbm5lY3Rpb24oV1RGTW92ZShzdHJlYW1D
b25uZWN0aW9uKSkKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogewotICAgIG1fb2Jq
ZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1faWRlbnRpZmllciwgbV9iYWNraW5nKTsKKyAgICBtX3N0
cmVhbUNvbm5lY3Rpb24tPnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXMoKnRoaXMsIE1lc3NhZ2VzOjpS
ZW1vdGVDb21tYW5kQnVmZmVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50
b1VJbnQ2NCgpKTsKIH0KIAotUmVtb3RlQ29tbWFuZEJ1ZmZlcjo6flJlbW90ZUNvbW1hbmRCdWZm
ZXIoKQorUmVtb3RlQ29tbWFuZEJ1ZmZlcjo6flJlbW90ZUNvbW1hbmRCdWZmZXIoKSA9IGRlZmF1
bHQ7CisKK3ZvaWQgUmVtb3RlQ29tbWFuZEJ1ZmZlcjo6c3RvcExpc3RlbmluZ0ZvcklQQygpCiB7
Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5yZW1vdmVPYmplY3QobV9pZGVudGlmaWVyKTsKKyAgICBt
X3N0cmVhbUNvbm5lY3Rpb24tPnN0b3BSZWNlaXZpbmdNZXNzYWdlcyhNZXNzYWdlczo6UmVtb3Rl
Q29tbWFuZEJ1ZmZlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50
NjQoKSk7CiB9CiAKIHZvaWQgUmVtb3RlQ29tbWFuZEJ1ZmZlcjo6c2V0TGFiZWwoU3RyaW5nJiYg
bGFiZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZUNvbW1hbmRCdWZmZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEJ1ZmZlci5oCmluZGV4IDE0MGMxYTQ4YTExZGVmOWNh
YmFjOWE1MWM4NGExY2RkYzc0MmQ4NWQuLjMyNzViOTlhMjk3ZTYzOWNjMjc5NTdhNWVhODk0NmE1
YTVmYzI4NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlQ29tbWFuZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEJ1ZmZlci5oCkBAIC0zNiwyNiArMzYsMzIg
QEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNzIENvbW1hbmRCdWZmZXI7CiB9CiAKK25h
bWVzcGFjZSBJUEMgeworY2xhc3MgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjsKK30KKwogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogY2xhc3MgT2JqZWN0SGVhcDsKLWNs
YXNzIE9iamVjdFJlZ2lzdHJ5OwogfQogCiBjbGFzcyBSZW1vdGVDb21tYW5kQnVmZmVyIGZpbmFs
IDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZUNvbW1hbmRCdWZmZXI+
IGNyZWF0ZShQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZlciYgY29tbWFuZEJ1ZmZlciwgV2ViR1BV
OjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2Jq
ZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIHN0YXRpYyBSZWY8UmVt
b3RlQ29tbWFuZEJ1ZmZlcj4gY3JlYXRlKFBBTDo6V2ViR1BVOjpDb21tYW5kQnVmZmVyJiBjb21t
YW5kQnVmZmVyLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFJlZjxJUEM6OlN0cmVh
bVNlcnZlckNvbm5lY3Rpb24+JiYgc3RyZWFtQ29ubmVjdGlvbiwgV2ViR1BVSWRlbnRpZmllciBp
ZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQ29t
bWFuZEJ1ZmZlcihjb21tYW5kQnVmZmVyLCBvYmplY3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwgaWRl
bnRpZmllcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVDb21tYW5kQnVm
ZmVyKGNvbW1hbmRCdWZmZXIsIG9iamVjdEhlYXAsIFdURk1vdmUoc3RyZWFtQ29ubmVjdGlvbiks
IGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVDb21tYW5kQnVmZmVy
KCk7CiAKLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIE9iamVjdFJlZ2lzdHJ5OworICAgIHZv
aWQgc3RvcExpc3RlbmluZ0ZvcklQQygpOwogCi0gICAgUmVtb3RlQ29tbWFuZEJ1ZmZlcihQQUw6
OldlYkdQVTo6Q29tbWFuZEJ1ZmZlciYsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmLCBXZWJHUFU6
Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKKyAgICBQQUw6OldlYkdQVTo6Q29tbWFu
ZEJ1ZmZlciYgYmFja2luZygpIHsgcmV0dXJuIG1fYmFja2luZzsgfQorCitwcml2YXRlOgorICAg
IFJlbW90ZUNvbW1hbmRCdWZmZXIoUEFMOjpXZWJHUFU6OkNvbW1hbmRCdWZmZXImLCBXZWJHUFU6
Ok9iamVjdEhlYXAmLCBSZWY8SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiYmLCBXZWJHUFVJ
ZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZUNvbW1hbmRCdWZmZXIoY29uc3QgUmVtb3RlQ29tbWFu
ZEJ1ZmZlciYpID0gZGVsZXRlOwogICAgIFJlbW90ZUNvbW1hbmRCdWZmZXIoUmVtb3RlQ29tbWFu
ZEJ1ZmZlciYmKSA9IGRlbGV0ZTsKQEAgLTY3LDggKzczLDggQEAgcHJpdmF0ZToKICAgICB2b2lk
IHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZl
cj4gbV9iYWNraW5nOwotICAgIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0
cnk7CiAgICAgV2ViR1BVOjpPYmplY3RIZWFwJiBtX29iamVjdEhlYXA7CisgICAgUmVmPElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4gbV9zdHJlYW1Db25uZWN0aW9uOwogICAgIFdlYkdQVUlk
ZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kRW5jb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRFbmNvZGVy
LmNwcAppbmRleCBhYzk0OWVmYTRiNmI0ZWNlMjJmMjE2Y2NhMTY1M2U1NzYwMGIwZDgyLi5kOWVi
NzkzZGFkNDQ1Nzc3MmFiMDNkZDBmYjU0MjQyMWMyOGNhMDkwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRFbmNvZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNv
bW1hbmRFbmNvZGVyLmNwcApAQCAtMjksNDYgKzI5LDQ5IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQogCiAjaW5jbHVkZSAiUmVtb3RlQ29tbWFuZEJ1ZmZlci5oIgorI2luY2x1ZGUgIlJlbW90
ZUNvbW1hbmRFbmNvZGVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVDb21wdXRlUGFzc0Vu
Y29kZXIuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlci5oIgorI2luY2x1ZGUg
IlN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJHUFVDb21wdXRlUGFzc0Rl
c2NyaXB0b3IuaCIKICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCi0jaW5jbHVkZSAiV2Vi
R1BVT2JqZWN0UmVnaXN0cnkuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQ
VUNvbW1hbmRFbmNvZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZW1vdGVDb21tYW5k
RW5jb2Rlcjo6UmVtb3RlQ29tbWFuZEVuY29kZXIoUEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVy
JiBjb21tYW5kRW5jb2RlciwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnks
IFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyKQorUmVtb3RlQ29tbWFuZEVuY29kZXI6OlJlbW90ZUNvbW1hbmRFbmNvZGVyKFBBTDo6V2Vi
R1BVOjpDb21tYW5kRW5jb2RlciYgY29tbWFuZEVuY29kZXIsIFdlYkdQVTo6T2JqZWN0SGVhcCYg
b2JqZWN0SGVhcCwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiBzdHJlYW1Db25u
ZWN0aW9uLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2JhY2tpbmcoY29t
bWFuZEVuY29kZXIpCi0gICAgLCBtX29iamVjdFJlZ2lzdHJ5KG9iamVjdFJlZ2lzdHJ5KQogICAg
ICwgbV9vYmplY3RIZWFwKG9iamVjdEhlYXApCisgICAgLCBtX3N0cmVhbUNvbm5lY3Rpb24oV1RG
TW92ZShzdHJlYW1Db25uZWN0aW9uKSkKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQog
ewotICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1faWRlbnRpZmllciwgbV9iYWNraW5n
KTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXMoKnRoaXMs
IE1lc3NhZ2VzOjpSZW1vdGVDb21tYW5kRW5jb2Rlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBt
X2lkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKLVJlbW90ZUNvbW1hbmRFbmNvZGVyOjp+UmVt
b3RlQ29tbWFuZEVuY29kZXIoKQorUmVtb3RlQ29tbWFuZEVuY29kZXI6On5SZW1vdGVDb21tYW5k
RW5jb2RlcigpID0gZGVmYXVsdDsKKwordm9pZCBSZW1vdGVDb21tYW5kRW5jb2Rlcjo6c3RvcExp
c3RlbmluZ0ZvcklQQygpCiB7Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5yZW1vdmVPYmplY3QobV9p
ZGVudGlmaWVyKTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0b3BSZWNlaXZpbmdNZXNzYWdl
cyhNZXNzYWdlczo6UmVtb3RlQ29tbWFuZEVuY29kZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9pZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCiB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVy
OjpiZWdpblJlbmRlclBhc3MoY29uc3QgV2ViR1BVOjpSZW5kZXJQYXNzRGVzY3JpcHRvciYgZGVz
Y3JpcHRvciwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGF1dG8gY29udmVy
dGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGRlc2Ny
aXB0b3IpOworICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0SGVhcC5jb252
ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7CiAgICAgQVNTRVJUKGNvbnZlcnRlZERlc2NyaXB0
b3IpOwogICAgIGlmICghY29udmVydGVkRGVzY3JpcHRvcikKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgYXV0byByZW5kZXJQYXNzRW5jb2RlciA9IG1fYmFja2luZy0+YmVnaW5SZW5kZXJQYXNzKCpj
b252ZXJ0ZWREZXNjcmlwdG9yKTsKLSAgICBhdXRvIHJlbW90ZVJlbmRlclBhc3NFbmNvZGVyID0g
UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0ZShyZW5kZXJQYXNzRW5jb2RlciwgbV9vYmpl
Y3RSZWdpc3RyeSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKLSAgICBtX29iamVjdEhlYXAu
YWRkT2JqZWN0KHJlbW90ZVJlbmRlclBhc3NFbmNvZGVyKTsKKyAgICBhdXRvIHJlbW90ZVJlbmRl
clBhc3NFbmNvZGVyID0gUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0ZShyZW5kZXJQYXNz
RW5jb2RlciwgbV9vYmplY3RIZWFwLCBtX3N0cmVhbUNvbm5lY3Rpb24uY29weVJlZigpLCBpZGVu
dGlmaWVyKTsKKyAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KGlkZW50aWZpZXIsIHJlbW90ZVJl
bmRlclBhc3NFbmNvZGVyKTsKIH0KIAogdm9pZCBSZW1vdGVDb21tYW5kRW5jb2Rlcjo6YmVnaW5D
b21wdXRlUGFzcyhjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkdQVTo6Q29tcHV0ZVBhc3NEZXNjcmlw
dG9yPiYgZGVzY3JpcHRvciwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewogICAgIHN0
ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRGVzY3JpcHRvcj4gY29udmVydGVk
RGVzY3JpcHRvcjsKICAgICBpZiAoZGVzY3JpcHRvcikgewotICAgICAgICBhdXRvIHJlc3VsdERl
c2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZygqZGVzY3JpcHRv
cik7CisgICAgICAgIGF1dG8gcmVzdWx0RGVzY3JpcHRvciA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0
RnJvbUJhY2tpbmcoKmRlc2NyaXB0b3IpOwogICAgICAgICBBU1NFUlQocmVzdWx0RGVzY3JpcHRv
cik7CiAgICAgICAgIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBXVEZNb3ZlKHJlc3VsdERlc2NyaXB0
b3IpOwogICAgICAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpCkBAIC03Niw4ICs3OSw4IEBA
IHZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXI6OmJlZ2luQ29tcHV0ZVBhc3MoY29uc3Qgc3RkOjpv
cHRpb25hbDxXZWJHUFU6OkNvbXB1dGVQCiAgICAgfQogCiAgICAgYXV0byBjb21wdXRlUGFzc0Vu
Y29kZXIgPSBtX2JhY2tpbmctPmJlZ2luQ29tcHV0ZVBhc3MoKmNvbnZlcnRlZERlc2NyaXB0b3Ip
OwotICAgIGF1dG8gY29tcHV0ZVJlbmRlclBhc3NFbmNvZGVyID0gUmVtb3RlQ29tcHV0ZVBhc3NF
bmNvZGVyOjpjcmVhdGUoY29tcHV0ZVBhc3NFbmNvZGVyLCBtX29iamVjdFJlZ2lzdHJ5LCBtX29i
amVjdEhlYXAsIGlkZW50aWZpZXIpOwotICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QoY29tcHV0
ZVJlbmRlclBhc3NFbmNvZGVyKTsKKyAgICBhdXRvIGNvbXB1dGVSZW5kZXJQYXNzRW5jb2RlciA9
IFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6Y3JlYXRlKGNvbXB1dGVQYXNzRW5jb2RlciwgbV9v
YmplY3RIZWFwLCBtX3N0cmVhbUNvbm5lY3Rpb24uY29weVJlZigpLCBpZGVudGlmaWVyKTsKKyAg
ICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KGlkZW50aWZpZXIsIGNvbXB1dGVSZW5kZXJQYXNzRW5j
b2Rlcik7CiB9CiAKIHZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXI6OmNvcHlCdWZmZXJUb0J1ZmZl
cigKQEAgLTg3LDkgKzkwLDkgQEAgdm9pZCBSZW1vdGVDb21tYW5kRW5jb2Rlcjo6Y29weUJ1ZmZl
clRvQnVmZmVyKAogICAgIFBBTDo6V2ViR1BVOjpTaXplNjQgZGVzdGluYXRpb25PZmZzZXQsCiAg
ICAgUEFMOjpXZWJHUFU6OlNpemU2NCBzaXplKQogewotICAgIGF1dG8gY29udmVydGVkU291cmNl
ID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoc291cmNlKTsKKyAg
ICBhdXRvIGNvbnZlcnRlZFNvdXJjZSA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0QnVmZmVyRnJvbUJh
Y2tpbmcoc291cmNlKTsKICAgICBBU1NFUlQoY29udmVydGVkU291cmNlKTsKLSAgICBhdXRvIGNv
bnZlcnRlZERlc3RpbmF0aW9uID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0QnVmZmVyRnJvbUJh
Y2tpbmcoc291cmNlKTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc3RpbmF0aW9uID0gbV9vYmplY3RI
ZWFwLmNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhzb3VyY2UpOwogICAgIEFTU0VSVChjb252ZXJ0
ZWREZXN0aW5hdGlvbik7CiAgICAgaWYgKCFjb252ZXJ0ZWRTb3VyY2UgfHwgIWNvbnZlcnRlZERl
c3RpbmF0aW9uKQogICAgICAgICByZXR1cm47CkBAIC0xMDIsMTEgKzEwNSwxMSBAQCB2b2lkIFJl
bW90ZUNvbW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVyVG9UZXh0dXJlKAogICAgIGNvbnN0IFdlYkdQ
VTo6SW1hZ2VDb3B5VGV4dHVyZSYgZGVzdGluYXRpb24sCiAgICAgY29uc3QgV2ViR1BVOjpFeHRl
bnQzRCYgY29weVNpemUpCiB7Ci0gICAgYXV0byBjb252ZXJ0ZWRTb3VyY2UgPSBtX29iamVjdFJl
Z2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhzb3VyY2UpOworICAgIGF1dG8gY29udmVydGVkU291
cmNlID0gbV9vYmplY3RIZWFwLmNvbnZlcnRGcm9tQmFja2luZyhzb3VyY2UpOwogICAgIEFTU0VS
VChjb252ZXJ0ZWRTb3VyY2UpOwotICAgIGF1dG8gY29udmVydGVkRGVzdGluYXRpb24gPSBtX29i
amVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhkZXN0aW5hdGlvbik7CisgICAgYXV0byBj
b252ZXJ0ZWREZXN0aW5hdGlvbiA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0RnJvbUJhY2tpbmcoZGVz
dGluYXRpb24pOwogICAgIEFTU0VSVChjb252ZXJ0ZWREZXN0aW5hdGlvbik7Ci0gICAgYXV0byBj
b252ZXJ0ZWRDb3B5U2l6ZSA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGNv
cHlTaXplKTsKKyAgICBhdXRvIGNvbnZlcnRlZENvcHlTaXplID0gbV9vYmplY3RIZWFwLmNvbnZl
cnRGcm9tQmFja2luZyhjb3B5U2l6ZSk7CiAgICAgQVNTRVJUKGNvbnZlcnRlZENvcHlTaXplKTsK
ICAgICBpZiAoIWNvbnZlcnRlZFNvdXJjZSB8fCAhY29udmVydGVkRGVzdGluYXRpb24gfHwgIWNv
bnZlcnRlZENvcHlTaXplKQogICAgICAgICByZXR1cm47CkBAIC0xMTksMTEgKzEyMiwxMSBAQCB2
b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRvQnVmZmVyKAogICAgIGNvbnN0
IFdlYkdQVTo6SW1hZ2VDb3B5QnVmZmVyJiBkZXN0aW5hdGlvbiwKICAgICBjb25zdCBXZWJHUFU6
OkV4dGVudDNEJiBjb3B5U2l6ZSkKIHsKLSAgICBhdXRvIGNvbnZlcnRlZFNvdXJjZSA9IG1fb2Jq
ZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKHNvdXJjZSk7CisgICAgYXV0byBjb252ZXJ0
ZWRTb3VyY2UgPSBtX29iamVjdEhlYXAuY29udmVydEZyb21CYWNraW5nKHNvdXJjZSk7CiAgICAg
QVNTRVJUKGNvbnZlcnRlZFNvdXJjZSk7Ci0gICAgYXV0byBjb252ZXJ0ZWREZXN0aW5hdGlvbiA9
IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGRlc3RpbmF0aW9uKTsKKyAgICBh
dXRvIGNvbnZlcnRlZERlc3RpbmF0aW9uID0gbV9vYmplY3RIZWFwLmNvbnZlcnRGcm9tQmFja2lu
ZyhkZXN0aW5hdGlvbik7CiAgICAgQVNTRVJUKGNvbnZlcnRlZERlc3RpbmF0aW9uKTsKLSAgICBh
dXRvIGNvbnZlcnRlZENvcHlTaXplID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tp
bmcoY29weVNpemUpOworICAgIGF1dG8gY29udmVydGVkQ29weVNpemUgPSBtX29iamVjdEhlYXAu
Y29udmVydEZyb21CYWNraW5nKGNvcHlTaXplKTsKICAgICBBU1NFUlQoY29udmVydGVkQ29weVNp
emUpOwogICAgIGlmICghY29udmVydGVkU291cmNlIHx8ICFjb252ZXJ0ZWREZXN0aW5hdGlvbiB8
fCAhY29udmVydGVkQ29weVNpemUpCiAgICAgICAgIHJldHVybjsKQEAgLTEzNiwxMSArMTM5LDEx
IEBAIHZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9UZXh0dXJlKAogICAg
IGNvbnN0IFdlYkdQVTo6SW1hZ2VDb3B5VGV4dHVyZSYgZGVzdGluYXRpb24sCiAgICAgY29uc3Qg
V2ViR1BVOjpFeHRlbnQzRCYgY29weVNpemUpCiB7Ci0gICAgYXV0byBjb252ZXJ0ZWRTb3VyY2Ug
PSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhzb3VyY2UpOworICAgIGF1dG8g
Y29udmVydGVkU291cmNlID0gbV9vYmplY3RIZWFwLmNvbnZlcnRGcm9tQmFja2luZyhzb3VyY2Up
OwogICAgIEFTU0VSVChjb252ZXJ0ZWRTb3VyY2UpOwotICAgIGF1dG8gY29udmVydGVkRGVzdGlu
YXRpb24gPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhkZXN0aW5hdGlvbik7
CisgICAgYXV0byBjb252ZXJ0ZWREZXN0aW5hdGlvbiA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0RnJv
bUJhY2tpbmcoZGVzdGluYXRpb24pOwogICAgIEFTU0VSVChjb252ZXJ0ZWREZXN0aW5hdGlvbik7
Ci0gICAgYXV0byBjb252ZXJ0ZWRDb3B5U2l6ZSA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZy
b21CYWNraW5nKGNvcHlTaXplKTsKKyAgICBhdXRvIGNvbnZlcnRlZENvcHlTaXplID0gbV9vYmpl
Y3RIZWFwLmNvbnZlcnRGcm9tQmFja2luZyhjb3B5U2l6ZSk7CiAgICAgQVNTRVJUKGNvbnZlcnRl
ZENvcHlTaXplKTsKICAgICBpZiAoIWNvbnZlcnRlZFNvdXJjZSB8fCAhY29udmVydGVkRGVzdGlu
YXRpb24gfHwgIWNvbnZlcnRlZENvcHlTaXplKQogICAgICAgICByZXR1cm47CkBAIC0xNTMsNyAr
MTU2LDcgQEAgdm9pZCBSZW1vdGVDb21tYW5kRW5jb2Rlcjo6ZmlsbEJ1ZmZlcigKICAgICBQQUw6
OldlYkdQVTo6U2l6ZTY0IGRlc3RpbmF0aW9uT2Zmc2V0LAogICAgIFBBTDo6V2ViR1BVOjpTaXpl
NjQgc2l6ZSkKIHsKLSAgICBhdXRvIGNvbnZlcnRlZERlc3RpbmF0aW9uID0gbV9vYmplY3RSZWdp
c3RyeS5jb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoZGVzdGluYXRpb24pOworICAgIGF1dG8gY29u
dmVydGVkRGVzdGluYXRpb24gPSBtX29iamVjdEhlYXAuY29udmVydEJ1ZmZlckZyb21CYWNraW5n
KGRlc3RpbmF0aW9uKTsKICAgICBBU1NFUlQoY29udmVydGVkRGVzdGluYXRpb24pOwogICAgIGlm
ICghY29udmVydGVkRGVzdGluYXRpb24pCiAgICAgICAgIHJldHVybjsKQEAgLTE3OCw3ICsxODEs
NyBAQCB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyOjppbnNlcnREZWJ1Z01hcmtlcihTdHJpbmcm
JiBtYXJrZXJMYWJlbCkKIAogdm9pZCBSZW1vdGVDb21tYW5kRW5jb2Rlcjo6d3JpdGVUaW1lc3Rh
bXAoV2ViR1BVSWRlbnRpZmllciBxdWVyeVNldCwgUEFMOjpXZWJHUFU6OlNpemUzMiBxdWVyeUlu
ZGV4KQogewotICAgIGF1dG8gY29udmVydGVkUXVlcnlTZXQgPSBtX29iamVjdFJlZ2lzdHJ5LmNv
bnZlcnRRdWVyeVNldEZyb21CYWNraW5nKHF1ZXJ5U2V0KTsKKyAgICBhdXRvIGNvbnZlcnRlZFF1
ZXJ5U2V0ID0gbV9vYmplY3RIZWFwLmNvbnZlcnRRdWVyeVNldEZyb21CYWNraW5nKHF1ZXJ5U2V0
KTsKICAgICBBU1NFUlQoY29udmVydGVkUXVlcnlTZXQpOwogICAgIGlmICghY29udmVydGVkUXVl
cnlTZXQpCiAgICAgICAgIHJldHVybjsKQEAgLTE5Myw5ICsxOTYsOSBAQCB2b2lkIFJlbW90ZUNv
bW1hbmRFbmNvZGVyOjpyZXNvbHZlUXVlcnlTZXQoCiAgICAgV2ViR1BVSWRlbnRpZmllciBkZXN0
aW5hdGlvbiwKICAgICBQQUw6OldlYkdQVTo6U2l6ZTY0IGRlc3RpbmF0aW9uT2Zmc2V0KQogewot
ICAgIGF1dG8gY29udmVydGVkUXVlcnlTZXQgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRRdWVy
eVNldEZyb21CYWNraW5nKHF1ZXJ5U2V0KTsKKyAgICBhdXRvIGNvbnZlcnRlZFF1ZXJ5U2V0ID0g
bV9vYmplY3RIZWFwLmNvbnZlcnRRdWVyeVNldEZyb21CYWNraW5nKHF1ZXJ5U2V0KTsKICAgICBB
U1NFUlQoY29udmVydGVkUXVlcnlTZXQpOwotICAgIGF1dG8gY29udmVydGVkRGVzdGluYXRpb24g
PSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhkZXN0aW5hdGlvbik7
CisgICAgYXV0byBjb252ZXJ0ZWREZXN0aW5hdGlvbiA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0QnVm
ZmVyRnJvbUJhY2tpbmcoZGVzdGluYXRpb24pOwogICAgIEFTU0VSVChjb252ZXJ0ZWREZXN0aW5h
dGlvbik7CiAgICAgaWYgKCFjb252ZXJ0ZWRRdWVyeVNldCB8fCAhY29udmVydGVkRGVzdGluYXRp
b24pCiAgICAgICAgIHJldHVybjsKQEAgLTIwNSwxNCArMjA4LDE0IEBAIHZvaWQgUmVtb3RlQ29t
bWFuZEVuY29kZXI6OnJlc29sdmVRdWVyeVNldCgKIAogdm9pZCBSZW1vdGVDb21tYW5kRW5jb2Rl
cjo6ZmluaXNoKGNvbnN0IFdlYkdQVTo6Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3ImIGRlc2NyaXB0
b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIGNvbnZlcnRlZERl
c2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9y
KTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdEhlYXAuY29udmVydEZy
b21CYWNraW5nKGRlc2NyaXB0b3IpOwogICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsK
ICAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1
dG8gY29tbWFuZEJ1ZmZlciA9IG1fYmFja2luZy0+ZmluaXNoKCpjb252ZXJ0ZWREZXNjcmlwdG9y
KTsKLSAgICBhdXRvIHJlbW90ZUNvbW1hbmRCdWZmZXIgPSBSZW1vdGVDb21tYW5kQnVmZmVyOjpj
cmVhdGUoY29tbWFuZEJ1ZmZlciwgbV9vYmplY3RSZWdpc3RyeSwgbV9vYmplY3RIZWFwLCBpZGVu
dGlmaWVyKTsKLSAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KHJlbW90ZUNvbW1hbmRCdWZmZXIp
OworICAgIGF1dG8gcmVtb3RlQ29tbWFuZEJ1ZmZlciA9IFJlbW90ZUNvbW1hbmRCdWZmZXI6OmNy
ZWF0ZShjb21tYW5kQnVmZmVyLCBtX29iamVjdEhlYXAsIG1fc3RyZWFtQ29ubmVjdGlvbi5jb3B5
UmVmKCksIGlkZW50aWZpZXIpOworICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QoaWRlbnRpZmll
ciwgcmVtb3RlQ29tbWFuZEJ1ZmZlcik7CiB9CiAKIHZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXI6
OnNldExhYmVsKFN0cmluZyYmIGxhYmVsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kRW5jb2Rlci5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kRW5jb2Rlci5oCmlu
ZGV4IGJiNjA0YWE3YzhhZGRiNGMxZjBiOWUwMDBkY2JiYWFmNDk4NzIyNzYuLjgzMTQ0YTg2ZmEz
NDQ2Njc1OWI0ODhkMTUxNmNlYmE0NWIwOGVmZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEVuY29kZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRFbmNv
ZGVyLmgKQEAgLTM4LDYgKzM4LDEwIEBAIG5hbWVzcGFjZSBQQUw6OldlYkdQVSB7CiBjbGFzcyBD
b21tYW5kRW5jb2RlcjsKIH0KIAorbmFtZXNwYWNlIElQQyB7CitjbGFzcyBTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIFdlYkdQVSB7
CkBAIC00NiwyMyArNTAsMjUgQEAgc3RydWN0IENvbXB1dGVQYXNzRGVzY3JpcHRvcjsKIHN0cnVj
dCBJbWFnZUNvcHlCdWZmZXI7CiBzdHJ1Y3QgSW1hZ2VDb3B5VGV4dHVyZTsKIGNsYXNzIE9iamVj
dEhlYXA7Ci1jbGFzcyBPYmplY3RSZWdpc3RyeTsKIHN0cnVjdCBSZW5kZXJQYXNzRGVzY3JpcHRv
cjsKIH0KIAogY2xhc3MgUmVtb3RlQ29tbWFuZEVuY29kZXIgZmluYWwgOiBwdWJsaWMgSVBDOjpT
dHJlYW1NZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlQ29tbWFuZEVuY29kZXI+IGNyZWF0ZShQQUw6Oldl
YkdQVTo6Q29tbWFuZEVuY29kZXImIGNvbW1hbmRFbmNvZGVyLCBXZWJHUFU6Ok9iamVjdFJlZ2lz
dHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJH
UFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxSZW1vdGVDb21tYW5kRW5j
b2Rlcj4gY3JlYXRlKFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2RlciYgY29tbWFuZEVuY29kZXIs
IFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29u
bmVjdGlvbj4mJiBzdHJlYW1Db25uZWN0aW9uLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVDb21tYW5kRW5jb2Rl
cihjb21tYW5kRW5jb2Rlciwgb2JqZWN0UmVnaXN0cnksIG9iamVjdEhlYXAsIGlkZW50aWZpZXIp
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQ29tbWFuZEVuY29kZXIoY29t
bWFuZEVuY29kZXIsIG9iamVjdEhlYXAsIFdURk1vdmUoc3RyZWFtQ29ubmVjdGlvbiksIGlkZW50
aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVDb21tYW5kRW5jb2RlcigpOwog
Ci1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKKyAgICB2b2lkIHN0
b3BMaXN0ZW5pbmdGb3JJUEMoKTsKIAotICAgIFJlbW90ZUNvbW1hbmRFbmNvZGVyKFBBTDo6V2Vi
R1BVOjpDb21tYW5kRW5jb2RlciYsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmLCBXZWJHUFU6Ok9i
amVjdEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKKyAgICBQQUw6OldlYkdQVTo6Q29tbWFuZEVu
Y29kZXImIGJhY2tpbmcoKSB7IHJldHVybiBtX2JhY2tpbmc7IH0KKworcHJpdmF0ZToKKyAgICBS
ZW1vdGVDb21tYW5kRW5jb2RlcihQQUw6OldlYkdQVTo6Q29tbWFuZEVuY29kZXImLCBXZWJHUFU6
Ok9iamVjdEhlYXAmLCBSZWY8SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiYmLCBXZWJHUFVJ
ZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZUNvbW1hbmRFbmNvZGVyKGNvbnN0IFJlbW90ZUNvbW1h
bmRFbmNvZGVyJikgPSBkZWxldGU7CiAgICAgUmVtb3RlQ29tbWFuZEVuY29kZXIoUmVtb3RlQ29t
bWFuZEVuY29kZXImJikgPSBkZWxldGU7CkBAIC0xMTksOCArMTI1LDggQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6Q29tbWFu
ZEVuY29kZXI+IG1fYmFja2luZzsKLSAgICBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBtX29iamVj
dFJlZ2lzdHJ5OwogICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFwOworICAgIFJl
ZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+IG1fc3RyZWFtQ29ubmVjdGlvbjsKICAgICBX
ZWJHUFVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29t
cHV0ZVBhc3NFbmNvZGVyLmNwcAppbmRleCA4YjEyMzMxNTk3NGRhNjRhYjExOGYyODUyZjI5MGM3
YzJkNWJjZGVjLi44ZTA3M2VkMWRmY2JhNGFkNmRkNjQ3NjllYzQ4MDczNWZkODllYjlkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNv
bXB1dGVQYXNzRW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFzc0VuY29kZXIuY3BwCkBAIC0yOCwyOSArMjgsMzIg
QEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZUNvbXB1dGVQ
YXNzRW5jb2Rlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5o
IgogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKLSNpbmNsdWRlICJXZWJHUFVPYmplY3RS
ZWdpc3RyeS5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29tcHV0ZVBh
c3NFbmNvZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZW1vdGVDb21wdXRlUGFzc0Vu
Y29kZXI6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlcihQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NF
bmNvZGVyJiBjb21wdXRlUGFzc0VuY29kZXIsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVj
dFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZp
ZXIgaWRlbnRpZmllcikKK1JlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6UmVtb3RlQ29tcHV0ZVBh
c3NFbmNvZGVyKFBBTDo6V2ViR1BVOjpDb21wdXRlUGFzc0VuY29kZXImIGNvbXB1dGVQYXNzRW5j
b2RlciwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBSZWY8SVBDOjpTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uPiYmIHN0cmVhbUNvbm5lY3Rpb24sIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRp
ZmllcikKICAgICA6IG1fYmFja2luZyhjb21wdXRlUGFzc0VuY29kZXIpCi0gICAgLCBtX29iamVj
dFJlZ2lzdHJ5KG9iamVjdFJlZ2lzdHJ5KQogICAgICwgbV9vYmplY3RIZWFwKG9iamVjdEhlYXAp
CisgICAgLCBtX3N0cmVhbUNvbm5lY3Rpb24oV1RGTW92ZShzdHJlYW1Db25uZWN0aW9uKSkKICAg
ICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogewotICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRk
T2JqZWN0KG1faWRlbnRpZmllciwgbV9iYWNraW5nKTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24t
PnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXMoKnRoaXMsIE1lc3NhZ2VzOjpSZW1vdGVDb21wdXRlUGFz
c0VuY29kZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkp
OwogfQogCi1SZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6On5SZW1vdGVDb21wdXRlUGFzc0VuY29k
ZXIoKQorUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjp+UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVy
KCkgPSBkZWZhdWx0OworCit2b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6c3RvcExpc3Rl
bmluZ0ZvcklQQygpCiB7Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5yZW1vdmVPYmplY3QobV9pZGVu
dGlmaWVyKTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0b3BSZWNlaXZpbmdNZXNzYWdlcyhN
ZXNzYWdlczo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBSZW1vdGVDb21wdXRlUGFzc0Vu
Y29kZXI6OnNldFBpcGVsaW5lKFdlYkdQVUlkZW50aWZpZXIgY29tcHV0ZVBpcGVsaW5lKQogewot
ICAgIGF1dG8gY29udmVydGVkQ29tcHV0ZVBpcGVsaW5lID0gbV9vYmplY3RSZWdpc3RyeS5jb252
ZXJ0Q29tcHV0ZVBpcGVsaW5lRnJvbUJhY2tpbmcoY29tcHV0ZVBpcGVsaW5lKTsKKyAgICBhdXRv
IGNvbnZlcnRlZENvbXB1dGVQaXBlbGluZSA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0Q29tcHV0ZVBp
cGVsaW5lRnJvbUJhY2tpbmcoY29tcHV0ZVBpcGVsaW5lKTsKICAgICBBU1NFUlQoY29udmVydGVk
Q29tcHV0ZVBpcGVsaW5lKTsKICAgICBpZiAoIWNvbnZlcnRlZENvbXB1dGVQaXBlbGluZSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtNjUsNyArNjgsNyBAQCB2b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5j
b2Rlcjo6ZGlzcGF0Y2goUEFMOjpXZWJHUFU6OlNpemUzMiB4LCBzdGQ6Om9wdGlvbmFsPFBBTAog
CiB2b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6ZGlzcGF0Y2hJbmRpcmVjdChXZWJHUFVJ
ZGVudGlmaWVyIGluZGlyZWN0QnVmZmVyLCBQQUw6OldlYkdQVTo6U2l6ZTY0IGluZGlyZWN0T2Zm
c2V0KQogewotICAgIGF1dG8gY29udmVydGVkSW5kaXJlY3RCdWZmZXIgPSBtX29iamVjdFJlZ2lz
dHJ5LmNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhpbmRpcmVjdEJ1ZmZlcik7CisgICAgYXV0byBj
b252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlciA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0QnVmZmVyRnJvbUJh
Y2tpbmcoaW5kaXJlY3RCdWZmZXIpOwogICAgIEFTU0VSVChjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZl
cik7CiAgICAgaWYgKCFjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwpA
QCAtNzUsNyArNzgsNyBAQCB2b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6ZGlzcGF0Y2hJ
bmRpcmVjdChXZWJHUFVJZGVudGlmaWVyIGluZGlyZWN0QnVmZmVyLAogCiB2b2lkIFJlbW90ZUNv
bXB1dGVQYXNzRW5jb2Rlcjo6YmVnaW5QaXBlbGluZVN0YXRpc3RpY3NRdWVyeShXZWJHUFVJZGVu
dGlmaWVyIHF1ZXJ5U2V0LCBQQUw6OldlYkdQVTo6U2l6ZTMyIHF1ZXJ5SW5kZXgpCiB7Ci0gICAg
YXV0byBjb252ZXJ0ZWRRdWVyeVNldCA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydFF1ZXJ5U2V0
RnJvbUJhY2tpbmcocXVlcnlTZXQpOworICAgIGF1dG8gY29udmVydGVkUXVlcnlTZXQgPSBtX29i
amVjdEhlYXAuY29udmVydFF1ZXJ5U2V0RnJvbUJhY2tpbmcocXVlcnlTZXQpOwogICAgIEFTU0VS
VChjb252ZXJ0ZWRRdWVyeVNldCk7CiAgICAgaWYgKCFjb252ZXJ0ZWRRdWVyeVNldCkKICAgICAg
ICAgcmV0dXJuOwpAQCAtOTYsNyArOTksNyBAQCB2b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rl
cjo6ZW5kUGFzcygpCiB2b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6c2V0QmluZEdyb3Vw
KFBBTDo6V2ViR1BVOjpJbmRleDMyIGluZGV4LCBXZWJHUFVJZGVudGlmaWVyIGJpbmRHcm91cCwK
ICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxQQUw6OldlYkdQVTo6QnVmZmVyRHluYW1pY09mZnNl
dD4+JiYgb2Zmc2V0cykKIHsKLSAgICBhdXRvIGNvbnZlcnRlZEJpbmRHcm91cCA9IG1fb2JqZWN0
UmVnaXN0cnkuY29udmVydEJpbmRHcm91cEZyb21CYWNraW5nKGJpbmRHcm91cCk7CisgICAgYXV0
byBjb252ZXJ0ZWRCaW5kR3JvdXAgPSBtX29iamVjdEhlYXAuY29udmVydEJpbmRHcm91cEZyb21C
YWNraW5nKGJpbmRHcm91cCk7CiAgICAgQVNTRVJUKGNvbnZlcnRlZEJpbmRHcm91cCk7CiAgICAg
aWYgKCFjb252ZXJ0ZWRCaW5kR3JvdXApCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBhc3NF
bmNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZUNvbXB1dGVQYXNzRW5jb2Rlci5oCmluZGV4IDAwZjlkZDMwZDcxNjVlYmY5OGQzYmE1YTdmZWE4
YTAxYjYwZTk4YjYuLmNlODY1M2JhNzg3ZDg5ODNmNjY1OGMwNjVlNzcyYzljZjk2MTNkNGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
Q29tcHV0ZVBhc3NFbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFzc0VuY29kZXIuaApAQCAtMzcsMjYgKzM3LDMyIEBA
IG5hbWVzcGFjZSBQQUw6OldlYkdQVSB7CiBjbGFzcyBDb21wdXRlUGFzc0VuY29kZXI7CiB9CiAK
K25hbWVzcGFjZSBJUEMgeworY2xhc3MgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjsKK30KKwogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogY2xhc3MgT2JqZWN0SGVhcDsK
LWNsYXNzIE9iamVjdFJlZ2lzdHJ5OwogfQogCiBjbGFzcyBSZW1vdGVDb21wdXRlUGFzc0VuY29k
ZXIgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlQ29tcHV0
ZVBhc3NFbmNvZGVyPiBjcmVhdGUoUEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2RlciYgY29t
cHV0ZVBhc3NFbmNvZGVyLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwg
V2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCisgICAgc3RhdGljIFJlZjxSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI+IGNyZWF0ZShQQUw6
OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyJiBjb21wdXRlUGFzc0VuY29kZXIsIFdlYkdQVTo6
T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4m
JiBzdHJlYW1Db25uZWN0aW9uLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXIoY29t
cHV0ZVBhc3NFbmNvZGVyLCBvYmplY3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikp
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXIo
Y29tcHV0ZVBhc3NFbmNvZGVyLCBvYmplY3RIZWFwLCBXVEZNb3ZlKHN0cmVhbUNvbm5lY3Rpb24p
LCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlQ29tcHV0ZVBhc3NF
bmNvZGVyKCk7CiAKLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIE9iamVjdFJlZ2lzdHJ5Owor
ICAgIHZvaWQgc3RvcExpc3RlbmluZ0ZvcklQQygpOwogCi0gICAgUmVtb3RlQ29tcHV0ZVBhc3NF
bmNvZGVyKFBBTDo6V2ViR1BVOjpDb21wdXRlUGFzc0VuY29kZXImLCBXZWJHUFU6Ok9iamVjdFJl
Z2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7CisgICAgUEFM
OjpXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2RlciYgYmFja2luZygpIHsgcmV0dXJuIG1fYmFja2lu
ZzsgfQorCitwcml2YXRlOgorICAgIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlcihQQUw6OldlYkdQ
VTo6Q29tcHV0ZVBhc3NFbmNvZGVyJiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgUmVmPElQQzo6U3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbj4mJiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVD
b21wdXRlUGFzc0VuY29kZXIoY29uc3QgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyJikgPSBkZWxl
dGU7CiAgICAgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyKFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rl
ciYmKSA9IGRlbGV0ZTsKQEAgLTg0LDggKzkwLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExh
YmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVy
PiBtX2JhY2tpbmc7Ci0gICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgbV9vYmplY3RSZWdpc3Ry
eTsKICAgICBXZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKKyAgICBSZWY8SVBDOjpT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiBtX3N0cmVhbUNvbm5lY3Rpb247CiAgICAgV2ViR1BVSWRl
bnRpZmllciBtX2lkZW50aWZpZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQaXBlbGluZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQaXBlbGlu
ZS5jcHAKaW5kZXggNzAxNmExZjk3OTA5ZWMyYjRiNmZmZDBmMWI4YjM0YmY0ZjExZTY4Zi4uY2Zj
MzJiODE4ZGIzYzNjMzcwZGFlMTM4MjUyMzE0NGE2MzA2NmI1ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGlwZWxpbmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
Q29tcHV0ZVBpcGVsaW5lLmNwcApAQCAtMjksMzIgKzI5LDM1IEBACiAjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQogCiAjaW5jbHVkZSAiUmVtb3RlQmluZEdyb3VwTGF5b3V0LmgiCisjaW5jbHVkZSAi
UmVtb3RlQ29tcHV0ZVBpcGVsaW5lTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViR1BVT2JqZWN0SGVhcC5oIgotI2luY2x1ZGUgIldl
YkdQVU9iamVjdFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJH
UFVCaW5kR3JvdXBMYXlvdXQuaD4KICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQ
VUNvbXB1dGVQaXBlbGluZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlQ29tcHV0
ZVBpcGVsaW5lOjpSZW1vdGVDb21wdXRlUGlwZWxpbmUoUEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBl
bGluZSYgY29tcHV0ZVBpcGVsaW5lLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdp
c3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCitSZW1vdGVDb21wdXRlUGlwZWxpbmU6OlJlbW90ZUNvbXB1dGVQaXBlbGluZShQ
QUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lJiBjb21wdXRlUGlwZWxpbmUsIFdlYkdQVTo6T2Jq
ZWN0SGVhcCYgb2JqZWN0SGVhcCwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiBz
dHJlYW1Db25uZWN0aW9uLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2Jh
Y2tpbmcoY29tcHV0ZVBpcGVsaW5lKQotICAgICwgbV9vYmplY3RSZWdpc3RyeShvYmplY3RSZWdp
c3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQorICAgICwgbV9zdHJlYW1Db25u
ZWN0aW9uKFdURk1vdmUoc3RyZWFtQ29ubmVjdGlvbikpCiAgICAgLCBtX2lkZW50aWZpZXIoaWRl
bnRpZmllcikKIHsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LmFkZE9iamVjdChtX2lkZW50aWZpZXIs
IG1fYmFja2luZyk7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdGFydFJlY2VpdmluZ01lc3Nh
Z2VzKCp0aGlzLCBNZXNzYWdlczo6UmVtb3RlQ29tcHV0ZVBpcGVsaW5lOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAotUmVtb3RlQ29tcHV0ZVBp
cGVsaW5lOjp+UmVtb3RlQ29tcHV0ZVBpcGVsaW5lKCkKK1JlbW90ZUNvbXB1dGVQaXBlbGluZTo6
flJlbW90ZUNvbXB1dGVQaXBlbGluZSgpID0gZGVmYXVsdDsKKwordm9pZCBSZW1vdGVDb21wdXRl
UGlwZWxpbmU6OnN0b3BMaXN0ZW5pbmdGb3JJUEMoKQogewotICAgIG1fb2JqZWN0UmVnaXN0cnku
cmVtb3ZlT2JqZWN0KG1faWRlbnRpZmllcik7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdG9w
UmVjZWl2aW5nTWVzc2FnZXMoTWVzc2FnZXM6OlJlbW90ZUNvbXB1dGVQaXBlbGluZTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgUmVt
b3RlQ29tcHV0ZVBpcGVsaW5lOjpnZXRCaW5kR3JvdXBMYXlvdXQodWludDMyX3QgaW5kZXgsIFdl
YkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKICAgICBhdXRvIGJpbmRHcm91cExheW91dCA9
IG1fYmFja2luZy0+Z2V0QmluZEdyb3VwTGF5b3V0KGluZGV4KTsKLSAgICBhdXRvIHJlbW90ZUJp
bmRHcm91cExheW91dCA9IFJlbW90ZUJpbmRHcm91cExheW91dDo6Y3JlYXRlKGJpbmRHcm91cExh
eW91dCwgbV9vYmplY3RSZWdpc3RyeSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKLSAgICBt
X29iamVjdEhlYXAuYWRkT2JqZWN0KHJlbW90ZUJpbmRHcm91cExheW91dCk7CisgICAgYXV0byBy
ZW1vdGVCaW5kR3JvdXBMYXlvdXQgPSBSZW1vdGVCaW5kR3JvdXBMYXlvdXQ6OmNyZWF0ZShiaW5k
R3JvdXBMYXlvdXQsIG1fb2JqZWN0SGVhcCwgbV9zdHJlYW1Db25uZWN0aW9uLmNvcHlSZWYoKSwg
aWRlbnRpZmllcik7CisgICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChpZGVudGlmaWVyLCByZW1v
dGVCaW5kR3JvdXBMYXlvdXQpOwogfQogCiB2b2lkIFJlbW90ZUNvbXB1dGVQaXBlbGluZTo6c2V0
TGFiZWwoU3RyaW5nJiYgbGFiZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQaXBlbGluZS5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGlwZWxpbmUuaAppbmRl
eCA4NGRhYWI4NmNjNjlkYjRmMzM1MWUxZmMxMGVmMzQ2M2JhNzc3ZGI3Li41ZWNlNDFiMGU4NTRj
NDM4ZTRhZTI3ZjhkOGQ5MzdmODU0OTRhNjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQaXBlbGluZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBpcGVs
aW5lLmgKQEAgLTM2LDI2ICszNiwzMiBAQCBuYW1lc3BhY2UgUEFMOjpXZWJHUFUgewogY2xhc3Mg
Q29tcHV0ZVBpcGVsaW5lOwogfQogCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFN0cmVhbVNlcnZl
ckNvbm5lY3Rpb247Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgV2ViR1BV
IHsKIGNsYXNzIE9iamVjdEhlYXA7Ci1jbGFzcyBPYmplY3RSZWdpc3RyeTsKIH0KIAogY2xhc3Mg
UmVtb3RlQ29tcHV0ZVBpcGVsaW5lIGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJl
Y2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPFJlbW90ZUNvbXB1dGVQaXBlbGluZT4gY3JlYXRlKFBBTDo6V2ViR1BVOjpDb21wdXRl
UGlwZWxpbmUmIGNvbXB1dGVQaXBlbGluZSwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0
UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlQ29tcHV0ZVBpcGVsaW5lPiBjcmVh
dGUoUEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZSYgY29tcHV0ZVBpcGVsaW5lLCBXZWJHUFU6
Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+
JiYgc3RyZWFtQ29ubmVjdGlvbiwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQ29tcHV0ZVBpcGVsaW5lKGNvbXB1
dGVQaXBlbGluZSwgb2JqZWN0UmVnaXN0cnksIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQ29tcHV0ZVBpcGVsaW5lKGNvbXB1dGVQ
aXBlbGluZSwgb2JqZWN0SGVhcCwgV1RGTW92ZShzdHJlYW1Db25uZWN0aW9uKSwgaWRlbnRpZmll
cikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90ZUNvbXB1dGVQaXBlbGluZSgpOwogCi1w
cml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKKyAgICB2b2lkIHN0b3BM
aXN0ZW5pbmdGb3JJUEMoKTsKIAotICAgIFJlbW90ZUNvbXB1dGVQaXBlbGluZShQQUw6OldlYkdQ
VTo6Q29tcHV0ZVBpcGVsaW5lJiwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2Jq
ZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOworICAgIFBBTDo6V2ViR1BVOjpDb21wdXRlUGlw
ZWxpbmUmIGJhY2tpbmcoKSB7IHJldHVybiBtX2JhY2tpbmc7IH0KKworcHJpdmF0ZToKKyAgICBS
ZW1vdGVDb21wdXRlUGlwZWxpbmUoUEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZSYsIFdlYkdQ
VTo6T2JqZWN0SGVhcCYsIFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+JiYsIFdlYkdQ
VUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlQ29tcHV0ZVBpcGVsaW5lKGNvbnN0IFJlbW90ZUNv
bXB1dGVQaXBlbGluZSYpID0gZGVsZXRlOwogICAgIFJlbW90ZUNvbXB1dGVQaXBlbGluZShSZW1v
dGVDb21wdXRlUGlwZWxpbmUmJikgPSBkZWxldGU7CkBAIC02OSw4ICs3NSw4IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7CiAKICAgICBSZWY8UEFMOjpXZWJHUFU6OkNv
bXB1dGVQaXBlbGluZT4gbV9iYWNraW5nOwotICAgIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG1f
b2JqZWN0UmVnaXN0cnk7CiAgICAgV2ViR1BVOjpPYmplY3RIZWFwJiBtX29iamVjdEhlYXA7Cisg
ICAgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4gbV9zdHJlYW1Db25uZWN0aW9uOwog
ICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVEZXZpY2UuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVEZXZpY2UuY3Bw
CmluZGV4IDg0NWM0M2I0ZDE0MTUyM2RhNjQwOWJlODA0NDM4NjgxY2NiZjNlYmEuLjllZGNjNDgw
YzU2YzNkZDhhYzY4NGFkM2I0MjZiMTlmOGE2YjZkODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRGV2aWNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZURldmljZS5jcHAKQEAg
LTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJSZW1vdGVCdWZmZXIuaCIKICNpbmNsdWRlICJSZW1v
dGVDb21tYW5kRW5jb2Rlci5oIgogI2luY2x1ZGUgIlJlbW90ZUNvbXB1dGVQaXBlbGluZS5oIgor
I2luY2x1ZGUgIlJlbW90ZURldmljZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlRXh0ZXJu
YWxUZXh0dXJlLmgiCiAjaW5jbHVkZSAiUmVtb3RlUGlwZWxpbmVMYXlvdXQuaCIKICNpbmNsdWRl
ICJSZW1vdGVRdWVyeVNldC5oIgpAQCAtNDEsOSArNDIsOSBAQAogI2luY2x1ZGUgIlJlbW90ZVNh
bXBsZXIuaCIKICNpbmNsdWRlICJSZW1vdGVTaGFkZXJNb2R1bGUuaCIKICNpbmNsdWRlICJSZW1v
dGVUZXh0dXJlLmgiCisjaW5jbHVkZSAiU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIgogI2luY2x1
ZGUgIldlYkdQVUNvbW1hbmRFbmNvZGVyRGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIldlYkdQVU9i
amVjdEhlYXAuaCIKLSNpbmNsdWRlICJXZWJHUFVPYmplY3RSZWdpc3RyeS5oIgogI2luY2x1ZGUg
IldlYkdQVU91dE9mTWVtb3J5RXJyb3IuaCIKICNpbmNsdWRlICJXZWJHUFVWYWxpZGF0aW9uRXJy
b3IuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJpbmRHcm91cC5oPgpA
QCAtNzcsMTggKzc4LDIwIEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZW1vdGVEZXZpY2U6
OlJlbW90ZURldmljZShQQUw6OldlYkdQVTo6RGV2aWNlJiBkZXZpY2UsIFdlYkdQVTo6T2JqZWN0
UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAs
IFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK1JlbW90ZURldmljZTo6UmVtb3RlRGV2aWNl
KFBBTDo6V2ViR1BVOjpEZXZpY2UmIGRldmljZSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RI
ZWFwLCBSZWY8SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiYmIHN0cmVhbUNvbm5lY3Rpb24s
IFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICA6IG1fYmFja2luZyhkZXZpY2UpCi0g
ICAgLCBtX29iamVjdFJlZ2lzdHJ5KG9iamVjdFJlZ2lzdHJ5KQogICAgICwgbV9vYmplY3RIZWFw
KG9iamVjdEhlYXApCisgICAgLCBtX3N0cmVhbUNvbm5lY3Rpb24oV1RGTW92ZShzdHJlYW1Db25u
ZWN0aW9uKSkKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogewotICAgIG1fb2JqZWN0
UmVnaXN0cnkuYWRkT2JqZWN0KG1faWRlbnRpZmllciwgbV9iYWNraW5nKTsKKyAgICBtX3N0cmVh
bUNvbm5lY3Rpb24tPnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXMoKnRoaXMsIE1lc3NhZ2VzOjpSZW1v
dGVEZXZpY2U6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkp
OwogfQogCi1SZW1vdGVEZXZpY2U6On5SZW1vdGVEZXZpY2UoKQorUmVtb3RlRGV2aWNlOjp+UmVt
b3RlRGV2aWNlKCkgPSBkZWZhdWx0OworCit2b2lkIFJlbW90ZURldmljZTo6c3RvcExpc3Rlbmlu
Z0ZvcklQQygpCiB7Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5yZW1vdmVPYmplY3QobV9pZGVudGlm
aWVyKTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0b3BSZWNlaXZpbmdNZXNzYWdlcyhNZXNz
YWdlczo6UmVtb3RlRGV2aWNlOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50
b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBSZW1vdGVEZXZpY2U6OmRlc3Ryb3koKQpAQCAtOTgsMTU2
ICsxMDEsMTUyIEBAIHZvaWQgUmVtb3RlRGV2aWNlOjpkZXN0cm95KCkKIAogdm9pZCBSZW1vdGVE
ZXZpY2U6OmNyZWF0ZUJ1ZmZlcihjb25zdCBXZWJHUFU6OkJ1ZmZlckRlc2NyaXB0b3ImIGRlc2Ny
aXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIGNvbnZlcnRl
ZERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlw
dG9yKTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdEhlYXAuY29udmVy
dEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOwogICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9y
KTsKICAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGF1dG8gYnVmZmVyID0gbV9iYWNraW5nLT5jcmVhdGVCdWZmZXIoKmNvbnZlcnRlZERlc2NyaXB0
b3IpOwotICAgIGF1dG8gcmVtb3RlQnVmZmVyID0gUmVtb3RlQnVmZmVyOjpjcmVhdGUoYnVmZmVy
LCBtX29iamVjdFJlZ2lzdHJ5LCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIpOwotICAgIG1fb2Jq
ZWN0SGVhcC5hZGRPYmplY3QocmVtb3RlQnVmZmVyKTsKKyAgICBhdXRvIHJlbW90ZUJ1ZmZlciA9
IFJlbW90ZUJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlciwgbV9vYmplY3RIZWFwLCBtX3N0cmVhbUNvbm5l
Y3Rpb24uY29weVJlZigpLCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0
KGlkZW50aWZpZXIsIHJlbW90ZUJ1ZmZlcik7CiB9CiAKIHZvaWQgUmVtb3RlRGV2aWNlOjpjcmVh
dGVUZXh0dXJlKGNvbnN0IFdlYkdQVTo6VGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdl
YkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0
b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKKyAg
ICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdEhlYXAuY29udmVydEZyb21CYWNr
aW5nKGRlc2NyaXB0b3IpOwogICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKICAgICBp
ZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gdGV4
dHVyZSA9IG1fYmFja2luZy0+Y3JlYXRlVGV4dHVyZSgqY29udmVydGVkRGVzY3JpcHRvcik7Ci0g
ICAgYXV0byByZW1vdGVUZXh0dXJlID0gUmVtb3RlVGV4dHVyZTo6Y3JlYXRlKHRleHR1cmUsIG1f
b2JqZWN0UmVnaXN0cnksIG1fb2JqZWN0SGVhcCwgaWRlbnRpZmllcik7Ci0gICAgbV9vYmplY3RI
ZWFwLmFkZE9iamVjdChyZW1vdGVUZXh0dXJlKTsKKyAgICBhdXRvIHJlbW90ZVRleHR1cmUgPSBS
ZW1vdGVUZXh0dXJlOjpjcmVhdGUodGV4dHVyZSwgbV9vYmplY3RIZWFwLCBtX3N0cmVhbUNvbm5l
Y3Rpb24uY29weVJlZigpLCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0
KGlkZW50aWZpZXIsIHJlbW90ZVRleHR1cmUpOwogfQogCiB2b2lkIFJlbW90ZURldmljZTo6Y3Jl
YXRlU2FtcGxlcihjb25zdCBXZWJHUFU6OlNhbXBsZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBX
ZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBjb252ZXJ0ZWREZXNjcmlw
dG9yID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7Cisg
ICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RIZWFwLmNvbnZlcnRGcm9tQmFj
a2luZyhkZXNjcmlwdG9yKTsKICAgICBBU1NFUlQoY29udmVydGVkRGVzY3JpcHRvcik7CiAgICAg
aWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHNh
bXBsZXIgPSBtX2JhY2tpbmctPmNyZWF0ZVNhbXBsZXIoKmNvbnZlcnRlZERlc2NyaXB0b3IpOwot
ICAgIGF1dG8gcmVtb3RlU2FtcGxlciA9IFJlbW90ZVNhbXBsZXI6OmNyZWF0ZShzYW1wbGVyLCBt
X29iamVjdFJlZ2lzdHJ5LCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIpOwotICAgIG1fb2JqZWN0
SGVhcC5hZGRPYmplY3QocmVtb3RlU2FtcGxlcik7CisgICAgYXV0byByZW1vdGVTYW1wbGVyID0g
UmVtb3RlU2FtcGxlcjo6Y3JlYXRlKHNhbXBsZXIsIG1fb2JqZWN0SGVhcCwgbV9zdHJlYW1Db25u
ZWN0aW9uLmNvcHlSZWYoKSwgaWRlbnRpZmllcik7CisgICAgbV9vYmplY3RIZWFwLmFkZE9iamVj
dChpZGVudGlmaWVyLCByZW1vdGVTYW1wbGVyKTsKIH0KIAogdm9pZCBSZW1vdGVEZXZpY2U6Omlt
cG9ydEV4dGVybmFsVGV4dHVyZShjb25zdCBXZWJHUFU6OkV4dGVybmFsVGV4dHVyZURlc2NyaXB0
b3ImIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBhdXRv
IGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2lu
ZyhkZXNjcmlwdG9yKTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdEhl
YXAuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOwogICAgIEFTU0VSVChjb252ZXJ0ZWRE
ZXNjcmlwdG9yKTsKICAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGF1dG8gZXh0ZXJuYWxUZXh0dXJlID0gbV9iYWNraW5nLT5pbXBvcnRFeHRlcm5h
bFRleHR1cmUoKmNvbnZlcnRlZERlc2NyaXB0b3IpOwotICAgIGF1dG8gcmVtb3RlRXh0ZXJuYWxU
ZXh0dXJlID0gUmVtb3RlRXh0ZXJuYWxUZXh0dXJlOjpjcmVhdGUoZXh0ZXJuYWxUZXh0dXJlLCBt
X29iamVjdFJlZ2lzdHJ5LCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIpOwotICAgIG1fb2JqZWN0
SGVhcC5hZGRPYmplY3QocmVtb3RlRXh0ZXJuYWxUZXh0dXJlKTsKKyAgICBhdXRvIHJlbW90ZUV4
dGVybmFsVGV4dHVyZSA9IFJlbW90ZUV4dGVybmFsVGV4dHVyZTo6Y3JlYXRlKGV4dGVybmFsVGV4
dHVyZSwgbV9vYmplY3RIZWFwLCBtX3N0cmVhbUNvbm5lY3Rpb24uY29weVJlZigpLCBpZGVudGlm
aWVyKTsKKyAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KGlkZW50aWZpZXIsIHJlbW90ZUV4dGVy
bmFsVGV4dHVyZSk7CiB9CiAKIHZvaWQgUmVtb3RlRGV2aWNlOjpjcmVhdGVCaW5kR3JvdXBMYXlv
dXQoY29uc3QgV2ViR1BVOjpCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBX
ZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBjb252ZXJ0ZWREZXNjcmlw
dG9yID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7Cisg
ICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RIZWFwLmNvbnZlcnRGcm9tQmFj
a2luZyhkZXNjcmlwdG9yKTsKICAgICBBU1NFUlQoY29udmVydGVkRGVzY3JpcHRvcik7CiAgICAg
aWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIGJp
bmRHcm91cExheW91dCA9IG1fYmFja2luZy0+Y3JlYXRlQmluZEdyb3VwTGF5b3V0KCpjb252ZXJ0
ZWREZXNjcmlwdG9yKTsKLSAgICBhdXRvIHJlbW90ZUJpbmRHcm91cExheW91dCA9IFJlbW90ZUJp
bmRHcm91cExheW91dDo6Y3JlYXRlKGJpbmRHcm91cExheW91dCwgbV9vYmplY3RSZWdpc3RyeSwg
bV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKLSAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KHJl
bW90ZUJpbmRHcm91cExheW91dCk7CisgICAgYXV0byByZW1vdGVCaW5kR3JvdXBMYXlvdXQgPSBS
ZW1vdGVCaW5kR3JvdXBMYXlvdXQ6OmNyZWF0ZShiaW5kR3JvdXBMYXlvdXQsIG1fb2JqZWN0SGVh
cCwgbV9zdHJlYW1Db25uZWN0aW9uLmNvcHlSZWYoKSwgaWRlbnRpZmllcik7CisgICAgbV9vYmpl
Y3RIZWFwLmFkZE9iamVjdChpZGVudGlmaWVyLCByZW1vdGVCaW5kR3JvdXBMYXlvdXQpOwogfQog
CiB2b2lkIFJlbW90ZURldmljZTo6Y3JlYXRlUGlwZWxpbmVMYXlvdXQoY29uc3QgV2ViR1BVOjpQ
aXBlbGluZUxheW91dERlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRl
bnRpZmllcikKIHsKLSAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lz
dHJ5LmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBhdXRvIGNvbnZlcnRlZERl
c2NyaXB0b3IgPSBtX29iamVjdEhlYXAuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOwog
ICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKICAgICBpZiAoIWNvbnZlcnRlZERlc2Ny
aXB0b3IpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gcGlwZWxpbmVMYXlvdXQgPSBtX2Jh
Y2tpbmctPmNyZWF0ZVBpcGVsaW5lTGF5b3V0KCpjb252ZXJ0ZWREZXNjcmlwdG9yKTsKLSAgICBh
dXRvIHJlbW90ZVBpcGVsaW5lTGF5b3V0ID0gUmVtb3RlUGlwZWxpbmVMYXlvdXQ6OmNyZWF0ZShw
aXBlbGluZUxheW91dCwgbV9vYmplY3RSZWdpc3RyeSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVy
KTsKLSAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KHJlbW90ZVBpcGVsaW5lTGF5b3V0KTsKKyAg
ICBhdXRvIHJlbW90ZVBpcGVsaW5lTGF5b3V0ID0gUmVtb3RlUGlwZWxpbmVMYXlvdXQ6OmNyZWF0
ZShwaXBlbGluZUxheW91dCwgbV9vYmplY3RIZWFwLCBtX3N0cmVhbUNvbm5lY3Rpb24uY29weVJl
ZigpLCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KGlkZW50aWZpZXIs
IHJlbW90ZVBpcGVsaW5lTGF5b3V0KTsKIH0KIAogdm9pZCBSZW1vdGVEZXZpY2U6OmNyZWF0ZUJp
bmRHcm91cChjb25zdCBXZWJHUFU6OkJpbmRHcm91cERlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdl
YkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0
b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKKyAg
ICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdEhlYXAuY29udmVydEZyb21CYWNr
aW5nKGRlc2NyaXB0b3IpOwogICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKICAgICBp
ZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gYmlu
ZEdyb3VwID0gbV9iYWNraW5nLT5jcmVhdGVCaW5kR3JvdXAoKmNvbnZlcnRlZERlc2NyaXB0b3Ip
OwotICAgIGF1dG8gcmVtb3RlQmluZEdyb3VwID0gUmVtb3RlQmluZEdyb3VwOjpjcmVhdGUoYmlu
ZEdyb3VwLCBtX29iamVjdFJlZ2lzdHJ5LCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIpOwotICAg
IG1fb2JqZWN0SGVhcC5hZGRPYmplY3QocmVtb3RlQmluZEdyb3VwKTsKKyAgICBhdXRvIHJlbW90
ZUJpbmRHcm91cCA9IFJlbW90ZUJpbmRHcm91cDo6Y3JlYXRlKGJpbmRHcm91cCwgbV9vYmplY3RI
ZWFwLCBtX3N0cmVhbUNvbm5lY3Rpb24uY29weVJlZigpLCBpZGVudGlmaWVyKTsKKyAgICBtX29i
amVjdEhlYXAuYWRkT2JqZWN0KGlkZW50aWZpZXIsIHJlbW90ZUJpbmRHcm91cCk7CiB9CiAKIHZv
aWQgUmVtb3RlRGV2aWNlOjpjcmVhdGVTaGFkZXJNb2R1bGUoY29uc3QgV2ViR1BVOjpTaGFkZXJN
b2R1bGVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIp
CiB7Ci0gICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RSZWdpc3RyeS5jb252
ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9y
ID0gbV9vYmplY3RIZWFwLmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKICAgICBBU1NF
UlQoY29udmVydGVkRGVzY3JpcHRvcik7CiAgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKQog
ICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHNoYWRlck1vZHVsZSA9IG1fYmFja2luZy0+Y3Jl
YXRlU2hhZGVyTW9kdWxlKCpjb252ZXJ0ZWREZXNjcmlwdG9yKTsKLSAgICBhdXRvIHJlbW90ZVNo
YWRlck1vZHVsZSA9IFJlbW90ZVNoYWRlck1vZHVsZTo6Y3JlYXRlKHNoYWRlck1vZHVsZSwgbV9v
YmplY3RSZWdpc3RyeSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKLSAgICBtX29iamVjdEhl
YXAuYWRkT2JqZWN0KHJlbW90ZVNoYWRlck1vZHVsZSk7CisgICAgYXV0byByZW1vdGVTaGFkZXJN
b2R1bGUgPSBSZW1vdGVTaGFkZXJNb2R1bGU6OmNyZWF0ZShzaGFkZXJNb2R1bGUsIG1fb2JqZWN0
SGVhcCwgbV9zdHJlYW1Db25uZWN0aW9uLmNvcHlSZWYoKSwgaWRlbnRpZmllcik7CisgICAgbV9v
YmplY3RIZWFwLmFkZE9iamVjdChpZGVudGlmaWVyLCByZW1vdGVTaGFkZXJNb2R1bGUpOwogfQog
CiB2b2lkIFJlbW90ZURldmljZTo6Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGNvbnN0IFdlYkdQVTo6
Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgV2ViR1BVSWRlbnRpZmllciBp
ZGVudGlmaWVyKQogewotICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0UmVn
aXN0cnkuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOworICAgIGF1dG8gY29udmVydGVk
RGVzY3JpcHRvciA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7
CiAgICAgQVNTRVJUKGNvbnZlcnRlZERlc2NyaXB0b3IpOwogICAgIGlmICghY29udmVydGVkRGVz
Y3JpcHRvcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBjb21wdXRlUGlwZWxpbmUgPSBt
X2JhY2tpbmctPmNyZWF0ZUNvbXB1dGVQaXBlbGluZSgqY29udmVydGVkRGVzY3JpcHRvcik7Ci0g
ICAgYXV0byByZW1vdGVDb21wdXRlUGlwZWxpbmUgPSBSZW1vdGVDb21wdXRlUGlwZWxpbmU6OmNy
ZWF0ZShjb21wdXRlUGlwZWxpbmUsIG1fb2JqZWN0UmVnaXN0cnksIG1fb2JqZWN0SGVhcCwgaWRl
bnRpZmllcik7Ci0gICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChyZW1vdGVDb21wdXRlUGlwZWxp
bmUpOworICAgIGF1dG8gcmVtb3RlQ29tcHV0ZVBpcGVsaW5lID0gUmVtb3RlQ29tcHV0ZVBpcGVs
aW5lOjpjcmVhdGUoY29tcHV0ZVBpcGVsaW5lLCBtX29iamVjdEhlYXAsIG1fc3RyZWFtQ29ubmVj
dGlvbi5jb3B5UmVmKCksIGlkZW50aWZpZXIpOworICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3Qo
aWRlbnRpZmllciwgcmVtb3RlQ29tcHV0ZVBpcGVsaW5lKTsKIH0KIAogdm9pZCBSZW1vdGVEZXZp
Y2U6OmNyZWF0ZVJlbmRlclBpcGVsaW5lKGNvbnN0IFdlYkdQVTo6UmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAg
YXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJh
Y2tpbmcoZGVzY3JpcHRvcik7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmpl
Y3RIZWFwLmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKICAgICBBU1NFUlQoY29udmVy
dGVkRGVzY3JpcHRvcik7CiAgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBhdXRvIHJlbmRlclBpcGVsaW5lID0gbV9iYWNraW5nLT5jcmVhdGVSZW5k
ZXJQaXBlbGluZSgqY29udmVydGVkRGVzY3JpcHRvcik7Ci0gICAgYXV0byByZW1vdGVSZW5kZXJQ
aXBlbGluZSA9IFJlbW90ZVJlbmRlclBpcGVsaW5lOjpjcmVhdGUocmVuZGVyUGlwZWxpbmUsIG1f
b2JqZWN0UmVnaXN0cnksIG1fb2JqZWN0SGVhcCwgaWRlbnRpZmllcik7Ci0gICAgbV9vYmplY3RI
ZWFwLmFkZE9iamVjdChyZW1vdGVSZW5kZXJQaXBlbGluZSk7CisgICAgYXV0byByZW1vdGVSZW5k
ZXJQaXBlbGluZSA9IFJlbW90ZVJlbmRlclBpcGVsaW5lOjpjcmVhdGUocmVuZGVyUGlwZWxpbmUs
IG1fb2JqZWN0SGVhcCwgbV9zdHJlYW1Db25uZWN0aW9uLmNvcHlSZWYoKSwgaWRlbnRpZmllcik7
CisgICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChpZGVudGlmaWVyLCByZW1vdGVSZW5kZXJQaXBl
bGluZSk7CiB9CiAKIHZvaWQgUmVtb3RlRGV2aWNlOjpjcmVhdGVDb21wdXRlUGlwZWxpbmVBc3lu
Yyhjb25zdCBXZWJHUFU6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdl
YkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY2FsbGJhY2spCiB7Ci0gICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RS
ZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgYXV0byBjb252ZXJ0
ZWREZXNjcmlwdG9yID0gbV9vYmplY3RIZWFwLmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9y
KTsKICAgICBBU1NFUlQoY29udmVydGVkRGVzY3JpcHRvcik7CiAgICAgaWYgKCFjb252ZXJ0ZWRE
ZXNjcmlwdG9yKSB7CiAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBtX2JhY2tpbmctPmNyZWF0ZUNvbXB1dGVQaXBlbGluZUFzeW5jKCpjb252ZXJ0ZWRE
ZXNjcmlwdG9yLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgd2Vha09iamVjdEhlYXAg
PSBXZWFrUHRyPFdlYkdQVTo6T2JqZWN0SGVhcD4obV9vYmplY3RIZWFwKSwgb2JqZWN0UmVnaXN0
cnkgPSBtX29iamVjdFJlZ2lzdHJ5LCBpZGVudGlmaWVyXSAoUmVmPFBBTDo6V2ViR1BVOjpDb21w
dXRlUGlwZWxpbmU+JiYgY29tcHV0ZVBpcGVsaW5lKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCF3
ZWFrT2JqZWN0SGVhcCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgYXV0byByZW1vdGVD
b21wdXRlUGlwZWxpbmUgPSBSZW1vdGVDb21wdXRlUGlwZWxpbmU6OmNyZWF0ZShjb21wdXRlUGlw
ZWxpbmUsIG9iamVjdFJlZ2lzdHJ5LCAqd2Vha09iamVjdEhlYXAsIGlkZW50aWZpZXIpOwotICAg
ICAgICB3ZWFrT2JqZWN0SGVhcC0+YWRkT2JqZWN0KHJlbW90ZUNvbXB1dGVQaXBlbGluZSk7Cisg
ICAgbV9iYWNraW5nLT5jcmVhdGVDb21wdXRlUGlwZWxpbmVBc3luYygqY29udmVydGVkRGVzY3Jp
cHRvciwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIG9iamVjdEhlYXAgPSBSZWYgeyBt
X29iamVjdEhlYXAgfSwgc3RyZWFtQ29ubmVjdGlvbiA9IG1fc3RyZWFtQ29ubmVjdGlvbi5jb3B5
UmVmKCksIGlkZW50aWZpZXIgPSBtX2lkZW50aWZpZXJdIChSZWY8UEFMOjpXZWJHUFU6OkNvbXB1
dGVQaXBlbGluZT4mJiBjb21wdXRlUGlwZWxpbmUpIG11dGFibGUgeworICAgICAgICBhdXRvIHJl
bW90ZUNvbXB1dGVQaXBlbGluZSA9IFJlbW90ZUNvbXB1dGVQaXBlbGluZTo6Y3JlYXRlKGNvbXB1
dGVQaXBlbGluZSwgb2JqZWN0SGVhcCwgV1RGTW92ZShzdHJlYW1Db25uZWN0aW9uKSwgaWRlbnRp
Zmllcik7CisgICAgICAgIG9iamVjdEhlYXAtPmFkZE9iamVjdChpZGVudGlmaWVyLCByZW1vdGVD
b21wdXRlUGlwZWxpbmUpOwogICAgICAgICBjYWxsYmFjaygpOwogICAgIH0pOwogfQogCiB2b2lk
IFJlbW90ZURldmljZTo6Y3JlYXRlUmVuZGVyUGlwZWxpbmVBc3luYyhjb25zdCBXZWJHUFU6OlJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgV2ViR1BVSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKLSAg
ICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9t
QmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29i
amVjdEhlYXAuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOwogICAgIEFTU0VSVChjb252
ZXJ0ZWREZXNjcmlwdG9yKTsKICAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpIHsKICAgICAg
ICAgY2FsbGJhY2soKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fYmFja2luZy0+
Y3JlYXRlUmVuZGVyUGlwZWxpbmVBc3luYygqY29udmVydGVkRGVzY3JpcHRvciwgW2NhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayksIHdlYWtPYmplY3RIZWFwID0gV2Vha1B0cjxXZWJHUFU6Ok9i
amVjdEhlYXA+KG1fb2JqZWN0SGVhcCksIG9iamVjdFJlZ2lzdHJ5ID0gbV9vYmplY3RSZWdpc3Ry
eSwgaWRlbnRpZmllcl0gKFJlZjxQQUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmU+JiYgcmVuZGVy
UGlwZWxpbmUpIG11dGFibGUgewotICAgICAgICBpZiAoIXdlYWtPYmplY3RIZWFwKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBhdXRvIHJlbW90ZVJlbmRlclBpcGVsaW5lID0gUmVtb3Rl
UmVuZGVyUGlwZWxpbmU6OmNyZWF0ZShyZW5kZXJQaXBlbGluZSwgb2JqZWN0UmVnaXN0cnksICp3
ZWFrT2JqZWN0SGVhcCwgaWRlbnRpZmllcik7Ci0gICAgICAgIHdlYWtPYmplY3RIZWFwLT5hZGRP
YmplY3QocmVtb3RlUmVuZGVyUGlwZWxpbmUpOworICAgIG1fYmFja2luZy0+Y3JlYXRlUmVuZGVy
UGlwZWxpbmVBc3luYygqY29udmVydGVkRGVzY3JpcHRvciwgW2NhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayksIG9iamVjdEhlYXAgPSBSZWYgeyBtX29iamVjdEhlYXAgfSwgc3RyZWFtQ29ubmVj
dGlvbiA9IG1fc3RyZWFtQ29ubmVjdGlvbi5jb3B5UmVmKCksIGlkZW50aWZpZXIgPSBtX2lkZW50
aWZpZXJdIChSZWY8UEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lPiYmIHJlbmRlclBpcGVsaW5l
KSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byByZW1vdGVSZW5kZXJQaXBlbGluZSA9IFJlbW90ZVJl
bmRlclBpcGVsaW5lOjpjcmVhdGUocmVuZGVyUGlwZWxpbmUsIG9iamVjdEhlYXAsIFdURk1vdmUo
c3RyZWFtQ29ubmVjdGlvbiksIGlkZW50aWZpZXIpOworICAgICAgICBvYmplY3RIZWFwLT5hZGRP
YmplY3QoaWRlbnRpZmllciwgcmVtb3RlUmVuZGVyUGlwZWxpbmUpOwogICAgICAgICBjYWxsYmFj
aygpOwogICAgIH0pOwogfQpAQCAtMjU2LDM5ICsyNTUsMzkgQEAgdm9pZCBSZW1vdGVEZXZpY2U6
OmNyZWF0ZUNvbW1hbmRFbmNvZGVyKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViR1BVOjpDb21tYW5k
RW5jb2QKIHsKICAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2RlckRl
c2NyaXB0b3I+IGNvbnZlcnRlZERlc2NyaXB0b3I7CiAgICAgaWYgKGRlc2NyaXB0b3IpIHsKLSAg
ICAgICAgYXV0byByZXN1bHREZXNjcmlwdG9yID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJv
bUJhY2tpbmcoKmRlc2NyaXB0b3IpOworICAgICAgICBhdXRvIHJlc3VsdERlc2NyaXB0b3IgPSBt
X29iamVjdEhlYXAuY29udmVydEZyb21CYWNraW5nKCpkZXNjcmlwdG9yKTsKICAgICAgICAgQVNT
RVJUKHJlc3VsdERlc2NyaXB0b3IpOwogICAgICAgICBjb252ZXJ0ZWREZXNjcmlwdG9yID0gV1RG
TW92ZShyZXN1bHREZXNjcmlwdG9yKTsKICAgICAgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9y
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBhdXRvIGNvbW1hbmRFbmNvZGVyID0g
bV9iYWNraW5nLT5jcmVhdGVDb21tYW5kRW5jb2RlcigqY29udmVydGVkRGVzY3JpcHRvcik7Ci0g
ICAgYXV0byByZW1vdGVDb21tYW5kRW5jb2RlciA9IFJlbW90ZUNvbW1hbmRFbmNvZGVyOjpjcmVh
dGUoY29tbWFuZEVuY29kZXIsIG1fb2JqZWN0UmVnaXN0cnksIG1fb2JqZWN0SGVhcCwgaWRlbnRp
Zmllcik7Ci0gICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChyZW1vdGVDb21tYW5kRW5jb2Rlcik7
CisgICAgYXV0byByZW1vdGVDb21tYW5kRW5jb2RlciA9IFJlbW90ZUNvbW1hbmRFbmNvZGVyOjpj
cmVhdGUoY29tbWFuZEVuY29kZXIsIG1fb2JqZWN0SGVhcCwgbV9zdHJlYW1Db25uZWN0aW9uLmNv
cHlSZWYoKSwgaWRlbnRpZmllcik7CisgICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChpZGVudGlm
aWVyLCByZW1vdGVDb21tYW5kRW5jb2Rlcik7CiB9CiAKIHZvaWQgUmVtb3RlRGV2aWNlOjpjcmVh
dGVSZW5kZXJCdW5kbGVFbmNvZGVyKGNvbnN0IFdlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2RlckRl
c2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAg
ICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9t
QmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29i
amVjdEhlYXAuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOwogICAgIEFTU0VSVChjb252
ZXJ0ZWREZXNjcmlwdG9yKTsKICAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGF1dG8gcmVuZGVyQnVuZGxlRW5jb2RlciA9IG1fYmFja2luZy0+Y3Jl
YXRlUmVuZGVyQnVuZGxlRW5jb2RlcigqY29udmVydGVkRGVzY3JpcHRvcik7Ci0gICAgYXV0byBy
ZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyID0gUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6Y3Jl
YXRlKHJlbmRlckJ1bmRsZUVuY29kZXIsIG1fb2JqZWN0UmVnaXN0cnksIG1fb2JqZWN0SGVhcCwg
aWRlbnRpZmllcik7Ci0gICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChyZW1vdGVSZW5kZXJCdW5k
bGVFbmNvZGVyKTsKKyAgICBhdXRvIHJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIgPSBSZW1vdGVS
ZW5kZXJCdW5kbGVFbmNvZGVyOjpjcmVhdGUocmVuZGVyQnVuZGxlRW5jb2RlciwgbV9vYmplY3RI
ZWFwLCBtX3N0cmVhbUNvbm5lY3Rpb24uY29weVJlZigpLCBpZGVudGlmaWVyKTsKKyAgICBtX29i
amVjdEhlYXAuYWRkT2JqZWN0KGlkZW50aWZpZXIsIHJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIp
OwogfQogCiB2b2lkIFJlbW90ZURldmljZTo6Y3JlYXRlUXVlcnlTZXQoY29uc3QgV2ViR1BVOjpR
dWVyeVNldERlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmll
cikKIHsKLSAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNv
bnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0
b3IgPSBtX29iamVjdEhlYXAuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOwogICAgIEFT
U0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKICAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3Ip
CiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gcXVlcnlTZXQgPSBtX2JhY2tpbmctPmNyZWF0
ZVF1ZXJ5U2V0KCpjb252ZXJ0ZWREZXNjcmlwdG9yKTsKLSAgICBhdXRvIHJlbW90ZVF1ZXJ5U2V0
ID0gUmVtb3RlUXVlcnlTZXQ6OmNyZWF0ZShxdWVyeVNldCwgbV9vYmplY3RSZWdpc3RyeSwgbV9v
YmplY3RIZWFwLCBpZGVudGlmaWVyKTsKLSAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KHJlbW90
ZVF1ZXJ5U2V0KTsKKyAgICBhdXRvIHJlbW90ZVF1ZXJ5U2V0ID0gUmVtb3RlUXVlcnlTZXQ6OmNy
ZWF0ZShxdWVyeVNldCwgbV9vYmplY3RIZWFwLCBtX3N0cmVhbUNvbm5lY3Rpb24uY29weVJlZigp
LCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KGlkZW50aWZpZXIsIHJl
bW90ZVF1ZXJ5U2V0KTsKIH0KIAogdm9pZCBSZW1vdGVEZXZpY2U6OnB1c2hFcnJvclNjb3BlKFBB
TDo6V2ViR1BVOjpFcnJvckZpbHRlciBlcnJvckZpbHRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRGV2aWNlLmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZURldmljZS5oCmluZGV4IDQ5
N2NkYTA5NjE0ZWU0NmFkMGMxNTc5MjhkMTZhMjJhYjYwYmU3NmEuLmIzNTYzN2NjNWU3MmFmZTEz
MDNiMTA1NjM4NTJhNDJkYjkzYTE2M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRGV2aWNlLmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVEZXZpY2UuaApAQCAtMzksNiArMzksMTAg
QEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNzIERldmljZTsKIH0KIAorbmFtZXNwYWNl
IElQQyB7CitjbGFzcyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uOworfQorCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogbmFtZXNwYWNlIFdlYkdQVSB7CkBAIC00OSw3ICs1Myw2IEBAIHN0cnVjdCBDb21t
YW5kRW5jb2RlckRlc2NyaXB0b3I7CiBzdHJ1Y3QgQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjsK
IHN0cnVjdCBFeHRlcm5hbFRleHR1cmVEZXNjcmlwdG9yOwogY2xhc3MgT2JqZWN0SGVhcDsKLWNs
YXNzIE9iamVjdFJlZ2lzdHJ5Owogc3RydWN0IFBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcjsKIHN0
cnVjdCBRdWVyeVNldERlc2NyaXB0b3I7CiBzdHJ1Y3QgUmVuZGVyQnVuZGxlRW5jb2RlckRlc2Ny
aXB0b3I7CkBAIC02MCwxOCArNjMsMjEgQEAgc3RydWN0IFRleHR1cmVEZXNjcmlwdG9yOwogfQog
CiBjbGFzcyBSZW1vdGVEZXZpY2UgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVj
ZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8UmVtb3RlRGV2aWNlPiBjcmVhdGUoUEFMOjpXZWJHUFU6OkRldmljZSYgZGV2aWNlLCBX
ZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFw
JiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgc3RhdGljIFJl
ZjxSZW1vdGVEZXZpY2U+IGNyZWF0ZShQQUw6OldlYkdQVTo6RGV2aWNlJiBkZXZpY2UsIFdlYkdQ
VTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlv
bj4mJiBzdHJlYW1Db25uZWN0aW9uLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVEZXZpY2UoZGV2aWNlLCBvYmpl
Y3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBSZW1vdGVEZXZpY2UoZGV2aWNlLCBvYmplY3RIZWFwLCBXVEZNb3ZlKHN0cmVh
bUNvbm5lY3Rpb24pLCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgflJlbW90ZURldmljZSgp
OwogCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKKyAgICB2b2lk
IHN0b3BMaXN0ZW5pbmdGb3JJUEMoKTsKIAotICAgIFJlbW90ZURldmljZShQQUw6OldlYkdQVTo6
RGV2aWNlJiwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdl
YkdQVUlkZW50aWZpZXIpOworICAgIFBBTDo6V2ViR1BVOjpEZXZpY2UmIGJhY2tpbmcoKSB7IHJl
dHVybiBtX2JhY2tpbmc7IH0KKworcHJpdmF0ZToKKyAgICBSZW1vdGVEZXZpY2UoUEFMOjpXZWJH
UFU6OkRldmljZSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFJlZjxJUEM6OlN0cmVhbVNlcnZlckNv
bm5lY3Rpb24+JiYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlRGV2aWNlKGNvbnN0
IFJlbW90ZURldmljZSYpID0gZGVsZXRlOwogICAgIFJlbW90ZURldmljZShSZW1vdGVEZXZpY2Um
JikgPSBkZWxldGU7CkBAIC0xMDgsOCArMTE0LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExh
YmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6RGV2aWNlPiBtX2JhY2tpbmc7
Ci0gICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgbV9vYmplY3RSZWdpc3RyeTsKICAgICBXZWJH
UFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKKyAgICBSZWY8SVBDOjpTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uPiBtX3N0cmVhbUNvbm5lY3Rpb247CiAgICAgV2ViR1BVSWRlbnRpZmllciBtX2lk
ZW50aWZpZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4dHVyZS5jcHAKaW5kZXgg
OTUzZDBlNGQ4MGE2ZWY4ZmRiM2Q3NjE1N2Q3MmNhNDQ5ZTg0MDJiYS4uZTdmOGMxMmM0NDVmYTFi
NjEyNzYxZGU0ZWNlZmFiMmViNTVkZDc4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVFeHRlcm5hbFRleHR1cmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRXh0ZXJuYWxUZXh0
dXJlLmNwcApAQCAtMjgsMjQgKzI4LDI3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAK
KyNpbmNsdWRlICJSZW1vdGVFeHRlcm5hbFRleHR1cmVNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlN0
cmVhbVNlcnZlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCi0j
aW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3Mv
V2ViR1BVL1dlYkdQVUV4dGVybmFsVGV4dHVyZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAot
UmVtb3RlRXh0ZXJuYWxUZXh0dXJlOjpSZW1vdGVFeHRlcm5hbFRleHR1cmUoUEFMOjpXZWJHUFU6
OkV4dGVybmFsVGV4dHVyZSYgZXh0ZXJuYWxUZXh0dXJlLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5
JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCitSZW1vdGVFeHRlcm5hbFRleHR1cmU6OlJlbW90ZUV4dGVy
bmFsVGV4dHVyZShQQUw6OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlJiBleHRlcm5hbFRleHR1cmUs
IFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29u
bmVjdGlvbj4mJiBzdHJlYW1Db25uZWN0aW9uLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIp
CiAgICAgOiBtX2JhY2tpbmcoZXh0ZXJuYWxUZXh0dXJlKQotICAgICwgbV9vYmplY3RSZWdpc3Ry
eShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQorICAgICwg
bV9zdHJlYW1Db25uZWN0aW9uKFdURk1vdmUoc3RyZWFtQ29ubmVjdGlvbikpCiAgICAgLCBtX2lk
ZW50aWZpZXIoaWRlbnRpZmllcikKIHsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LmFkZE9iamVjdCht
X2lkZW50aWZpZXIsIG1fYmFja2luZyk7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdGFydFJl
Y2VpdmluZ01lc3NhZ2VzKCp0aGlzLCBNZXNzYWdlczo6UmVtb3RlRXh0ZXJuYWxUZXh0dXJlOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAotUmVt
b3RlRXh0ZXJuYWxUZXh0dXJlOjp+UmVtb3RlRXh0ZXJuYWxUZXh0dXJlKCkKK1JlbW90ZUV4dGVy
bmFsVGV4dHVyZTo6flJlbW90ZUV4dGVybmFsVGV4dHVyZSgpID0gZGVmYXVsdDsKKwordm9pZCBS
ZW1vdGVFeHRlcm5hbFRleHR1cmU6OnN0b3BMaXN0ZW5pbmdGb3JJUEMoKQogewotICAgIG1fb2Jq
ZWN0UmVnaXN0cnkucmVtb3ZlT2JqZWN0KG1faWRlbnRpZmllcik7CisgICAgbV9zdHJlYW1Db25u
ZWN0aW9uLT5zdG9wUmVjZWl2aW5nTWVzc2FnZXMoTWVzc2FnZXM6OlJlbW90ZUV4dGVybmFsVGV4
dHVyZTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9
CiAKIHZvaWQgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlOjpzZXRMYWJlbChTdHJpbmcmJiBsYWJlbCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlRXh0ZXJuYWxUZXh0dXJlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4dHVyZS5oCmluZGV4IDMxZDFjNTQzOTkyYmJiYmVmMTM0
NjJiZDEwM2JiODI4ZTFmZjk2MGYuLjBlYzI0YjI4ZjE0OWY1Yzg4ZDM4ZmFhMWE3YmI4ZDQwZjQw
MmM0MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVFeHRlcm5hbFRleHR1cmUuaApAQCAtMzYsMjYgKzM2LDMy
IEBAIG5hbWVzcGFjZSBQQUw6OldlYkdQVSB7CiBjbGFzcyBFeHRlcm5hbFRleHR1cmU7CiB9CiAK
K25hbWVzcGFjZSBJUEMgeworY2xhc3MgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjsKK30KKwogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogY2xhc3MgT2JqZWN0SGVhcDsK
LWNsYXNzIE9iamVjdFJlZ2lzdHJ5OwogfQogCiBjbGFzcyBSZW1vdGVFeHRlcm5hbFRleHR1cmUg
ZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlRXh0ZXJuYWxU
ZXh0dXJlPiBjcmVhdGUoUEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZSYgZXh0ZXJuYWxUZXh0
dXJlLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmpl
Y3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgc3Rh
dGljIFJlZjxSZW1vdGVFeHRlcm5hbFRleHR1cmU+IGNyZWF0ZShQQUw6OldlYkdQVTo6RXh0ZXJu
YWxUZXh0dXJlJiBleHRlcm5hbFRleHR1cmUsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVh
cCwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiBzdHJlYW1Db25uZWN0aW9uLCBX
ZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBSZW1vdGVFeHRlcm5hbFRleHR1cmUoZXh0ZXJuYWxUZXh0dXJlLCBvYmplY3RSZWdp
c3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBSZW1vdGVFeHRlcm5hbFRleHR1cmUoZXh0ZXJuYWxUZXh0dXJlLCBvYmplY3RIZWFwLCBX
VEZNb3ZlKHN0cmVhbUNvbm5lY3Rpb24pLCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmly
dHVhbCB+UmVtb3RlRXh0ZXJuYWxUZXh0dXJlKCk7CiAKLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNs
YXNzIE9iamVjdFJlZ2lzdHJ5OworICAgIHZvaWQgc3RvcExpc3RlbmluZ0ZvcklQQygpOwogCi0g
ICAgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlKFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1cmUmLCBX
ZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRp
Zmllcik7CisgICAgUEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZSYgYmFja2luZygpIHsgcmV0
dXJuIG1fYmFja2luZzsgfQorCitwcml2YXRlOgorICAgIFJlbW90ZUV4dGVybmFsVGV4dHVyZShQ
QUw6OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlJiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgUmVmPElQ
Qzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBS
ZW1vdGVFeHRlcm5hbFRleHR1cmUoY29uc3QgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlJikgPSBkZWxl
dGU7CiAgICAgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlKFJlbW90ZUV4dGVybmFsVGV4dHVyZSYmKSA9
IGRlbGV0ZTsKQEAgLTY3LDggKzczLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0
cmluZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlPiBtX2JhY2tp
bmc7Ci0gICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgbV9vYmplY3RSZWdpc3RyeTsKICAgICBX
ZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKKyAgICBSZWY8SVBDOjpTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uPiBtX3N0cmVhbUNvbm5lY3Rpb247CiAgICAgV2ViR1BVSWRlbnRpZmllciBt
X2lkZW50aWZpZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5jcHAKaW5kZXggZDcyZWVlOWE4NTc0NjBmYjdhNWJk
NzE1OTIyNDk5YzllNGIyYzg5MC4uZmZjMzQzMTg5Njc3Y2I3YzM0OTU5MDkzOWFlNTRmZTdlY2Y0
ZTg5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVHUFUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlR1BVLmNwcApAQCAtMjgsNDggKzI4LDEwMSBAQAogCiAjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKQogCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2lu
Y2x1ZGUgIlJlbW90ZUFkYXB0ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVHUFVNZXNzYWdlcy5oIgor
I2luY2x1ZGUgIlJlbW90ZUdQVVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmgiCisjaW5jbHVkZSAiU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIgogI2lu
Y2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKLSNpbmNsdWRlICJXZWJHUFVPYmplY3RSZWdpc3Ry
eS5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVLmg+CiAjaW5jbHVkZSA8
cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVBZGFwdGVyLmg+CiAKKyNpZiBIQVZFKFdFQkdQVV9J
TVBMRU1FTlRBVElPTikKKyNpbXBvcnQgPHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVJ
bXBsLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90ZUdQVTo6UmVtb3Rl
R1BVKFBBTDo6V2ViR1BVOjpHUFUmIGdwdSwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0
UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyKQotICAgIDogbV9iYWNraW5nKGdwdSkKLSAgICAsIG1fb2JqZWN0UmVnaXN0
cnkob2JqZWN0UmVnaXN0cnkpCi0gICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkKK1JlbW90
ZUdQVTo6UmVtb3RlR1BVKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZCYgcmVuZGVyaW5nQmFja2VuZCwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYg
c3RyZWFtKQorICAgIDogbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGdwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MpCisgICAgLCBtX3dvcmtRdWV1ZShJUEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3Jr
UXVldWU6OmNyZWF0ZSgiV2ViR1BVIHdvcmsgcXVldWUiKSkKKyAgICAsIG1fc3RyZWFtQ29ubmVj
dGlvbihJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb246OmNyZWF0ZShncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNvbm5lY3Rpb24oKSwgV1RGTW92ZShzdHJlYW0pLCBtX3dvcmtRdWV1ZSkpCisg
ICAgLCBtX29iamVjdEhlYXAoV2ViR1BVOjpPYmplY3RIZWFwOjpjcmVhdGUoKSkKICAgICAsIG1f
aWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICwgbV9yZW5kZXJpbmdCYWNrZW5kKHJlbmRlcmlu
Z0JhY2tlbmQpCisgICAgLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKGdwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3Mud2ViUHJvY2Vzc0lkZW50aWZpZXIoKSkKK3sKKyAgICBpbml0aWFsaXplKCk7Cit9
CisKK1JlbW90ZUdQVTo6flJlbW90ZUdQVSgpID0gZGVmYXVsdDsKKwordm9pZCBSZW1vdGVHUFU6
OmluaXRpYWxpemUoKQoreworICAgIGFzc2VydElzTWFpblJ1bkxvb3AoKTsKKyAgICBtX3dvcmtR
dWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSgpIG11dGFibGUg
eworICAgICAgICBwcm90ZWN0ZWRUaGlzLT53b3JrUXVldWVJbml0aWFsaXplKCk7CisgICAgfSk7
CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdGFydFJlY2VpdmluZ01lc3NhZ2VzKCp0aGlzLCBN
ZXNzYWdlczo6UmVtb3RlR1BVOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50
b1VJbnQ2NCgpKTsKK30KKwordm9pZCBSZW1vdGVHUFU6OnN0b3BMaXN0ZW5pbmdGb3JJUEMoUmVm
PFJlbW90ZUdQVT4mJiByZWZGcm9tQ29ubmVjdGlvbikKK3sKKyAgICBhc3NlcnRJc01haW5SdW5M
b29wKCk7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdG9wUmVjZWl2aW5nTWVzc2FnZXMoTWVz
c2FnZXM6OlJlbW90ZUdQVTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9V
SW50NjQoKSk7CisgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RG
TW92ZShyZWZGcm9tQ29ubmVjdGlvbildKCkgeworICAgICAgICBwcm90ZWN0ZWRUaGlzLT53b3Jr
UXVldWVVbmluaXRpYWxpemUoKTsKKyAgICB9KTsKK30KKwordm9pZCBSZW1vdGVHUFU6OndvcmtR
dWV1ZUluaXRpYWxpemUoKQogewotICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1faWRl
bnRpZmllciwgbV9iYWNraW5nKTsKKyAgICBtX3N0cmVhbVRocmVhZC5yZXNldCgpOworICAgIGFz
c2VydElzQ3VycmVudChtX3N0cmVhbVRocmVhZCk7CisjaWYgSEFWRShXRUJHUFVfSU1QTEVNRU5U
QVRJT04pCisgICAgYXV0byBiYWNraW5nID0gUEFMOjpXZWJHUFU6OkdQVUltcGw6OmNyZWF0ZSgp
OworI2Vsc2UKKyAgICBSZWZQdHI8R1BVSW1wbD4gYmFja2luZzsKKyNlbmRpZgorICAgIGlmIChi
YWNraW5nKSB7CisgICAgICAgIG1fYmFja2luZyA9IGJhY2tpbmcucmVsZWFzZU5vbk51bGwoKTsK
KyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR1BVUHJveHk6Oldhc0NyZWF0ZWQodHJ1ZSwg
bV93b3JrUXVldWUtPndha2VVcFNlbWFwaG9yZSgpKSk7CisgICAgfSBlbHNlCisgICAgICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdQVVByb3h5OjpXYXNDcmVhdGVkKGZhbHNlLCBtX3dvcmtRdWV1
ZS0+d2FrZVVwU2VtYXBob3JlKCkpKTsKIH0KIAotUmVtb3RlR1BVOjp+UmVtb3RlR1BVKCkKK3Zv
aWQgUmVtb3RlR1BVOjp3b3JrUXVldWVVbmluaXRpYWxpemUoKQogewotICAgIG1fb2JqZWN0UmVn
aXN0cnkucmVtb3ZlT2JqZWN0KG1faWRlbnRpZmllcik7CisgICAgYXNzZXJ0SXNDdXJyZW50KG1f
c3RyZWFtVGhyZWFkKTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24gPSBudWxscHRyOwogfQogCi12
b2lkIFJlbW90ZUdQVTo6cmVxdWVzdEFkYXB0ZXIoY29uc3QgV2ViR1BVOjpSZXF1ZXN0QWRhcHRl
ck9wdGlvbnMmIG9wdGlvbnMsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgV1RGOjpDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmLCBXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVzJiYs
IFdlYkdQVTo6U3VwcG9ydGVkTGltaXRzJiYsIGJvb2wpPiYmIGNhbGxiYWNrKQordm9pZCBSZW1v
dGVHUFU6OnJlcXVlc3RBZGFwdGVyKGNvbnN0IFdlYkdQVTo6UmVxdWVzdEFkYXB0ZXJPcHRpb25z
JiBvcHRpb25zLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhh
bmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFJlcXVlc3RBZGFwdGVyUmVzcG9uc2U+JiYpPiYmIGNh
bGxiYWNrKQogewotICAgIGF1dG8gY29udmVydGVkT3B0aW9ucyA9IG1fb2JqZWN0UmVnaXN0cnku
Y29udmVydEZyb21CYWNraW5nKG9wdGlvbnMpOworICAgIGFzc2VydElzQ3VycmVudChtX3N0cmVh
bVRocmVhZCk7CisgICAgQVNTRVJUKG1fYmFja2luZyk7CisKKyAgICBhdXRvIGNvbnZlcnRlZE9w
dGlvbnMgPSBtX29iamVjdEhlYXAtPmNvbnZlcnRGcm9tQmFja2luZyhvcHRpb25zKTsKICAgICBB
U1NFUlQoY29udmVydGVkT3B0aW9ucyk7CiAgICAgaWYgKCFjb252ZXJ0ZWRPcHRpb25zKSB7Ci0g
ICAgICAgIGNhbGxiYWNrKFN0cmluZ0ltcGw6OmVtcHR5KCksIHsgeyB9IH0sIHsgfSwgZmFsc2Up
OworICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgbV9iYWNraW5nLT5yZXF1ZXN0QWRhcHRlcigqY29udmVydGVkT3B0aW9ucywgW2Nh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHdlYWtPYmplY3RIZWFwID0gV2Vha1B0cjxXZWJH
UFU6Ok9iamVjdEhlYXA+KG1fb2JqZWN0SGVhcCksIG9iamVjdFJlZ2lzdHJ5ID0gbV9vYmplY3RS
ZWdpc3RyeSwgaWRlbnRpZmllcl0gKFJlZlB0cjxQQUw6OldlYkdQVTo6QWRhcHRlcj4mJiBhZGFw
dGVyKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCF3ZWFrT2JqZWN0SGVhcCB8fCAhYWRhcHRlcikg
ewotICAgICAgICAgICAgLy8gRklYTUU6IERlYWwgd2l0aCBmYWlsdXJlIGhlcmUuCisgICAgbV9i
YWNraW5nLT5yZXF1ZXN0QWRhcHRlcigqY29udmVydGVkT3B0aW9ucywgW2NhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayksIG9iamVjdEhlYXAgPSBtX29iamVjdEhlYXAsIHN0cmVhbUNvbm5lY3Rp
b24gPSBSZWYgeyAqbV9zdHJlYW1Db25uZWN0aW9uIH0sIGlkZW50aWZpZXIgPSBtX2lkZW50aWZp
ZXJdIChSZWZQdHI8UEFMOjpXZWJHUFU6OkFkYXB0ZXI+JiYgYWRhcHRlcikgbXV0YWJsZSB7Cisg
ICAgICAgIGlmICghYWRhcHRlcikgeworICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBhdXRvIHJlbW90ZUFk
YXB0ZXIgPSBSZW1vdGVBZGFwdGVyOjpjcmVhdGUoKmFkYXB0ZXIsIG9iamVjdFJlZ2lzdHJ5LCAq
d2Vha09iamVjdEhlYXAsIGlkZW50aWZpZXIpOwotICAgICAgICB3ZWFrT2JqZWN0SGVhcC0+YWRk
T2JqZWN0KHJlbW90ZUFkYXB0ZXIpOworCisgICAgICAgIGF1dG8gcmVtb3RlQWRhcHRlciA9IFJl
bW90ZUFkYXB0ZXI6OmNyZWF0ZSgqYWRhcHRlciwgb2JqZWN0SGVhcCwgV1RGTW92ZShzdHJlYW1D
b25uZWN0aW9uKSwgaWRlbnRpZmllcik7CisgICAgICAgIG9iamVjdEhlYXAtPmFkZE9iamVjdChp
ZGVudGlmaWVyLCByZW1vdGVBZGFwdGVyKTsKKwogICAgICAgICBhdXRvIG5hbWUgPSBhZGFwdGVy
LT5uYW1lKCk7CiAgICAgICAgIGNvbnN0IGF1dG8mIGZlYXR1cmVzID0gYWRhcHRlci0+ZmVhdHVy
ZXMoKTsKICAgICAgICAgY29uc3QgYXV0byYgbGltaXRzID0gYWRhcHRlci0+bGltaXRzKCk7Ci0g
ICAgICAgIGNhbGxiYWNrKFdURk1vdmUobmFtZSksIFdlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXMg
eyBmZWF0dXJlcy5mZWF0dXJlcygpIH0sIFdlYkdQVTo6U3VwcG9ydGVkTGltaXRzIHsKKyAgICAg
ICAgY2FsbGJhY2soeyB7IFdURk1vdmUobmFtZSksIFdlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXMg
eyBmZWF0dXJlcy5mZWF0dXJlcygpIH0sIFdlYkdQVTo6U3VwcG9ydGVkTGltaXRzIHsKICAgICAg
ICAgICAgIGxpbWl0cy5tYXhUZXh0dXJlRGltZW5zaW9uMUQoKSwKICAgICAgICAgICAgIGxpbWl0
cy5tYXhUZXh0dXJlRGltZW5zaW9uMkQoKSwKICAgICAgICAgICAgIGxpbWl0cy5tYXhUZXh0dXJl
RGltZW5zaW9uM0QoKSwKQEAgLTk2LDcgKzE0OSw3IEBAIHZvaWQgUmVtb3RlR1BVOjpyZXF1ZXN0
QWRhcHRlcihjb25zdCBXZWJHUFU6OlJlcXVlc3RBZGFwdGVyT3B0aW9ucyYgb3B0aW9ucywgV2Vi
CiAgICAgICAgICAgICBsaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFNpemVZKCksCiAgICAgICAg
ICAgICBsaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFNpemVaKCksCiAgICAgICAgICAgICBsaW1p
dHMubWF4Q29tcHV0ZVdvcmtncm91cHNQZXJEaW1lbnNpb24oKSwKLSAgICAgICAgfSwgYWRhcHRl
ci0+aXNGYWxsYmFja0FkYXB0ZXIoKSk7CisgICAgICAgIH0sIGFkYXB0ZXItPmlzRmFsbGJhY2tB
ZGFwdGVyKCkgfSB9KTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUuaCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLmgKaW5kZXggNzU4NTU0MzM0NTYwYzEy
M2MzZTFmZmI5YTg0MTk3ODRlYmFmZDA3OS4uYWVkNmI0ZmY1Y2M3YjdmM2NlZWM4YzI5OThjZGQx
NjJhOTI5MjU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVHUFUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZUdQVS5oCkBAIC0yNyw1MiArMjcsMTE5IEBACiAKICNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmgiCiAj
aW5jbHVkZSAiU3RyZWFtTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiU3RyZWFtU2VydmVy
Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYkdQVUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJX
ZWJHUFVPYmplY3RIZWFwLmgiCiAjaW5jbHVkZSAiV2ViR1BVU3VwcG9ydGVkRmVhdHVyZXMuaCIK
ICNpbmNsdWRlICJXZWJHUFVTdXBwb3J0ZWRMaW1pdHMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1By
b2Nlc3NJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRBc3NlcnRpb25zLmg+CiAK
IG5hbWVzcGFjZSBQQUw6OldlYkdQVSB7CiBjbGFzcyBHUFU7CiB9CiAKK25hbWVzcGFjZSBJUEMg
eworY2xhc3MgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7
CiAKK2NsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CitjbGFzcyBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOworCiBuYW1lc3BhY2UgV2ViR1BVIHsKIGNsYXNzIE9iamVjdEhlYXA7Ci1jbGFz
cyBPYmplY3RSZWdpc3RyeTsKIHN0cnVjdCBSZXF1ZXN0QWRhcHRlck9wdGlvbnM7CiB9CiAKIGNs
YXNzIFJlbW90ZUdQVSBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxS
ZW1vdGVHUFU+IGNyZWF0ZShQQUw6OldlYkdQVTo6R1BVJiBncHUsIFdlYkdQVTo6T2JqZWN0UmVn
aXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdl
YkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUdQVT4gY3Jl
YXRlKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgcmVu
ZGVyaW5nQmFja2VuZCwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlR1BVKGdwdSwgb2JqZWN0UmVn
aXN0cnksIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgUmVtb3RlR1BVKGlkZW50aWZpZXIsIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIHJl
bmRlcmluZ0JhY2tlbmQsIFdURk1vdmUoc3RyZWFtKSkpOwogICAgIH0KIAorICAgIHZvaWQgc3Rv
cExpc3RlbmluZ0ZvcklQQyhSZWY8UmVtb3RlR1BVPiYmIHJlZkZyb21Db25uZWN0aW9uKTsKKwog
ICAgIHZpcnR1YWwgflJlbW90ZUdQVSgpOwogCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBP
YmplY3RSZWdpc3RyeTsKKyAgICBzdHJ1Y3QgUmVxdWVzdEFkYXB0ZXJSZXNwb25zZSB7CisgICAg
ICAgIFN0cmluZyBuYW1lOworICAgICAgICBXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVzIGZlYXR1
cmVzOworICAgICAgICBXZWJHUFU6OlN1cHBvcnRlZExpbWl0cyBsaW1pdHM7CisgICAgICAgIGJv
b2wgaXNGYWxsYmFja0FkYXB0ZXI7CisKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAgICAgICAgeworICAgICAgICAg
ICAgZW5jb2RlciA8PCBuYW1lOworICAgICAgICAgICAgZW5jb2RlciA8PCBmZWF0dXJlczsKKyAg
ICAgICAgICAgIGVuY29kZXIgPDwgbGltaXRzOworICAgICAgICAgICAgZW5jb2RlciA8PCBpc0Zh
bGxiYWNrQWRhcHRlcjsKKyAgICAgICAgfQorCisgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlcXVlc3RBZGFwdGVyUmVzcG9uc2U+IGRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQorICAgICAgICB7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gbmFtZTsKKyAgICAgICAgICAgIGRlY29kZXIgPj4gbmFtZTsKKyAgICAgICAgICAgIGlm
ICghbmFtZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAg
ICAgICBzdGQ6Om9wdGlvbmFsPFdlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXM+IGZlYXR1cmVzOwor
ICAgICAgICAgICAgZGVjb2RlciA+PiBmZWF0dXJlczsKKyAgICAgICAgICAgIGlmICghZmVhdHVy
ZXMpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICAgICAg
c3RkOjpvcHRpb25hbDxXZWJHUFU6OlN1cHBvcnRlZExpbWl0cz4gbGltaXRzOworICAgICAgICAg
ICAgZGVjb2RlciA+PiBsaW1pdHM7CisgICAgICAgICAgICBpZiAoIWxpbWl0cykKKyAgICAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFs
PGJvb2w+IGlzRmFsbGJhY2tBZGFwdGVyOworICAgICAgICAgICAgZGVjb2RlciA+PiBpc0ZhbGxi
YWNrQWRhcHRlcjsKKyAgICAgICAgICAgIGlmICghaXNGYWxsYmFja0FkYXB0ZXIpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICAgICAgcmV0dXJuIHsgeyBX
VEZNb3ZlKCpuYW1lKSwgV1RGTW92ZSgqZmVhdHVyZXMpLCBXVEZNb3ZlKCpsaW1pdHMpLCAqaXNG
YWxsYmFja0FkYXB0ZXIgfSB9OworICAgICAgICB9CisgICAgfTsKIAotICAgIFJlbW90ZUdQVShQ
QUw6OldlYkdQVTo6R1BVJiwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0
SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOworcHJpdmF0ZToKKyAgICBSZW1vdGVHUFUoV2ViR1BV
SWRlbnRpZmllciwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQmLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CiAKICAgICBSZW1vdGVHUFUo
Y29uc3QgUmVtb3RlR1BVJikgPSBkZWxldGU7CiAgICAgUmVtb3RlR1BVKFJlbW90ZUdQVSYmKSA9
IGRlbGV0ZTsKICAgICBSZW1vdGVHUFUmIG9wZXJhdG9yPShjb25zdCBSZW1vdGVHUFUmKSA9IGRl
bGV0ZTsKICAgICBSZW1vdGVHUFUmIG9wZXJhdG9yPShSZW1vdGVHUFUmJikgPSBkZWxldGU7CiAK
LSAgICB2b2lkIGRpZFJlY2VpdmVTdHJlYW1NZXNzYWdlKElQQzo6U3RyZWFtU2VydmVyQ29ubmVj
dGlvbkJhc2UmLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKyAgICB2b2lkIGluaXRpYWxpemUoKTsK
KyAgICB2b2lkIHdvcmtRdWV1ZUluaXRpYWxpemUoKTsKKyAgICB2b2lkIHdvcmtRdWV1ZVVuaW5p
dGlhbGl6ZSgpOwogCi0gICAgdm9pZCByZXF1ZXN0QWRhcHRlcihjb25zdCBXZWJHUFU6OlJlcXVl
c3RBZGFwdGVyT3B0aW9ucyYsIFdlYkdQVUlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdHJpbmcmJiwgV2ViR1BVOjpTdXBwb3J0ZWRGZWF0dXJlcyYmLCBXZWJHUFU6OlN1
cHBvcnRlZExpbWl0cyYmLCBib29sKT4mJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAg
ICBib29sIHNlbmQoVCYmIG1lc3NhZ2UpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9z
dHJlYW1Db25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChXVEZNb3ZlKG1lc3NhZ2UpLCBtX2lk
ZW50aWZpZXIpOworICAgIH0KKworICAgIHZvaWQgZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoSVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCi0g
ICAgUmVmPFBBTDo6V2ViR1BVOjpHUFU+IG1fYmFja2luZzsKLSAgICBXZWJHUFU6Ok9iamVjdFJl
Z2lzdHJ5JiBtX29iamVjdFJlZ2lzdHJ5OwotICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmpl
Y3RIZWFwOwotICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAgIHZvaWQgcmVx
dWVzdEFkYXB0ZXIoY29uc3QgV2ViR1BVOjpSZXF1ZXN0QWRhcHRlck9wdGlvbnMmLCBXZWJHUFVJ
ZGVudGlmaWVyLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxSZXF1
ZXN0QWRhcHRlclJlc3BvbnNlPiYmKT4mJik7CisKKyAgICBXZWFrUHRyPEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M+IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKKyAgICBSZWY8SVBDOjpT
dHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlPiBtX3dvcmtRdWV1ZTsKKyAgICBSZWZQdHI8SVBDOjpT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiBtX3N0cmVhbUNvbm5lY3Rpb247CisgICAgUmVmUHRyPFBB
TDo6V2ViR1BVOjpHUFU+IG1fYmFja2luZyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fc3RyZWFtVGhy
ZWFkKTsKKyAgICBSZWY8V2ViR1BVOjpPYmplY3RIZWFwPiBtX29iamVjdEhlYXAgV1RGX0dVQVJE
RURfQllfTE9DSyhtX3N0cmVhbVRocmVhZCk7CisgICAgY29uc3QgV2ViR1BVSWRlbnRpZmllciBt
X2lkZW50aWZpZXI7CisgICAgUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IG1fcmVuZGVyaW5n
QmFja2VuZDsKKyAgICBOT19VTklRVUVfQUREUkVTUyBUaHJlYWRBc3NlcnRpb24gbV9zdHJlYW1U
aHJlYWQ7CisgICAgY29uc3QgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV93ZWJQcm9jZXNz
SWRlbnRpZmllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5t
ZXNzYWdlcy5pbgppbmRleCBlNGQ5NTI2NWFhNWQwMDM4OTRhYzgwNjI5MTQwMDBhMjRjYjUzZTI5
Li5mOWM4NWJiODg5N2Q4YjkxYjgyMTBjMmIzYjA4MDlmZjI5Mzc4NTVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZUdQVS5tZXNzYWdlcy5pbgpAQCAtMjQsNyArMjQsNyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykKIAogbWVzc2FnZXMgLT4gUmVtb3RlR1BVIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHsKLSAgICB2
b2lkIFJlcXVlc3RBZGFwdGVyKFdlYktpdDo6V2ViR1BVOjpSZXF1ZXN0QWRhcHRlck9wdGlvbnMg
b3B0aW9ucywgV2ViS2l0OjpXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+IChTdHJpbmcg
bmFtZSwgV2ViS2l0OjpXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVzIHN1cHBvcnRlZEZlYXR1cmVz
LCBXZWJLaXQ6OldlYkdQVTo6U3VwcG9ydGVkTGltaXRzIHN1cHBvcnRlZExpbWl0cywgYm9vbCBp
c0ZhbGxiYWNrQWRhcHRlcikgU3luY2hyb25vdXMKKyAgICB2b2lkIFJlcXVlc3RBZGFwdGVyKFdl
YktpdDo6V2ViR1BVOjpSZXF1ZXN0QWRhcHRlck9wdGlvbnMgb3B0aW9ucywgV2ViS2l0OjpXZWJH
UFVJZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+IChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6UmVtb3Rl
R1BVOjpSZXF1ZXN0QWRhcHRlclJlc3BvbnNlPiByZXNwb25zZSkgU3luY2hyb25vdXMKIH0KIAog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZVBpcGVsaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlUGlwZWxpbmVMYXlvdXQuY3BwCmluZGV4IDZjZDhiNjc3ZDU5
MTgwMmM2MjlkYjZmZDM0ODc0NzZhYTNlNmUwYzAuLmI3MjVlZDJmNmY0ODhlZmVmZjRmMGRjYTE3
YjBlNjkyZDdkMmM1MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlUGlwZWxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUGlwZWxpbmVMYXlvdXQuY3BwCkBAIC0y
OCwyNCArMjgsMjcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIlJl
bW90ZVBpcGVsaW5lTGF5b3V0TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViR1BVT2JqZWN0SGVhcC5oIgotI2luY2x1ZGUgIldlYkdQ
VU9iamVjdFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVQ
aXBlbGluZUxheW91dC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlUGlwZWxpbmVM
YXlvdXQ6OlJlbW90ZVBpcGVsaW5lTGF5b3V0KFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91dCYg
cGlwZWxpbmVMYXlvdXQsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBX
ZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmll
cikKK1JlbW90ZVBpcGVsaW5lTGF5b3V0OjpSZW1vdGVQaXBlbGluZUxheW91dChQQUw6OldlYkdQ
VTo6UGlwZWxpbmVMYXlvdXQmIHBpcGVsaW5lTGF5b3V0LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9i
amVjdEhlYXAsIFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+JiYgc3RyZWFtQ29ubmVj
dGlvbiwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5nKHBpcGVs
aW5lTGF5b3V0KQotICAgICwgbV9vYmplY3RSZWdpc3RyeShvYmplY3RSZWdpc3RyeSkKICAgICAs
IG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQorICAgICwgbV9zdHJlYW1Db25uZWN0aW9uKFdURk1v
dmUoc3RyZWFtQ29ubmVjdGlvbikpCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsK
LSAgICBtX29iamVjdFJlZ2lzdHJ5LmFkZE9iamVjdChtX2lkZW50aWZpZXIsIG1fYmFja2luZyk7
CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdGFydFJlY2VpdmluZ01lc3NhZ2VzKCp0aGlzLCBN
ZXNzYWdlczo6UmVtb3RlUGlwZWxpbmVMYXlvdXQ6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9p
ZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCi1SZW1vdGVQaXBlbGluZUxheW91dDo6flJlbW90
ZVBpcGVsaW5lTGF5b3V0KCkKK1JlbW90ZVBpcGVsaW5lTGF5b3V0Ojp+UmVtb3RlUGlwZWxpbmVM
YXlvdXQoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgUmVtb3RlUGlwZWxpbmVMYXlvdXQ6OnN0b3BMaXN0
ZW5pbmdGb3JJUEMoKQogewotICAgIG1fb2JqZWN0UmVnaXN0cnkucmVtb3ZlT2JqZWN0KG1faWRl
bnRpZmllcik7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdG9wUmVjZWl2aW5nTWVzc2FnZXMo
TWVzc2FnZXM6OlJlbW90ZVBpcGVsaW5lTGF5b3V0OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1f
aWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBSZW1vdGVQaXBlbGluZUxheW91dDo6
c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVBpcGVsaW5lTGF5b3V0LmggYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVBpcGVsaW5lTGF5b3V0LmgKaW5k
ZXggMjNiY2FlYjYwNjQxMjBiNTMyMDcyYzczNjJhODZmMGY2YzY3ZjIwZS4uNDk4MjlkMTg4YjA3
OWY4NjRjZDk4ZWYzNDYzYTE5ZWEyZjJhMTNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVQaXBlbGluZUxheW91dC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUGlwZWxpbmVMYXlv
dXQuaApAQCAtMzYsMjYgKzM2LDMyIEBAIG5hbWVzcGFjZSBQQUw6OldlYkdQVSB7CiBjbGFzcyBQ
aXBlbGluZUxheW91dDsKIH0KIAorbmFtZXNwYWNlIElQQyB7CitjbGFzcyBTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIFdlYkdQVSB7
CiBjbGFzcyBPYmplY3RIZWFwOwotY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiB9CiAKIGNsYXNzIFJl
bW90ZVBpcGVsaW5lTGF5b3V0IGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2Vp
dmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPFJlbW90ZVBpcGVsaW5lTGF5b3V0PiBjcmVhdGUoUEFMOjpXZWJHUFU6OlBpcGVsaW5lTGF5
b3V0JiBwaXBlbGluZUxheW91dCwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0
cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVu
dGlmaWVyKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlUGlwZWxpbmVMYXlvdXQ+IGNyZWF0ZShQQUw6
OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQmIHBpcGVsaW5lTGF5b3V0LCBXZWJHUFU6Ok9iamVjdEhl
YXAmIG9iamVjdEhlYXAsIFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+JiYgc3RyZWFt
Q29ubmVjdGlvbiwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXQs
IG9iamVjdFJlZ2lzdHJ5LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFJlbW90ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0LCBvYmpl
Y3RIZWFwLCBXVEZNb3ZlKHN0cmVhbUNvbm5lY3Rpb24pLCBpZGVudGlmaWVyKSk7CiAgICAgfQog
CiAgICAgdmlydHVhbCB+UmVtb3RlUGlwZWxpbmVMYXlvdXQoKTsKIAotcHJpdmF0ZToKLSAgICBm
cmllbmQgY2xhc3MgT2JqZWN0UmVnaXN0cnk7CisgICAgdm9pZCBzdG9wTGlzdGVuaW5nRm9ySVBD
KCk7CiAKLSAgICBSZW1vdGVQaXBlbGluZUxheW91dChQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlv
dXQmLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BV
SWRlbnRpZmllcik7CisgICAgUEFMOjpXZWJHUFU6OlBpcGVsaW5lTGF5b3V0JiBiYWNraW5nKCkg
eyByZXR1cm4gbV9iYWNraW5nOyB9CisKK3ByaXZhdGU6CisgICAgUmVtb3RlUGlwZWxpbmVMYXlv
dXQoUEFMOjpXZWJHUFU6OlBpcGVsaW5lTGF5b3V0JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgUmVm
PElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAg
ICBSZW1vdGVQaXBlbGluZUxheW91dChjb25zdCBSZW1vdGVQaXBlbGluZUxheW91dCYpID0gZGVs
ZXRlOwogICAgIFJlbW90ZVBpcGVsaW5lTGF5b3V0KFJlbW90ZVBpcGVsaW5lTGF5b3V0JiYpID0g
ZGVsZXRlOwpAQCAtNjcsOCArNzMsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0TGFiZWwoU3Ry
aW5nJiYpOwogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91dD4gbV9iYWNraW5n
OwotICAgIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7CiAgICAgV2Vi
R1BVOjpPYmplY3RIZWFwJiBtX29iamVjdEhlYXA7CisgICAgUmVmPElQQzo6U3RyZWFtU2VydmVy
Q29ubmVjdGlvbj4gbV9zdHJlYW1Db25uZWN0aW9uOwogICAgIFdlYkdQVUlkZW50aWZpZXIgbV9p
ZGVudGlmaWVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVRdWVyeVNldC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0LmNwcAppbmRleCBlMGNkMWM1YzNkN2Ix
NTQ1NTVkZDExODkxZDZhYjIwMDdjYWY0YTc1Li44ODIwNzBjZjZkMzY5MjJhZGExMjFkN2ZjMmM4
NGU2MmEyYTMyMTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0LmNwcApAQCAtMjgsMjQgKzI4LDI3IEBA
CiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVRdWVyeVNldE1l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUg
IldlYkdQVU9iamVjdEhlYXAuaCIKLSNpbmNsdWRlICJXZWJHUFVPYmplY3RSZWdpc3RyeS5oIgog
I2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUXVlcnlTZXQuaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKLVJlbW90ZVF1ZXJ5U2V0OjpSZW1vdGVRdWVyeVNldChQQUw6OldlYkdQ
VTo6UXVlcnlTZXQmIHF1ZXJ5U2V0LCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdp
c3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCitSZW1vdGVRdWVyeVNldDo6UmVtb3RlUXVlcnlTZXQoUEFMOjpXZWJHUFU6OlF1
ZXJ5U2V0JiBxdWVyeVNldCwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBSZWY8SVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiYmIHN0cmVhbUNvbm5lY3Rpb24sIFdlYkdQVUlkZW50
aWZpZXIgaWRlbnRpZmllcikKICAgICA6IG1fYmFja2luZyhxdWVyeVNldCkKLSAgICAsIG1fb2Jq
ZWN0UmVnaXN0cnkob2JqZWN0UmVnaXN0cnkpCiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVh
cCkKKyAgICAsIG1fc3RyZWFtQ29ubmVjdGlvbihXVEZNb3ZlKHN0cmVhbUNvbm5lY3Rpb24pKQog
ICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5h
ZGRPYmplY3QobV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOworICAgIG1fc3RyZWFtQ29ubmVjdGlv
bi0+c3RhcnRSZWNlaXZpbmdNZXNzYWdlcygqdGhpcywgTWVzc2FnZXM6OlJlbW90ZVF1ZXJ5U2V0
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAot
UmVtb3RlUXVlcnlTZXQ6On5SZW1vdGVRdWVyeVNldCgpCitSZW1vdGVRdWVyeVNldDo6flJlbW90
ZVF1ZXJ5U2V0KCkgPSBkZWZhdWx0OworCit2b2lkIFJlbW90ZVF1ZXJ5U2V0OjpzdG9wTGlzdGVu
aW5nRm9ySVBDKCkKIHsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdChtX2lkZW50
aWZpZXIpOworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+c3RvcFJlY2VpdmluZ01lc3NhZ2VzKE1l
c3NhZ2VzOjpSZW1vdGVRdWVyeVNldDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZp
ZXIudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgUmVtb3RlUXVlcnlTZXQ6OmRlc3Ryb3koKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVR
dWVyeVNldC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVRdWVyeVNldC5oCmluZGV4IGUxN2Q3M2MzMmVmM2VmMGYzN2Q2YWJlYTU1NTkwZjlkMDUxMjYz
OGEuLmRiNmM4ODkyZmJjYzRlNDE1NzU1MWJlZGEyYmFmODNjMTBjYTIzOWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVlcnlTZXQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1
ZXJ5U2V0LmgKQEAgLTM2LDI2ICszNiwzMiBAQCBuYW1lc3BhY2UgUEFMOjpXZWJHUFUgewogY2xh
c3MgUXVlcnlTZXQ7CiB9CiAKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgU3RyZWFtU2VydmVyQ29u
bmVjdGlvbjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBXZWJHUFUgewog
Y2xhc3MgT2JqZWN0SGVhcDsKLWNsYXNzIE9iamVjdFJlZ2lzdHJ5OwogfQogCiBjbGFzcyBSZW1v
dGVRdWVyeVNldCBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1v
dGVRdWVyeVNldD4gY3JlYXRlKFBBTDo6V2ViR1BVOjpRdWVyeVNldCYgcXVlcnlTZXQsIFdlYkdQ
VTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9i
amVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICBzdGF0aWMgUmVmPFJl
bW90ZVF1ZXJ5U2V0PiBjcmVhdGUoUEFMOjpXZWJHUFU6OlF1ZXJ5U2V0JiBxdWVyeVNldCwgV2Vi
R1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBSZWY8SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uPiYmIHN0cmVhbUNvbm5lY3Rpb24sIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVF1ZXJ5U2V0KHF1ZXJ5U2V0
LCBvYmplY3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVRdWVyeVNldChxdWVyeVNldCwgb2JqZWN0SGVhcCwgV1RG
TW92ZShzdHJlYW1Db25uZWN0aW9uKSwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1
YWwgflJlbW90ZVF1ZXJ5U2V0KCk7CiAKLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIE9iamVj
dFJlZ2lzdHJ5OworICAgIHZvaWQgc3RvcExpc3RlbmluZ0ZvcklQQygpOwogCi0gICAgUmVtb3Rl
UXVlcnlTZXQoUEFMOjpXZWJHUFU6OlF1ZXJ5U2V0JiwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYs
IFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOworICAgIFBBTDo6V2ViR1BV
OjpRdWVyeVNldCYgYmFja2luZygpIHsgcmV0dXJuIG1fYmFja2luZzsgfQorCitwcml2YXRlOgor
ICAgIFJlbW90ZVF1ZXJ5U2V0KFBBTDo6V2ViR1BVOjpRdWVyeVNldCYsIFdlYkdQVTo6T2JqZWN0
SGVhcCYsIFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+JiYsIFdlYkdQVUlkZW50aWZp
ZXIpOwogCiAgICAgUmVtb3RlUXVlcnlTZXQoY29uc3QgUmVtb3RlUXVlcnlTZXQmKSA9IGRlbGV0
ZTsKICAgICBSZW1vdGVRdWVyeVNldChSZW1vdGVRdWVyeVNldCYmKSA9IGRlbGV0ZTsKQEAgLTY5
LDggKzc1LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogICAg
IFJlZjxQQUw6OldlYkdQVTo6UXVlcnlTZXQ+IG1fYmFja2luZzsKLSAgICBXZWJHUFU6Ok9iamVj
dFJlZ2lzdHJ5JiBtX29iamVjdFJlZ2lzdHJ5OwogICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9v
YmplY3RIZWFwOworICAgIFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+IG1fc3RyZWFt
Q29ubmVjdGlvbjsKICAgICBXZWJHUFVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
UXVldWUuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVRdWV1ZS5jcHAKaW5kZXggZGVhNjQwOThmYTZkNDVjODU3MzkzNDRlNWFhN2YwZjA4MjNiOWE5
Ni4uNmZlZjAzYzg3YTYyMmQwYWE3NTBhZDY5YTNhNzg2OWQ3NWZhYzdlZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWV1ZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWV1
ZS5jcHAKQEAgLTI4LDI0ICsyOCwyNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisj
aW5jbHVkZSAiUmVtb3RlUXVldWVNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlN0cmVhbVNlcnZlckNv
bm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCi0jaW5jbHVkZSAiV2Vi
R1BVT2JqZWN0UmVnaXN0cnkuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQ
VVF1ZXVlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZW1vdGVRdWV1ZTo6UmVtb3RlUXVl
dWUoUEFMOjpXZWJHUFU6OlF1ZXVlJiBxdWV1ZSwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2Jq
ZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRp
ZmllciBpZGVudGlmaWVyKQorUmVtb3RlUXVldWU6OlJlbW90ZVF1ZXVlKFBBTDo6V2ViR1BVOjpR
dWV1ZSYgcXVldWUsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgUmVmPElQQzo6U3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbj4mJiBzdHJlYW1Db25uZWN0aW9uLCBXZWJHUFVJZGVudGlmaWVy
IGlkZW50aWZpZXIpCiAgICAgOiBtX2JhY2tpbmcocXVldWUpCi0gICAgLCBtX29iamVjdFJlZ2lz
dHJ5KG9iamVjdFJlZ2lzdHJ5KQogICAgICwgbV9vYmplY3RIZWFwKG9iamVjdEhlYXApCisgICAg
LCBtX3N0cmVhbUNvbm5lY3Rpb24oV1RGTW92ZShzdHJlYW1Db25uZWN0aW9uKSkKICAgICAsIG1f
aWRlbnRpZmllcihpZGVudGlmaWVyKQogewotICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0
KG1faWRlbnRpZmllciwgbV9iYWNraW5nKTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0YXJ0
UmVjZWl2aW5nTWVzc2FnZXMoKnRoaXMsIE1lc3NhZ2VzOjpSZW1vdGVRdWV1ZTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKLVJlbW90ZVF1ZXVl
Ojp+UmVtb3RlUXVldWUoKQorUmVtb3RlUXVldWU6On5SZW1vdGVRdWV1ZSgpID0gZGVmYXVsdDsK
Kwordm9pZCBSZW1vdGVRdWV1ZTo6c3RvcExpc3RlbmluZ0ZvcklQQygpCiB7Ci0gICAgbV9vYmpl
Y3RSZWdpc3RyeS5yZW1vdmVPYmplY3QobV9pZGVudGlmaWVyKTsKKyAgICBtX3N0cmVhbUNvbm5l
Y3Rpb24tPnN0b3BSZWNlaXZpbmdNZXNzYWdlcyhNZXNzYWdlczo6UmVtb3RlUXVldWU6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCiB2b2lkIFJl
bW90ZVF1ZXVlOjpzdWJtaXQoVmVjdG9yPFdlYkdQVUlkZW50aWZpZXI+JiYgY29tbWFuZEJ1ZmZl
cnMpCkBAIC01Myw3ICs1Niw3IEBAIHZvaWQgUmVtb3RlUXVldWU6OnN1Ym1pdChWZWN0b3I8V2Vi
R1BVSWRlbnRpZmllcj4mJiBjb21tYW5kQnVmZmVycykKICAgICBWZWN0b3I8c3RkOjpyZWZlcmVu
Y2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZlcj4+IGNvbnZlcnRlZENvbW1hbmRC
dWZmZXJzOwogICAgIGNvbnZlcnRlZENvbW1hbmRCdWZmZXJzLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkoY29tbWFuZEJ1ZmZlcnMuc2l6ZSgpKTsKICAgICBmb3IgKFdlYkdQVUlkZW50aWZpZXIgaWRl
bnRpZmllciA6IGNvbW1hbmRCdWZmZXJzKSB7Ci0gICAgICAgIGF1dG8gY29udmVydGVkQ29tbWFu
ZEJ1ZmZlciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydENvbW1hbmRCdWZmZXJGcm9tQmFja2lu
ZyhpZGVudGlmaWVyKTsKKyAgICAgICAgYXV0byBjb252ZXJ0ZWRDb21tYW5kQnVmZmVyID0gbV9v
YmplY3RIZWFwLmNvbnZlcnRDb21tYW5kQnVmZmVyRnJvbUJhY2tpbmcoaWRlbnRpZmllcik7CiAg
ICAgICAgIEFTU0VSVChjb252ZXJ0ZWRDb21tYW5kQnVmZmVyKTsKICAgICAgICAgaWYgKCFjb252
ZXJ0ZWRDb21tYW5kQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNzQsNyArNzcsNyBA
QCB2b2lkIFJlbW90ZVF1ZXVlOjp3cml0ZUJ1ZmZlcigKICAgICBQQUw6OldlYkdQVTo6U2l6ZTY0
IGJ1ZmZlck9mZnNldCwKICAgICBWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewotICAgIGF1dG8g
Y29udmVydGVkQnVmZmVyID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0QnVmZmVyRnJvbUJhY2tp
bmcoYnVmZmVyKTsKKyAgICBhdXRvIGNvbnZlcnRlZEJ1ZmZlciA9IG1fb2JqZWN0SGVhcC5jb252
ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoYnVmZmVyKTsKICAgICBBU1NFUlQoY29udmVydGVkQnVmZmVy
KTsKICAgICBpZiAoIWNvbnZlcnRlZEJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwpAQCAtODgsMTEg
KzkxLDExIEBAIHZvaWQgUmVtb3RlUXVldWU6OndyaXRlVGV4dHVyZSgKICAgICBjb25zdCBXZWJH
UFU6OkltYWdlRGF0YUxheW91dCYgZGF0YUxheW91dCwKICAgICBjb25zdCBXZWJHUFU6OkV4dGVu
dDNEJiBzaXplKQogewotICAgIGF1dG8gY29udmVydGVkRGVzdGluYXRpb24gPSBtX29iamVjdFJl
Z2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhkZXN0aW5hdGlvbik7CisgICAgYXV0byBjb252ZXJ0
ZWREZXN0aW5hdGlvbiA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzdGluYXRp
b24pOwogICAgIEFTU0VSVChjb252ZXJ0ZWREZXN0aW5hdGlvbik7Ci0gICAgYXV0byBjb252ZXJ0
ZWREYXRhTGF5b3V0ID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoZGF0YUxh
eW91dCk7CisgICAgYXV0byBjb252ZXJ0ZWREYXRhTGF5b3V0ID0gbV9vYmplY3RIZWFwLmNvbnZl
cnRGcm9tQmFja2luZyhkYXRhTGF5b3V0KTsKICAgICBBU1NFUlQoY29udmVydGVkRGVzdGluYXRp
b24pOwotICAgIGF1dG8gY29udmVydGVkU2l6ZSA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZy
b21CYWNraW5nKHNpemUpOworICAgIGF1dG8gY29udmVydGVkU2l6ZSA9IG1fb2JqZWN0SGVhcC5j
b252ZXJ0RnJvbUJhY2tpbmcoc2l6ZSk7CiAgICAgQVNTRVJUKGNvbnZlcnRlZFNpemUpOwogICAg
IGlmICghY29udmVydGVkRGVzdGluYXRpb24gfHwgIWNvbnZlcnRlZERlc3RpbmF0aW9uIHx8ICFj
b252ZXJ0ZWRTaXplKQogICAgICAgICByZXR1cm47CkBAIC0xMDUsMTEgKzEwOCwxMSBAQCB2b2lk
IFJlbW90ZVF1ZXVlOjpjb3B5RXh0ZXJuYWxJbWFnZVRvVGV4dHVyZSgKICAgICBjb25zdCBXZWJH
UFU6OkltYWdlQ29weVRleHR1cmVUYWdnZWQmIGRlc3RpbmF0aW9uLAogICAgIGNvbnN0IFdlYkdQ
VTo6RXh0ZW50M0QmIGNvcHlTaXplKQogewotICAgIGF1dG8gY29udmVydGVkU291cmNlID0gbV9v
YmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoc291cmNlKTsKKyAgICBhdXRvIGNvbnZl
cnRlZFNvdXJjZSA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0RnJvbUJhY2tpbmcoc291cmNlKTsKICAg
ICBBU1NFUlQoY29udmVydGVkU291cmNlKTsKLSAgICBhdXRvIGNvbnZlcnRlZERlc3RpbmF0aW9u
ID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzdGluYXRpb24pOworICAg
IGF1dG8gY29udmVydGVkRGVzdGluYXRpb24gPSBtX29iamVjdEhlYXAuY29udmVydEZyb21CYWNr
aW5nKGRlc3RpbmF0aW9uKTsKICAgICBBU1NFUlQoY29udmVydGVkRGVzdGluYXRpb24pOwotICAg
IGF1dG8gY29udmVydGVkQ29weVNpemUgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFj
a2luZyhjb3B5U2l6ZSk7CisgICAgYXV0byBjb252ZXJ0ZWRDb3B5U2l6ZSA9IG1fb2JqZWN0SGVh
cC5jb252ZXJ0RnJvbUJhY2tpbmcoY29weVNpemUpOwogICAgIEFTU0VSVChjb252ZXJ0ZWRDb3B5
U2l6ZSk7CiAgICAgaWYgKCFjb252ZXJ0ZWREZXN0aW5hdGlvbiB8fCAhY29udmVydGVkRGVzdGlu
YXRpb24gfHwgIWNvbnZlcnRlZENvcHlTaXplKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXVlLmgg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXVlLmgK
aW5kZXggYTUwYWY4MjQ1MWZiOWZiZWRhOTdjMTA2NWU2OTM2NWYzOWY3YjM4Ni4uZDUwNTQyZTBj
MmJhNGE4YWI3ZjkzNWRjMGYwYzYzNTliNzVkOGYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWV1ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVldWUuaApAQCAtNDEsNiAr
NDEsMTAgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNzIFF1ZXVlOwogfQogCituYW1l
c3BhY2UgSVBDIHsKK2NsYXNzIFN0cmVhbVNlcnZlckNvbm5lY3Rpb247Cit9CisKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgV2ViR1BVIHsKQEAgLTQ5LDIyICs1MywyNCBAQCBzdHJ1
Y3QgSW1hZ2VDb3B5VGV4dHVyZTsKIHN0cnVjdCBJbWFnZUNvcHlUZXh0dXJlVGFnZ2VkOwogc3Ry
dWN0IEltYWdlRGF0YUxheW91dDsKIGNsYXNzIE9iamVjdEhlYXA7Ci1jbGFzcyBPYmplY3RSZWdp
c3RyeTsKIH0KIAogY2xhc3MgUmVtb3RlUXVldWUgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1N
ZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8UmVtb3RlUXVldWU+IGNyZWF0ZShQQUw6OldlYkdQVTo6UXVldWUmIHF1
ZXVlLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmpl
Y3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgc3Rh
dGljIFJlZjxSZW1vdGVRdWV1ZT4gY3JlYXRlKFBBTDo6V2ViR1BVOjpRdWV1ZSYgcXVldWUsIFdl
YkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVj
dGlvbj4mJiBzdHJlYW1Db25uZWN0aW9uLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVRdWV1ZShxdWV1ZSwgb2Jq
ZWN0UmVnaXN0cnksIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUmVtb3RlUXVldWUocXVldWUsIG9iamVjdEhlYXAsIFdURk1vdmUoc3RyZWFt
Q29ubmVjdGlvbiksIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVR
dWV1ZSgpOwogCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKKyAg
ICB2b2lkIHN0b3BMaXN0ZW5pbmdGb3JJUEMoKTsKIAotICAgIFJlbW90ZVF1ZXVlKFBBTDo6V2Vi
R1BVOjpRdWV1ZSYsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmLCBXZWJHUFU6Ok9iamVjdEhlYXAm
LCBXZWJHUFVJZGVudGlmaWVyKTsKKyAgICBQQUw6OldlYkdQVTo6UXVldWUmIGJhY2tpbmcoKSB7
IHJldHVybiBtX2JhY2tpbmc7IH0KKworcHJpdmF0ZToKKyAgICBSZW1vdGVRdWV1ZShQQUw6Oldl
YkdQVTo6UXVldWUmLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBSZWY8SVBDOjpTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uPiYmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZVF1ZXVlKGNvbnN0
IFJlbW90ZVF1ZXVlJikgPSBkZWxldGU7CiAgICAgUmVtb3RlUXVldWUoUmVtb3RlUXVldWUmJikg
PSBkZWxldGU7CkBAIC05Niw4ICsxMDIsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0TGFiZWwo
U3RyaW5nJiYpOwogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpRdWV1ZT4gbV9iYWNraW5nOwotICAg
IFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7CiAgICAgV2ViR1BVOjpP
YmplY3RIZWFwJiBtX29iamVjdEhlYXA7CisgICAgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVj
dGlvbj4gbV9zdHJlYW1Db25uZWN0aW9uOwogICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlm
aWVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGUuY3BwCmluZGV4IDE3ZTBhY2Y5MDE5
YzM0ZDk5ZjJiMDY3NzI4NDFkMzVkMzhmOGM5ZTQuLmU1ZDZkMjVlZWUzZTg1YTRmN2RhN2M2Yzhh
MjNiMGRjZDliOGVlOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZS5jcHAKQEAgLTI4LDI0
ICsyOCwyNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiUmVtb3Rl
UmVuZGVyQnVuZGxlTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
LmgiCiAjaW5jbHVkZSAiV2ViR1BVT2JqZWN0SGVhcC5oIgotI2luY2x1ZGUgIldlYkdQVU9iamVj
dFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJC
dW5kbGUuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90ZVJlbmRlckJ1bmRsZTo6UmVt
b3RlUmVuZGVyQnVuZGxlKFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGUmIHJlbmRlckJ1bmRsZSwg
V2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVh
cCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorUmVtb3RlUmVuZGVy
QnVuZGxlOjpSZW1vdGVSZW5kZXJCdW5kbGUoUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZSYgcmVu
ZGVyQnVuZGxlLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFJlZjxJUEM6OlN0cmVh
bVNlcnZlckNvbm5lY3Rpb24+JiYgc3RyZWFtQ29ubmVjdGlvbiwgV2ViR1BVSWRlbnRpZmllciBp
ZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5nKHJlbmRlckJ1bmRsZSkKLSAgICAsIG1fb2JqZWN0
UmVnaXN0cnkob2JqZWN0UmVnaXN0cnkpCiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkK
KyAgICAsIG1fc3RyZWFtQ29ubmVjdGlvbihXVEZNb3ZlKHN0cmVhbUNvbm5lY3Rpb24pKQogICAg
ICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5hZGRP
YmplY3QobV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+
c3RhcnRSZWNlaXZpbmdNZXNzYWdlcygqdGhpcywgTWVzc2FnZXM6OlJlbW90ZVJlbmRlckJ1bmRs
ZTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAK
LVJlbW90ZVJlbmRlckJ1bmRsZTo6flJlbW90ZVJlbmRlckJ1bmRsZSgpCitSZW1vdGVSZW5kZXJC
dW5kbGU6On5SZW1vdGVSZW5kZXJCdW5kbGUoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgUmVtb3RlUmVu
ZGVyQnVuZGxlOjpzdG9wTGlzdGVuaW5nRm9ySVBDKCkKIHsKLSAgICBtX29iamVjdFJlZ2lzdHJ5
LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+c3Rv
cFJlY2VpdmluZ01lc3NhZ2VzKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJCdW5kbGU6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCiB2b2lkIFJlbW90
ZVJlbmRlckJ1bmRsZTo6c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZS5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJC
dW5kbGUuaAppbmRleCA2YjgwZDU5YmE3MjcyODIyZGUwNzZhMmE1NzdjNjE3ZTE4OWExY2FmLi45
MzFiODVmODMyZDMzYmNiNzQxYzAyNzhkYTFiNDBmOWY2NDI1ZjA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVu
ZGVyQnVuZGxlLmgKQEAgLTM2LDI2ICszNiwzMiBAQCBuYW1lc3BhY2UgUEFMOjpXZWJHUFUgewog
Y2xhc3MgUmVuZGVyQnVuZGxlOwogfQogCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFN0cmVhbVNl
cnZlckNvbm5lY3Rpb247Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgV2Vi
R1BVIHsKIGNsYXNzIE9iamVjdEhlYXA7Ci1jbGFzcyBPYmplY3RSZWdpc3RyeTsKIH0KIAogY2xh
c3MgUmVtb3RlUmVuZGVyQnVuZGxlIGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJl
Y2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPFJlbW90ZVJlbmRlckJ1bmRsZT4gY3JlYXRlKFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5k
bGUmIHJlbmRlckJ1bmRsZSwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnks
IFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyQnVuZGxlPiBjcmVhdGUoUEFMOjpXZWJH
UFU6OlJlbmRlckJ1bmRsZSYgcmVuZGVyQnVuZGxlLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVj
dEhlYXAsIFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+JiYgc3RyZWFtQ29ubmVjdGlv
biwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUmVtb3RlUmVuZGVyQnVuZGxlKHJlbmRlckJ1bmRsZSwgb2JqZWN0UmVnaXN0
cnksIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUmVtb3RlUmVuZGVyQnVuZGxlKHJlbmRlckJ1bmRsZSwgb2JqZWN0SGVhcCwgV1RGTW92ZShz
dHJlYW1Db25uZWN0aW9uKSwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJl
bW90ZVJlbmRlckJ1bmRsZSgpOwogCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBPYmplY3RS
ZWdpc3RyeTsKKyAgICB2b2lkIHN0b3BMaXN0ZW5pbmdGb3JJUEMoKTsKIAotICAgIFJlbW90ZVJl
bmRlckJ1bmRsZShQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlJiwgV2ViR1BVOjpPYmplY3RSZWdp
c3RyeSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOworICAgIFBBTDo6
V2ViR1BVOjpSZW5kZXJCdW5kbGUmIGJhY2tpbmcoKSB7IHJldHVybiBtX2JhY2tpbmc7IH0KKwor
cHJpdmF0ZToKKyAgICBSZW1vdGVSZW5kZXJCdW5kbGUoUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRs
ZSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+
JiYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlUmVuZGVyQnVuZGxlKGNvbnN0IFJl
bW90ZVJlbmRlckJ1bmRsZSYpID0gZGVsZXRlOwogICAgIFJlbW90ZVJlbmRlckJ1bmRsZShSZW1v
dGVSZW5kZXJCdW5kbGUmJikgPSBkZWxldGU7CkBAIC02Nyw4ICs3Myw4IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7CiAKICAgICBSZWY8UEFMOjpXZWJHUFU6OlJlbmRl
ckJ1bmRsZT4gbV9iYWNraW5nOwotICAgIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0
UmVnaXN0cnk7CiAgICAgV2ViR1BVOjpPYmplY3RIZWFwJiBtX29iamVjdEhlYXA7CisgICAgUmVm
PElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4gbV9zdHJlYW1Db25uZWN0aW9uOwogICAgIFdl
YkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVu
ZGVyQnVuZGxlRW5jb2Rlci5jcHAKaW5kZXggNzcyY2Y4MmE5MTYwYTg2ZTMwNDE0ODg0NDY5Y2Ix
MmE4ZTlmNWNhYy4uMGRjMmU5NjhjYmExMjY5YzM1MWJkYjFhZDdjNDlhMWJjOWM3NDE2NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVS
ZW5kZXJCdW5kbGVFbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIuY3BwCkBAIC0yOSwzMCArMjks
MzMgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJC
dW5kbGUuaCIKKyNpbmNsdWRlICJSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyTWVzc2FnZXMuaCIK
KyNpbmNsdWRlICJTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViR1BVT2Jq
ZWN0SGVhcC5oIgotI2luY2x1ZGUgIldlYkdQVU9iamVjdFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8
cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJCdW5kbGUuaD4KICNpbmNsdWRlIDxwYWwv
Z3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlckJ1bmRsZUVuY29kZXIuaD4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLVJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OlJlbW90ZVJlbmRlckJ1bmRs
ZUVuY29kZXIoUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXImIHJlbmRlckJ1bmRsZUVu
Y29kZXIsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9i
amVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK1JlbW90
ZVJlbmRlckJ1bmRsZUVuY29kZXI6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIoUEFMOjpXZWJH
UFU6OlJlbmRlckJ1bmRsZUVuY29kZXImIHJlbmRlckJ1bmRsZUVuY29kZXIsIFdlYkdQVTo6T2Jq
ZWN0SGVhcCYgb2JqZWN0SGVhcCwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiBz
dHJlYW1Db25uZWN0aW9uLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2Jh
Y2tpbmcocmVuZGVyQnVuZGxlRW5jb2RlcikKLSAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2JqZWN0
UmVnaXN0cnkpCiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkKKyAgICAsIG1fc3RyZWFt
Q29ubmVjdGlvbihXVEZNb3ZlKHN0cmVhbUNvbm5lY3Rpb24pKQogICAgICwgbV9pZGVudGlmaWVy
KGlkZW50aWZpZXIpCiB7Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5hZGRPYmplY3QobV9pZGVudGlm
aWVyLCBtX2JhY2tpbmcpOworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+c3RhcnRSZWNlaXZpbmdN
ZXNzYWdlcygqdGhpcywgTWVzc2FnZXM6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCi1SZW1vdGVS
ZW5kZXJCdW5kbGVFbmNvZGVyOjp+UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlcigpCitSZW1vdGVS
ZW5kZXJCdW5kbGVFbmNvZGVyOjp+UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlcigpID0gZGVmYXVs
dDsKKwordm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpzdG9wTGlzdGVuaW5nRm9ySVBD
KCkKIHsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOwor
ICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+c3RvcFJlY2VpdmluZ01lc3NhZ2VzKE1lc3NhZ2VzOjpS
ZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRp
Zmllci50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpz
ZXRQaXBlbGluZShXZWJHUFVJZGVudGlmaWVyIHJlbmRlclBpcGVsaW5lKQogewotICAgIGF1dG8g
Y29udmVydGVkUmVuZGVyUGlwZWxpbmUgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRSZW5kZXJQ
aXBlbGluZUZyb21CYWNraW5nKHJlbmRlclBpcGVsaW5lKTsKKyAgICBhdXRvIGNvbnZlcnRlZFJl
bmRlclBpcGVsaW5lID0gbV9vYmplY3RIZWFwLmNvbnZlcnRSZW5kZXJQaXBlbGluZUZyb21CYWNr
aW5nKHJlbmRlclBpcGVsaW5lKTsKICAgICBBU1NFUlQoY29udmVydGVkUmVuZGVyUGlwZWxpbmUp
OwogICAgIGlmICghY29udmVydGVkUmVuZGVyUGlwZWxpbmUpCiAgICAgICAgIHJldHVybjsKQEAg
LTYyLDcgKzY1LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpzZXRQaXBlbGlu
ZShXZWJHUFVJZGVudGlmaWVyIHJlbmRlclBpcGVsaW5lKQogCiB2b2lkIFJlbW90ZVJlbmRlckJ1
bmRsZUVuY29kZXI6OnNldEluZGV4QnVmZmVyKFdlYkdQVUlkZW50aWZpZXIgYnVmZmVyLCBQQUw6
OldlYkdQVTo6SW5kZXhGb3JtYXQgaW5kZXhGb3JtYXQsIFBBTDo6V2ViR1BVOjpTaXplNjQgb2Zm
c2V0LCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplNjQ+IHNpemUpCiB7Ci0gICAgYXV0
byBjb252ZXJ0ZWRCdWZmZXIgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRCdWZmZXJGcm9tQmFj
a2luZyhidWZmZXIpOworICAgIGF1dG8gY29udmVydGVkQnVmZmVyID0gbV9vYmplY3RIZWFwLmNv
bnZlcnRCdWZmZXJGcm9tQmFja2luZyhidWZmZXIpOwogICAgIEFTU0VSVChjb252ZXJ0ZWRCdWZm
ZXIpOwogICAgIGlmICghY29udmVydGVkQnVmZmVyKQogICAgICAgICByZXR1cm47CkBAIC03Miw3
ICs3NSw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6c2V0SW5kZXhCdWZmZXIo
V2ViR1BVSWRlbnRpZmllciBidWZmZXIsIFBBTDo6V2ViCiAKIHZvaWQgUmVtb3RlUmVuZGVyQnVu
ZGxlRW5jb2Rlcjo6c2V0VmVydGV4QnVmZmVyKFBBTDo6V2ViR1BVOjpJbmRleDMyIHNsb3QsIFdl
YkdQVUlkZW50aWZpZXIgYnVmZmVyLCBQQUw6OldlYkdQVTo6U2l6ZTY0IG9mZnNldCwgc3RkOjpv
cHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0PiBzaXplKQogewotICAgIGF1dG8gY29udmVydGVk
QnVmZmVyID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoYnVmZmVy
KTsKKyAgICBhdXRvIGNvbnZlcnRlZEJ1ZmZlciA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0QnVmZmVy
RnJvbUJhY2tpbmcoYnVmZmVyKTsKICAgICBBU1NFUlQoY29udmVydGVkQnVmZmVyKTsKICAgICBp
ZiAoIWNvbnZlcnRlZEJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwpAQCAtOTYsNyArOTksNyBAQCB2
b2lkIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OmRyYXdJbmRleGVkKFBBTDo6V2ViR1BVOjpT
aXplMzIgaW5kZXhDb3VudCwgUEFMOgogCiB2b2lkIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6
OmRyYXdJbmRpcmVjdChXZWJHUFVJZGVudGlmaWVyIGluZGlyZWN0QnVmZmVyLCBQQUw6OldlYkdQ
VTo6U2l6ZTY0IGluZGlyZWN0T2Zmc2V0KQogewotICAgIGF1dG8gY29udmVydGVkSW5kaXJlY3RC
dWZmZXIgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhpbmRpcmVj
dEJ1ZmZlcik7CisgICAgYXV0byBjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlciA9IG1fb2JqZWN0SGVh
cC5jb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoaW5kaXJlY3RCdWZmZXIpOwogICAgIEFTU0VSVChj
b252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlcik7CiAgICAgaWYgKCFjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZl
cikKICAgICAgICAgcmV0dXJuOwpAQCAtMTA2LDcgKzEwOSw3IEBAIHZvaWQgUmVtb3RlUmVuZGVy
QnVuZGxlRW5jb2Rlcjo6ZHJhd0luZGlyZWN0KFdlYkdQVUlkZW50aWZpZXIgaW5kaXJlY3RCdWZm
ZXIsIFBBCiAKIHZvaWQgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6ZHJhd0luZGV4ZWRJbmRp
cmVjdChXZWJHUFVJZGVudGlmaWVyIGluZGlyZWN0QnVmZmVyLCBQQUw6OldlYkdQVTo6U2l6ZTY0
IGluZGlyZWN0T2Zmc2V0KQogewotICAgIGF1dG8gY29udmVydGVkSW5kaXJlY3RCdWZmZXIgPSBt
X29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhpbmRpcmVjdEJ1ZmZlcik7
CisgICAgYXV0byBjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlciA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0
QnVmZmVyRnJvbUJhY2tpbmcoaW5kaXJlY3RCdWZmZXIpOwogICAgIEFTU0VSVChjb252ZXJ0ZWRJ
bmRpcmVjdEJ1ZmZlcik7CiAgICAgaWYgKCFjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlcikKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTE3LDcgKzEyMCw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyQnVuZGxlRW5j
b2Rlcjo6ZHJhd0luZGV4ZWRJbmRpcmVjdChXZWJHUFVJZGVudGlmaWVyIGluZGlyZWN0QnVmCiB2
b2lkIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OnNldEJpbmRHcm91cChQQUw6OldlYkdQVTo6
SW5kZXgzMiBpbmRleCwgV2ViR1BVSWRlbnRpZmllciBiaW5kR3JvdXAsCiAgICAgc3RkOjpvcHRp
b25hbDxWZWN0b3I8UEFMOjpXZWJHUFU6OkJ1ZmZlckR5bmFtaWNPZmZzZXQ+PiYmIGR5bmFtaWNP
ZmZzZXRzKQogewotICAgIGF1dG8gY29udmVydGVkQmluZEdyb3VwID0gbV9vYmplY3RSZWdpc3Ry
eS5jb252ZXJ0QmluZEdyb3VwRnJvbUJhY2tpbmcoYmluZEdyb3VwKTsKKyAgICBhdXRvIGNvbnZl
cnRlZEJpbmRHcm91cCA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0QmluZEdyb3VwRnJvbUJhY2tpbmco
YmluZEdyb3VwKTsKICAgICBBU1NFUlQoY29udmVydGVkQmluZEdyb3VwKTsKICAgICBpZiAoIWNv
bnZlcnRlZEJpbmRHcm91cCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTQyLDE0ICsxNDUsMTQgQEAg
dm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjppbnNlcnREZWJ1Z01hcmtlcihTdHJpbmcm
JiBtYXJrZXJMYWJlbCkKIAogdm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpmaW5pc2go
Y29uc3QgV2ViR1BVOjpSZW5kZXJCdW5kbGVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBXZWJHUFVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0g
bV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgYXV0
byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RIZWFwLmNvbnZlcnRGcm9tQmFja2luZyhk
ZXNjcmlwdG9yKTsKICAgICBBU1NFUlQoY29udmVydGVkRGVzY3JpcHRvcik7CiAgICAgaWYgKCFj
b252ZXJ0ZWREZXNjcmlwdG9yKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHJlbmRlckJ1
bmRsZSA9IG1fYmFja2luZy0+ZmluaXNoKCpjb252ZXJ0ZWREZXNjcmlwdG9yKTsKLSAgICBhdXRv
IHJlbW90ZVJlbmRlckJ1bmRsZSA9IFJlbW90ZVJlbmRlckJ1bmRsZTo6Y3JlYXRlKHJlbmRlckJ1
bmRsZSwgbV9vYmplY3RSZWdpc3RyeSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKLSAgICBt
X29iamVjdEhlYXAuYWRkT2JqZWN0KHJlbW90ZVJlbmRlckJ1bmRsZSk7CisgICAgYXV0byByZW1v
dGVSZW5kZXJCdW5kbGUgPSBSZW1vdGVSZW5kZXJCdW5kbGU6OmNyZWF0ZShyZW5kZXJCdW5kbGUs
IG1fb2JqZWN0SGVhcCwgbV9zdHJlYW1Db25uZWN0aW9uLmNvcHlSZWYoKSwgaWRlbnRpZmllcik7
CisgICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChpZGVudGlmaWVyLCByZW1vdGVSZW5kZXJCdW5k
bGUpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OnNldExhYmVsKFN0cmlu
ZyYmIGxhYmVsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIuaAppbmRleCBm
ODdiNzNlMDFjN2FhNGIxYjY2ZDRjNWE3NmFhYmI1NTNkNzcxNjMyLi41NzgxNGQyMWUyZGVjMWE2
ZmVlOWJmOWNhM2ZhYmNkODgyZmQ3NzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRs
ZUVuY29kZXIuaApAQCAtMzgsMjcgKzM4LDMzIEBAIG5hbWVzcGFjZSBQQUw6OldlYkdQVSB7CiBj
bGFzcyBSZW5kZXJCdW5kbGVFbmNvZGVyOwogfQogCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFN0
cmVhbVNlcnZlckNvbm5lY3Rpb247Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3Bh
Y2UgV2ViR1BVIHsKIGNsYXNzIE9iamVjdEhlYXA7Ci1jbGFzcyBPYmplY3RSZWdpc3RyeTsKIHN0
cnVjdCBSZW5kZXJCdW5kbGVEZXNjcmlwdG9yOwogfQogCiBjbGFzcyBSZW1vdGVSZW5kZXJCdW5k
bGVFbmNvZGVyIGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90
ZVJlbmRlckJ1bmRsZUVuY29kZXI+IGNyZWF0ZShQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRW5j
b2RlciYgcmVuZGVyQnVuZGxlRW5jb2RlciwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0
UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcj4g
Y3JlYXRlKFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyJiByZW5kZXJCdW5kbGVFbmNv
ZGVyLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFJlZjxJUEM6OlN0cmVhbVNlcnZl
ckNvbm5lY3Rpb24+JiYgc3RyZWFtQ29ubmVjdGlvbiwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlUmVuZGVyQnVu
ZGxlRW5jb2RlcihyZW5kZXJCdW5kbGVFbmNvZGVyLCBvYmplY3RSZWdpc3RyeSwgb2JqZWN0SGVh
cCwgaWRlbnRpZmllcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVSZW5k
ZXJCdW5kbGVFbmNvZGVyKHJlbmRlckJ1bmRsZUVuY29kZXIsIG9iamVjdEhlYXAsIFdURk1vdmUo
c3RyZWFtQ29ubmVjdGlvbiksIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB+UmVtb3RlUmVu
ZGVyQnVuZGxlRW5jb2RlcigpOwogCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBPYmplY3RS
ZWdpc3RyeTsKKyAgICB2b2lkIHN0b3BMaXN0ZW5pbmdGb3JJUEMoKTsKIAotICAgIFJlbW90ZVJl
bmRlckJ1bmRsZUVuY29kZXIoUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXImLCBXZWJH
UFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmll
cik7CisgICAgUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXImIGJhY2tpbmcoKSB7IHJl
dHVybiBtX2JhY2tpbmc7IH0KKworcHJpdmF0ZToKKyAgICBSZW1vdGVSZW5kZXJCdW5kbGVFbmNv
ZGVyKFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyJiwgV2ViR1BVOjpPYmplY3RIZWFw
JiwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiwgV2ViR1BVSWRlbnRpZmllcik7
CiAKICAgICBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyKGNvbnN0IFJlbW90ZVJlbmRlckJ1bmRs
ZUVuY29kZXImKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyKFJlbW90
ZVJlbmRlckJ1bmRsZUVuY29kZXImJikgPSBkZWxldGU7CkBAIC05NCw4ICsxMDAsOCBAQCBwcml2
YXRlOgogICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCiAgICAgUmVmPFBBTDo6V2ViR1BV
OjpSZW5kZXJCdW5kbGVFbmNvZGVyPiBtX2JhY2tpbmc7Ci0gICAgV2ViR1BVOjpPYmplY3RSZWdp
c3RyeSYgbV9vYmplY3RSZWdpc3RyeTsKICAgICBXZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0
SGVhcDsKKyAgICBSZWY8SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiBtX3N0cmVhbUNvbm5l
Y3Rpb247CiAgICAgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRl
clBhc3NFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIuY3BwCmluZGV4IDk3YjgxMjM0MDcwZDYyZmE4ZDJj
MzFkOGM1ZjgxN2FkNjI4ZmM4ZmUuLjYyZDBjYTc1ZWEyYjY4MDI3OWM1NjUyYTliZjNjODJjMjNi
YTFmMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIuY3BwCkBAIC0yOCwy
OSArMjgsMzIgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90
ZVJlbmRlclBhc3NFbmNvZGVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViR1BVT2JqZWN0SGVhcC5oIgotI2luY2x1ZGUgIldlYkdQ
VU9iamVjdFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVS
ZW5kZXJQYXNzRW5jb2Rlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlUmVuZGVy
UGFzc0VuY29kZXI6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyKFBBTDo6V2ViR1BVOjpSZW5kZXJQ
YXNzRW5jb2RlciYgcmVuZGVyUGFzc0VuY29kZXIsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9i
amVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50
aWZpZXIgaWRlbnRpZmllcikKK1JlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpSZW1vdGVSZW5kZXJQ
YXNzRW5jb2RlcihQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXImIHJlbmRlclBhc3NFbmNv
ZGVyLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFJlZjxJUEM6OlN0cmVhbVNlcnZl
ckNvbm5lY3Rpb24+JiYgc3RyZWFtQ29ubmVjdGlvbiwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyKQogICAgIDogbV9iYWNraW5nKHJlbmRlclBhc3NFbmNvZGVyKQotICAgICwgbV9vYmplY3RS
ZWdpc3RyeShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQor
ICAgICwgbV9zdHJlYW1Db25uZWN0aW9uKFdURk1vdmUoc3RyZWFtQ29ubmVjdGlvbikpCiAgICAg
LCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LmFkZE9i
amVjdChtX2lkZW50aWZpZXIsIG1fYmFja2luZyk7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5z
dGFydFJlY2VpdmluZ01lc3NhZ2VzKCp0aGlzLCBNZXNzYWdlczo6UmVtb3RlUmVuZGVyUGFzc0Vu
Y29kZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOwog
fQogCi1SZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6flJlbW90ZVJlbmRlclBhc3NFbmNvZGVyKCkK
K1JlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjp+UmVtb3RlUmVuZGVyUGFzc0VuY29kZXIoKSA9IGRl
ZmF1bHQ7CisKK3ZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnN0b3BMaXN0ZW5pbmdGb3JJ
UEMoKQogewotICAgIG1fb2JqZWN0UmVnaXN0cnkucmVtb3ZlT2JqZWN0KG1faWRlbnRpZmllcik7
CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdG9wUmVjZWl2aW5nTWVzc2FnZXMoTWVzc2FnZXM6
OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRp
Zmllci50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0
UGlwZWxpbmUoV2ViR1BVSWRlbnRpZmllciByZW5kZXJQaXBlbGluZSkKIHsKLSAgICBhdXRvIGNv
bnZlcnRlZFJlbmRlclBpcGVsaW5lID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0UmVuZGVyUGlw
ZWxpbmVGcm9tQmFja2luZyhyZW5kZXJQaXBlbGluZSk7CisgICAgYXV0byBjb252ZXJ0ZWRSZW5k
ZXJQaXBlbGluZSA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0UmVuZGVyUGlwZWxpbmVGcm9tQmFja2lu
ZyhyZW5kZXJQaXBlbGluZSk7CiAgICAgQVNTRVJUKGNvbnZlcnRlZFJlbmRlclBpcGVsaW5lKTsK
ICAgICBpZiAoIWNvbnZlcnRlZFJlbmRlclBpcGVsaW5lKQogICAgICAgICByZXR1cm47CkBAIC02
MCw3ICs2Myw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnNldFBpcGVsaW5lKFdl
YkdQVUlkZW50aWZpZXIgcmVuZGVyUGlwZWxpbmUpCiAKIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0Vu
Y29kZXI6OnNldEluZGV4QnVmZmVyKFdlYkdQVUlkZW50aWZpZXIgYnVmZmVyLCBQQUw6OldlYkdQ
VTo6SW5kZXhGb3JtYXQgaW5kZXhGb3JtYXQsIFBBTDo6V2ViR1BVOjpTaXplNjQgb2Zmc2V0LCBz
dGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplNjQ+IHNpemUpCiB7Ci0gICAgYXV0byBjb252
ZXJ0ZWRCdWZmZXIgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhi
dWZmZXIpOworICAgIGF1dG8gY29udmVydGVkQnVmZmVyID0gbV9vYmplY3RIZWFwLmNvbnZlcnRC
dWZmZXJGcm9tQmFja2luZyhidWZmZXIpOwogICAgIEFTU0VSVChjb252ZXJ0ZWRCdWZmZXIpOwog
ICAgIGlmICghY29udmVydGVkQnVmZmVyKQogICAgICAgICByZXR1cm47CkBAIC03MCw3ICs3Myw3
IEBAIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnNldEluZGV4QnVmZmVyKFdlYkdQVUlk
ZW50aWZpZXIgYnVmZmVyLCBQQUw6OldlYkdQCiAKIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29k
ZXI6OnNldFZlcnRleEJ1ZmZlcihQQUw6OldlYkdQVTo6SW5kZXgzMiBzbG90LCBXZWJHUFVJZGVu
dGlmaWVyIGJ1ZmZlciwgUEFMOjpXZWJHUFU6OlNpemU2NCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8
UEFMOjpXZWJHUFU6OlNpemU2ND4gc2l6ZSkKIHsKLSAgICBhdXRvIGNvbnZlcnRlZEJ1ZmZlciA9
IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEJ1ZmZlckZyb21CYWNraW5nKGJ1ZmZlcik7CisgICAg
YXV0byBjb252ZXJ0ZWRCdWZmZXIgPSBtX29iamVjdEhlYXAuY29udmVydEJ1ZmZlckZyb21CYWNr
aW5nKGJ1ZmZlcik7CiAgICAgQVNTRVJUKGNvbnZlcnRlZEJ1ZmZlcik7CiAgICAgaWYgKCFjb252
ZXJ0ZWRCdWZmZXIpCiAgICAgICAgIHJldHVybjsKQEAgLTk0LDcgKzk3LDcgQEAgdm9pZCBSZW1v
dGVSZW5kZXJQYXNzRW5jb2Rlcjo6ZHJhd0luZGV4ZWQoUEFMOjpXZWJHUFU6OlNpemUzMiBpbmRl
eENvdW50LCBQQUw6OlcKIAogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6ZHJhd0luZGly
ZWN0KFdlYkdQVUlkZW50aWZpZXIgaW5kaXJlY3RCdWZmZXIsIFBBTDo6V2ViR1BVOjpTaXplNjQg
aW5kaXJlY3RPZmZzZXQpCiB7Ci0gICAgYXV0byBjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlciA9IG1f
b2JqZWN0UmVnaXN0cnkuY29udmVydEJ1ZmZlckZyb21CYWNraW5nKGluZGlyZWN0QnVmZmVyKTsK
KyAgICBhdXRvIGNvbnZlcnRlZEluZGlyZWN0QnVmZmVyID0gbV9vYmplY3RIZWFwLmNvbnZlcnRC
dWZmZXJGcm9tQmFja2luZyhpbmRpcmVjdEJ1ZmZlcik7CiAgICAgQVNTRVJUKGNvbnZlcnRlZElu
ZGlyZWN0QnVmZmVyKTsKICAgICBpZiAoIWNvbnZlcnRlZEluZGlyZWN0QnVmZmVyKQogICAgICAg
ICByZXR1cm47CkBAIC0xMDQsNyArMTA3LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rl
cjo6ZHJhd0luZGlyZWN0KFdlYkdQVUlkZW50aWZpZXIgaW5kaXJlY3RCdWZmZXIsIFBBTDoKIAog
dm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6ZHJhd0luZGV4ZWRJbmRpcmVjdChXZWJHUFVJ
ZGVudGlmaWVyIGluZGlyZWN0QnVmZmVyLCBQQUw6OldlYkdQVTo6U2l6ZTY0IGluZGlyZWN0T2Zm
c2V0KQogewotICAgIGF1dG8gY29udmVydGVkSW5kaXJlY3RCdWZmZXIgPSBtX29iamVjdFJlZ2lz
dHJ5LmNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhpbmRpcmVjdEJ1ZmZlcik7CisgICAgYXV0byBj
b252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlciA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0QnVmZmVyRnJvbUJh
Y2tpbmcoaW5kaXJlY3RCdWZmZXIpOwogICAgIEFTU0VSVChjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZl
cik7CiAgICAgaWYgKCFjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwpA
QCAtMTE1LDcgKzExOCw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OmRyYXdJbmRl
eGVkSW5kaXJlY3QoV2ViR1BVSWRlbnRpZmllciBpbmRpcmVjdEJ1ZmZlCiB2b2lkIFJlbW90ZVJl
bmRlclBhc3NFbmNvZGVyOjpzZXRCaW5kR3JvdXAoUEFMOjpXZWJHUFU6OkluZGV4MzIgaW5kZXgs
IFdlYkdQVUlkZW50aWZpZXIgYmluZEdyb3VwLAogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFBB
TDo6V2ViR1BVOjpCdWZmZXJEeW5hbWljT2Zmc2V0Pj4mJiBkeW5hbWljT2Zmc2V0cykKIHsKLSAg
ICBhdXRvIGNvbnZlcnRlZEJpbmRHcm91cCA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEJpbmRH
cm91cEZyb21CYWNraW5nKGJpbmRHcm91cCk7CisgICAgYXV0byBjb252ZXJ0ZWRCaW5kR3JvdXAg
PSBtX29iamVjdEhlYXAuY29udmVydEJpbmRHcm91cEZyb21CYWNraW5nKGJpbmRHcm91cCk7CiAg
ICAgQVNTRVJUKGNvbnZlcnRlZEJpbmRHcm91cCk7CiAgICAgaWYgKCFjb252ZXJ0ZWRCaW5kR3Jv
dXApCiAgICAgICAgIHJldHVybjsKQEAgLTE1Myw3ICsxNTYsNyBAQCB2b2lkIFJlbW90ZVJlbmRl
clBhc3NFbmNvZGVyOjpzZXRTY2lzc29yUmVjdChQQUw6OldlYkdQVTo6SW50ZWdlckNvb3JkaW5h
dGUgeCwgUAogCiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpzZXRCbGVuZENvbnN0YW50
KFdlYkdQVTo6Q29sb3IgY29sb3IpCiB7Ci0gICAgYXV0byBjb252ZXJ0ZWRDb2xvciA9IG1fb2Jq
ZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGNvbG9yKTsKKyAgICBhdXRvIGNvbnZlcnRl
ZENvbG9yID0gbV9vYmplY3RIZWFwLmNvbnZlcnRGcm9tQmFja2luZyhjb2xvcik7CiAgICAgQVNT
RVJUKGNvbnZlcnRlZENvbG9yKTsKICAgICBpZiAoIWNvbnZlcnRlZENvbG9yKQogICAgICAgICBy
ZXR1cm47CkBAIC0xNzgsNyArMTgxLDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6
ZW5kT2NjbHVzaW9uUXVlcnkoKQogCiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpiZWdp
blBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KFdlYkdQVUlkZW50aWZpZXIgcXVlcnlTZXQsIFBBTDo6
V2ViR1BVOjpTaXplMzIgcXVlcnlJbmRleCkKIHsKLSAgICBhdXRvIGNvbnZlcnRlZFF1ZXJ5U2V0
ID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0UXVlcnlTZXRGcm9tQmFja2luZyhxdWVyeVNldCk7
CisgICAgYXV0byBjb252ZXJ0ZWRRdWVyeVNldCA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0UXVlcnlT
ZXRGcm9tQmFja2luZyhxdWVyeVNldCk7CiAgICAgQVNTRVJUKGNvbnZlcnRlZFF1ZXJ5U2V0KTsK
ICAgICBpZiAoIWNvbnZlcnRlZFF1ZXJ5U2V0KQogICAgICAgICByZXR1cm47CkBAIC0xOTYsNyAr
MTk5LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6ZXhlY3V0ZUJ1bmRsZXMoVmVj
dG9yPFdlYkdQVUlkZW50aWZpZXI+JiYgcmVuZGVyQnUKICAgICBWZWN0b3I8c3RkOjpyZWZlcmVu
Y2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlPj4gY29udmVydGVkQnVuZGxlczsK
ICAgICBjb252ZXJ0ZWRCdW5kbGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocmVuZGVyQnVuZGxl
cy5zaXplKCkpOwogICAgIGZvciAoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyIDogcmVuZGVy
QnVuZGxlcykgewotICAgICAgICBhdXRvIGNvbnZlcnRlZEJ1bmRsZSA9IG1fb2JqZWN0UmVnaXN0
cnkuY29udmVydFJlbmRlckJ1bmRsZUZyb21CYWNraW5nKGlkZW50aWZpZXIpOworICAgICAgICBh
dXRvIGNvbnZlcnRlZEJ1bmRsZSA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0UmVuZGVyQnVuZGxlRnJv
bUJhY2tpbmcoaWRlbnRpZmllcik7CiAgICAgICAgIEFTU0VSVChjb252ZXJ0ZWRCdW5kbGUpOwog
ICAgICAgICBpZiAoIWNvbnZlcnRlZEJ1bmRsZSkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVu
ZGVyUGFzc0VuY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIuaAppbmRleCBmYjZkM2RiNTlhOTMyMTRhZDhkNDA0
ZmRhZGM1ZGM3MWE5M2VhY2VjLi5kNWY5YmRkN2Y0NGI0ZWUwNGFiMDEzMzhhODM5ZDU5YjA2MzVj
NmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZVJlbmRlclBhc3NFbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQYXNzRW5jb2Rlci5oCkBAIC0zOSwyNiArMzks
MzIgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNzIFJlbmRlclBhc3NFbmNvZGVyOwog
fQogCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFN0cmVhbVNlcnZlckNvbm5lY3Rpb247Cit9CisK
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIGNsYXNzIE9iamVjdEhl
YXA7Ci1jbGFzcyBPYmplY3RSZWdpc3RyeTsKIH0KIAogY2xhc3MgUmVtb3RlUmVuZGVyUGFzc0Vu
Y29kZXIgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVu
ZGVyUGFzc0VuY29kZXI+IGNyZWF0ZShQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXImIHJl
bmRlclBhc3NFbmNvZGVyLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwg
V2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCisgICAgc3RhdGljIFJlZjxSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcj4gY3JlYXRlKFBBTDo6
V2ViR1BVOjpSZW5kZXJQYXNzRW5jb2RlciYgcmVuZGVyUGFzc0VuY29kZXIsIFdlYkdQVTo6T2Jq
ZWN0SGVhcCYgb2JqZWN0SGVhcCwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiBz
dHJlYW1Db25uZWN0aW9uLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlcihyZW5kZXJQ
YXNzRW5jb2Rlciwgb2JqZWN0UmVnaXN0cnksIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIocmVuZGVy
UGFzc0VuY29kZXIsIG9iamVjdEhlYXAsIFdURk1vdmUoc3RyZWFtQ29ubmVjdGlvbiksIGlkZW50
aWZpZXIpKTsKICAgICB9CiAKICAgICB+UmVtb3RlUmVuZGVyUGFzc0VuY29kZXIoKTsKIAotcHJp
dmF0ZToKLSAgICBmcmllbmQgY2xhc3MgT2JqZWN0UmVnaXN0cnk7CisgICAgdm9pZCBzdG9wTGlz
dGVuaW5nRm9ySVBDKCk7CiAKLSAgICBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlcihQQUw6OldlYkdQ
VTo6UmVuZGVyUGFzc0VuY29kZXImLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpP
YmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7CisgICAgUEFMOjpXZWJHUFU6OlJlbmRlclBh
c3NFbmNvZGVyJiBiYWNraW5nKCkgeyByZXR1cm4gbV9iYWNraW5nOyB9CisKK3ByaXZhdGU6Cisg
ICAgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIoUEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVy
JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4m
JiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcihjb25z
dCBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlciYpID0gZGVsZXRlOwogICAgIFJlbW90ZVJlbmRlclBh
c3NFbmNvZGVyKFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyJiYpID0gZGVsZXRlOwpAQCAtMTExLDgg
KzExNyw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7CiAKICAgICBS
ZWY8UEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyPiBtX2JhY2tpbmc7Ci0gICAgV2ViR1BV
OjpPYmplY3RSZWdpc3RyeSYgbV9vYmplY3RSZWdpc3RyeTsKICAgICBXZWJHUFU6Ok9iamVjdEhl
YXAmIG1fb2JqZWN0SGVhcDsKKyAgICBSZWY8SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiBt
X3N0cmVhbUNvbm5lY3Rpb247CiAgICAgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZVJlbmRlclBpcGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGlwZWxpbmUuY3BwCmluZGV4IDE1NTE1MDM3YzUxNDAy
NzJiMGM5OWRmM2MxZGViYzM3ZDA4NTVlZDEuLjJjZTY4MDUwMTk1MjBjNjhmNDQ5ZTNiNGVmMWUy
ODRkYTlhM2E3ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlUmVuZGVyUGlwZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGlwZWxpbmUuY3BwCkBAIC0yOSwz
MiArMjksMzUgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJSZW1vdGVC
aW5kR3JvdXBMYXlvdXQuaCIKKyNpbmNsdWRlICJSZW1vdGVSZW5kZXJQaXBlbGluZU1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSAiU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYkdQ
VU9iamVjdEhlYXAuaCIKLSNpbmNsdWRlICJXZWJHUFVPYmplY3RSZWdpc3RyeS5oIgogI2luY2x1
ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQmluZEdyb3VwTGF5b3V0Lmg+CiAjaW5jbHVk
ZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJQaXBlbGluZS5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotUmVtb3RlUmVuZGVyUGlwZWxpbmU6OlJlbW90ZVJlbmRlclBpcGVsaW5l
KFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZSYgcmVuZGVyUGlwZWxpbmUsIFdlYkdQVTo6T2Jq
ZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhl
YXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK1JlbW90ZVJlbmRlclBpcGVsaW5lOjpS
ZW1vdGVSZW5kZXJQaXBlbGluZShQQUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmUmIHJlbmRlclBp
cGVsaW5lLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFJlZjxJUEM6OlN0cmVhbVNl
cnZlckNvbm5lY3Rpb24+JiYgc3RyZWFtQ29ubmVjdGlvbiwgV2ViR1BVSWRlbnRpZmllciBpZGVu
dGlmaWVyKQogICAgIDogbV9iYWNraW5nKHJlbmRlclBpcGVsaW5lKQotICAgICwgbV9vYmplY3RS
ZWdpc3RyeShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQor
ICAgICwgbV9zdHJlYW1Db25uZWN0aW9uKFdURk1vdmUoc3RyZWFtQ29ubmVjdGlvbikpCiAgICAg
LCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LmFkZE9i
amVjdChtX2lkZW50aWZpZXIsIG1fYmFja2luZyk7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5z
dGFydFJlY2VpdmluZ01lc3NhZ2VzKCp0aGlzLCBNZXNzYWdlczo6UmVtb3RlUmVuZGVyUGlwZWxp
bmU6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQog
Ci1SZW1vdGVSZW5kZXJQaXBlbGluZTo6flJlbW90ZVJlbmRlclBpcGVsaW5lKCkKK1JlbW90ZVJl
bmRlclBpcGVsaW5lOjp+UmVtb3RlUmVuZGVyUGlwZWxpbmUoKSA9IGRlZmF1bHQ7CisKK3ZvaWQg
UmVtb3RlUmVuZGVyUGlwZWxpbmU6OnN0b3BMaXN0ZW5pbmdGb3JJUEMoKQogewotICAgIG1fb2Jq
ZWN0UmVnaXN0cnkucmVtb3ZlT2JqZWN0KG1faWRlbnRpZmllcik7CisgICAgbV9zdHJlYW1Db25u
ZWN0aW9uLT5zdG9wUmVjZWl2aW5nTWVzc2FnZXMoTWVzc2FnZXM6OlJlbW90ZVJlbmRlclBpcGVs
aW5lOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0K
IAogdm9pZCBSZW1vdGVSZW5kZXJQaXBlbGluZTo6Z2V0QmluZEdyb3VwTGF5b3V0KHVpbnQzMl90
IGluZGV4LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAgYXV0byBiaW5kR3Jv
dXBMYXlvdXQgPSBtX2JhY2tpbmctPmdldEJpbmRHcm91cExheW91dChpbmRleCk7Ci0gICAgYXV0
byByZW1vdGVCaW5kR3JvdXBMYXlvdXQgPSBSZW1vdGVCaW5kR3JvdXBMYXlvdXQ6OmNyZWF0ZShi
aW5kR3JvdXBMYXlvdXQsIG1fb2JqZWN0UmVnaXN0cnksIG1fb2JqZWN0SGVhcCwgaWRlbnRpZmll
cik7Ci0gICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChyZW1vdGVCaW5kR3JvdXBMYXlvdXQpOwor
ICAgIGF1dG8gcmVtb3RlQmluZEdyb3VwTGF5b3V0ID0gUmVtb3RlQmluZEdyb3VwTGF5b3V0Ojpj
cmVhdGUoYmluZEdyb3VwTGF5b3V0LCBtX29iamVjdEhlYXAsIG1fc3RyZWFtQ29ubmVjdGlvbi5j
b3B5UmVmKCksIGlkZW50aWZpZXIpOworICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QoaWRlbnRp
ZmllciwgcmVtb3RlQmluZEdyb3VwTGF5b3V0KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQaXBl
bGluZTo6c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBpcGVsaW5lLmggYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBpcGVsaW5l
LmgKaW5kZXggYmM2Yjk2NTc1ZGNjZDNiZjljMDZjMjg5MjFjZjk1ZDYwYzg2NjU4MC4uNGRmY2I2
ZDY1OWM1NTc4ZTMzYzU3NzRhMmU3MWM4NGZhOThjNmFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVy
UGlwZWxpbmUuaApAQCAtMzYsMjYgKzM2LDMyIEBAIG5hbWVzcGFjZSBQQUw6OldlYkdQVSB7CiBj
bGFzcyBSZW5kZXJQaXBlbGluZTsKIH0KIAorbmFtZXNwYWNlIElQQyB7CitjbGFzcyBTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIFdl
YkdQVSB7CiBjbGFzcyBPYmplY3RIZWFwOwotY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiB9CiAKIGNs
YXNzIFJlbW90ZVJlbmRlclBpcGVsaW5lIGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2Fn
ZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPFJlbW90ZVJlbmRlclBpcGVsaW5lPiBjcmVhdGUoUEFMOjpXZWJHUFU6OlJlbmRl
clBpcGVsaW5lJiByZW5kZXJQaXBlbGluZSwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0
UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyUGlwZWxpbmU+IGNyZWF0
ZShQQUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmUmIHJlbmRlclBpcGVsaW5lLCBXZWJHUFU6Ok9i
amVjdEhlYXAmIG9iamVjdEhlYXAsIFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+JiYg
c3RyZWFtQ29ubmVjdGlvbiwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlw
ZWxpbmUsIG9iamVjdFJlZ2lzdHJ5LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5l
LCBvYmplY3RIZWFwLCBXVEZNb3ZlKHN0cmVhbUNvbm5lY3Rpb24pLCBpZGVudGlmaWVyKSk7CiAg
ICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlUmVuZGVyUGlwZWxpbmUoKTsKIAotcHJpdmF0ZToK
LSAgICBmcmllbmQgY2xhc3MgT2JqZWN0UmVnaXN0cnk7CisgICAgdm9pZCBzdG9wTGlzdGVuaW5n
Rm9ySVBDKCk7CiAKLSAgICBSZW1vdGVSZW5kZXJQaXBlbGluZShQQUw6OldlYkdQVTo6UmVuZGVy
UGlwZWxpbmUmLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwg
V2ViR1BVSWRlbnRpZmllcik7CisgICAgUEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lJiBiYWNr
aW5nKCkgeyByZXR1cm4gbV9iYWNraW5nOyB9CisKK3ByaXZhdGU6CisgICAgUmVtb3RlUmVuZGVy
UGlwZWxpbmUoUEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lJiwgV2ViR1BVOjpPYmplY3RIZWFw
JiwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiwgV2ViR1BVSWRlbnRpZmllcik7
CiAKICAgICBSZW1vdGVSZW5kZXJQaXBlbGluZShjb25zdCBSZW1vdGVSZW5kZXJQaXBlbGluZSYp
ID0gZGVsZXRlOwogICAgIFJlbW90ZVJlbmRlclBpcGVsaW5lKFJlbW90ZVJlbmRlclBpcGVsaW5l
JiYpID0gZGVsZXRlOwpAQCAtNjksOCArNzUsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0TGFi
ZWwoU3RyaW5nJiYpOwogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZT4gbV9i
YWNraW5nOwotICAgIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7CiAg
ICAgV2ViR1BVOjpPYmplY3RIZWFwJiBtX29iamVjdEhlYXA7CisgICAgUmVmPElQQzo6U3RyZWFt
U2VydmVyQ29ubmVjdGlvbj4gbV9zdHJlYW1Db25uZWN0aW9uOwogICAgIFdlYkdQVUlkZW50aWZp
ZXIgbV9pZGVudGlmaWVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTYW1wbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2FtcGxlci5jcHAKaW5kZXggYTc2YjY5NDVk
NTc4M2ZmMDBjODk3OTVlZDQyM2M1MmIwMGMwNGJhZC4uMmMwMGJkNTMwZGQ5MWQ2YTBlMDI4MDAx
MjlhNTc4ZDE1Njc5ZDQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVTYW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNhbXBsZXIuY3BwCkBAIC0yOCwyNCArMjgsMjcg
QEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZVNhbXBsZXJN
ZXNzYWdlcy5oIgorI2luY2x1ZGUgIlN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRl
ICJXZWJHUFVPYmplY3RIZWFwLmgiCi0jaW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIK
ICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVNhbXBsZXIuaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKLVJlbW90ZVNhbXBsZXI6OlJlbW90ZVNhbXBsZXIoUEFMOjpXZWJHUFU6
OlNhbXBsZXImIHNhbXBsZXIsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5
LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRp
ZmllcikKK1JlbW90ZVNhbXBsZXI6OlJlbW90ZVNhbXBsZXIoUEFMOjpXZWJHUFU6OlNhbXBsZXIm
IHNhbXBsZXIsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgUmVmPElQQzo6U3RyZWFt
U2VydmVyQ29ubmVjdGlvbj4mJiBzdHJlYW1Db25uZWN0aW9uLCBXZWJHUFVJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCiAgICAgOiBtX2JhY2tpbmcoc2FtcGxlcikKLSAgICAsIG1fb2JqZWN0UmVnaXN0
cnkob2JqZWN0UmVnaXN0cnkpCiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkKKyAgICAs
IG1fc3RyZWFtQ29ubmVjdGlvbihXVEZNb3ZlKHN0cmVhbUNvbm5lY3Rpb24pKQogICAgICwgbV9p
ZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5hZGRPYmplY3Qo
bV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+c3RhcnRS
ZWNlaXZpbmdNZXNzYWdlcygqdGhpcywgTWVzc2FnZXM6OlJlbW90ZVNhbXBsZXI6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCi1SZW1vdGVTYW1w
bGVyOjp+UmVtb3RlU2FtcGxlcigpCitSZW1vdGVTYW1wbGVyOjp+UmVtb3RlU2FtcGxlcigpID0g
ZGVmYXVsdDsKKwordm9pZCBSZW1vdGVTYW1wbGVyOjpzdG9wTGlzdGVuaW5nRm9ySVBDKCkKIHsK
LSAgICBtX29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOworICAgIG1f
c3RyZWFtQ29ubmVjdGlvbi0+c3RvcFJlY2VpdmluZ01lc3NhZ2VzKE1lc3NhZ2VzOjpSZW1vdGVT
YW1wbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsK
IH0KIAogdm9pZCBSZW1vdGVTYW1wbGVyOjpzZXRMYWJlbChTdHJpbmcmJiBsYWJlbCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2Ft
cGxlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVT
YW1wbGVyLmgKaW5kZXggYWM5MDM4YTViOWNhODdlY2JmNWJmZTQxZjg3NDYwNDNlMDAwY2EzMy4u
ZjE5YTgzNGMwNGFmOWUyOTE5YjA4Mjg0ZDk3MGQ2MmM3MDI3OTg2OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTYW1wbGVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTYW1wbGVy
LmgKQEAgLTM2LDI2ICszNiwzMiBAQCBuYW1lc3BhY2UgUEFMOjpXZWJHUFUgewogY2xhc3MgU2Ft
cGxlcjsKIH0KIAorbmFtZXNwYWNlIElQQyB7CitjbGFzcyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
OworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIFdlYkdQVSB7CiBjbGFzcyBP
YmplY3RIZWFwOwotY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiB9CiAKIGNsYXNzIFJlbW90ZVNhbXBs
ZXIgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlU2FtcGxl
cj4gY3JlYXRlKFBBTDo6V2ViR1BVOjpTYW1wbGVyJiBzYW1wbGVyLCBXZWJHUFU6Ok9iamVjdFJl
Z2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBX
ZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxSZW1vdGVTYW1wbGVy
PiBjcmVhdGUoUEFMOjpXZWJHUFU6OlNhbXBsZXImIHNhbXBsZXIsIFdlYkdQVTo6T2JqZWN0SGVh
cCYgb2JqZWN0SGVhcCwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiBzdHJlYW1D
b25uZWN0aW9uLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVTYW1wbGVyKHNhbXBsZXIsIG9iamVjdFJlZ2lzdHJ5
LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFJlbW90ZVNhbXBsZXIoc2FtcGxlciwgb2JqZWN0SGVhcCwgV1RGTW92ZShzdHJlYW1Db25uZWN0
aW9uKSwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90ZVNhbXBsZXIo
KTsKIAotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgT2JqZWN0UmVnaXN0cnk7CisgICAgdm9p
ZCBzdG9wTGlzdGVuaW5nRm9ySVBDKCk7CiAKLSAgICBSZW1vdGVTYW1wbGVyKFBBTDo6V2ViR1BV
OjpTYW1wbGVyJiwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYs
IFdlYkdQVUlkZW50aWZpZXIpOworICAgIFBBTDo6V2ViR1BVOjpTYW1wbGVyJiBiYWNraW5nKCkg
eyByZXR1cm4gbV9iYWNraW5nOyB9CisKK3ByaXZhdGU6CisgICAgUmVtb3RlU2FtcGxlcihQQUw6
OldlYkdQVTo6U2FtcGxlciYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFJlZjxJUEM6OlN0cmVhbVNl
cnZlckNvbm5lY3Rpb24+JiYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlU2FtcGxl
cihjb25zdCBSZW1vdGVTYW1wbGVyJikgPSBkZWxldGU7CiAgICAgUmVtb3RlU2FtcGxlcihSZW1v
dGVTYW1wbGVyJiYpID0gZGVsZXRlOwpAQCAtNjcsOCArNzMsOCBAQCBwcml2YXRlOgogICAgIHZv
aWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpTYW1wbGVyPiBt
X2JhY2tpbmc7Ci0gICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgbV9vYmplY3RSZWdpc3RyeTsK
ICAgICBXZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKKyAgICBSZWY8SVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uPiBtX3N0cmVhbUNvbm5lY3Rpb247CiAgICAgV2ViR1BVSWRlbnRp
ZmllciBtX2lkZW50aWZpZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNoYWRlck1vZHVsZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNoYWRlck1vZHVsZS5jcHAKaW5k
ZXggNDVhYzBkM2Y3MzY1YzE5YjU0ODhjYzFkZDA5NGQyMmExNDdlMDM2Ny4uMTQ2ZDNkNDM5MDA0
YzRlNjEwZjk1YzI4YTMzMDdjM2UwOWQ3ZWM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2hhZGVyTW9kdWxl
LmNwcApAQCAtMjgsMjYgKzI4LDI5IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNp
bmNsdWRlICJSZW1vdGVTaGFkZXJNb2R1bGVNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlN0cmVhbVNl
cnZlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCi0jaW5jbHVk
ZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BV
L1dlYkdQVUNvbXBpbGF0aW9uSW5mby5oPgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUv
V2ViR1BVQ29tcGlsYXRpb25NZXNzYWdlLmg+CiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQ
VS9XZWJHUFVTaGFkZXJNb2R1bGUuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90ZVNo
YWRlck1vZHVsZTo6UmVtb3RlU2hhZGVyTW9kdWxlKFBBTDo6V2ViR1BVOjpTaGFkZXJNb2R1bGUm
IHNoYWRlck1vZHVsZSwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdl
YkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
KQorUmVtb3RlU2hhZGVyTW9kdWxlOjpSZW1vdGVTaGFkZXJNb2R1bGUoUEFMOjpXZWJHUFU6OlNo
YWRlck1vZHVsZSYgc2hhZGVyTW9kdWxlLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAs
IFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+JiYgc3RyZWFtQ29ubmVjdGlvbiwgV2Vi
R1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5nKHNoYWRlck1vZHVsZSkK
LSAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2JqZWN0UmVnaXN0cnkpCiAgICAgLCBtX29iamVjdEhl
YXAob2JqZWN0SGVhcCkKKyAgICAsIG1fc3RyZWFtQ29ubmVjdGlvbihXVEZNb3ZlKHN0cmVhbUNv
bm5lY3Rpb24pKQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7Ci0gICAgbV9vYmpl
Y3RSZWdpc3RyeS5hZGRPYmplY3QobV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOworICAgIG1fc3Ry
ZWFtQ29ubmVjdGlvbi0+c3RhcnRSZWNlaXZpbmdNZXNzYWdlcygqdGhpcywgTWVzc2FnZXM6OlJl
bW90ZVNoYWRlck1vZHVsZTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9V
SW50NjQoKSk7CiB9CiAKLVJlbW90ZVNoYWRlck1vZHVsZTo6flJlbW90ZVNoYWRlck1vZHVsZSgp
CitSZW1vdGVTaGFkZXJNb2R1bGU6On5SZW1vdGVTaGFkZXJNb2R1bGUoKSA9IGRlZmF1bHQ7CisK
K3ZvaWQgUmVtb3RlU2hhZGVyTW9kdWxlOjpzdG9wTGlzdGVuaW5nRm9ySVBDKCkKIHsKLSAgICBt
X29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOworICAgIG1fc3RyZWFt
Q29ubmVjdGlvbi0+c3RvcFJlY2VpdmluZ01lc3NhZ2VzKE1lc3NhZ2VzOjpSZW1vdGVTaGFkZXJN
b2R1bGU6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOwog
fQogCiB2b2lkIFJlbW90ZVNoYWRlck1vZHVsZTo6Y29tcGlsYXRpb25JbmZvKFdURjo6Q29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViR1BVOjpDb21waWxhdGlvbk1lc3NhZ2U+JiYpPiYm
IGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGUuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlU2hhZGVyTW9kdWxlLmgKaW5kZXggZjk3ZjAxOTZiYjA2N2Vk
YmNiOTIzNWNkZWMxMDY0ZWMzNDE2NzJiYi4uY2I1YWFlOGUyYTgyYTM2ZmEyZjBhNGZlMGIwZTA0
NDZkYTk5MTI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNoYWRlck1vZHVsZS5oCkBAIC0zOSwyNiArMzksMzIg
QEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNzIFNoYWRlck1vZHVsZTsKIH0KIAorbmFt
ZXNwYWNlIElQQyB7CitjbGFzcyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uOworfQorCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIFdlYkdQVSB7CiBjbGFzcyBPYmplY3RIZWFwOwotY2xh
c3MgT2JqZWN0UmVnaXN0cnk7CiB9CiAKIGNsYXNzIFJlbW90ZVNoYWRlck1vZHVsZSBmaW5hbCA6
IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVTaGFkZXJNb2R1bGU+IGNy
ZWF0ZShQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlJiBzaGFkZXJNb2R1bGUsIFdlYkdQVTo6T2Jq
ZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhl
YXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVNo
YWRlck1vZHVsZT4gY3JlYXRlKFBBTDo6V2ViR1BVOjpTaGFkZXJNb2R1bGUmIHNoYWRlck1vZHVs
ZSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBSZWY8SVBDOjpTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uPiYmIHN0cmVhbUNvbm5lY3Rpb24sIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmll
cikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVNoYWRlck1vZHVs
ZShzaGFkZXJNb2R1bGUsIG9iamVjdFJlZ2lzdHJ5LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVNoYWRlck1vZHVsZShzaGFkZXJN
b2R1bGUsIG9iamVjdEhlYXAsIFdURk1vdmUoc3RyZWFtQ29ubmVjdGlvbiksIGlkZW50aWZpZXIp
KTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVTaGFkZXJNb2R1bGUoKTsKIAotcHJpdmF0
ZToKLSAgICBmcmllbmQgY2xhc3MgT2JqZWN0UmVnaXN0cnk7CisgICAgdm9pZCBzdG9wTGlzdGVu
aW5nRm9ySVBDKCk7CiAKLSAgICBSZW1vdGVTaGFkZXJNb2R1bGUoUEFMOjpXZWJHUFU6OlNoYWRl
ck1vZHVsZSYsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBX
ZWJHUFVJZGVudGlmaWVyKTsKKyAgICBQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlJiBiYWNraW5n
KCkgeyByZXR1cm4gbV9iYWNraW5nOyB9CisKK3ByaXZhdGU6CisgICAgUmVtb3RlU2hhZGVyTW9k
dWxlKFBBTDo6V2ViR1BVOjpTaGFkZXJNb2R1bGUmLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBSZWY8
SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiYmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAogICAg
IFJlbW90ZVNoYWRlck1vZHVsZShjb25zdCBSZW1vdGVTaGFkZXJNb2R1bGUmKSA9IGRlbGV0ZTsK
ICAgICBSZW1vdGVTaGFkZXJNb2R1bGUoUmVtb3RlU2hhZGVyTW9kdWxlJiYpID0gZGVsZXRlOwpA
QCAtNzIsOCArNzgsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYpOwog
CiAgICAgUmVmPFBBTDo6V2ViR1BVOjpTaGFkZXJNb2R1bGU+IG1fYmFja2luZzsKLSAgICBXZWJH
UFU6Ok9iamVjdFJlZ2lzdHJ5JiBtX29iamVjdFJlZ2lzdHJ5OwogICAgIFdlYkdQVTo6T2JqZWN0
SGVhcCYgbV9vYmplY3RIZWFwOworICAgIFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+
IG1fc3RyZWFtQ29ubmVjdGlvbjsKICAgICBXZWJHUFVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZVRleHR1cmUuY3BwCmluZGV4IGEwMWY0MmQwMDllZTUyNmQxODY4NzYwNTQ4
NmEwNDQyZmE1N2Q0M2IuLmZmOTc1YjVlYmMzNTIxMzBhNTk4MmI5YmVhNzQ5NTI2OGY2YzExMzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVUZXh0dXJlLmNwcApAQCAtMjgsOSArMjgsMTAgQEAKIAogI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZVRleHR1cmVNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIlJlbW90ZVRleHR1cmVWaWV3LmgiCisjaW5jbHVkZSAiU3RyZWFtU2VydmVyQ29ubmVjdGlv
bi5oIgogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKLSNpbmNsdWRlICJXZWJHUFVPYmpl
Y3RSZWdpc3RyeS5oIgogI2luY2x1ZGUgIldlYkdQVVRleHR1cmVWaWV3RGVzY3JpcHRvci5oIgog
I2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVVGV4dHVyZS5oPgogI2luY2x1ZGUg
PHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVVGV4dHVyZVZpZXcuaD4KQEAgLTM4LDI1ICszOSwy
NyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlVGV4dHVyZTo6UmVtb3RlVGV4dHVy
ZShQQUw6OldlYkdQVTo6VGV4dHVyZSYgdGV4dHVyZSwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYg
b2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRl
bnRpZmllciBpZGVudGlmaWVyKQorUmVtb3RlVGV4dHVyZTo6UmVtb3RlVGV4dHVyZShQQUw6Oldl
YkdQVTo6VGV4dHVyZSYgdGV4dHVyZSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBS
ZWY8SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiYmIHN0cmVhbUNvbm5lY3Rpb24sIFdlYkdQ
VUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICA6IG1fYmFja2luZyh0ZXh0dXJlKQotICAgICwg
bV9vYmplY3RSZWdpc3RyeShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmpl
Y3RIZWFwKQorICAgICwgbV9zdHJlYW1Db25uZWN0aW9uKFdURk1vdmUoc3RyZWFtQ29ubmVjdGlv
bikpCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKLSAgICBtX29iamVjdFJlZ2lz
dHJ5LmFkZE9iamVjdChtX2lkZW50aWZpZXIsIG1fYmFja2luZyk7CisgICAgbV9zdHJlYW1Db25u
ZWN0aW9uLT5zdGFydFJlY2VpdmluZ01lc3NhZ2VzKCp0aGlzLCBNZXNzYWdlczo6UmVtb3RlVGV4
dHVyZTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9
CiAKLVJlbW90ZVRleHR1cmU6On5SZW1vdGVUZXh0dXJlKCkKK1JlbW90ZVRleHR1cmU6On5SZW1v
dGVUZXh0dXJlKCkgPSBkZWZhdWx0OworCit2b2lkIFJlbW90ZVRleHR1cmU6OnN0b3BMaXN0ZW5p
bmdGb3JJUEMoKQogewotICAgIG1fb2JqZWN0UmVnaXN0cnkucmVtb3ZlT2JqZWN0KG1faWRlbnRp
Zmllcik7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdG9wUmVjZWl2aW5nTWVzc2FnZXMoTWVz
c2FnZXM6OlJlbW90ZVRleHR1cmU6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVy
LnRvVUludDY0KCkpOwogfQogCiB2b2lkIFJlbW90ZVRleHR1cmU6OmNyZWF0ZVZpZXcoY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJHUFU6OlRleHR1cmVWaWV3RGVzY3JpcHRvcj4mIGRlc2NyaXB0b3Is
IFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKICAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6
V2ViR1BVOjpUZXh0dXJlVmlld0Rlc2NyaXB0b3I+IGNvbnZlcnRlZERlc2NyaXB0b3I7CiAgICAg
aWYgKGRlc2NyaXB0b3IpIHsKLSAgICAgICAgYXV0byByZXN1bHREZXNjcmlwdG9yID0gbV9vYmpl
Y3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoKmRlc2NyaXB0b3IpOworICAgICAgICBhdXRv
IHJlc3VsdERlc2NyaXB0b3IgPSBtX29iamVjdEhlYXAuY29udmVydEZyb21CYWNraW5nKCpkZXNj
cmlwdG9yKTsKICAgICAgICAgQVNTRVJUKHJlc3VsdERlc2NyaXB0b3IpOwogICAgICAgICBjb252
ZXJ0ZWREZXNjcmlwdG9yID0gV1RGTW92ZShyZXN1bHREZXNjcmlwdG9yKTsKICAgICAgICAgaWYg
KCFjb252ZXJ0ZWREZXNjcmlwdG9yKQpAQCAtNjQsOCArNjcsOCBAQCB2b2lkIFJlbW90ZVRleHR1
cmU6OmNyZWF0ZVZpZXcoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJHUFU6OlRleHR1cmVWaWV3RGVz
Y3JpcHRvcgogICAgIH0KICAgICBBU1NFUlQoY29udmVydGVkRGVzY3JpcHRvcik7CiAgICAgYXV0
byB0ZXh0dXJlVmlldyA9IG1fYmFja2luZy0+Y3JlYXRlVmlldygqY29udmVydGVkRGVzY3JpcHRv
cik7Ci0gICAgYXV0byByZW1vdGVUZXh0dXJlVmlldyA9IFJlbW90ZVRleHR1cmVWaWV3OjpjcmVh
dGUodGV4dHVyZVZpZXcsIG1fb2JqZWN0UmVnaXN0cnksIG1fb2JqZWN0SGVhcCwgaWRlbnRpZmll
cik7Ci0gICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChyZW1vdGVUZXh0dXJlVmlldyk7CisgICAg
YXV0byByZW1vdGVUZXh0dXJlVmlldyA9IFJlbW90ZVRleHR1cmVWaWV3OjpjcmVhdGUodGV4dHVy
ZVZpZXcsIG1fb2JqZWN0SGVhcCwgbV9zdHJlYW1Db25uZWN0aW9uLmNvcHlSZWYoKSwgaWRlbnRp
Zmllcik7CisgICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChpZGVudGlmaWVyLCByZW1vdGVUZXh0
dXJlVmlldyk7CiB9CiAKIHZvaWQgUmVtb3RlVGV4dHVyZTo6ZGVzdHJveSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmUu
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVy
ZS5oCmluZGV4IGRmZWNmOWRhZjcwOTFlODk4MGU5M2ZmMGU2Y2FjMGU2NTBhYTg1Y2UuLjMyYjc2
N2EzZTNlNTY2MjQ2M2Y1OGNjZDUyMTk4ZjE5ODkyMjEwNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZS5oCkBA
IC0zNiwyNyArMzYsMzMgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNzIFRleHR1cmU7
CiB9CiAKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjsKK30K
KwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogY2xhc3MgT2JqZWN0
SGVhcDsKLWNsYXNzIE9iamVjdFJlZ2lzdHJ5Owogc3RydWN0IFRleHR1cmVWaWV3RGVzY3JpcHRv
cjsKIH0KIAogY2xhc3MgUmVtb3RlVGV4dHVyZSBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1l
c3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxSZW1vdGVUZXh0dXJlPiBjcmVhdGUoUEFMOjpXZWJHUFU6OlRleHR1cmUm
IHRleHR1cmUsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6
Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKKyAg
ICBzdGF0aWMgUmVmPFJlbW90ZVRleHR1cmU+IGNyZWF0ZShQQUw6OldlYkdQVTo6VGV4dHVyZSYg
dGV4dHVyZSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBSZWY8SVBDOjpTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uPiYmIHN0cmVhbUNvbm5lY3Rpb24sIFdlYkdQVUlkZW50aWZpZXIgaWRl
bnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVRleHR1
cmUodGV4dHVyZSwgb2JqZWN0UmVnaXN0cnksIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlVGV4dHVyZSh0ZXh0dXJlLCBvYmplY3RI
ZWFwLCBXVEZNb3ZlKHN0cmVhbUNvbm5lY3Rpb24pLCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAg
ICAgdmlydHVhbCB+UmVtb3RlVGV4dHVyZSgpOwogCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFz
cyBPYmplY3RSZWdpc3RyeTsKKyAgICB2b2lkIHN0b3BMaXN0ZW5pbmdGb3JJUEMoKTsKIAotICAg
IFJlbW90ZVRleHR1cmUoUEFMOjpXZWJHUFU6OlRleHR1cmUmLCBXZWJHUFU6Ok9iamVjdFJlZ2lz
dHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7CisgICAgUEFMOjpX
ZWJHUFU6OlRleHR1cmUmIGJhY2tpbmcoKSB7IHJldHVybiBtX2JhY2tpbmc7IH0KKworcHJpdmF0
ZToKKyAgICBSZW1vdGVUZXh0dXJlKFBBTDo6V2ViR1BVOjpUZXh0dXJlJiwgV2ViR1BVOjpPYmpl
Y3RIZWFwJiwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiwgV2ViR1BVSWRlbnRp
Zmllcik7CiAKICAgICBSZW1vdGVUZXh0dXJlKGNvbnN0IFJlbW90ZVRleHR1cmUmKSA9IGRlbGV0
ZTsKICAgICBSZW1vdGVUZXh0dXJlKFJlbW90ZVRleHR1cmUmJikgPSBkZWxldGU7CkBAIC03Miw4
ICs3OCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7CiAKICAgICBS
ZWY8UEFMOjpXZWJHUFU6OlRleHR1cmU+IG1fYmFja2luZzsKLSAgICBXZWJHUFU6Ok9iamVjdFJl
Z2lzdHJ5JiBtX29iamVjdFJlZ2lzdHJ5OwogICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmpl
Y3RIZWFwOworICAgIFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+IG1fc3RyZWFtQ29u
bmVjdGlvbjsKICAgICBXZWJHUFVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4
dHVyZVZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVUZXh0dXJlVmlldy5jcHAKaW5kZXggYmU4NjNkZjVmNjQyYjg0YzEwMDcyNGY4MDdhNjY4
YjFmM2FlY2M1MS4uMmM3OWU5OGY5NjYyZmVhN2U2NDY5ZjM5MGUxYTE2MzU1ZjcxNmNhYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVU
ZXh0dXJlVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVUZXh0dXJlVmlldy5jcHAKQEAgLTI4LDI0ICsyOCwyNyBAQAogCiAjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiUmVtb3RlVGV4dHVyZVZpZXdNZXNzYWdlcy5o
IgorI2luY2x1ZGUgIlN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJHUFVP
YmplY3RIZWFwLmgiCi0jaW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIKICNpbmNsdWRl
IDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVRleHR1cmVWaWV3Lmg+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1SZW1vdGVUZXh0dXJlVmlldzo6UmVtb3RlVGV4dHVyZVZpZXcoUEFMOjpXZWJH
UFU6OlRleHR1cmVWaWV3JiB0ZXh0dXJlVmlldywgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2Jq
ZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRp
ZmllciBpZGVudGlmaWVyKQorUmVtb3RlVGV4dHVyZVZpZXc6OlJlbW90ZVRleHR1cmVWaWV3KFBB
TDo6V2ViR1BVOjpUZXh0dXJlVmlldyYgdGV4dHVyZVZpZXcsIFdlYkdQVTo6T2JqZWN0SGVhcCYg
b2JqZWN0SGVhcCwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiBzdHJlYW1Db25u
ZWN0aW9uLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2JhY2tpbmcodGV4
dHVyZVZpZXcpCi0gICAgLCBtX29iamVjdFJlZ2lzdHJ5KG9iamVjdFJlZ2lzdHJ5KQogICAgICwg
bV9vYmplY3RIZWFwKG9iamVjdEhlYXApCisgICAgLCBtX3N0cmVhbUNvbm5lY3Rpb24oV1RGTW92
ZShzdHJlYW1Db25uZWN0aW9uKSkKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogewot
ICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1faWRlbnRpZmllciwgbV9iYWNraW5nKTsK
KyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXMoKnRoaXMsIE1l
c3NhZ2VzOjpSZW1vdGVUZXh0dXJlVmlldzo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50
aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKLVJlbW90ZVRleHR1cmVWaWV3Ojp+UmVtb3RlVGV4dHVy
ZVZpZXcoKQorUmVtb3RlVGV4dHVyZVZpZXc6On5SZW1vdGVUZXh0dXJlVmlldygpID0gZGVmYXVs
dDsKKwordm9pZCBSZW1vdGVUZXh0dXJlVmlldzo6c3RvcExpc3RlbmluZ0ZvcklQQygpCiB7Ci0g
ICAgbV9vYmplY3RSZWdpc3RyeS5yZW1vdmVPYmplY3QobV9pZGVudGlmaWVyKTsKKyAgICBtX3N0
cmVhbUNvbm5lY3Rpb24tPnN0b3BSZWNlaXZpbmdNZXNzYWdlcyhNZXNzYWdlczo6UmVtb3RlVGV4
dHVyZVZpZXc6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkp
OwogfQogCiB2b2lkIFJlbW90ZVRleHR1cmVWaWV3OjpzZXRMYWJlbChTdHJpbmcmJiBsYWJlbCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlVGV4dHVyZVZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlVGV4dHVyZVZpZXcuaAppbmRleCA0Njg3YzNiODMzOTlmNDM2NjRkOTIxMmZmM2E4
Nzg0NDM5Y2JmNmM3Li4zNzNmYzA5Mjk1YWQzNTcyOGZhNGJmYzM2MDljMTI3YzEzMjIxYjZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZVRleHR1cmVWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVUZXh0dXJlVmlldy5oCkBAIC0zNiwyNiArMzYsMzIgQEAgbmFtZXNwYWNlIFBB
TDo6V2ViR1BVIHsKIGNsYXNzIFRleHR1cmVWaWV3OwogfQogCituYW1lc3BhY2UgSVBDIHsKK2Ns
YXNzIFN0cmVhbVNlcnZlckNvbm5lY3Rpb247Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBu
YW1lc3BhY2UgV2ViR1BVIHsKIGNsYXNzIE9iamVjdEhlYXA7Ci1jbGFzcyBPYmplY3RSZWdpc3Ry
eTsKIH0KIAogY2xhc3MgUmVtb3RlVGV4dHVyZVZpZXcgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJl
YW1NZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8UmVtb3RlVGV4dHVyZVZpZXc+IGNyZWF0ZShQQUw6OldlYkdQVTo6
VGV4dHVyZVZpZXcmIHRleHR1cmVWaWV3LCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RS
ZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVy
IGlkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxSZW1vdGVUZXh0dXJlVmlldz4gY3JlYXRlKFBB
TDo6V2ViR1BVOjpUZXh0dXJlVmlldyYgdGV4dHVyZVZpZXcsIFdlYkdQVTo6T2JqZWN0SGVhcCYg
b2JqZWN0SGVhcCwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiBzdHJlYW1Db25u
ZWN0aW9uLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVUZXh0dXJlVmlldyh0ZXh0dXJlVmlldywgb2JqZWN0UmVn
aXN0cnksIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgUmVtb3RlVGV4dHVyZVZpZXcodGV4dHVyZVZpZXcsIG9iamVjdEhlYXAsIFdURk1vdmUo
c3RyZWFtQ29ubmVjdGlvbiksIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5S
ZW1vdGVUZXh0dXJlVmlldygpOwogCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBPYmplY3RS
ZWdpc3RyeTsKKyAgICB2b2lkIHN0b3BMaXN0ZW5pbmdGb3JJUEMoKTsKIAotICAgIFJlbW90ZVRl
eHR1cmVWaWV3KFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlldyYsIFdlYkdQVTo6T2JqZWN0UmVnaXN0
cnkmLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKKyAgICBQQUw6Oldl
YkdQVTo6VGV4dHVyZVZpZXcmIGJhY2tpbmcoKSB7IHJldHVybiBtX2JhY2tpbmc7IH0KKworcHJp
dmF0ZToKKyAgICBSZW1vdGVUZXh0dXJlVmlldyhQQUw6OldlYkdQVTo6VGV4dHVyZVZpZXcmLCBX
ZWJHUFU6Ok9iamVjdEhlYXAmLCBSZWY8SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiYmLCBX
ZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZVRleHR1cmVWaWV3KGNvbnN0IFJlbW90ZVRl
eHR1cmVWaWV3JikgPSBkZWxldGU7CiAgICAgUmVtb3RlVGV4dHVyZVZpZXcoUmVtb3RlVGV4dHVy
ZVZpZXcmJikgPSBkZWxldGU7CkBAIC02Nyw4ICs3Myw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
ZXRMYWJlbChTdHJpbmcmJik7CiAKICAgICBSZWY8UEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3PiBt
X2JhY2tpbmc7Ci0gICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgbV9vYmplY3RSZWdpc3RyeTsK
ICAgICBXZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKKyAgICBSZWY8SVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uPiBtX3N0cmVhbUNvbm5lY3Rpb247CiAgICAgV2ViR1BVSWRlbnRp
ZmllciBtX2lkZW50aWZpZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9iamVjdEhlYXAuY3BwIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVPYmplY3RIZWFwLmNwcAppbmRleCBk
MGEwZWMzMDk0MjgwNTI1NDlkMzIxMjFkODQ5ZWY0Yzg5ZTBmNWIxLi5mMWM2Y2I2OWFkNzJhMWFh
MTMxZTVhNGVhYjcyM2MzYTE3ZWM4MDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9iamVjdEhlYXAuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvV2ViR1BVT2JqZWN0SGVhcC5jcHAKQEAg
LTYxLDI2OCArNjEsMzA0IEBAIE9iamVjdEhlYXA6On5PYmplY3RIZWFwKCkKIHsKIH0KIAotdm9p
ZCBPYmplY3RIZWFwOjphZGRPYmplY3QoUmVtb3RlQWRhcHRlciYgYWRhcHRlcikKK3ZvaWQgT2Jq
ZWN0SGVhcDo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlQWRh
cHRlciYgYWRhcHRlcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoJmFkYXB0
ZXIsIGFkYXB0ZXIpOworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVy
LCBPYmplY3QgeyBJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlQWRh
cHRlcj4geyBSZWYgeyBhZGFwdGVyIH0gfSB9KTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwg
cmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi12b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChSZW1v
dGVCaW5kR3JvdXAmIGJpbmRHcm91cCkKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFdlYkdQ
VUlkZW50aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlQmluZEdyb3VwJiBiaW5kR3JvdXApCiB7Ci0g
ICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKCZiaW5kR3JvdXAsIGJpbmRHcm91cCk7Cisg
ICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIE9iamVjdCB7IElQQzo6
U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVCaW5kR3JvdXA+IHsgUmVmIHsg
YmluZEdyb3VwIH0gfSB9KTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3
RW50cnkpOwogfQogCi12b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChSZW1vdGVCaW5kR3JvdXBM
YXlvdXQmIGJpbmRHcm91cExheW91dCkKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFdlYkdQ
VUlkZW50aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlQmluZEdyb3VwTGF5b3V0JiBiaW5kR3JvdXBM
YXlvdXQpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKCZiaW5kR3JvdXBMYXlv
dXQsIGJpbmRHcm91cExheW91dCk7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlk
ZW50aWZpZXIsIE9iamVjdCB7IElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxS
ZW1vdGVCaW5kR3JvdXBMYXlvdXQ+IHsgUmVmIHsgYmluZEdyb3VwTGF5b3V0IH0gfSB9KTsKICAg
ICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi12b2lkIE9i
amVjdEhlYXA6OmFkZE9iamVjdChSZW1vdGVCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgT2JqZWN0SGVh
cDo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlQnVmZmVyJiBi
dWZmZXIpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKCZidWZmZXIsIGJ1ZmZl
cik7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIE9iamVjdCB7
IElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVCdWZmZXI+IHsgUmVm
IHsgYnVmZmVyIH0gfSB9KTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3
RW50cnkpOwogfQogCi12b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChSZW1vdGVDb21tYW5kQnVm
ZmVyJiBjb21tYW5kQnVmZmVyKQordm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoV2ViR1BVSWRl
bnRpZmllciBpZGVudGlmaWVyLCBSZW1vdGVDb21tYW5kQnVmZmVyJiBjb21tYW5kQnVmZmVyKQog
ewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZCgmY29tbWFuZEJ1ZmZlciwgY29tbWFu
ZEJ1ZmZlcik7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIE9i
amVjdCB7IElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVDb21tYW5k
QnVmZmVyPiB7IFJlZiB7IGNvbW1hbmRCdWZmZXIgfSB9IH0pOwogICAgIEFTU0VSVF9VTlVTRUQo
cmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLXZvaWQgT2JqZWN0SGVhcDo6YWRkT2Jq
ZWN0KFJlbW90ZUNvbW1hbmRFbmNvZGVyJiBjb21tYW5kRW5jb2RlcikKK3ZvaWQgT2JqZWN0SGVh
cDo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlQ29tbWFuZEVu
Y29kZXImIGNvbW1hbmRFbmNvZGVyKQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFk
ZCgmY29tbWFuZEVuY29kZXIsIGNvbW1hbmRFbmNvZGVyKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1f
b2JqZWN0cy5hZGQoaWRlbnRpZmllciwgT2JqZWN0IHsgSVBDOjpTY29wZWRBY3RpdmVNZXNzYWdl
UmVjZWl2ZVF1ZXVlPFJlbW90ZUNvbW1hbmRFbmNvZGVyPiB7IFJlZiB7IGNvbW1hbmRFbmNvZGVy
IH0gfSB9KTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwog
fQogCi12b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChSZW1vdGVDb21wdXRlUGFzc0VuY29kZXIm
IGNvbXB1dGVQYXNzRW5jb2RlcikKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFdlYkdQVUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyJiBjb21wdXRlUGFz
c0VuY29kZXIpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKCZjb21wdXRlUGFz
c0VuY29kZXIsIGNvbXB1dGVQYXNzRW5jb2Rlcik7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVj
dHMuYWRkKGlkZW50aWZpZXIsIE9iamVjdCB7IElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2Vp
dmVRdWV1ZTxSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI+IHsgUmVmIHsgY29tcHV0ZVBhc3NFbmNv
ZGVyIH0gfSB9KTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkp
OwogfQogCi12b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChSZW1vdGVDb21wdXRlUGlwZWxpbmUm
IGNvbXB1dGVQaXBlbGluZSkKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFdlYkdQVUlkZW50
aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlQ29tcHV0ZVBpcGVsaW5lJiBjb21wdXRlUGlwZWxpbmUp
CiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKCZjb21wdXRlUGlwZWxpbmUsIGNv
bXB1dGVQaXBlbGluZSk7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZp
ZXIsIE9iamVjdCB7IElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVD
b21wdXRlUGlwZWxpbmU+IHsgUmVmIHsgY29tcHV0ZVBpcGVsaW5lIH0gfSB9KTsKICAgICBBU1NF
UlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi12b2lkIE9iamVjdEhl
YXA6OmFkZE9iamVjdChSZW1vdGVEZXZpY2UmIGRldmljZSkKK3ZvaWQgT2JqZWN0SGVhcDo6YWRk
T2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlRGV2aWNlJiBkZXZpY2Up
CiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKCZkZXZpY2UsIGRldmljZSk7Cisg
ICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIE9iamVjdCB7IElQQzo6
U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVEZXZpY2U+IHsgUmVmIHsgZGV2
aWNlIH0gfSB9KTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkp
OwogfQogCi12b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChSZW1vdGVFeHRlcm5hbFRleHR1cmUm
IGV4dGVybmFsVGV4dHVyZSkKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFdlYkdQVUlkZW50
aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlJiBleHRlcm5hbFRleHR1cmUp
CiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKCZleHRlcm5hbFRleHR1cmUsIGV4
dGVybmFsVGV4dHVyZSk7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZp
ZXIsIE9iamVjdCB7IElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVF
eHRlcm5hbFRleHR1cmU+IHsgUmVmIHsgZXh0ZXJuYWxUZXh0dXJlIH0gfSB9KTsKICAgICBBU1NF
UlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi12b2lkIE9iamVjdEhl
YXA6OmFkZE9iamVjdChSZW1vdGVHUFUmIGdwdSkKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0
KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlUGlwZWxpbmVMYXlvdXQmIHBpcGVs
aW5lTGF5b3V0KQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZCgmZ3B1LCBncHUp
OworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBPYmplY3QgeyBJ
UEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlUGlwZWxpbmVMYXlvdXQ+
IHsgUmVmIHsgcGlwZWxpbmVMYXlvdXQgfSB9IH0pOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0
LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLXZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJl
bW90ZVBpcGVsaW5lTGF5b3V0JiBwaXBlbGluZUxheW91dCkKK3ZvaWQgT2JqZWN0SGVhcDo6YWRk
T2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlUXVlcnlTZXQmIHF1ZXJ5
U2V0KQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZCgmcGlwZWxpbmVMYXlvdXQs
IHBpcGVsaW5lTGF5b3V0KTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRp
ZmllciwgT2JqZWN0IHsgSVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90
ZVF1ZXJ5U2V0PiB7IFJlZiB7IHF1ZXJ5U2V0IH0gfSB9KTsKICAgICBBU1NFUlRfVU5VU0VEKHJl
c3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi12b2lkIE9iamVjdEhlYXA6OmFkZE9iamVj
dChSZW1vdGVRdWVyeVNldCYgcXVlcnlTZXQpCit2b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChX
ZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlbW90ZVF1ZXVlJiBxdWV1ZSkKIHsKLSAgICBh
dXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoJnF1ZXJ5U2V0LCBxdWVyeVNldCk7CisgICAgYXV0
byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIE9iamVjdCB7IElQQzo6U2NvcGVk
QWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVRdWV1ZT4geyBSZWYgeyBxdWV1ZSB9IH0g
fSk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAot
dm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoUmVtb3RlUXVldWUmIHF1ZXVlKQordm9pZCBPYmpl
Y3RIZWFwOjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZW1vdGVSZW5k
ZXJCdW5kbGVFbmNvZGVyJiByZW5kZXJCdW5kbGVFbmNvZGVyKQogewotICAgIGF1dG8gcmVzdWx0
ID0gbV9vYmplY3RzLmFkZCgmcXVldWUsIHF1ZXVlKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2Jq
ZWN0cy5hZGQoaWRlbnRpZmllciwgT2JqZWN0IHsgSVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVj
ZWl2ZVF1ZXVlPFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI+IHsgUmVmIHsgcmVuZGVyQnVuZGxl
RW5jb2RlciB9IH0gfSk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0Vu
dHJ5KTsKIH0KIAotdm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoUmVtb3RlUmVuZGVyQnVuZGxl
RW5jb2RlciYgcmVuZGVyQnVuZGxlRW5jb2RlcikKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0
KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlUmVuZGVyQnVuZGxlJiByZW5kZXJC
dW5kbGUpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKCZyZW5kZXJCdW5kbGVF
bmNvZGVyLCByZW5kZXJCdW5kbGVFbmNvZGVyKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0
cy5hZGQoaWRlbnRpZmllciwgT2JqZWN0IHsgSVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2
ZVF1ZXVlPFJlbW90ZVJlbmRlckJ1bmRsZT4geyBSZWYgeyByZW5kZXJCdW5kbGUgfSB9IH0pOwog
ICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLXZvaWQg
T2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJlbW90ZVJlbmRlckJ1bmRsZSYgcmVuZGVyQnVuZGxlKQor
dm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBS
ZW1vdGVSZW5kZXJQYXNzRW5jb2RlciYgcmVuZGVyUGFzc0VuY29kZXIpCiB7Ci0gICAgYXV0byBy
ZXN1bHQgPSBtX29iamVjdHMuYWRkKCZyZW5kZXJCdW5kbGUsIHJlbmRlckJ1bmRsZSk7CisgICAg
YXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIE9iamVjdCB7IElQQzo6U2Nv
cGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcj4geyBS
ZWYgeyByZW5kZXJQYXNzRW5jb2RlciB9IH0gfSk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQs
IHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotdm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoUmVt
b3RlUmVuZGVyUGFzc0VuY29kZXImIHJlbmRlclBhc3NFbmNvZGVyKQordm9pZCBPYmplY3RIZWFw
OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZW1vdGVSZW5kZXJQaXBl
bGluZSYgcmVuZGVyUGlwZWxpbmUpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRk
KCZyZW5kZXJQYXNzRW5jb2RlciwgcmVuZGVyUGFzc0VuY29kZXIpOworICAgIGF1dG8gcmVzdWx0
ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBPYmplY3QgeyBJUEM6OlNjb3BlZEFjdGl2ZU1l
c3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlUmVuZGVyUGlwZWxpbmU+IHsgUmVmIHsgcmVuZGVyUGlw
ZWxpbmUgfSB9IH0pOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRy
eSk7CiB9CiAKLXZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJlbW90ZVJlbmRlclBpcGVsaW5l
JiByZW5kZXJQaXBlbGluZSkKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFdlYkdQVUlkZW50
aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlU2FtcGxlciYgc2FtcGxlcikKIHsKLSAgICBhdXRvIHJl
c3VsdCA9IG1fb2JqZWN0cy5hZGQoJnJlbmRlclBpcGVsaW5lLCByZW5kZXJQaXBlbGluZSk7Cisg
ICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIE9iamVjdCB7IElQQzo6
U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVTYW1wbGVyPiB7IFJlZiB7IHNh
bXBsZXIgfSB9IH0pOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRy
eSk7CiB9CiAKLXZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJlbW90ZVNhbXBsZXImIHNhbXBs
ZXIpCit2b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFJlbW90ZVNoYWRlck1vZHVsZSYgc2hhZGVyTW9kdWxlKQogewotICAgIGF1dG8gcmVzdWx0
ID0gbV9vYmplY3RzLmFkZCgmc2FtcGxlciwgc2FtcGxlcik7CisgICAgYXV0byByZXN1bHQgPSBt
X29iamVjdHMuYWRkKGlkZW50aWZpZXIsIE9iamVjdCB7IElQQzo6U2NvcGVkQWN0aXZlTWVzc2Fn
ZVJlY2VpdmVRdWV1ZTxSZW1vdGVTaGFkZXJNb2R1bGU+IHsgUmVmIHsgc2hhZGVyTW9kdWxlIH0g
fSB9KTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQog
Ci12b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChSZW1vdGVTaGFkZXJNb2R1bGUmIHNoYWRlck1v
ZHVsZSkKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgUmVtb3RlVGV4dHVyZSYgdGV4dHVyZSkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2Jq
ZWN0cy5hZGQoJnNoYWRlck1vZHVsZSwgc2hhZGVyTW9kdWxlKTsKKyAgICBhdXRvIHJlc3VsdCA9
IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgT2JqZWN0IHsgSVBDOjpTY29wZWRBY3RpdmVNZXNz
YWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZVRleHR1cmU+IHsgUmVmIHsgdGV4dHVyZSB9IH0gfSk7CiAg
ICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotdm9pZCBP
YmplY3RIZWFwOjphZGRPYmplY3QoUmVtb3RlVGV4dHVyZSYgdGV4dHVyZSkKK3ZvaWQgT2JqZWN0
SGVhcDo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlVGV4dHVy
ZVZpZXcmIHRleHR1cmVWaWV3KQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZCgm
dGV4dHVyZSwgdGV4dHVyZSk7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50
aWZpZXIsIE9iamVjdCB7IElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1v
dGVUZXh0dXJlVmlldz4geyBSZWYgeyB0ZXh0dXJlVmlldyB9IH0gfSk7CiAgICAgQVNTRVJUX1VO
VVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotdm9pZCBPYmplY3RIZWFwOjph
ZGRPYmplY3QoUmVtb3RlVGV4dHVyZVZpZXcmIHRleHR1cmVWaWV3KQordm9pZCBPYmplY3RIZWFw
OjpyZW1vdmVPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGF1dG8g
cmVzdWx0ID0gbV9vYmplY3RzLmFkZCgmdGV4dHVyZVZpZXcsIHRleHR1cmVWaWV3KTsKLSAgICBB
U1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwotfQotCi12b2lkIE9iamVj
dEhlYXA6OnJlbW92ZU9iamVjdChSZW1vdGVBZGFwdGVyJiBhZGFwdGVyKQotewotICAgIGF1dG8g
cmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmYWRhcHRlcik7CisgICAgYXV0byByZXN1bHQgPSBt
X29iamVjdHMucmVtb3ZlKGlkZW50aWZpZXIpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCBy
ZXN1bHQpOwogfQogCi12b2lkIE9iamVjdEhlYXA6OnJlbW92ZU9iamVjdChSZW1vdGVCaW5kR3Jv
dXAmIGJpbmRHcm91cCkKK1BBTDo6V2ViR1BVOjpBZGFwdGVyKiBPYmplY3RIZWFwOjpjb252ZXJ0
QWRhcHRlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBh
dXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJmJpbmRHcm91cCk7Ci0gICAgQVNTRVJUX1VO
VVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5k
KGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0
ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8SVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVl
PFJlbW90ZUFkYXB0ZXI+PihpdGVyYXRvci0+dmFsdWUpKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVR
dWV1ZTxSZW1vdGVBZGFwdGVyPj4oaXRlcmF0b3ItPnZhbHVlKS0+YmFja2luZygpOwogfQogCi12
b2lkIE9iamVjdEhlYXA6OnJlbW92ZU9iamVjdChSZW1vdGVCaW5kR3JvdXBMYXlvdXQmIGJpbmRH
cm91cExheW91dCkKK1BBTDo6V2ViR1BVOjpCaW5kR3JvdXAqIE9iamVjdEhlYXA6OmNvbnZlcnRC
aW5kR3JvdXBGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAg
YXV0byByZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKCZiaW5kR3JvdXBMYXlvdXQpOwotICAgIEFT
U0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVj
dHMuZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgp
IHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2Vp
dmVRdWV1ZTxSZW1vdGVCaW5kR3JvdXA+PihpdGVyYXRvci0+dmFsdWUpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PElQQzo6U2NvcGVkQWN0aXZlTWVzc2Fn
ZVJlY2VpdmVRdWV1ZTxSZW1vdGVCaW5kR3JvdXA+PihpdGVyYXRvci0+dmFsdWUpLT5iYWNraW5n
KCk7CiB9CiAKLXZvaWQgT2JqZWN0SGVhcDo6cmVtb3ZlT2JqZWN0KFJlbW90ZUJ1ZmZlciYgYnVm
ZmVyKQorUEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dCogT2JqZWN0SGVhcDo6Y29udmVydEJp
bmRHcm91cExheW91dEZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsK
LSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJmJ1ZmZlcik7Ci0gICAgQVNTRVJU
X1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5m
aW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwg
IXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8SVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1
ZXVlPFJlbW90ZUJpbmRHcm91cExheW91dD4+KGl0ZXJhdG9yLT52YWx1ZSkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIHJldHVybiAmc3RkOjpnZXQ8SVBDOjpTY29wZWRBY3RpdmVNZXNz
YWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZUJpbmRHcm91cExheW91dD4+KGl0ZXJhdG9yLT52YWx1ZSkt
PmJhY2tpbmcoKTsKIH0KIAotdm9pZCBPYmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlQ29t
bWFuZEJ1ZmZlciYgY29tbWFuZEJ1ZmZlcikKK1BBTDo6V2ViR1BVOjpCdWZmZXIqIE9iamVjdEhl
YXA6OmNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIp
CiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKCZjb21tYW5kQnVmZmVyKTsK
LSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKyAgICBhdXRvIGl0ZXJhdG9yID0g
bV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0
cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxJUEM6OlNjb3BlZEFjdGl2ZU1lc3Nh
Z2VSZWNlaXZlUXVldWU8UmVtb3RlQnVmZmVyPj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZzdGQ6OmdldDxJUEM6OlNjb3BlZEFjdGl2ZU1l
c3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlQnVmZmVyPj4oaXRlcmF0b3ItPnZhbHVlKS0+YmFja2lu
ZygpOwogfQogCi12b2lkIE9iamVjdEhlYXA6OnJlbW92ZU9iamVjdChSZW1vdGVDb21tYW5kRW5j
b2RlciYgY29tbWFuZEVuY29kZXIpCitQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZlciogT2JqZWN0
SGVhcDo6Y29udmVydENvbW1hbmRCdWZmZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKCZjb21tYW5k
RW5jb2Rlcik7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAgYXV0byBp
dGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9
PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8SVBDOjpTY29wZWRB
Y3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZUNvbW1hbmRCdWZmZXI+PihpdGVyYXRvci0+
dmFsdWUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PElQ
Qzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVDb21tYW5kQnVmZmVyPj4o
aXRlcmF0b3ItPnZhbHVlKS0+YmFja2luZygpOwogfQogCi12b2lkIE9iamVjdEhlYXA6OnJlbW92
ZU9iamVjdChSZW1vdGVDb21wdXRlUGFzc0VuY29kZXImIGNvbXB1dGVQYXNzRW5jb2RlcikKK1BB
TDo6V2ViR1BVOjpDb21tYW5kRW5jb2RlciogT2JqZWN0SGVhcDo6Y29udmVydENvbW1hbmRFbmNv
ZGVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGF1dG8g
cmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmY29tcHV0ZVBhc3NFbmNvZGVyKTsKLSAgICBBU1NF
UlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3Rz
LmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8
fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZl
UXVldWU8UmVtb3RlQ29tbWFuZEVuY29kZXI+PihpdGVyYXRvci0+dmFsdWUpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PElQQzo6U2NvcGVkQWN0aXZlTWVz
c2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVDb21tYW5kRW5jb2Rlcj4+KGl0ZXJhdG9yLT52YWx1ZSkt
PmJhY2tpbmcoKTsKIH0KIAotdm9pZCBPYmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlQ29t
cHV0ZVBpcGVsaW5lJiBjb21wdXRlUGlwZWxpbmUpCitQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NF
bmNvZGVyKiBPYmplY3RIZWFwOjpjb252ZXJ0Q29tcHV0ZVBhc3NFbmNvZGVyRnJvbUJhY2tpbmco
V2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmpl
Y3RzLnJlbW92ZSgmY29tcHV0ZVBpcGVsaW5lKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwg
cmVzdWx0KTsKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7
CisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlQ29tcHV0
ZVBhc3NFbmNvZGVyPj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgcmV0dXJuICZzdGQ6OmdldDxJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVl
dWU8UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyPj4oaXRlcmF0b3ItPnZhbHVlKS0+YmFja2luZygp
OwogfQogCi12b2lkIE9iamVjdEhlYXA6OnJlbW92ZU9iamVjdChSZW1vdGVEZXZpY2UmIGRldmlj
ZSkKK1BBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmUqIE9iamVjdEhlYXA6OmNvbnZlcnRDb21w
dXRlUGlwZWxpbmVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0g
ICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKCZkZXZpY2UpOwotICAgIEFTU0VSVF9V
TlVTRUQocmVzdWx0LCByZXN1bHQpOworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmlu
ZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1
ZTxSZW1vdGVDb21wdXRlUGlwZWxpbmU+PihpdGVyYXRvci0+dmFsdWUpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PElQQzo6U2NvcGVkQWN0aXZlTWVzc2Fn
ZVJlY2VpdmVRdWV1ZTxSZW1vdGVDb21wdXRlUGlwZWxpbmU+PihpdGVyYXRvci0+dmFsdWUpLT5i
YWNraW5nKCk7CiB9CiAKLXZvaWQgT2JqZWN0SGVhcDo6cmVtb3ZlT2JqZWN0KFJlbW90ZUV4dGVy
bmFsVGV4dHVyZSYgZXh0ZXJuYWxUZXh0dXJlKQorUEFMOjpXZWJHUFU6OkRldmljZSogT2JqZWN0
SGVhcDo6Y29udmVydERldmljZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmll
cikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJmV4dGVybmFsVGV4dHVy
ZSk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAgYXV0byBpdGVyYXRv
ciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX29i
amVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8SVBDOjpTY29wZWRBY3RpdmVN
ZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZURldmljZT4+KGl0ZXJhdG9yLT52YWx1ZSkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAmc3RkOjpnZXQ8SVBDOjpTY29wZWRBY3Rp
dmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZURldmljZT4+KGl0ZXJhdG9yLT52YWx1ZSktPmJh
Y2tpbmcoKTsKIH0KIAotdm9pZCBPYmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlR1BVJiBn
cHUpCitQQUw6OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlKiBPYmplY3RIZWFwOjpjb252ZXJ0RXh0
ZXJuYWxUZXh0dXJlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewot
ICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmZ3B1KTsKLSAgICBBU1NFUlRfVU5V
U0VEKHJlc3VsdCwgcmVzdWx0KTsKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQo
aWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8
UmVtb3RlRXh0ZXJuYWxUZXh0dXJlPj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgcmV0dXJuICZzdGQ6OmdldDxJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VS
ZWNlaXZlUXVldWU8UmVtb3RlRXh0ZXJuYWxUZXh0dXJlPj4oaXRlcmF0b3ItPnZhbHVlKS0+YmFj
a2luZygpOwogfQogCi12b2lkIE9iamVjdEhlYXA6OnJlbW92ZU9iamVjdChSZW1vdGVQaXBlbGlu
ZUxheW91dCYgcGlwZWxpbmVMYXlvdXQpCitQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQqIE9i
amVjdEhlYXA6OmNvbnZlcnRQaXBlbGluZUxheW91dEZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZp
ZXIgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJnBp
cGVsaW5lTGF5b3V0KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKyAgICBh
dXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJh
dG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxJUEM6OlNj
b3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlUGlwZWxpbmVMYXlvdXQ+PihpdGVy
YXRvci0+dmFsdWUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6
Z2V0PElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVQaXBlbGluZUxh
eW91dD4+KGl0ZXJhdG9yLT52YWx1ZSktPmJhY2tpbmcoKTsKIH0KIAotdm9pZCBPYmplY3RIZWFw
OjpyZW1vdmVPYmplY3QoUmVtb3RlUXVlcnlTZXQmIHF1ZXJ5U2V0KQorUEFMOjpXZWJHUFU6OlF1
ZXJ5U2V0KiBPYmplY3RIZWFwOjpjb252ZXJ0UXVlcnlTZXRGcm9tQmFja2luZyhXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMucmVtb3Zl
KCZxdWVyeVNldCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAgYXV0
byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRv
ciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8SVBDOjpTY29w
ZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZVF1ZXJ5U2V0Pj4oaXRlcmF0b3ItPnZh
bHVlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZzdGQ6OmdldDxJUEM6
OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlUXVlcnlTZXQ+PihpdGVyYXRv
ci0+dmFsdWUpLT5iYWNraW5nKCk7CiB9CiAKLXZvaWQgT2JqZWN0SGVhcDo6cmVtb3ZlT2JqZWN0
KFJlbW90ZVF1ZXVlJiBxdWV1ZSkKK1BBTDo6V2ViR1BVOjpRdWV1ZSogT2JqZWN0SGVhcDo6Y29u
dmVydFF1ZXVlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAg
IGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmcXVldWUpOwotICAgIEFTU0VSVF9VTlVT
RUQocmVzdWx0LCByZXN1bHQpOworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChp
ZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxS
ZW1vdGVRdWV1ZT4+KGl0ZXJhdG9yLT52YWx1ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIHJldHVybiAmc3RkOjpnZXQ8SVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVl
PFJlbW90ZVF1ZXVlPj4oaXRlcmF0b3ItPnZhbHVlKS0+YmFja2luZygpOwogfQogCi12b2lkIE9i
amVjdEhlYXA6OnJlbW92ZU9iamVjdChSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyJiByZW5kZXJC
dW5kbGVFbmNvZGVyKQorUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXIqIE9iamVjdEhl
YXA6OmNvbnZlcnRSZW5kZXJCdW5kbGVFbmNvZGVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyKQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmcmVu
ZGVyQnVuZGxlRW5jb2Rlcik7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cisg
ICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChp
dGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8SVBD
OjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZVJlbmRlckJ1bmRsZUVuY29k
ZXI+PihpdGVyYXRvci0+dmFsdWUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1
cm4gJnN0ZDo6Z2V0PElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVS
ZW5kZXJCdW5kbGVFbmNvZGVyPj4oaXRlcmF0b3ItPnZhbHVlKS0+YmFja2luZygpOwogfQogCi12
b2lkIE9iamVjdEhlYXA6OnJlbW92ZU9iamVjdChSZW1vdGVSZW5kZXJCdW5kbGUmIHJlbmRlckJ1
bmRsZSkKK1BBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGUqIE9iamVjdEhlYXA6OmNvbnZlcnRSZW5k
ZXJCdW5kbGVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAg
YXV0byByZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKCZyZW5kZXJCdW5kbGUpOwotICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMu
ZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8
ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVR
dWV1ZTxSZW1vdGVSZW5kZXJCdW5kbGU+PihpdGVyYXRvci0+dmFsdWUpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PElQQzo6U2NvcGVkQWN0aXZlTWVzc2Fn
ZVJlY2VpdmVRdWV1ZTxSZW1vdGVSZW5kZXJCdW5kbGU+PihpdGVyYXRvci0+dmFsdWUpLT5iYWNr
aW5nKCk7CiB9CiAKLXZvaWQgT2JqZWN0SGVhcDo6cmVtb3ZlT2JqZWN0KFJlbW90ZVJlbmRlclBh
c3NFbmNvZGVyJiByZW5kZXJQYXNzRW5jb2RlcikKK1BBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRW5j
b2RlciogT2JqZWN0SGVhcDo6Y29udmVydFJlbmRlclBhc3NFbmNvZGVyRnJvbUJhY2tpbmcoV2Vi
R1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3Rz
LnJlbW92ZSgmcmVuZGVyUGFzc0VuY29kZXIpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCBy
ZXN1bHQpOworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsK
KyAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVy
bmF0aXZlPElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVSZW5kZXJQ
YXNzRW5jb2Rlcj4+KGl0ZXJhdG9yLT52YWx1ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIHJldHVybiAmc3RkOjpnZXQ8SVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVl
PFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyPj4oaXRlcmF0b3ItPnZhbHVlKS0+YmFja2luZygpOwog
fQogCi12b2lkIE9iamVjdEhlYXA6OnJlbW92ZU9iamVjdChSZW1vdGVSZW5kZXJQaXBlbGluZSYg
cmVuZGVyUGlwZWxpbmUpCitQQUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmUqIE9iamVjdEhlYXA6
OmNvbnZlcnRSZW5kZXJQaXBlbGluZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRp
ZmllcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJnJlbmRlclBpcGVs
aW5lKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKyAgICBhdXRvIGl0ZXJh
dG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1f
b2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxJUEM6OlNjb3BlZEFjdGl2
ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlUmVuZGVyUGlwZWxpbmU+PihpdGVyYXRvci0+dmFs
dWUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PElQQzo6
U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVSZW5kZXJQaXBlbGluZT4+KGl0
ZXJhdG9yLT52YWx1ZSktPmJhY2tpbmcoKTsKIH0KIAotdm9pZCBPYmplY3RIZWFwOjpyZW1vdmVP
YmplY3QoUmVtb3RlU2FtcGxlciYgc2FtcGxlcikKK1BBTDo6V2ViR1BVOjpTYW1wbGVyKiBPYmpl
Y3RIZWFwOjpjb252ZXJ0U2FtcGxlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRp
ZmllcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJnNhbXBsZXIpOwot
ICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworICAgIGF1dG8gaXRlcmF0b3IgPSBt
X29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3Rz
LmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPElQQzo6U2NvcGVkQWN0aXZlTWVzc2Fn
ZVJlY2VpdmVRdWV1ZTxSZW1vdGVTYW1wbGVyPj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZzdGQ6OmdldDxJUEM6OlNjb3BlZEFjdGl2ZU1l
c3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlU2FtcGxlcj4+KGl0ZXJhdG9yLT52YWx1ZSktPmJhY2tp
bmcoKTsKIH0KIAotdm9pZCBPYmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlU2hhZGVyTW9k
dWxlJiBzaGFkZXJNb2R1bGUpCitQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlKiBPYmplY3RIZWFw
Ojpjb252ZXJ0U2hhZGVyTW9kdWxlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyKQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmc2hhZGVyTW9kdWxl
KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKyAgICBhdXRvIGl0ZXJhdG9y
ID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2Jq
ZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxJUEM6OlNjb3BlZEFjdGl2ZU1l
c3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlU2hhZGVyTW9kdWxlPj4oaXRlcmF0b3ItPnZhbHVlKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZzdGQ6OmdldDxJUEM6OlNjb3Bl
ZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlU2hhZGVyTW9kdWxlPj4oaXRlcmF0b3It
PnZhbHVlKS0+YmFja2luZygpOwogfQogCi12b2lkIE9iamVjdEhlYXA6OnJlbW92ZU9iamVjdChS
ZW1vdGVUZXh0dXJlJiB0ZXh0dXJlKQorUEFMOjpXZWJHUFU6OlRleHR1cmUqIE9iamVjdEhlYXA6
OmNvbnZlcnRUZXh0dXJlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQog
ewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmdGV4dHVyZSk7Ci0gICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0
cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkg
fHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8SVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2
ZVF1ZXVlPFJlbW90ZVRleHR1cmU+PihpdGVyYXRvci0+dmFsdWUpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJl
Y2VpdmVRdWV1ZTxSZW1vdGVUZXh0dXJlPj4oaXRlcmF0b3ItPnZhbHVlKS0+YmFja2luZygpOwog
fQogCi12b2lkIE9iamVjdEhlYXA6OnJlbW92ZU9iamVjdChSZW1vdGVUZXh0dXJlVmlldyYgdGV4
dHVyZVZpZXcpCitQQUw6OldlYkdQVTo6VGV4dHVyZVZpZXcqIE9iamVjdEhlYXA6OmNvbnZlcnRU
ZXh0dXJlVmlld0Zyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAg
ICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJnRleHR1cmVWaWV3KTsKLSAgICBBU1NF
UlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3Rz
LmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8
fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZl
UXVldWU8UmVtb3RlVGV4dHVyZVZpZXc+PihpdGVyYXRvci0+dmFsdWUpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PElQQzo6U2NvcGVkQWN0aXZlTWVzc2Fn
ZVJlY2VpdmVRdWV1ZTxSZW1vdGVUZXh0dXJlVmlldz4+KGl0ZXJhdG9yLT52YWx1ZSktPmJhY2tp
bmcoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvV2ViR1BVT2JqZWN0SGVhcC5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVPYmplY3RI
ZWFwLmgKaW5kZXggYTE2Y2QyNjY5ODEzNzdjYTkxOGU1MTBiNjhmYzg1ZjM4ZTQxOWQ5Mi4uM2Uz
MzM4MDkyNWZjZWY5ZmYzNTAzODY3OWU4YzMzNDEwZTUwN2IzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVPYmplY3RIZWFwLmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVPYmplY3RI
ZWFwLmgKQEAgLTI3LDEyICsyNywzOCBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCi0j
aW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIKKyNpbmNsdWRlICJTY29wZWRBY3RpdmVN
ZXNzYWdlUmVjZWl2ZVF1ZXVlLmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5n
Q29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxmdW5j
dGlvbmFsPgogI2luY2x1ZGUgPHZhcmlhbnQ+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNp
bmNsdWRlIDx3dGYvUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNl
IFBBTDo6V2ViR1BVIHsKK2NsYXNzIEFkYXB0ZXI7CitjbGFzcyBCaW5kR3JvdXA7CitjbGFzcyBC
aW5kR3JvdXBMYXlvdXQ7CitjbGFzcyBCdWZmZXI7CitjbGFzcyBDb21tYW5kQnVmZmVyOworY2xh
c3MgQ29tbWFuZEVuY29kZXI7CitjbGFzcyBDb21wdXRlUGFzc0VuY29kZXI7CitjbGFzcyBDb21w
dXRlUGlwZWxpbmU7CitjbGFzcyBEZXZpY2U7CitjbGFzcyBFeHRlcm5hbFRleHR1cmU7CitjbGFz
cyBHUFU7CitjbGFzcyBQaXBlbGluZUxheW91dDsKK2NsYXNzIFF1ZXJ5U2V0OworY2xhc3MgUXVl
dWU7CitjbGFzcyBSZW5kZXJCdW5kbGVFbmNvZGVyOworY2xhc3MgUmVuZGVyQnVuZGxlOworY2xh
c3MgUmVuZGVyUGFzc0VuY29kZXI7CitjbGFzcyBSZW5kZXJQaXBlbGluZTsKK2NsYXNzIFNhbXBs
ZXI7CitjbGFzcyBTaGFkZXJNb2R1bGU7CitjbGFzcyBUZXh0dXJlOworY2xhc3MgVGV4dHVyZVZp
ZXc7Cit9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgUmVtb3RlQWRhcHRlcjsKQEAgLTQ1
LDcgKzcxLDYgQEAgY2xhc3MgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOwogY2xhc3MgUmVtb3Rl
Q29tcHV0ZVBpcGVsaW5lOwogY2xhc3MgUmVtb3RlRGV2aWNlOwogY2xhc3MgUmVtb3RlRXh0ZXJu
YWxUZXh0dXJlOwotY2xhc3MgUmVtb3RlR1BVOwogY2xhc3MgUmVtb3RlUGlwZWxpbmVMYXlvdXQ7
CiBjbGFzcyBSZW1vdGVRdWVyeVNldDsKIGNsYXNzIFJlbW90ZVF1ZXVlOwpAQCAtNjEsODYgKzg2
LDkwIEBAIGNsYXNzIFJlbW90ZVRleHR1cmVWaWV3OwogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJH
UFUgewogCi1jbGFzcyBPYmplY3RIZWFwIGZpbmFsIDogcHVibGljIENhbk1ha2VXZWFrUHRyPE9i
amVjdEhlYXA+IHsKK2NsYXNzIE9iamVjdEhlYXAgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxP
YmplY3RIZWFwPiwgcHVibGljIFdlYkdQVTo6Q29udmVydEZyb21CYWNraW5nQ29udGV4dCB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgT2JqZWN0SGVhcCgpOwor
ICAgIHN0YXRpYyBSZWY8T2JqZWN0SGVhcD4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IE9iamVjdEhlYXAoKSk7CisgICAgfQorCiAgICAgfk9iamVjdEhlYXAo
KTsKIAotICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90ZUFkYXB0ZXImKTsKLSAgICB2b2lkIGFkZE9i
amVjdChSZW1vdGVCaW5kR3JvdXAmKTsKLSAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVCaW5kR3Jv
dXBMYXlvdXQmKTsKLSAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVCdWZmZXImKTsKLSAgICB2b2lk
IGFkZE9iamVjdChSZW1vdGVDb21tYW5kQnVmZmVyJik7Ci0gICAgdm9pZCBhZGRPYmplY3QoUmVt
b3RlQ29tbWFuZEVuY29kZXImKTsKLSAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVDb21wdXRlUGFz
c0VuY29kZXImKTsKLSAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVDb21wdXRlUGlwZWxpbmUmKTsK
LSAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVEZXZpY2UmKTsKLSAgICB2b2lkIGFkZE9iamVjdChS
ZW1vdGVFeHRlcm5hbFRleHR1cmUmKTsKLSAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVHUFUmKTsK
LSAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVQaXBlbGluZUxheW91dCYpOwotICAgIHZvaWQgYWRk
T2JqZWN0KFJlbW90ZVF1ZXJ5U2V0Jik7Ci0gICAgdm9pZCBhZGRPYmplY3QoUmVtb3RlUXVldWUm
KTsKLSAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyJik7Ci0gICAg
dm9pZCBhZGRPYmplY3QoUmVtb3RlUmVuZGVyQnVuZGxlJik7Ci0gICAgdm9pZCBhZGRPYmplY3Qo
UmVtb3RlUmVuZGVyUGFzc0VuY29kZXImKTsKLSAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVSZW5k
ZXJQaXBlbGluZSYpOwotICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90ZVNhbXBsZXImKTsKLSAgICB2
b2lkIGFkZE9iamVjdChSZW1vdGVTaGFkZXJNb2R1bGUmKTsKLSAgICB2b2lkIGFkZE9iamVjdChS
ZW1vdGVUZXh0dXJlJik7Ci0gICAgdm9pZCBhZGRPYmplY3QoUmVtb3RlVGV4dHVyZVZpZXcmKTsK
KyAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBSZW1vdGVBZGFwdGVyJik7Cisg
ICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUmVtb3RlQmluZEdyb3VwJik7Cisg
ICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUmVtb3RlQmluZEdyb3VwTGF5b3V0
Jik7CisgICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUmVtb3RlQnVmZmVyJik7
CisgICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUmVtb3RlQ29tbWFuZEJ1ZmZl
ciYpOworICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIsIFJlbW90ZUNvbW1hbmRF
bmNvZGVyJik7CisgICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUmVtb3RlQ29t
cHV0ZVBhc3NFbmNvZGVyJik7CisgICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwg
UmVtb3RlQ29tcHV0ZVBpcGVsaW5lJik7CisgICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRp
ZmllciwgUmVtb3RlRGV2aWNlJik7CisgICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmll
ciwgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlJik7CisgICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRl
bnRpZmllciwgUmVtb3RlUGlwZWxpbmVMYXlvdXQmKTsKKyAgICB2b2lkIGFkZE9iamVjdChXZWJH
UFVJZGVudGlmaWVyLCBSZW1vdGVRdWVyeVNldCYpOworICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQ
VUlkZW50aWZpZXIsIFJlbW90ZVF1ZXVlJik7CisgICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRl
bnRpZmllciwgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlciYpOworICAgIHZvaWQgYWRkT2JqZWN0
KFdlYkdQVUlkZW50aWZpZXIsIFJlbW90ZVJlbmRlckJ1bmRsZSYpOworICAgIHZvaWQgYWRkT2Jq
ZWN0KFdlYkdQVUlkZW50aWZpZXIsIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyJik7CisgICAgdm9p
ZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUmVtb3RlUmVuZGVyUGlwZWxpbmUmKTsKKyAg
ICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBSZW1vdGVTYW1wbGVyJik7CisgICAg
dm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUmVtb3RlU2hhZGVyTW9kdWxlJik7Cisg
ICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUmVtb3RlVGV4dHVyZSYpOworICAg
IHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIsIFJlbW90ZVRleHR1cmVWaWV3Jik7CiAK
LSAgICB2b2lkIHJlbW92ZU9iamVjdChSZW1vdGVBZGFwdGVyJik7Ci0gICAgdm9pZCByZW1vdmVP
YmplY3QoUmVtb3RlQmluZEdyb3VwJik7Ci0gICAgdm9pZCByZW1vdmVPYmplY3QoUmVtb3RlQmlu
ZEdyb3VwTGF5b3V0Jik7Ci0gICAgdm9pZCByZW1vdmVPYmplY3QoUmVtb3RlQnVmZmVyJik7Ci0g
ICAgdm9pZCByZW1vdmVPYmplY3QoUmVtb3RlQ29tbWFuZEJ1ZmZlciYpOwotICAgIHZvaWQgcmVt
b3ZlT2JqZWN0KFJlbW90ZUNvbW1hbmRFbmNvZGVyJik7Ci0gICAgdm9pZCByZW1vdmVPYmplY3Qo
UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyJik7Ci0gICAgdm9pZCByZW1vdmVPYmplY3QoUmVtb3Rl
Q29tcHV0ZVBpcGVsaW5lJik7Ci0gICAgdm9pZCByZW1vdmVPYmplY3QoUmVtb3RlRGV2aWNlJik7
Ci0gICAgdm9pZCByZW1vdmVPYmplY3QoUmVtb3RlRXh0ZXJuYWxUZXh0dXJlJik7Ci0gICAgdm9p
ZCByZW1vdmVPYmplY3QoUmVtb3RlR1BVJik7Ci0gICAgdm9pZCByZW1vdmVPYmplY3QoUmVtb3Rl
UGlwZWxpbmVMYXlvdXQmKTsKLSAgICB2b2lkIHJlbW92ZU9iamVjdChSZW1vdGVRdWVyeVNldCYp
OwotICAgIHZvaWQgcmVtb3ZlT2JqZWN0KFJlbW90ZVF1ZXVlJik7Ci0gICAgdm9pZCByZW1vdmVP
YmplY3QoUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlciYpOwotICAgIHZvaWQgcmVtb3ZlT2JqZWN0
KFJlbW90ZVJlbmRlckJ1bmRsZSYpOwotICAgIHZvaWQgcmVtb3ZlT2JqZWN0KFJlbW90ZVJlbmRl
clBhc3NFbmNvZGVyJik7Ci0gICAgdm9pZCByZW1vdmVPYmplY3QoUmVtb3RlUmVuZGVyUGlwZWxp
bmUmKTsKLSAgICB2b2lkIHJlbW92ZU9iamVjdChSZW1vdGVTYW1wbGVyJik7Ci0gICAgdm9pZCBy
ZW1vdmVPYmplY3QoUmVtb3RlU2hhZGVyTW9kdWxlJik7Ci0gICAgdm9pZCByZW1vdmVPYmplY3Qo
UmVtb3RlVGV4dHVyZSYpOwotICAgIHZvaWQgcmVtb3ZlT2JqZWN0KFJlbW90ZVRleHR1cmVWaWV3
Jik7CisgICAgdm9pZCByZW1vdmVPYmplY3QoV2ViR1BVSWRlbnRpZmllcik7CisKKyAgICBQQUw6
OldlYkdQVTo6QWRhcHRlciogY29udmVydEFkYXB0ZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlm
aWVyKSBmaW5hbDsKKyAgICBQQUw6OldlYkdQVTo6QmluZEdyb3VwKiBjb252ZXJ0QmluZEdyb3Vw
RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7CisgICAgUEFMOjpXZWJHUFU6OkJp
bmRHcm91cExheW91dCogY29udmVydEJpbmRHcm91cExheW91dEZyb21CYWNraW5nKFdlYkdQVUlk
ZW50aWZpZXIpIGZpbmFsOworICAgIFBBTDo6V2ViR1BVOjpCdWZmZXIqIGNvbnZlcnRCdWZmZXJG
cm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKKyAgICBQQUw6OldlYkdQVTo6Q29t
bWFuZEJ1ZmZlciogY29udmVydENvbW1hbmRCdWZmZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlm
aWVyKSBmaW5hbDsKKyAgICBQQUw6OldlYkdQVTo6Q29tbWFuZEVuY29kZXIqIGNvbnZlcnRDb21t
YW5kRW5jb2RlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOworICAgIFBBTDo6
V2ViR1BVOjpDb21wdXRlUGFzc0VuY29kZXIqIGNvbnZlcnRDb21wdXRlUGFzc0VuY29kZXJGcm9t
QmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKKyAgICBQQUw6OldlYkdQVTo6Q29tcHV0
ZVBpcGVsaW5lKiBjb252ZXJ0Q29tcHV0ZVBpcGVsaW5lRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRp
ZmllcikgZmluYWw7CisgICAgUEFMOjpXZWJHUFU6OkRldmljZSogY29udmVydERldmljZUZyb21C
YWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOworICAgIFBBTDo6V2ViR1BVOjpFeHRlcm5h
bFRleHR1cmUqIGNvbnZlcnRFeHRlcm5hbFRleHR1cmVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlm
aWVyKSBmaW5hbDsKKyAgICBQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQqIGNvbnZlcnRQaXBl
bGluZUxheW91dEZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOworICAgIFBBTDo6
V2ViR1BVOjpRdWVyeVNldCogY29udmVydFF1ZXJ5U2V0RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRp
ZmllcikgZmluYWw7CisgICAgUEFMOjpXZWJHUFU6OlF1ZXVlKiBjb252ZXJ0UXVldWVGcm9tQmFj
a2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKKyAgICBQQUw6OldlYkdQVTo6UmVuZGVyQnVu
ZGxlRW5jb2RlciogY29udmVydFJlbmRlckJ1bmRsZUVuY29kZXJGcm9tQmFja2luZyhXZWJHUFVJ
ZGVudGlmaWVyKSBmaW5hbDsKKyAgICBQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlKiBjb252ZXJ0
UmVuZGVyQnVuZGxlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7CisgICAgUEFM
OjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyKiBjb252ZXJ0UmVuZGVyUGFzc0VuY29kZXJGcm9t
QmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKKyAgICBQQUw6OldlYkdQVTo6UmVuZGVy
UGlwZWxpbmUqIGNvbnZlcnRSZW5kZXJQaXBlbGluZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZp
ZXIpIGZpbmFsOworICAgIFBBTDo6V2ViR1BVOjpTYW1wbGVyKiBjb252ZXJ0U2FtcGxlckZyb21C
YWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOworICAgIFBBTDo6V2ViR1BVOjpTaGFkZXJN
b2R1bGUqIGNvbnZlcnRTaGFkZXJNb2R1bGVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBm
aW5hbDsKKyAgICBQQUw6OldlYkdQVTo6VGV4dHVyZSogY29udmVydFRleHR1cmVGcm9tQmFja2lu
ZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKKyAgICBQQUw6OldlYkdQVTo6VGV4dHVyZVZpZXcq
IGNvbnZlcnRUZXh0dXJlVmlld0Zyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOwog
CiBwcml2YXRlOgorICAgIE9iamVjdEhlYXAoKTsKKwogICAgIHVzaW5nIE9iamVjdCA9IHN0ZDo6
dmFyaWFudDwKICAgICAgICAgc3RkOjptb25vc3RhdGUsCi0gICAgICAgIFJlZjxSZW1vdGVBZGFw
dGVyPiwKLSAgICAgICAgUmVmPFJlbW90ZUJpbmRHcm91cD4sCi0gICAgICAgIFJlZjxSZW1vdGVC
aW5kR3JvdXBMYXlvdXQ+LAotICAgICAgICBSZWY8UmVtb3RlQnVmZmVyPiwKLSAgICAgICAgUmVm
PFJlbW90ZUNvbW1hbmRCdWZmZXI+LAotICAgICAgICBSZWY8UmVtb3RlQ29tbWFuZEVuY29kZXI+
LAotICAgICAgICBSZWY8UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyPiwKLSAgICAgICAgUmVmPFJl
bW90ZUNvbXB1dGVQaXBlbGluZT4sCi0gICAgICAgIFJlZjxSZW1vdGVEZXZpY2U+LAotICAgICAg
ICBSZWY8UmVtb3RlRXh0ZXJuYWxUZXh0dXJlPiwKLSAgICAgICAgUmVmPFJlbW90ZUdQVT4sCi0g
ICAgICAgIFJlZjxSZW1vdGVQaXBlbGluZUxheW91dD4sCi0gICAgICAgIFJlZjxSZW1vdGVRdWVy
eVNldD4sCi0gICAgICAgIFJlZjxSZW1vdGVRdWV1ZT4sCi0gICAgICAgIFJlZjxSZW1vdGVSZW5k
ZXJCdW5kbGVFbmNvZGVyPiwKLSAgICAgICAgUmVmPFJlbW90ZVJlbmRlckJ1bmRsZT4sCi0gICAg
ICAgIFJlZjxSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcj4sCi0gICAgICAgIFJlZjxSZW1vdGVSZW5k
ZXJQaXBlbGluZT4sCi0gICAgICAgIFJlZjxSZW1vdGVTYW1wbGVyPiwKLSAgICAgICAgUmVmPFJl
bW90ZVNoYWRlck1vZHVsZT4sCi0gICAgICAgIFJlZjxSZW1vdGVUZXh0dXJlPiwKLSAgICAgICAg
UmVmPFJlbW90ZVRleHR1cmVWaWV3PgorICAgICAgICBJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VS
ZWNlaXZlUXVldWU8UmVtb3RlQWRhcHRlcj4sCisgICAgICAgIElQQzo6U2NvcGVkQWN0aXZlTWVz
c2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVCaW5kR3JvdXA+LAorICAgICAgICBJUEM6OlNjb3BlZEFj
dGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlQmluZEdyb3VwTGF5b3V0PiwKKyAgICAgICAg
SVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZUJ1ZmZlcj4sCisgICAg
ICAgIElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVDb21tYW5kQnVm
ZmVyPiwKKyAgICAgICAgSVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90
ZUNvbW1hbmRFbmNvZGVyPiwKKyAgICAgICAgSVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2
ZVF1ZXVlPFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcj4sCisgICAgICAgIElQQzo6U2NvcGVkQWN0
aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVDb21wdXRlUGlwZWxpbmU+LAorICAgICAgICBJ
UEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlRGV2aWNlPiwKKyAgICAg
ICAgSVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZUV4dGVybmFsVGV4
dHVyZT4sCisgICAgICAgIElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1v
dGVQaXBlbGluZUxheW91dD4sCisgICAgICAgIElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2Vp
dmVRdWV1ZTxSZW1vdGVRdWVyeVNldD4sCisgICAgICAgIElQQzo6U2NvcGVkQWN0aXZlTWVzc2Fn
ZVJlY2VpdmVRdWV1ZTxSZW1vdGVRdWV1ZT4sCisgICAgICAgIElQQzo6U2NvcGVkQWN0aXZlTWVz
c2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyPiwKKyAgICAgICAgSVBD
OjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZVJlbmRlckJ1bmRsZT4sCisg
ICAgICAgIElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVSZW5kZXJQ
YXNzRW5jb2Rlcj4sCisgICAgICAgIElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1
ZTxSZW1vdGVSZW5kZXJQaXBlbGluZT4sCisgICAgICAgIElQQzo6U2NvcGVkQWN0aXZlTWVzc2Fn
ZVJlY2VpdmVRdWV1ZTxSZW1vdGVTYW1wbGVyPiwKKyAgICAgICAgSVBDOjpTY29wZWRBY3RpdmVN
ZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZVNoYWRlck1vZHVsZT4sCisgICAgICAgIElQQzo6U2Nv
cGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVUZXh0dXJlPiwKKyAgICAgICAgSVBD
OjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZVRleHR1cmVWaWV3PgogICAg
ID47Ci0gICAgSGFzaE1hcDx2b2lkKiwgT2JqZWN0PiBtX29iamVjdHM7Ci0KLSAgICBPYmplY3RS
ZWdpc3RyeSBtX29iamVjdFJlZ2lzdHJ5OworICAgIEhhc2hNYXA8V2ViR1BVSWRlbnRpZmllciwg
T2JqZWN0PiBtX29iamVjdHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9XZWJH
UFVPYmplY3RSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1dlYkdQVU9iamVjdFJlZ2lzdHJ5LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYWIyN2ExYTVmYmU0ZGU0MGJiYmUyZDU2NWVkMGRjMzM1N2ZlMDVhOC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9iamVjdFJlZ2lzdHJ5LmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDM4MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIldlYkdQVU9iamVjdFJlZ2lzdHJ5LmgiCi0KLSNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCi0KLSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVS5oPgotI2luY2x1ZGUg
PHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQWRhcHRlci5oPgotI2luY2x1ZGUgPHBhbC9ncmFw
aGljcy9XZWJHUFUvV2ViR1BVQmluZEdyb3VwLmg+Ci0jaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dl
YkdQVS9XZWJHUFVCaW5kR3JvdXBMYXlvdXQuaD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2Vi
R1BVL1dlYkdQVUJ1ZmZlci5oPgotI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BV
Q29tbWFuZEJ1ZmZlci5oPgotI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29t
bWFuZEVuY29kZXIuaD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbXB1
dGVQYXNzRW5jb2Rlci5oPgotI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29t
cHV0ZVBpcGVsaW5lLmg+Ci0jaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVEZXZp
Y2UuaD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUV4dGVybmFsVGV4dHVy
ZS5oPgotI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUGlwZWxpbmVMYXlvdXQu
aD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVF1ZXJ5U2V0Lmg+Ci0jaW5j
bHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVRdWV1ZS5oPgotI2luY2x1ZGUgPHBhbC9n
cmFwaGljcy9XZWJHUFUvV2ViR1BVUmVuZGVyQnVuZGxlLmg+Ci0jaW5jbHVkZSA8cGFsL2dyYXBo
aWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJCdW5kbGVFbmNvZGVyLmg+Ci0jaW5jbHVkZSA8cGFsL2dy
YXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oPgotI2luY2x1ZGUgPHBhbC9n
cmFwaGljcy9XZWJHUFUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaD4KLSNpbmNsdWRlIDxwYWwvZ3Jh
cGhpY3MvV2ViR1BVL1dlYkdQVVNhbXBsZXIuaD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2Vi
R1BVL1dlYkdQVVNoYWRlck1vZHVsZS5oPgotI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUv
V2ViR1BVVGV4dHVyZS5oPgotI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVVGV4
dHVyZVZpZXcuaD4KLQotbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKLQotT2JqZWN0UmVnaXN0
cnk6Ok9iamVjdFJlZ2lzdHJ5KCkKLXsKLX0KLQotT2JqZWN0UmVnaXN0cnk6On5PYmplY3RSZWdp
c3RyeSgpCi17Ci19Ci0KLXZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpBZGFwdGVyJiBhZGFwdGVyKQotewotICAg
IGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBhZGFwdGVyKTsKLSAgICBB
U1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwotfQotCi12b2lkIE9iamVj
dFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBQQUw6Oldl
YkdQVTo6QmluZEdyb3VwJiBiaW5kR3JvdXApCi17Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVj
dHMuYWRkKGlkZW50aWZpZXIsIGJpbmRHcm91cCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQs
IHJlc3VsdC5pc05ld0VudHJ5KTsKLX0KLQotdm9pZCBPYmplY3RSZWdpc3RyeTo6YWRkT2JqZWN0
KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91
dCYgYmluZEdyb3VwTGF5b3V0KQotewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChp
ZGVudGlmaWVyLCBiaW5kR3JvdXBMYXlvdXQpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCBy
ZXN1bHQuaXNOZXdFbnRyeSk7Ci19Ci0KLXZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChX
ZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpCdWZmZXImIGJ1ZmZlcikK
LXsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgYnVmZmVyKTsK
LSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwotfQotCi12b2lk
IE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBQ
QUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZlciYgY29tbWFuZEJ1ZmZlcikKLXsKLSAgICBhdXRvIHJl
c3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgY29tbWFuZEJ1ZmZlcik7Ci0gICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKLX0KLQotdm9pZCBPYmplY3RS
ZWdpc3RyeTo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpXZWJH
UFU6OkNvbW1hbmRFbmNvZGVyJiBjb21tYW5kRW5jb2RlcikKLXsKLSAgICBhdXRvIHJlc3VsdCA9
IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgY29tbWFuZEVuY29kZXIpOwotICAgIEFTU0VSVF9V
TlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7Ci19Ci0KLXZvaWQgT2JqZWN0UmVnaXN0
cnk6OmFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpD
b21wdXRlUGFzc0VuY29kZXImIGNvbXB1dGVQYXNzRW5jb2RlcikKLXsKLSAgICBhdXRvIHJlc3Vs
dCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgY29tcHV0ZVBhc3NFbmNvZGVyKTsKLSAgICBB
U1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwotfQotCi12b2lkIE9iamVj
dFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBQQUw6Oldl
YkdQVTo6Q29tcHV0ZVBpcGVsaW5lJiBjb21wdXRlUGlwZWxpbmUpCi17Ci0gICAgYXV0byByZXN1
bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIGNvbXB1dGVQaXBlbGluZSk7Ci0gICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKLX0KLQotdm9pZCBPYmplY3RS
ZWdpc3RyeTo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpXZWJH
UFU6OkRldmljZSYgZGV2aWNlKQotewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChp
ZGVudGlmaWVyLCBkZXZpY2UpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNO
ZXdFbnRyeSk7Ci19Ci0KLXZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1cmUmIGV4dGVybmFs
VGV4dHVyZSkKLXsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwg
ZXh0ZXJuYWxUZXh0dXJlKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3
RW50cnkpOwotfQotCi12b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6R1BVJiBncHUpCi17Ci0gICAgYXV0byByZXN1
bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIGdwdSk7Ci0gICAgQVNTRVJUX1VOVVNFRChy
ZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKLX0KLQotdm9pZCBPYmplY3RSZWdpc3RyeTo6YWRk
T2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OlBpcGVsaW5l
TGF5b3V0JiBwaXBlbGluZUxheW91dCkKLXsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5h
ZGQoaWRlbnRpZmllciwgcGlwZWxpbmVMYXlvdXQpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0
LCByZXN1bHQuaXNOZXdFbnRyeSk7Ci19Ci0KLXZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVj
dChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpRdWVyeVNldCYgcXVl
cnlTZXQpCi17Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIHF1
ZXJ5U2V0KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwot
fQotCi12b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBQQUw6OldlYkdQVTo6UXVldWUmIHF1ZXVlKQotewotICAgIGF1dG8gcmVzdWx0ID0g
bV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBxdWV1ZSk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKLX0KLQotdm9pZCBPYmplY3RSZWdpc3RyeTo6YWRkT2Jq
ZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRs
ZUVuY29kZXImIHJlbmRlckJ1bmRsZUVuY29kZXIpCi17Ci0gICAgYXV0byByZXN1bHQgPSBtX29i
amVjdHMuYWRkKGlkZW50aWZpZXIsIHJlbmRlckJ1bmRsZUVuY29kZXIpOwotICAgIEFTU0VSVF9V
TlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7Ci19Ci0KLXZvaWQgT2JqZWN0UmVnaXN0
cnk6OmFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpS
ZW5kZXJCdW5kbGUmIHJlbmRlckJ1bmRsZSkKLXsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0
cy5hZGQoaWRlbnRpZmllciwgcmVuZGVyQnVuZGxlKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3Vs
dCwgcmVzdWx0LmlzTmV3RW50cnkpOwotfQotCi12b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRPYmpl
Y3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0Vu
Y29kZXImIHJlbmRlclBhc3NFbmNvZGVyKQotewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3Rz
LmFkZChpZGVudGlmaWVyLCByZW5kZXJQYXNzRW5jb2Rlcik7Ci0gICAgQVNTRVJUX1VOVVNFRChy
ZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKLX0KLQotdm9pZCBPYmplY3RSZWdpc3RyeTo6YWRk
T2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OlJlbmRlclBp
cGVsaW5lJiByZW5kZXJQaXBlbGluZSkKLXsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5h
ZGQoaWRlbnRpZmllciwgcmVuZGVyUGlwZWxpbmUpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0
LCByZXN1bHQuaXNOZXdFbnRyeSk7Ci19Ci0KLXZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVj
dChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpTYW1wbGVyJiBzYW1w
bGVyKQotewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBzYW1w
bGVyKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwotfQot
Ci12b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyLCBQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlJiBzaGFkZXJNb2R1bGUpCi17Ci0gICAgYXV0
byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIHNoYWRlck1vZHVsZSk7Ci0gICAg
QVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKLX0KLQotdm9pZCBPYmpl
Y3RSZWdpc3RyeTo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpX
ZWJHUFU6OlRleHR1cmUmIHRleHR1cmUpCi17Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMu
YWRkKGlkZW50aWZpZXIsIHRleHR1cmUpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1
bHQuaXNOZXdFbnRyeSk7Ci19Ci0KLXZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChXZWJH
UFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlldyYgdGV4dHVy
ZVZpZXcpCi17Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIHRl
eHR1cmVWaWV3KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkp
OwotfQotCi12b2lkIE9iamVjdFJlZ2lzdHJ5OjpyZW1vdmVPYmplY3QoV2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyKQotewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZShpZGVu
dGlmaWVyKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKLX0KLQotUEFMOjpX
ZWJHUFU6OkFkYXB0ZXIqIE9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0QWRhcHRlckZyb21CYWNraW5n
KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKLXsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9v
YmplY3RzLmZpbmQoaWRlbnRpZmllcik7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5l
bmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBB
TDo6V2ViR1BVOjpBZGFwdGVyPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgcmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6
V2ViR1BVOjpBZGFwdGVyPj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKLX0KLQotUEFMOjpXZWJH
UFU6OkJpbmRHcm91cCogT2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRCaW5kR3JvdXBGcm9tQmFja2lu
ZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCi17Ci0gICAgYXV0byBpdGVyYXRvciA9IG1f
b2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMu
ZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQ
QUw6OldlYkdQVTo6QmluZEdyb3VwPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgcmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBB
TDo6V2ViR1BVOjpCaW5kR3JvdXA+PihpdGVyYXRvci0+dmFsdWUpLmdldCgpOwotfQotCi1QQUw6
OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0KiBPYmplY3RSZWdpc3RyeTo6Y29udmVydEJpbmRHcm91
cExheW91dEZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKLXsKLSAgICBh
dXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7Ci0gICAgaWYgKGl0ZXJh
dG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXQ+PihpdGVyYXRvci0+
dmFsdWUpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0
ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dD4+KGl0ZXJh
dG9yLT52YWx1ZSkuZ2V0KCk7Ci19Ci0KLVBBTDo6V2ViR1BVOjpCdWZmZXIqIE9iamVjdFJlZ2lz
dHJ5Ojpjb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
KQotewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAg
ICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkJ1ZmZlcj4+KGl0ZXJhdG9y
LT52YWx1ZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiAmc3RkOjpnZXQ8
c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6QnVmZmVyPj4oaXRlcmF0b3ItPnZh
bHVlKS5nZXQoKTsKLX0KLQotUEFMOjpXZWJHUFU6OkNvbW1hbmRCdWZmZXIqIE9iamVjdFJlZ2lz
dHJ5Ojpjb252ZXJ0Q29tbWFuZEJ1ZmZlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRl
bnRpZmllcikKLXsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmll
cik7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpDb21tYW5kQnVm
ZmVyPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0
dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpDb21tYW5k
QnVmZmVyPj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKLX0KLQotUEFMOjpXZWJHUFU6OkNvbW1h
bmRFbmNvZGVyKiBPYmplY3RSZWdpc3RyeTo6Y29udmVydENvbW1hbmRFbmNvZGVyRnJvbUJhY2tp
bmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQotewotICAgIGF1dG8gaXRlcmF0b3IgPSBt
X29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3Rz
LmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8
UEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFw
cGVyPFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2Rlcj4+KGl0ZXJhdG9yLT52YWx1ZSkuZ2V0KCk7
Ci19Ci0KLVBBTDo6V2ViR1BVOjpDb21wdXRlUGFzc0VuY29kZXIqIE9iamVjdFJlZ2lzdHJ5Ojpj
b252ZXJ0Q29tcHV0ZVBhc3NFbmNvZGVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVu
dGlmaWVyKQotewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVy
KTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNz
RW5jb2Rlcj4+KGl0ZXJhdG9yLT52YWx1ZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IHJldHVybiAmc3RkOjpnZXQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6Q29t
cHV0ZVBhc3NFbmNvZGVyPj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKLX0KLQotUEFMOjpXZWJH
UFU6OkNvbXB1dGVQaXBlbGluZSogT2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRDb21wdXRlUGlwZWxp
bmVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCi17Ci0gICAgYXV0byBp
dGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9
PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpyZWZlcmVu
Y2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lPj4oaXRlcmF0b3ItPnZhbHVl
KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmU+PihpdGVyYXRvci0+
dmFsdWUpLmdldCgpOwotfQotCi1QQUw6OldlYkdQVTo6RGV2aWNlKiBPYmplY3RSZWdpc3RyeTo6
Y29udmVydERldmljZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKLXsK
LSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7Ci0gICAgaWYg
KGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxz
dGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpEZXZpY2U+PihpdGVyYXRvci0+dmFs
dWUpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0ZDo6
cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkRldmljZT4+KGl0ZXJhdG9yLT52YWx1ZSku
Z2V0KCk7Ci19Ci0KLVBBTDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1cmUqIE9iamVjdFJlZ2lzdHJ5
Ojpjb252ZXJ0RXh0ZXJuYWxUZXh0dXJlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVu
dGlmaWVyKQotewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVy
KTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4
dHVyZT4+KGl0ZXJhdG9yLT52YWx1ZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJl
dHVybiAmc3RkOjpnZXQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6RXh0ZXJu
YWxUZXh0dXJlPj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKLX0KLQotUEFMOjpXZWJHUFU6OkdQ
VSogT2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRHUFVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVy
IGlkZW50aWZpZXIpCi17Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50
aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6R1BVPj4o
aXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuICZz
dGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpHUFU+PihpdGVyYXRv
ci0+dmFsdWUpLmdldCgpOwotfQotCi1QQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQqIE9iamVj
dFJlZ2lzdHJ5Ojpjb252ZXJ0UGlwZWxpbmVMYXlvdXRGcm9tQmFja2luZyhXZWJHUFVJZGVudGlm
aWVyIGlkZW50aWZpZXIpCi17Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlk
ZW50aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UGlw
ZWxpbmVMYXlvdXQ+PihpdGVyYXRvci0+dmFsdWUpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6
OlBpcGVsaW5lTGF5b3V0Pj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKLX0KLQotUEFMOjpXZWJH
UFU6OlF1ZXJ5U2V0KiBPYmplY3RSZWdpc3RyeTo6Y29udmVydFF1ZXJ5U2V0RnJvbUJhY2tpbmco
V2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQotewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29i
amVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVu
ZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFM
OjpXZWJHUFU6OlF1ZXJ5U2V0Pj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgcmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6
V2ViR1BVOjpRdWVyeVNldD4+KGl0ZXJhdG9yLT52YWx1ZSkuZ2V0KCk7Ci19Ci0KLVBBTDo6V2Vi
R1BVOjpRdWV1ZSogT2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRRdWV1ZUZyb21CYWNraW5nKFdlYkdQ
VUlkZW50aWZpZXIgaWRlbnRpZmllcikKLXsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3Rz
LmZpbmQoaWRlbnRpZmllcik7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8
fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2Vi
R1BVOjpRdWV1ZT4+KGl0ZXJhdG9yLT52YWx1ZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIHJldHVybiAmc3RkOjpnZXQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6
UXVldWU+PihpdGVyYXRvci0+dmFsdWUpLmdldCgpOwotfQotCi1QQUw6OldlYkdQVTo6UmVuZGVy
QnVuZGxlRW5jb2RlciogT2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRSZW5kZXJCdW5kbGVFbmNvZGVy
RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQotewotICAgIGF1dG8gaXRl
cmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0g
bV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6cmVmZXJlbmNl
X3dyYXBwZXI8UEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXI+PihpdGVyYXRvci0+dmFs
dWUpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0ZDo6
cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXI+PihpdGVy
YXRvci0+dmFsdWUpLmdldCgpOwotfQotCi1QQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlKiBPYmpl
Y3RSZWdpc3RyeTo6Y29udmVydFJlbmRlckJ1bmRsZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZp
ZXIgaWRlbnRpZmllcikKLXsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRl
bnRpZmllcik7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpSZW5k
ZXJCdW5kbGU+PihpdGVyYXRvci0+dmFsdWUpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICByZXR1cm4gJnN0ZDo6Z2V0PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlJl
bmRlckJ1bmRsZT4+KGl0ZXJhdG9yLT52YWx1ZSkuZ2V0KCk7Ci19Ci0KLVBBTDo6V2ViR1BVOjpS
ZW5kZXJQYXNzRW5jb2RlciogT2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRSZW5kZXJQYXNzRW5jb2Rl
ckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKLXsKLSAgICBhdXRvIGl0
ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7Ci0gICAgaWYgKGl0ZXJhdG9yID09
IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5j
ZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRW5jb2Rlcj4+KGl0ZXJhdG9yLT52YWx1
ZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiAmc3RkOjpnZXQ8c3RkOjpy
ZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXI+PihpdGVyYXRv
ci0+dmFsdWUpLmdldCgpOwotfQotCi1QQUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmUqIE9iamVj
dFJlZ2lzdHJ5Ojpjb252ZXJ0UmVuZGVyUGlwZWxpbmVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlm
aWVyIGlkZW50aWZpZXIpCi17Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlk
ZW50aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UmVu
ZGVyUGlwZWxpbmU+PihpdGVyYXRvci0+dmFsdWUpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6
OlJlbmRlclBpcGVsaW5lPj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKLX0KLQotUEFMOjpXZWJH
UFU6OlNhbXBsZXIqIE9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0U2FtcGxlckZyb21CYWNraW5nKFdl
YkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKLXsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmpl
Y3RzLmZpbmQoaWRlbnRpZmllcik7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQo
KSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6
V2ViR1BVOjpTYW1wbGVyPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgcmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2Vi
R1BVOjpTYW1wbGVyPj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKLX0KLQotUEFMOjpXZWJHUFU6
OlNoYWRlck1vZHVsZSogT2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRTaGFkZXJNb2R1bGVGcm9tQmFj
a2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCi17Ci0gICAgYXV0byBpdGVyYXRvciA9
IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVj
dHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBl
cjxQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFw
cGVyPFBBTDo6V2ViR1BVOjpTaGFkZXJNb2R1bGU+PihpdGVyYXRvci0+dmFsdWUpLmdldCgpOwot
fQotCi1QQUw6OldlYkdQVTo6VGV4dHVyZSogT2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRUZXh0dXJl
RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQotewotICAgIGF1dG8gaXRl
cmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0g
bV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6cmVmZXJlbmNl
X3dyYXBwZXI8UEFMOjpXZWJHUFU6OlRleHR1cmU+PihpdGVyYXRvci0+dmFsdWUpKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0ZDo6cmVmZXJlbmNlX3dy
YXBwZXI8UEFMOjpXZWJHUFU6OlRleHR1cmU+PihpdGVyYXRvci0+dmFsdWUpLmdldCgpOwotfQot
Ci1QQUw6OldlYkdQVTo6VGV4dHVyZVZpZXcqIE9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0VGV4dHVy
ZVZpZXdGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCi17Ci0gICAgYXV0
byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOwotICAgIGlmIChpdGVyYXRv
ciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpyZWZl
cmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6VGV4dHVyZVZpZXc+PihpdGVyYXRvci0+dmFsdWUp
KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0ZDo6cmVm
ZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3Pj4oaXRlcmF0b3ItPnZhbHVl
KS5nZXQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKLQotI2VuZGlmIC8v
IEhBVkUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9iamVjdFJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9iamVjdFJlZ2lzdHJ5LmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzMzc3ODU0N2EzYTRiYTM1NWE3NTIzZDJlY2Q2MjA2NTM3
ZTEwOTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVPYmplY3RSZWdpc3Ry
eS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQotI2luY2x1ZGUgIldlYkdQVUNvbnZl
cnRGcm9tQmFja2luZ0NvbnRleHQuaCIKLSNpbmNsdWRlICJXZWJHUFVJZGVudGlmaWVyLmgiCi0j
aW5jbHVkZSA8ZnVuY3Rpb25hbD4KLSNpbmNsdWRlIDx2YXJpYW50PgotI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+Ci0KLW5hbWVzcGFjZSBQQUw6OldlYkdQVSB7Ci1jbGFzcyBBZGFwdGVyOwotY2xh
c3MgQmluZEdyb3VwOwotY2xhc3MgQmluZEdyb3VwTGF5b3V0OwotY2xhc3MgQnVmZmVyOwotY2xh
c3MgQ29tbWFuZEJ1ZmZlcjsKLWNsYXNzIENvbW1hbmRFbmNvZGVyOwotY2xhc3MgQ29tcHV0ZVBh
c3NFbmNvZGVyOwotY2xhc3MgQ29tcHV0ZVBpcGVsaW5lOwotY2xhc3MgRGV2aWNlOwotY2xhc3Mg
RXh0ZXJuYWxUZXh0dXJlOwotY2xhc3MgR1BVOwotY2xhc3MgUGlwZWxpbmVMYXlvdXQ7Ci1jbGFz
cyBRdWVyeVNldDsKLWNsYXNzIFF1ZXVlOwotY2xhc3MgUmVuZGVyQnVuZGxlRW5jb2RlcjsKLWNs
YXNzIFJlbmRlckJ1bmRsZTsKLWNsYXNzIFJlbmRlclBhc3NFbmNvZGVyOwotY2xhc3MgUmVuZGVy
UGlwZWxpbmU7Ci1jbGFzcyBTYW1wbGVyOwotY2xhc3MgU2hhZGVyTW9kdWxlOwotY2xhc3MgVGV4
dHVyZTsKLWNsYXNzIFRleHR1cmVWaWV3OwotfQotCi1uYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUg
ewotCi1jbGFzcyBPYmplY3RSZWdpc3RyeSBmaW5hbCA6IHB1YmxpYyBXZWJHUFU6OkNvbnZlcnRG
cm9tQmFja2luZ0NvbnRleHQgewotcHVibGljOgotICAgIE9iamVjdFJlZ2lzdHJ5KCk7Ci0gICAg
fk9iamVjdFJlZ2lzdHJ5KCk7Ci0KLSAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVy
LCBQQUw6OldlYkdQVTo6QWRhcHRlciYpOwotICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlkZW50
aWZpZXIsIFBBTDo6V2ViR1BVOjpCaW5kR3JvdXAmKTsKLSAgICB2b2lkIGFkZE9iamVjdChXZWJH
UFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0Jik7Ci0gICAgdm9pZCBh
ZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OkJ1ZmZlciYpOwotICAgIHZv
aWQgYWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpDb21tYW5kQnVmZmVy
Jik7Ci0gICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OkNv
bW1hbmRFbmNvZGVyJik7Ci0gICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUEFM
OjpXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2RlciYpOwotICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQ
VUlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmUmKTsKLSAgICB2b2lkIGFk
ZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6RGV2aWNlJik7Ci0gICAgdm9p
ZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVy
ZSYpOwotICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpH
UFUmKTsKLSAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6
UGlwZWxpbmVMYXlvdXQmKTsKLSAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQ
QUw6OldlYkdQVTo6UXVlcnlTZXQmKTsKLSAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlm
aWVyLCBQQUw6OldlYkdQVTo6UXVldWUmKTsKLSAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVu
dGlmaWVyLCBQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2RlciYpOwotICAgIHZvaWQgYWRk
T2JqZWN0KFdlYkdQVUlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGUmKTsKLSAg
ICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6UmVuZGVyUGFz
c0VuY29kZXImKTsKLSAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6Oldl
YkdQVTo6UmVuZGVyUGlwZWxpbmUmKTsKLSAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlm
aWVyLCBQQUw6OldlYkdQVTo6U2FtcGxlciYpOwotICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlk
ZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpTaGFkZXJNb2R1bGUmKTsKLSAgICB2b2lkIGFkZE9iamVj
dChXZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6VGV4dHVyZSYpOwotICAgIHZvaWQgYWRk
T2JqZWN0KFdlYkdQVUlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlldyYpOwotCi0g
ICAgdm9pZCByZW1vdmVPYmplY3QoV2ViR1BVSWRlbnRpZmllcik7Ci0KLSAgICBQQUw6OldlYkdQ
VTo6QWRhcHRlciogY29udmVydEFkYXB0ZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBm
aW5hbDsKLSAgICBQQUw6OldlYkdQVTo6QmluZEdyb3VwKiBjb252ZXJ0QmluZEdyb3VwRnJvbUJh
Y2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7Ci0gICAgUEFMOjpXZWJHUFU6OkJpbmRHcm91
cExheW91dCogY29udmVydEJpbmRHcm91cExheW91dEZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZp
ZXIpIGZpbmFsOwotICAgIFBBTDo6V2ViR1BVOjpCdWZmZXIqIGNvbnZlcnRCdWZmZXJGcm9tQmFj
a2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKLSAgICBQQUw6OldlYkdQVTo6Q29tbWFuZEJ1
ZmZlciogY29udmVydENvbW1hbmRCdWZmZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBm
aW5hbDsKLSAgICBQQUw6OldlYkdQVTo6Q29tbWFuZEVuY29kZXIqIGNvbnZlcnRDb21tYW5kRW5j
b2RlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOwotICAgIFBBTDo6V2ViR1BV
OjpDb21wdXRlUGFzc0VuY29kZXIqIGNvbnZlcnRDb21wdXRlUGFzc0VuY29kZXJGcm9tQmFja2lu
ZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKLSAgICBQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVs
aW5lKiBjb252ZXJ0Q29tcHV0ZVBpcGVsaW5lRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikg
ZmluYWw7Ci0gICAgUEFMOjpXZWJHUFU6OkRldmljZSogY29udmVydERldmljZUZyb21CYWNraW5n
KFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOwotICAgIFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1
cmUqIGNvbnZlcnRFeHRlcm5hbFRleHR1cmVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBm
aW5hbDsKLSAgICBQQUw6OldlYkdQVTo6R1BVKiBjb252ZXJ0R1BVRnJvbUJhY2tpbmcoV2ViR1BV
SWRlbnRpZmllcikgZmluYWw7Ci0gICAgUEFMOjpXZWJHUFU6OlBpcGVsaW5lTGF5b3V0KiBjb252
ZXJ0UGlwZWxpbmVMYXlvdXRGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKLSAg
ICBQQUw6OldlYkdQVTo6UXVlcnlTZXQqIGNvbnZlcnRRdWVyeVNldEZyb21CYWNraW5nKFdlYkdQ
VUlkZW50aWZpZXIpIGZpbmFsOwotICAgIFBBTDo6V2ViR1BVOjpRdWV1ZSogY29udmVydFF1ZXVl
RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7Ci0gICAgUEFMOjpXZWJHUFU6OlJl
bmRlckJ1bmRsZUVuY29kZXIqIGNvbnZlcnRSZW5kZXJCdW5kbGVFbmNvZGVyRnJvbUJhY2tpbmco
V2ViR1BVSWRlbnRpZmllcikgZmluYWw7Ci0gICAgUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZSog
Y29udmVydFJlbmRlckJ1bmRsZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOwot
ICAgIFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRW5jb2RlciogY29udmVydFJlbmRlclBhc3NFbmNv
ZGVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7Ci0gICAgUEFMOjpXZWJHUFU6
OlJlbmRlclBpcGVsaW5lKiBjb252ZXJ0UmVuZGVyUGlwZWxpbmVGcm9tQmFja2luZyhXZWJHUFVJ
ZGVudGlmaWVyKSBmaW5hbDsKLSAgICBQQUw6OldlYkdQVTo6U2FtcGxlciogY29udmVydFNhbXBs
ZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKLSAgICBQQUw6OldlYkdQVTo6
U2hhZGVyTW9kdWxlKiBjb252ZXJ0U2hhZGVyTW9kdWxlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRp
ZmllcikgZmluYWw7Ci0gICAgUEFMOjpXZWJHUFU6OlRleHR1cmUqIGNvbnZlcnRUZXh0dXJlRnJv
bUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7Ci0gICAgUEFMOjpXZWJHUFU6OlRleHR1
cmVWaWV3KiBjb252ZXJ0VGV4dHVyZVZpZXdGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBm
aW5hbDsKLQotcHJpdmF0ZToKLSAgICB1c2luZyBPYmplY3QgPSBzdGQ6OnZhcmlhbnQ8Ci0gICAg
ICAgIHN0ZDo6bW9ub3N0YXRlLAotICAgICAgICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6
V2ViR1BVOjpBZGFwdGVyPiwKLSAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6Oldl
YkdQVTo6QmluZEdyb3VwPiwKLSAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6Oldl
YkdQVTo6QmluZEdyb3VwTGF5b3V0PiwKLSAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQ
QUw6OldlYkdQVTo6QnVmZmVyPiwKLSAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6
OldlYkdQVTo6Q29tbWFuZEJ1ZmZlcj4sCi0gICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8
UEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyPiwKLSAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3Jh
cHBlcjxQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyPiwKLSAgICAgICAgc3RkOjpyZWZl
cmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lPiwKLSAgICAgICAgc3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6RGV2aWNlPiwKLSAgICAgICAgc3RkOjpy
ZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlPiwKLSAgICAgICAg
c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6R1BVPiwKLSAgICAgICAgc3RkOjpy
ZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQ+LAotICAgICAgICBz
dGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpRdWVyeVNldD4sCi0gICAgICAgIHN0
ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlF1ZXVlPiwKLSAgICAgICAgc3RkOjpy
ZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2Rlcj4sCi0gICAg
ICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZT4sCi0g
ICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNv
ZGVyPiwKLSAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UmVuZGVy
UGlwZWxpbmU+LAotICAgICAgICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpT
YW1wbGVyPiwKLSAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6U2hh
ZGVyTW9kdWxlPiwKLSAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6
VGV4dHVyZT4sCi0gICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlRl
eHR1cmVWaWV3PgotICAgID47Ci0gICAgSGFzaE1hcDxXZWJHUFVJZGVudGlmaWVyLCBPYmplY3Q+
IG1fb2JqZWN0czsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlclByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyUHJveHkuY3Bw
CmluZGV4IGM5MmQyMTIxZTZmMjlhN2FkYzA0MTA0YWU3NjY2OTE1MzlmZjRmMWYuLmE1ZjRlNTEz
NWZmNzAwMTliZjc2Mjg1MDU2ZmMxNDRmYzkzZjBlNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3Zp
ZGVyUHJveHkuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1S
ZWY8UmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlclByb3h5PiBSZW1vdGVBdWRpb1NvdXJjZVByb3Zp
ZGVyUHJveHk6OmNyZWF0ZShXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQyYgbG9jYWxQcm92aWRlcikKK1JlZjxSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyUHJv
eHk+IFJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJQcm94eTo6Y3JlYXRlKFdlYkNvcmU6Ok1lZGlh
UGxheWVySWRlbnRpZmllciBpZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5l
Y3Rpb24sIFdlYkNvcmU6OkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDJiBsb2NhbFByb3ZpZGVy
KQogewogICAgIGF1dG8gcmVtb3RlUHJvdmlkZXIgPSBhZG9wdFJlZigqbmV3IFJlbW90ZUF1ZGlv
U291cmNlUHJvdmlkZXJQcm94eShpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbm5lY3Rpb24pKSk7CiAK
QEAgLTU1LDkgKzU1LDkgQEAgUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlclByb3h5OjpSZW1vdGVB
dWRpb1NvdXJjZVByb3ZpZGVyUHJveHkoV2ViQ29yZTo6TWVkaWFQbGEKIAogUmVtb3RlQXVkaW9T
b3VyY2VQcm92aWRlclByb3h5Ojp+UmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlclByb3h5KCkgPSBk
ZWZhdWx0OwogCi1VbmlxdWVSZWY8Q0FSaW5nQnVmZmVyPiBSZW1vdGVBdWRpb1NvdXJjZVByb3Zp
ZGVyUHJveHk6OmNyZWF0ZVJpbmdCdWZmZXIoKQorVW5pcXVlUmVmPFdlYkNvcmU6OkNBUmluZ0J1
ZmZlcj4gUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlclByb3h5OjpjcmVhdGVSaW5nQnVmZmVyKCkK
IHsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxDQVJpbmdCdWZmZXI+KG1ha2VVbmlxdWVSZWY8
U2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U+KFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0o
U2hhcmVkTWVtb3J5KiBtZW1vcnksIGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZm9y
bWF0LCBzaXplX3QgZnJhbWVDb3VudCkgbXV0YWJsZSB7CisgICAgcmV0dXJuIG1ha2VVbmlxdWVS
ZWY8V2ViQ29yZTo6Q0FSaW5nQnVmZmVyPihtYWtlVW5pcXVlUmVmPFNoYXJlZFJpbmdCdWZmZXJT
dG9yYWdlPihbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKFNoYXJlZE1lbW9yeSogbWVt
b3J5LCBjb25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGZvcm1hdCwgc2l6
ZV90IGZyYW1lQ291bnQpIG11dGFibGUgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5zdG9yYWdl
Q2hhbmdlZChtZW1vcnksIGZvcm1hdCwgZnJhbWVDb3VudCk7CiAgICAgfSkpOwogfQpAQCAtNjcs
NyArNjcsNyBAQCB2b2lkIFJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJQcm94eTo6bmV3QXVkaW9T
YW1wbGVzKHVpbnQ2NF90IHN0YXJ0RnJhbWUsIHVpbnQ2NAogICAgIG1fY29ubmVjdGlvbi0+c2Vu
ZChNZXNzYWdlczo6UmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXI6OkF1ZGlvU2FtcGxl
c0F2YWlsYWJsZSB7IG1faWRlbnRpZmllciwgc3RhcnRGcmFtZSwgbnVtYmVyT2ZGcmFtZXMgfSwg
MCk7CiB9CiAKLXZvaWQgUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlclByb3h5OjpzdG9yYWdlQ2hh
bmdlZChTaGFyZWRNZW1vcnkqIG1lbW9yeSwgY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9u
JiBmb3JtYXQsIHNpemVfdCBmcmFtZUNvdW50KQordm9pZCBSZW1vdGVBdWRpb1NvdXJjZVByb3Zp
ZGVyUHJveHk6OnN0b3JhZ2VDaGFuZ2VkKFNoYXJlZE1lbW9yeSogbWVtb3J5LCBjb25zdCBXZWJD
b3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGZvcm1hdCwgc2l6ZV90IGZyYW1lQ291bnQp
CiB7CiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwogICAgIGlmIChtZW1vcnkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TY29wZWRBY3RpdmVNZXNzYWdl
UmVjZWl2ZVF1ZXVlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TY29wZWRBY3RpdmVN
ZXNzYWdlUmVjZWl2ZVF1ZXVlLmgKaW5kZXggZDY1NTBhNGNhNTgzNzMwZWQ5ZjY0OWYwZDJhYWU0
MTY5OWYxNjU4My4uODFiMDU5NTg4MTNiYzUzMDVmZGYzYzI3MDI1MTJkZTc3YTQyNjM5YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2NvcGVkQWN0aXZlTWVzc2FnZVJl
Y2VpdmVRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1Njb3BlZEFjdGl2
ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSA8bWVt
b3J5PgogI2luY2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KICNp
bmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29u
dGV4dC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbnZlcnRGcm9tQmFj
a2luZ0NvbnRleHQuaAppbmRleCBhOTQ2OGY1MjdjNGMxZDExMzJhMGQ4NDNlMmQ0ZmYxMjZiYWZi
NmY5Li45OTJmMjdkYTBlNGJhNTE1Y2ZiZmQ5ODA2Njk0NzcwZDNjOTg4NDE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29u
dGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb252ZXJ0RnJv
bUJhY2tpbmdDb250ZXh0LmgKQEAgLTI3NCw3ICsyNzQsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lKiBjb252ZXJ0Q29tcHV0ZVBpcGVsaW5lRnJv
bUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwgUEFMOjpXZWJHUFU6
OkRldmljZSogY29udmVydERldmljZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpID0gMDsK
ICAgICB2aXJ0dWFsIFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1cmUqIGNvbnZlcnRFeHRlcm5h
bFRleHR1cmVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSA9IDA7Ci0gICAgdmlydHVhbCBQ
QUw6OldlYkdQVTo6R1BVKiBjb252ZXJ0R1BVRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikg
PSAwOwogICAgIHZpcnR1YWwgUEFMOjpXZWJHUFU6OlBpcGVsaW5lTGF5b3V0KiBjb252ZXJ0UGlw
ZWxpbmVMYXlvdXRGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSA9IDA7CiAgICAgdmlydHVh
bCBQQUw6OldlYkdQVTo6UXVlcnlTZXQqIGNvbnZlcnRRdWVyeVNldEZyb21CYWNraW5nKFdlYkdQ
VUlkZW50aWZpZXIpID0gMDsKICAgICB2aXJ0dWFsIFBBTDo6V2ViR1BVOjpRdWV1ZSogY29udmVy
dFF1ZXVlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXgg
ZGMyZGJkNTI2ZDViOGFhNGU5MTE5MDFiNzIwNDY3ZjBlMjNkMzI5NS4uZTEzMzczOGQyMzhiOTBi
NWM1ZDZkZTEwMDFlMjM0ZDRiMmE0NTk5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC01Myw3ICs1Myw2IEBA
IEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNoYWRlck1vZHVsZS5jcHAKIEdQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmUuY3BwCiBHUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlVmlldy5jcHAKIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1dlYkdQVU9iamVjdEhlYXAuY3BwCi1HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9XZWJH
UFVPYmplY3RSZWdpc3RyeS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9IYXJkd2Fy
ZUxpc3RlbmVyUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblBy
b3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXIu
Y3BwCkBAIC04NTgsNiArODU3LDcgQEAgUmVtb3RlQ29tcHV0ZVBpcGVsaW5lTWVzc2FnZVJlY2Vp
dmVyLmNwcAogUmVtb3RlRGV2aWNlTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlRXh0ZXJuYWxU
ZXh0dXJlTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlR1BVTWVzc2FnZVJlY2VpdmVyLmNwcAor
UmVtb3RlR1BVUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVQaXBlbGluZUxheW91dE1l
c3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZVF1ZXJ5U2V0TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVt
b3RlUXVldWVNZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2NTJjMmJlM2I4YmYwZDZhY2ZkZTc4ZWIwYzkw
MTU1MGI1OWFkMTRmLi44MjY2NTI1MzdkMGMzMjdmNjkxY2U5ZmMxNGQxNzUwZGJhNTU0Mzk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTI5MTEsMTMgKzI5MTEsMTEgQEAKIAkJMUM4RTJBMzIxMjc3ODUyNDAwQkM3QkQwIC8qIFdlYklu
c3BlY3Rvck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYklu
c3BlY3Rvck1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3Bl
Y3Rvck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTFD
OEUyREFEMTI3OEM1QjIwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JVSU1hYy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkluc3BlY3RvclVJTWFjLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzk4QzAxRDI3NDQ2QTAzMDAyQ0NCNzggLyogUmVt
b3RlR1BVLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdQVS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTFDOThDMDFFMjc0NDZBMDMwMDJDQ0I3OCAvKiBXZWJHUFVPYmpl
Y3RSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVPYmplY3RSZWdpc3RyeS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzk4QzAxRjI3NDQ2QTAzMDAyQ0NCNzggLyogUmVt
b3RlUXVlcnlTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlUXVlcnlTZXQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5OEMwMjAyNzQ0NkEwNDAwMkNDQjc4IC8qIFJlbW90ZVJl
bmRlckJ1bmRsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZW5kZXJCdW5kbGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5OEMwMjEyNzQ0NkEwNDAwMkNDQjc4IC8qIFJlbW90
ZVF1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVF1ZXVlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5OEMwMjIyNzQ0NkEwNDAwMkNDQjc4IC8qIFJlbW90ZVJl
bmRlckJ1bmRsZUVuY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlUmVuZGVyQnVuZGxlRW5j
b2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzk4QzAyMzI3NDQ2QTA1MDAy
Q0NCNzggLyogUmVtb3RlU2hhZGVyTW9kdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90
ZVNoYWRlck1vZHVsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDOThDMDI0
Mjc0NDZBMDUwMDJDQ0I3OCAvKiBXZWJHUFVPYmplY3RSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJHUFVPYmplY3RSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFDOThDMDI1Mjc0NDZBMDYwMDJDQ0I3OCAvKiBSZW1vdGVUZXh0dXJlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlbW90ZVRleHR1cmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUM5OEMwMjYyNzQ0NkEwNjAwMkNDQjc4IC8qIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5OEMwMjcyNzQ0NkEwNjAwMkNDQjc4IC8qIFJlbW90ZVJl
bmRlclBhc3NFbmNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVJlbmRlclBhc3NFbmNvZGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMTcxLDYgKzMxNjksNyBAQAogCQkx
Q0JENzUzRDI3NDdBQTMxMDA0RkEwRkYgLyogV2ViR1BVT2JqZWN0SGVhcC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJHUFVPYmplY3RIZWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFD
QkY5MDEyMjcxMDE4QjUwMDBDNDU3RCAvKiBRdWFsaWZpZWRSZXNvdXJjZUhlYXAuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUXVhbGlmaWVkUmVzb3VyY2VIZWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFDQzU0QUZEMjcwRjk2NTQwMDVCRjhCRSAvKiBRdWFsaWZpZWRSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDRDQxMkU3Mjc1
MUUwRUMwMENBMkUyMiAvKiBSZW1vdGVHUFVQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVH
UFVQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNGMThG
M0UyNkJCNUQ5MDAwNEIxNzIyIC8qIExvZ0luaXRpYWxpemF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IExvZ0luaXRpYWxpemF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUQwNTMwQzkyNThFQUI0NDAwRTQzNkY3IC8qIGNvbWJpbmUtZmVhdHVyZS1mbGFncy1wbGlz
dC5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9ICJjb21iaW5lLWZlYXR1cmUtZmxhZ3MtcGxpc3QucHki
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRDA1MzBEMTI1OTE2MkM4MDBFNDM2Rjcg
LyogV2ViS2l0LWlvcy5wbGlzdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQucGxpc3QueG1sOyBwYXRoID0gIldlYktpdC1pb3MucGxpc3QiOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzQxNiw4ICs3NDE1LDYgQEAKIAkJCQkxQzk4
QzA4ODI3NDRCRDk5MDAyQ0NCNzggLyogUmVtb3RlVGV4dHVyZVZpZXcubWVzc2FnZXMuaW4gKi8s
CiAJCQkJMUNCRDc1M0MyNzQ3QUEzMTAwNEZBMEZGIC8qIFdlYkdQVU9iamVjdEhlYXAuY3BwICov
LAogCQkJCTFDQkQ3NTNEMjc0N0FBMzEwMDRGQTBGRiAvKiBXZWJHUFVPYmplY3RIZWFwLmggKi8s
Ci0JCQkJMUM5OEMwMjQyNzQ0NkEwNTAwMkNDQjc4IC8qIFdlYkdQVU9iamVjdFJlZ2lzdHJ5LmNw
cCAqLywKLQkJCQkxQzk4QzAxRTI3NDQ2QTAzMDAyQ0NCNzggLyogV2ViR1BVT2JqZWN0UmVnaXN0
cnkuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gV2ViR1BVOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKQEAgLTc0NDcsNiArNzQ0NCw3IEBACiAJCQkJMUNCNzQ2MjUyNzQzNkVFNjAwRjE5ODc0
IC8qIFJlbW90ZUV4dGVybmFsVGV4dHVyZVByb3h5LmggKi8sCiAJCQkJMUNCNzQ2NjIyNzQzOUEx
QTAwRjE5ODc0IC8qIFJlbW90ZUdQVVByb3h5LmNwcCAqLywKIAkJCQkxQ0I3NDY2MzI3NDM5QTFB
MDBGMTk4NzQgLyogUmVtb3RlR1BVUHJveHkuaCAqLywKKwkJCQkxQ0Q0MTJFNzI3NTFFMEVDMDBD
QTJFMjIgLyogUmVtb3RlR1BVUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJMUNCNzQ2MjcyNzQz
NkVFNjAwRjE5ODc0IC8qIFJlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHkuY3BwICovLAogCQkJCTFD
Qjc0NjJGMjc0MzZFRTgwMEYxOTg3NCAvKiBSZW1vdGVQaXBlbGluZUxheW91dFByb3h5LmggKi8s
CiAJCQkJMUNCNzQ2MzcyNzQzNkVFOTAwRjE5ODc0IC8qIFJlbW90ZVF1ZXJ5U2V0UHJveHkuY3Bw
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3hjc2hhcmVk
ZGF0YS94Y3NjaGVtZXMvV2ViS2l0Lnhjc2NoZW1lIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvV2ViS2l0Lnhjc2NoZW1lCmluZGV4IDYxMDM5
YjFjNzE3MzhmMzIzM2RiOGIzNTk4NDNjNDRjODNlZjljOWYuLjExYmYwMTg1ZGYyOTI3MzhkNGY1
NDIzY2ViNzYwOGUyNzk4NDc2MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1dlYktpdC54Y3NjaGVtZQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9XZWJLaXQu
eGNzY2hlbWUKQEAgLTMxLDcgKzMxLDcgQEAKICAgICAgIDwvVGVzdGFibGVzPgogICAgPC9UZXN0
QWN0aW9uPgogICAgPExhdW5jaEFjdGlvbgotICAgICAgYnVpbGRDb25maWd1cmF0aW9uID0gIlJl
bGVhc2UiCisgICAgICBidWlsZENvbmZpZ3VyYXRpb24gPSAiRGVidWciCiAgICAgICBzZWxlY3Rl
ZERlYnVnZ2VySWRlbnRpZmllciA9ICJYY29kZS5EZWJ1Z2dlckZvdW5kYXRpb24uRGVidWdnZXIu
TExEQiIKICAgICAgIHNlbGVjdGVkTGF1bmNoZXJJZGVudGlmaWVyID0gIlhjb2RlLkRlYnVnZ2Vy
Rm91bmRhdGlvbi5MYXVuY2hlci5MTERCIgogICAgICAgbGF1bmNoU3R5bGUgPSAiMCIKQEAgLTQw
LDYgKzQwLDEwIEBACiAgICAgICBkZWJ1Z0RvY3VtZW50VmVyc2lvbmluZyA9ICJZRVMiCiAgICAg
ICBkZWJ1Z1NlcnZpY2VFeHRlbnNpb24gPSAiaW50ZXJuYWwiCiAgICAgICBhbGxvd0xvY2F0aW9u
U2ltdWxhdGlvbiA9ICJZRVMiPgorICAgICAgPFBhdGhSdW5uYWJsZQorICAgICAgICAgcnVubmFi
bGVEZWJ1Z2dpbmdNb2RlID0gIjAiCisgICAgICAgICBGaWxlUGF0aCA9ICIvVXNlcnMvbW1heGZp
ZWxkL0J1aWxkL1Byb2R1Y3RzL0RlYnVnL01pbmlCcm93c2VyLmFwcCI+CisgICAgICA8L1BhdGhS
dW5uYWJsZT4KICAgIDwvTGF1bmNoQWN0aW9uPgogICAgPFByb2ZpbGVBY3Rpb24KICAgICAgIGJ1
aWxkQ29uZmlndXJhdGlvbiA9ICJSZWxlYXNlIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQWRhcHRlclByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVBZGFwdGVyUHJv
eHkuaAppbmRleCA5YzNkOTU3MTVmZjQxM2RiOWM1Mzk0MjVjN2I1OTZlZmUzNjY3OWNkLi44MDhk
ZGFhNGIwYWIwOWMwMzI0MDEyM2QwMTQ0NWE0NWQxZmIwZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVBZGFwdGVyUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVBZGFwdGVyUHJveHkuaApAQCAtMzIsMTIgKzMyLDE2IEBACiAjaW5jbHVkZSA8cGFsL2dyYXBo
aWNzL1dlYkdQVS9XZWJHUFVBZGFwdGVyLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAKK25h
bWVzcGFjZSBXZWJLaXQgeworY2xhc3MgUmVtb3RlR1BVUHJveHk7Cit9CisKIG5hbWVzcGFjZSBX
ZWJLaXQ6OldlYkdQVSB7CiAKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwotY2xhc3Mg
UmVtb3RlR1BVUHJveHk7CiAKIGNsYXNzIFJlbW90ZUFkYXB0ZXJQcm94eSBmaW5hbCA6IHB1Ymxp
YyBQQUw6OldlYkdQVTo6QWRhcHRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZW1vdGVBZGFwdGVyUHJveHk+IGNyZWF0ZShTdHJpbmcm
JiBuYW1lLCBQQUw6OldlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXMmIGZlYXR1cmVzLCBQQUw6Oldl
YkdQVTo6U3VwcG9ydGVkTGltaXRzJiBsaW1pdHMsIGJvb2wgaXNGYWxsYmFja0FkYXB0ZXIsIFJl
bW90ZUdQVVByb3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9C
YWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKQEAgLTQ3
LDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflJlbW90ZUFkYXB0ZXJQcm94eSgpOwog
CiAgICAgUmVtb3RlR1BVUHJveHkmIHBhcmVudCgpIHsgcmV0dXJuIG1fcGFyZW50OyB9Ci0gICAg
UmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVudDsgfQorICAgIFJlbW90ZUdQ
VVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnJvb3QoKTsgfQogCiBwcml2YXRlOgog
ICAgIGZyaWVuZCBjbGFzcyBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
QmluZEdyb3VwTGF5b3V0UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExheW91dFByb3h5LmgKaW5kZXggZDQ3ZDdlYzcw
YjhhNmQxZjliYTE1MDcxODUxYmJlYzdjMmQ2OWJiZC4uOTQyYmFkZDdkNTFjNjA1ZWQwNjVmYjll
ZDJhODcyNzNkOGEwMTg1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBM
YXlvdXRQcm94eS5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7
CiBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUmVtb3RlQmluZEdyb3Vw
TGF5b3V0UHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxS
ZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eT4gY3JlYXRlKFJlbW90ZURldmljZVByb3h5JiBwYXJl
bnQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2Vi
R1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKQEAgLTQ1LDcgKzQ2LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgflJlbW90ZUJpbmRHcm91cExheW91dFByb3h5KCk7CiAKICAgICBSZW1v
dGVEZXZpY2VQcm94eSYgcGFyZW50KCkgeyByZXR1cm4gbV9wYXJlbnQ7IH0KLSAgICBSZW1vdGVH
UFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5wYXJlbnQoKS5wYXJlbnQoKTsgfQor
ICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnJvb3QoKTsgfQog
CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250
ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlQmluZEdyb3VwUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cFByb3h5LmgKaW5kZXggOGRjYTEyYjhj
NzE2YzIxODhlNmE4Y2U0MGE2ODM0ZmRmZjkwZjEyYi4uNWZhNTY2MWMyZGNhYmUwMWZmNGIyM2Ey
ODQxM2IyYmY2ZjY1OTA4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBQcm94eS5o
CkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiBjbGFzcyBDb252
ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUmVtb3RlQmluZEdyb3VwUHJveHkgZmluYWwg
OiBwdWJsaWMgUEFMOjpXZWJHUFU6OkJpbmRHcm91cCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZW1vdGVCaW5kR3JvdXBQcm94eT4gY3Jl
YXRlKFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBj
b252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAg
IHsKQEAgLTQ1LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflJlbW90ZUJpbmRHcm91
cFByb3h5KCk7CiAKICAgICBSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50KCkgeyByZXR1cm4gbV9w
YXJlbnQ7IH0KLSAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5w
YXJlbnQoKS5wYXJlbnQoKTsgfQorICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4g
bV9wYXJlbnQtPnJvb3QoKTsgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBEb3duY2Fz
dENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZlclByb3h5LmgK
aW5kZXggNDA5MzAwYTU0OGFlMjI2ZjdmYTE2OWI0MmY4NzM3YzYwZDVmYjAyZC4uN2JhNTZhNzA2
YTgwMTg2NWM4NDMyNmMxMGZiMGY0Yzk0ZTJiODRmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVyUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZm
ZXJQcm94eS5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiBj
bGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUmVtb3RlQnVmZmVyUHJveHkg
ZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OkJ1ZmZlciB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZW1vdGVCdWZmZXJQcm94eT4gY3Jl
YXRlKFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBj
b252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAg
IHsKQEAgLTQ2LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflJlbW90ZUJ1ZmZlclBy
b3h5KCk7CiAKICAgICBSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50KCkgeyByZXR1cm4gbV9wYXJl
bnQ7IH0KLSAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5wYXJl
bnQoKS5wYXJlbnQoKTsgfQorICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9w
YXJlbnQtPnJvb3QoKTsgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBEb3duY2FzdENv
bnZlcnRUb0JhY2tpbmdDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kQnVm
ZmVyUHJveHkuaAppbmRleCAzM2FjNTM0M2QwNmI4OTkzNDViMjZiYWIwMWVhMTBiZmZmMjgxNjNj
Li5lNmEzYjcyOGM4YWQxNTBkOGMyZjMwM2EyYWNjZTg2ZjdkMzNmN2ExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5k
QnVmZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVDb21tYW5kQnVmZmVyUHJveHkuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1l
c3BhY2UgV2ViS2l0OjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAK
IGNsYXNzIFJlbW90ZUNvbW1hbmRCdWZmZXJQcm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQ
VTo6Q29tbWFuZEJ1ZmZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFJlZjxSZW1vdGVDb21tYW5kQnVmZmVyUHJveHk+IGNyZWF0ZShSZW1vdGVE
ZXZpY2VQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFj
a2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7CkBAIC00NSw3
ICs0Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SZW1vdGVDb21tYW5kQnVmZmVyUHJveHko
KTsKIAogICAgIFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQoKSB7IHJldHVybiBtX3BhcmVudDsg
fQotICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnBhcmVudCgp
LnBhcmVudCgpOyB9CisgICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVu
dC0+cm9vdCgpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIERvd25jYXN0Q29udmVy
dFRvQmFja2luZ0NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kRW5jb2RlclByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kRW5jb2Rl
clByb3h5LmgKaW5kZXggODNiNWQwYmYwOTJmYTM2MGNiN2U0MTA1ZTdiYzk2ZTM3YjViMmExZi4u
MTFlNjc4MTU5YTRiNDEyMzY2N2U2N2QzYmEyMDg1NjhmYzgzNWIwYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEVu
Y29kZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHkuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1l
c3BhY2UgV2ViS2l0OjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAK
IGNsYXNzIFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJH
UFU6OkNvbW1hbmRFbmNvZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmPFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk+IGNyZWF0ZShSZW1v
dGVEZXZpY2VQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRv
QmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7CkBAIC00
NSw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SZW1vdGVDb21tYW5kRW5jb2RlclBy
b3h5KCk7CiAKICAgICBSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50KCkgeyByZXR1cm4gbV9wYXJl
bnQ7IH0KLSAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5wYXJl
bnQoKS5wYXJlbnQoKTsgfQorICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9w
YXJlbnQtPnJvb3QoKTsgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBEb3duY2FzdENv
bnZlcnRUb0JhY2tpbmdDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1
dGVQYXNzRW5jb2RlclByb3h5LmgKaW5kZXggZDY5ODBiODcyNGNjYmI2NjU1NWJlMTUyZmQxNDg0
MmJkZjYyODVmNi4uM2YyZGE3OTdhOTI5NjVkNzRiZDkwZDU4YWMyZjU4Nzc2ZjU0MGMxYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eS5oCkBA
IC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiBjbGFzcyBDb252ZXJ0
VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHkg
ZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2RlciB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZW1vdGVDb21w
dXRlUGFzc0VuY29kZXJQcm94eT4gY3JlYXRlKFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHkmIHBh
cmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBX
ZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewpAQCAtNDUsNyArNDYsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB+UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHkoKTsKIAogICAg
IFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHkmIHBhcmVudCgpIHsgcmV0dXJuIG1fcGFyZW50OyB9
Ci0gICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+cGFyZW50KCku
cGFyZW50KCkucGFyZW50KCk7IH0KKyAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJu
IG1fcGFyZW50LT5yb290KCk7IH0KIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRG93bmNh
c3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQaXBlbGluZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21w
dXRlUGlwZWxpbmVQcm94eS5oCmluZGV4IDZiNzNiOWQ2MDRkNTgxMjJiNWU4Nzc3OGRjZjM5NDBi
YmU5ZGY0NjEuLjkyOTRiOWUzZDRkODNmNzY2OTk1NWIwY2M1MzNlMGU3YTg5NzNiZTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZUNvbXB1dGVQaXBlbGluZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJveHkuaApAQCAtMzYsNiAr
MzYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFja2lu
Z0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90ZUNvbXB1dGVQaXBlbGluZVByb3h5IGZpbmFsIDogcHVi
bGljIFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJv
eHk+IGNyZWF0ZShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmll
cikKICAgICB7CkBAIC00NSw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SZW1vdGVD
b21wdXRlUGlwZWxpbmVQcm94eSgpOwogCiAgICAgUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCgp
IHsgcmV0dXJuIG1fcGFyZW50OyB9Ci0gICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVy
biBtX3BhcmVudC0+cGFyZW50KCkucGFyZW50KCk7IH0KKyAgICBSZW1vdGVHUFVQcm94eSYgcm9v
dCgpIHsgcmV0dXJuIG1fcGFyZW50LT5yb290KCk7IH0KIAogcHJpdmF0ZToKICAgICBmcmllbmQg
Y2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZURldmljZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVE
ZXZpY2VQcm94eS5oCmluZGV4IDhlYmUzNWM1ZDkwOWI0ZTU2YTFlY2IyYTI5MzU0NzlkMWVlMjY3
N2IuLjgwMThhMGE0NTg2N2UyMTFjMDg5YzJjNDkzOTRlYTg0MmNhYzU0OGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZURldmlj
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlRGV2aWNlUHJveHkuaApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViS2l0
OjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90
ZURldmljZVByb3h5IGZpbmFsIDogcHVibGljIFBBTDo6V2ViR1BVOjpEZXZpY2UgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UmVtb3RlRGV2
aWNlUHJveHk+IGNyZWF0ZShSZWY8UEFMOjpXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVzPiYmIGZl
YXR1cmVzLCBSZWY8UEFMOjpXZWJHUFU6OlN1cHBvcnRlZExpbWl0cz4mJiBsaW1pdHMsIFJlbW90
ZUFkYXB0ZXJQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRv
QmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7CkBAIC00
Nyw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SZW1vdGVEZXZpY2VQcm94eSgpOwog
CiAgICAgUmVtb3RlQWRhcHRlclByb3h5JiBwYXJlbnQoKSB7IHJldHVybiBtX3BhcmVudDsgfQot
ICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnBhcmVudCgpOyB9
CisgICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+cm9vdCgpOyB9
CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIERvd25jYXN0Q29udmVydFRvQmFja2luZ0Nv
bnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHkuaApp
bmRleCBmZTRiOGMzOWM2Zjc2MDYxMjYwOTk1ZTlmMTJkMTgwMzFjZjVkYzZlLi5jY2I5MzI0MTgz
MDUwYjY1NWY2NDNkMDViZGMzM2NmM2Q5MDg0ODJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZUV4dGVybmFsVGV4dHVyZVByb3h5LmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdl
YktpdDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBS
ZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6RXh0
ZXJuYWxUZXh0dXJlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUmVmPFJlbW90ZUV4dGVybmFsVGV4dHVyZVByb3h5PiBjcmVhdGUoUmVtb3RlRGV2
aWNlUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tp
bmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewpAQCAtNDUsNyAr
NDYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHko
KTsKIAogICAgIFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQoKSB7IHJldHVybiBtX3BhcmVudDsg
fQotICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnBhcmVudCgp
LnBhcmVudCgpOyB9CisgICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVu
dC0+cm9vdCgpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIERvd25jYXN0Q29udmVy
dFRvQmFja2luZ0NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFVQcm94eS5jcHAKaW5kZXggNjQ5
MjI4MzhkOWM2YWVjM2UxYjhiZGUxMzYyNzcxZjhhZDU3MjZkMy4uNTg5OWY0MGFiNTc2Y2M5ZDY3
ZDBjNWM1ODY0NzIyOTNlM2M0Mjg3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5LmNwcApA
QCAtMjgsNzYgKzI4LDEyNSBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVk
ZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJSZW1vdGVBZGFwdGVyUHJveHkuaCIKKyNpbmNs
dWRlICJSZW1vdGVHUFUuaCIKICNpbmNsdWRlICJSZW1vdGVHUFVNZXNzYWdlcy5oIgorI2luY2x1
ZGUgIlJlbW90ZUdQVVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9C
YWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVU3Vw
cG9ydGVkRmVhdHVyZXMuaD4KICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVN1
cHBvcnRlZExpbWl0cy5oPgogCi1uYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgeworbmFtZXNwYWNl
IFdlYktpdCB7CiAKIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGRlZmF1bHRTdHJlYW1TaXplID0g
MSA8PCAyMTsKIAotUmVtb3RlR1BVUHJveHk6OlJlbW90ZUdQVVByb3h5KEdQVVByb2Nlc3NDb25u
ZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNv
bnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCitSZW1v
dGVHUFVQcm94eTo6UmVtb3RlR1BVUHJveHkoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nl
c3NDb25uZWN0aW9uLCBXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9C
YWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQogICAgIDogbV9iYWNraW5nKGlkZW50aWZp
ZXIpCiAgICAgLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250
ZXh0KQorICAgICwgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbigmZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24p
CiAgICAgLCBtX3N0cmVhbUNvbm5lY3Rpb24oZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlv
bigpLCBkZWZhdWx0U3RyZWFtU2l6ZSkKIHsKKyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5h
ZGRDbGllbnQoKnRoaXMpOworICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPm1lc3NhZ2VSZWNl
aXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlR1BVUHJveHk6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAg
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNy
ZWF0ZVJlbW90ZUdQVShpZGVudGlmaWVyLCByZW5kZXJpbmdCYWNrZW5kLCBtX3N0cmVhbUNvbm5l
Y3Rpb24uc3RyZWFtQnVmZmVyKCkpLCAwLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2Fn
ZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CisgICAgLy8gVE9ETzogV2UgbXVzdCB3YWl0
IHVudGlsIGluaXRpYWxpemVkLCBiZWNhdXNlIGF0IHRoZSBtb21lbnQgd2UgY2Fubm90IHJlY2Vp
dmUgSVBDIG1lc3NhZ2VzCisgICAgLy8gZHVyaW5nIHdhaXQgd2hpbGUgaW4gc3luY2hyb25vdXMg
c3RyZWFtIHNlbmQuIFNob3VsZCBiZSBmaXhlZCBhcyBwYXJ0IG9mIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcyMTEuCisgICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQo
KTsKIH0KIAogUmVtb3RlR1BVUHJveHk6On5SZW1vdGVHUFVQcm94eSgpCiB7CiB9CiAKK3ZvaWQg
UmVtb3RlR1BVUHJveHk6OmdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24mIGNvbm5lY3Rpb24pCit7CisgICAgQVNTRVJUKG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rp
b24pOworICAgIEFTU0VSVCgmY29ubmVjdGlvbiA9PSBtX2dwdVByb2Nlc3NDb25uZWN0aW9uKTsK
KyAgICBhYmFuZG9uR1BVUHJvY2VzcygpOworfQorCit2b2lkIFJlbW90ZUdQVVByb3h5OjphYmFu
ZG9uR1BVUHJvY2VzcygpCit7CisgICAgYXV0byBncHVQcm9jZXNzQ29ubmVjdGlvbiA9IHN0ZDo6
ZXhjaGFuZ2UobV9ncHVQcm9jZXNzQ29ubmVjdGlvbiwgbnVsbHB0cik7CisgICAgZ3B1UHJvY2Vz
c0Nvbm5lY3Rpb24tPnJlbW92ZUNsaWVudCgqdGhpcyk7CisgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rp
b24tPm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
UmVtb3RlR1BVUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9iYWNraW5nLnRvVUludDY0
KCkpOworICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24gPSBudWxscHRyOworICAgIG1fbG9zdCA9
IHRydWU7Cit9CisKK3ZvaWQgUmVtb3RlR1BVUHJveHk6Ondhc0NyZWF0ZWQoYm9vbCBkaWRTdWNj
ZWVkLCBJUEM6OlNlbWFwaG9yZSYmIHNlbWFwaG9yZSkKK3sKKyAgICBBU1NFUlQoIW1fZGlkSW5p
dGlhbGl6ZSk7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLnNldFdha2VVcFNlbWFwaG9yZShXVEZN
b3ZlKHNlbWFwaG9yZSkpOworICAgIG1fZGlkSW5pdGlhbGl6ZSA9IHRydWU7CisgICAgbV9sb3N0
ID0gIWRpZFN1Y2NlZWQ7Cit9CisKK3ZvaWQgUmVtb3RlR1BVUHJveHk6OndhaXRVbnRpbEluaXRp
YWxpemVkKCkKK3sKKyAgICBpZiAobV9kaWRJbml0aWFsaXplKQorICAgICAgICByZXR1cm47Cisg
ICAgaWYgKGNvbm5lY3Rpb24oKS53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdl
czo6UmVtb3RlR1BVUHJveHk6Oldhc0NyZWF0ZWQ+KG1fYmFja2luZywgZGVmYXVsdFNlbmRUaW1l
b3V0KSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fbG9zdCA9IHRydWU7Cit9CisKIHZvaWQgUmVt
b3RlR1BVUHJveHk6OnJlcXVlc3RBZGFwdGVyKGNvbnN0IFBBTDo6V2ViR1BVOjpSZXF1ZXN0QWRh
cHRlck9wdGlvbnMmIG9wdGlvbnMsIFdURjo6RnVuY3Rpb248dm9pZChSZWZQdHI8UEFMOjpXZWJH
UFU6OkFkYXB0ZXI+JiYpPiYmIGNhbGxiYWNrKQogeworICAgIGlmIChtX2xvc3QpIHsKKyAgICAg
ICAgY2FsbGJhY2sobnVsbHB0cik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBhdXRv
IGNvbnZlcnRlZE9wdGlvbnMgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9C
YWNraW5nKG9wdGlvbnMpOwogICAgIEFTU0VSVChjb252ZXJ0ZWRPcHRpb25zKTsKLSAgICBpZiAo
IWNvbnZlcnRlZE9wdGlvbnMpCisgICAgaWYgKCFjb252ZXJ0ZWRPcHRpb25zKSB7CisgICAgICAg
IGNhbGxiYWNrKG51bGxwdHIpOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgYXV0byBp
ZGVudGlmaWVyID0gV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKLSAgICBTdHJpbmcgbmFt
ZTsKLSAgICBTdXBwb3J0ZWRGZWF0dXJlcyBzdXBwb3J0ZWRGZWF0dXJlczsKLSAgICBTdXBwb3J0
ZWRMaW1pdHMgc3VwcG9ydGVkTGltaXRzOwotICAgIGJvb2wgaXNGYWxsYmFja0FkYXB0ZXI7Ci0g
ICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdQVTo6UmVxdWVz
dEFkYXB0ZXIoKmNvbnZlcnRlZE9wdGlvbnMsIGlkZW50aWZpZXIpLCB7IG5hbWUsIHN1cHBvcnRl
ZEZlYXR1cmVzLCBzdXBwb3J0ZWRMaW1pdHMsIGlzRmFsbGJhY2tBZGFwdGVyIH0pOwotICAgIGlm
ICghc2VuZFJlc3VsdCkKKyAgICBzdGQ6Om9wdGlvbmFsPFJlbW90ZUdQVTo6UmVxdWVzdEFkYXB0
ZXJSZXNwb25zZT4gcmVzcG9uc2U7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdQVTo6UmVxdWVzdEFkYXB0ZXIoKmNvbnZlcnRlZE9wdGlvbnMsIGlkZW50
aWZpZXIpLCB7IHJlc3BvbnNlIH0pOworICAgIGlmICghc2VuZFJlc3VsdCB8fCAhcmVzcG9uc2Up
IHsKKyAgICAgICAgY2FsbGJhY2sobnVsbHB0cik7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAK
LSAgICBhdXRvIHJlc3VsdFN1cHBvcnRlZEZlYXR1cmVzID0gUEFMOjpXZWJHUFU6OlN1cHBvcnRl
ZEZlYXR1cmVzOjpjcmVhdGUoV1RGTW92ZShzdXBwb3J0ZWRGZWF0dXJlcy5mZWF0dXJlcykpOwor
ICAgIGF1dG8gcmVzdWx0U3VwcG9ydGVkRmVhdHVyZXMgPSBQQUw6OldlYkdQVTo6U3VwcG9ydGVk
RmVhdHVyZXM6OmNyZWF0ZShXVEZNb3ZlKHJlc3BvbnNlLT5mZWF0dXJlcy5mZWF0dXJlcykpOwog
ICAgIGF1dG8gcmVzdWx0U3VwcG9ydGVkTGltaXRzID0gUEFMOjpXZWJHUFU6OlN1cHBvcnRlZExp
bWl0czo6Y3JlYXRlKAotICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4VGV4dHVyZURpbWVuc2lv
bjFELAotICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjJELAotICAg
ICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjNELAotICAgICAgICBzdXBw
b3J0ZWRMaW1pdHMubWF4VGV4dHVyZUFycmF5TGF5ZXJzLAotICAgICAgICBzdXBwb3J0ZWRMaW1p
dHMubWF4QmluZEdyb3VwcywKLSAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heER5bmFtaWNVbmlm
b3JtQnVmZmVyc1BlclBpcGVsaW5lTGF5b3V0LAotICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4
RHluYW1pY1N0b3JhZ2VCdWZmZXJzUGVyUGlwZWxpbmVMYXlvdXQsCi0gICAgICAgIHN1cHBvcnRl
ZExpbWl0cy5tYXhTYW1wbGVkVGV4dHVyZXNQZXJTaGFkZXJTdGFnZSwKLSAgICAgICAgc3VwcG9y
dGVkTGltaXRzLm1heFNhbXBsZXJzUGVyU2hhZGVyU3RhZ2UsCi0gICAgICAgIHN1cHBvcnRlZExp
bWl0cy5tYXhTdG9yYWdlQnVmZmVyc1BlclNoYWRlclN0YWdlLAotICAgICAgICBzdXBwb3J0ZWRM
aW1pdHMubWF4U3RvcmFnZVRleHR1cmVzUGVyU2hhZGVyU3RhZ2UsCi0gICAgICAgIHN1cHBvcnRl
ZExpbWl0cy5tYXhVbmlmb3JtQnVmZmVyc1BlclNoYWRlclN0YWdlLAotICAgICAgICBzdXBwb3J0
ZWRMaW1pdHMubWF4VW5pZm9ybUJ1ZmZlckJpbmRpbmdTaXplLAotICAgICAgICBzdXBwb3J0ZWRM
aW1pdHMubWF4U3RvcmFnZUJ1ZmZlckJpbmRpbmdTaXplLAotICAgICAgICBzdXBwb3J0ZWRMaW1p
dHMubWluVW5pZm9ybUJ1ZmZlck9mZnNldEFsaWdubWVudCwKLSAgICAgICAgc3VwcG9ydGVkTGlt
aXRzLm1pblN0b3JhZ2VCdWZmZXJPZmZzZXRBbGlnbm1lbnQsCi0gICAgICAgIHN1cHBvcnRlZExp
bWl0cy5tYXhWZXJ0ZXhCdWZmZXJzLAotICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4VmVydGV4
QXR0cmlidXRlcywKLSAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heFZlcnRleEJ1ZmZlckFycmF5
U3RyaWRlLAotICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4SW50ZXJTdGFnZVNoYWRlckNvbXBv
bmVudHMsCi0gICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhDb21wdXRlV29ya2dyb3VwU3RvcmFn
ZVNpemUsCi0gICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhDb21wdXRlSW52b2NhdGlvbnNQZXJX
b3JrZ3JvdXAsCi0gICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhDb21wdXRlV29ya2dyb3VwU2l6
ZVgsCi0gICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhDb21wdXRlV29ya2dyb3VwU2l6ZVksCi0g
ICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhDb21wdXRlV29ya2dyb3VwU2l6ZVosCi0gICAgICAg
IHN1cHBvcnRlZExpbWl0cy5tYXhDb21wdXRlV29ya2dyb3Vwc1BlckRpbWVuc2lvbgorICAgICAg
ICByZXNwb25zZS0+bGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24xRCwKKyAgICAgICAgcmVzcG9u
c2UtPmxpbWl0cy5tYXhUZXh0dXJlRGltZW5zaW9uMkQsCisgICAgICAgIHJlc3BvbnNlLT5saW1p
dHMubWF4VGV4dHVyZURpbWVuc2lvbjNELAorICAgICAgICByZXNwb25zZS0+bGltaXRzLm1heFRl
eHR1cmVBcnJheUxheWVycywKKyAgICAgICAgcmVzcG9uc2UtPmxpbWl0cy5tYXhCaW5kR3JvdXBz
LAorICAgICAgICByZXNwb25zZS0+bGltaXRzLm1heER5bmFtaWNVbmlmb3JtQnVmZmVyc1BlclBp
cGVsaW5lTGF5b3V0LAorICAgICAgICByZXNwb25zZS0+bGltaXRzLm1heER5bmFtaWNTdG9yYWdl
QnVmZmVyc1BlclBpcGVsaW5lTGF5b3V0LAorICAgICAgICByZXNwb25zZS0+bGltaXRzLm1heFNh
bXBsZWRUZXh0dXJlc1BlclNoYWRlclN0YWdlLAorICAgICAgICByZXNwb25zZS0+bGltaXRzLm1h
eFNhbXBsZXJzUGVyU2hhZGVyU3RhZ2UsCisgICAgICAgIHJlc3BvbnNlLT5saW1pdHMubWF4U3Rv
cmFnZUJ1ZmZlcnNQZXJTaGFkZXJTdGFnZSwKKyAgICAgICAgcmVzcG9uc2UtPmxpbWl0cy5tYXhT
dG9yYWdlVGV4dHVyZXNQZXJTaGFkZXJTdGFnZSwKKyAgICAgICAgcmVzcG9uc2UtPmxpbWl0cy5t
YXhVbmlmb3JtQnVmZmVyc1BlclNoYWRlclN0YWdlLAorICAgICAgICByZXNwb25zZS0+bGltaXRz
Lm1heFVuaWZvcm1CdWZmZXJCaW5kaW5nU2l6ZSwKKyAgICAgICAgcmVzcG9uc2UtPmxpbWl0cy5t
YXhTdG9yYWdlQnVmZmVyQmluZGluZ1NpemUsCisgICAgICAgIHJlc3BvbnNlLT5saW1pdHMubWlu
VW5pZm9ybUJ1ZmZlck9mZnNldEFsaWdubWVudCwKKyAgICAgICAgcmVzcG9uc2UtPmxpbWl0cy5t
aW5TdG9yYWdlQnVmZmVyT2Zmc2V0QWxpZ25tZW50LAorICAgICAgICByZXNwb25zZS0+bGltaXRz
Lm1heFZlcnRleEJ1ZmZlcnMsCisgICAgICAgIHJlc3BvbnNlLT5saW1pdHMubWF4VmVydGV4QXR0
cmlidXRlcywKKyAgICAgICAgcmVzcG9uc2UtPmxpbWl0cy5tYXhWZXJ0ZXhCdWZmZXJBcnJheVN0
cmlkZSwKKyAgICAgICAgcmVzcG9uc2UtPmxpbWl0cy5tYXhJbnRlclN0YWdlU2hhZGVyQ29tcG9u
ZW50cywKKyAgICAgICAgcmVzcG9uc2UtPmxpbWl0cy5tYXhDb21wdXRlV29ya2dyb3VwU3RvcmFn
ZVNpemUsCisgICAgICAgIHJlc3BvbnNlLT5saW1pdHMubWF4Q29tcHV0ZUludm9jYXRpb25zUGVy
V29ya2dyb3VwLAorICAgICAgICByZXNwb25zZS0+bGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBT
aXplWCwKKyAgICAgICAgcmVzcG9uc2UtPmxpbWl0cy5tYXhDb21wdXRlV29ya2dyb3VwU2l6ZVks
CisgICAgICAgIHJlc3BvbnNlLT5saW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFNpemVaLAorICAg
ICAgICByZXNwb25zZS0+bGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBzUGVyRGltZW5zaW9uCiAg
ICAgKTsKLSAgICBjYWxsYmFjayhSZW1vdGVBZGFwdGVyUHJveHk6OmNyZWF0ZShXVEZNb3ZlKG5h
bWUpLCBXVEZNb3ZlKHJlc3VsdFN1cHBvcnRlZEZlYXR1cmVzKSwgV1RGTW92ZShyZXN1bHRTdXBw
b3J0ZWRMaW1pdHMpLCBpc0ZhbGxiYWNrQWRhcHRlciwgKnRoaXMsIG1fY29udmVydFRvQmFja2lu
Z0NvbnRleHQsIGlkZW50aWZpZXIpKTsKKyAgICBjYWxsYmFjayhXZWJHUFU6OlJlbW90ZUFkYXB0
ZXJQcm94eTo6Y3JlYXRlKFdURk1vdmUocmVzcG9uc2UtPm5hbWUpLCBXVEZNb3ZlKHJlc3VsdFN1
cHBvcnRlZEZlYXR1cmVzKSwgV1RGTW92ZShyZXN1bHRTdXBwb3J0ZWRMaW1pdHMpLCByZXNwb25z
ZS0+aXNGYWxsYmFja0FkYXB0ZXIsICp0aGlzLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBp
ZGVudGlmaWVyKSk7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQ
VVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVHUFVQcm94eS5oCmluZGV4IDBmZmVhMzhjZjhjNmZiYTc4OGFhOTBlY2JhYmRhM2YyMDU2
MDQ4OTAuLmIwMDY4NDM4MTIyMzUzM2UzN2NkNmE5Y2JlMGVlNTJiYTczMjE1ZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQ
VVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlR1BVUHJveHkuaApAQCAtMjcsNiArMjcsOCBAQAogCiAjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQogCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJS
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlN0cmVhbUNsaWVudENvbm5l
Y3Rpb24uaCIKICNpbmNsdWRlICJXZWJHUFVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8cGFsL2dy
YXBoaWNzL1dlYkdQVS9XZWJHUFUuaD4KQEAgLTM2LDE1ICszOCwxOSBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIGNsYXNzIEdQVVByb2Nlc3NDb25uZWN0aW9uOwogfQogCi1uYW1lc3BhY2UgV2ViS2l0
OjpXZWJHUFUgeworbmFtZXNwYWNlIFdlYktpdCB7CiAKK25hbWVzcGFjZSBXZWJHUFUgewogY2xh
c3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CitjbGFzcyBEb3duY2FzdENvbnZlcnRUb0JhY2tp
bmdDb250ZXh0OworfQogCi1jbGFzcyBSZW1vdGVHUFVQcm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6
OldlYkdQVTo6R1BVIHsKK2NsYXNzIFJlbW90ZUdQVVByb3h5IGZpbmFsIDogcHVibGljIFBBTDo6
V2ViR1BVOjpHUFUsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUgR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb246OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVHUFVQcm94eT4gY3JlYXRlKEdQVVByb2Nlc3ND
b25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgQ29udmVydFRvQmFja2luZ0NvbnRleHQm
IGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisg
ICAgc3RhdGljIFJlZjxSZW1vdGVHUFVQcm94eT4gY3JlYXRlKEdQVVByb2Nlc3NDb25uZWN0aW9u
JiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgV2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYg
Y29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUdQVVByb3h5KGdwdVByb2Nlc3NDb25uZWN0aW9u
LCBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgaWRlbnRpZmllcikpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBSZW1vdGVHUFVQcm94eShncHVQcm9jZXNzQ29ubmVjdGlvbiwgY29udmVy
dFRvQmFja2luZ0NvbnRleHQsIGlkZW50aWZpZXIsIHJlbmRlcmluZ0JhY2tlbmQpKTsKICAgICB9
CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVHUFVQcm94eSgpOwpAQCAtNTQsMTUgKzYwLDI2IEBAIHB1
YmxpYzoKICAgICBJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb24mIHN0cmVhbUNsaWVudENvbm5l
Y3Rpb24oKSB7IHJldHVybiBtX3N0cmVhbUNvbm5lY3Rpb247IH0KIAogcHJpdmF0ZToKLSAgICBm
cmllbmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKKyAgICBmcmllbmQg
Y2xhc3MgV2ViR1BVOjpEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCi0gICAgUmVt
b3RlR1BVUHJveHkoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4
dCYsIFdlYkdQVUlkZW50aWZpZXIpOworICAgIFJlbW90ZUdQVVByb3h5KEdQVVByb2Nlc3NDb25u
ZWN0aW9uJiwgV2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYsIFdlYkdQVUlkZW50aWZp
ZXIsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZUdQVVByb3h5KGNv
bnN0IFJlbW90ZUdQVVByb3h5JikgPSBkZWxldGU7CiAgICAgUmVtb3RlR1BVUHJveHkoUmVtb3Rl
R1BVUHJveHkmJikgPSBkZWxldGU7CiAgICAgUmVtb3RlR1BVUHJveHkmIG9wZXJhdG9yPShjb25z
dCBSZW1vdGVHUFVQcm94eSYpID0gZGVsZXRlOwogICAgIFJlbW90ZUdQVVByb3h5JiBvcGVyYXRv
cj0oUmVtb3RlR1BVUHJveHkmJikgPSBkZWxldGU7CiAKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJikgZmluYWw7CisKKyAgICAvLyBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Q2xpZW50Cisg
ICAgdm9pZCBncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9u
JikgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KKyAgICB2b2lkIHdh
c0NyZWF0ZWQoYm9vbCBkaWRTdWNjZWVkLCBJUEM6OlNlbWFwaG9yZSYmKTsKKworICAgIHZvaWQg
d2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsKKwogICAgIFdlYkdQVUlkZW50aWZpZXIgYmFja2luZygp
IGNvbnN0IHsgcmV0dXJuIG1fYmFja2luZzsgfQogICAgIAogICAgIHN0YXRpYyBpbmxpbmUgY29u
c3RleHByIFNlY29uZHMgZGVmYXVsdFNlbmRUaW1lb3V0ID0gMzBfczsKQEAgLTc2LDE2ICs5Mywy
MiBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgcmV0dXJuIHJvb3QoKS5zdHJlYW1DbGllbnRD
b25uZWN0aW9uKCkuc2VuZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGJh
Y2tpbmcoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKICAgICB9CisgICAgSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+Y29u
bmVjdGlvbigpOyB9CiAKICAgICB2b2lkIHJlcXVlc3RBZGFwdGVyKGNvbnN0IFBBTDo6V2ViR1BV
OjpSZXF1ZXN0QWRhcHRlck9wdGlvbnMmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoUmVmUHRyPFBBTDo6
V2ViR1BVOjpBZGFwdGVyPiYmKT4mJikgZmluYWw7CiAKKyAgICB2b2lkIGFiYW5kb25HUFVQcm9j
ZXNzKCk7CisKICAgICBEZXF1ZTxXVEY6OkZ1bmN0aW9uPHZvaWQoUmVmUHRyPFBBTDo6V2ViR1BV
OjpBZGFwdGVyPiYmKT4+IG1fY2FsbGJhY2tzOwogCiAgICAgV2ViR1BVSWRlbnRpZmllciBtX2Jh
Y2tpbmc7Ci0gICAgUmVmPENvbnZlcnRUb0JhY2tpbmdDb250ZXh0PiBtX2NvbnZlcnRUb0JhY2tp
bmdDb250ZXh0OworICAgIFJlZjxXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0PiBtX2Nv
bnZlcnRUb0JhY2tpbmdDb250ZXh0OworICAgIEdQVVByb2Nlc3NDb25uZWN0aW9uKiBtX2dwdVBy
b2Nlc3NDb25uZWN0aW9uOworICAgIGJvb2wgbV9kaWRJbml0aWFsaXplIHsgZmFsc2UgfTsKKyAg
ICBib29sIG1fbG9zdCB7IGZhbHNlIH07CiAgICAgSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9u
IG1fc3RyZWFtQ29ubmVjdGlvbjsKIH07CiAKLX0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BV
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZUdQVVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVUHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDAzNWU5NTVlMDZmN2ZlMWY2ZjI4Y2JjZDJjYTlmNDUxOGFiOGJiNQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQ
VVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjkgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworbWVzc2FnZXMg
LT4gUmVtb3RlR1BVUHJveHkgTm90UmVmQ291bnRlZCB7CisgICAgdm9pZCBXYXNDcmVhdGVkKGJv
b2wgZGlkU3VjY2VlZCwgSVBDOjpTZW1hcGhvcmUgc3RyZWFtV2FrZVVwU2VtYXBob3JlKQorfQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHkuaApp
bmRleCAwYzlkMzQ3ZTgxYjYyODZjM2Q3NzRhY2JiMzYzZTIxNzcxYmJiYmU0Li5jNDUyMjVhNTVh
ZTVmYmI2M2QxMjJhMGFhMWZhOGY3ZjM4ZmE4OWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVQaXBlbGluZUxheW91dFByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlUGlwZWxpbmVMYXlvdXRQcm94eS5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJL
aXQ6OldlYkdQVSB7CiBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUmVt
b3RlUGlwZWxpbmVMYXlvdXRQcm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6UGlwZWxp
bmVMYXlvdXQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0
YXRpYyBSZWY8UmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eT4gY3JlYXRlKFJlbW90ZURldmljZVBy
b3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKQEAgLTQ1LDcgKzQ2LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgflJlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHkoKTsKIAog
ICAgIFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQoKSB7IHJldHVybiBtX3BhcmVudDsgfQotICAg
IFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnBhcmVudCgpLnBhcmVu
dCgpOyB9CisgICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+cm9v
dCgpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIERvd25jYXN0Q29udmVydFRvQmFj
a2luZ0NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVRdWVyeVNldFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWVyeVNldFByb3h5LmgKaW5kZXggZDhj
NmNhNzE2YWYzOTE3MTllZmRjZmVlMGM0MDdlNjNiOWU4ZTRkMy4uMTE3YThhMzlkN2ZjMjk1ZGNj
M2JlZWQwNjhlZTM4YzQwNjlkODM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVlcnlTZXRQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0UHJv
eHkuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogY2xhc3Mg
Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90ZVF1ZXJ5U2V0UHJveHkgZmlu
YWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OlF1ZXJ5U2V0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlbW90ZVF1ZXJ5U2V0UHJveHk+IGNy
ZWF0ZShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYg
Y29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAg
ICB7CkBAIC00NSw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SZW1vdGVRdWVyeVNl
dFByb3h5KCk7CiAKICAgICBSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50KCkgeyByZXR1cm4gbV9w
YXJlbnQ7IH0KLSAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5w
YXJlbnQoKS5wYXJlbnQoKTsgfQorICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4g
bV9wYXJlbnQtPnJvb3QoKTsgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBEb3duY2Fz
dENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVldWVQcm94eS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVldWVQcm94eS5oCmlu
ZGV4IGQ4MjMyNGRlMTUyMGNhNGNlMjE0YTVkYmM3NzY3YzY1MTExOWE4ZWEuLjVlYTIxMDNjMWZk
YjlhMmU1MjcwMzVkZDE2YzQ2ZDQ0ZTJkN2RlYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXVlUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWV1ZVBy
b3h5LmgKQEAgLTM3LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIGNsYXNz
IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBSZW1vdGVRdWV1ZVByb3h5IGZpbmFs
IDogcHVibGljIFBBTDo6V2ViR1BVOjpRdWV1ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZW1vdGVRdWV1ZVByb3h5PiBjcmVhdGUoUmVt
b3RlRGV2aWNlUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRU
b0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewpAQCAt
NDYsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UmVtb3RlUXVldWVQcm94eSgpOwog
CiAgICAgUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCgpIHsgcmV0dXJuIG1fcGFyZW50OyB9Ci0g
ICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+cGFyZW50KCkucGFy
ZW50KCk7IH0KKyAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5y
b290KCk7IH0KIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9C
YWNraW5nQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxl
RW5jb2RlclByb3h5LmgKaW5kZXggMTAwNDVhZTJlYmYyOWU0MWVlOGRlZWI5MjQ4NGFkMTQxMzg3
YTEyMy4uYzFjNmMzOWYzZWQxYmYzMzkyMTkxYWZmNGQyZTg3NDU3MDBhZGViNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVu
ZGVyQnVuZGxlRW5jb2RlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5LmgKQEAgLTM2
LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0OwogCiBjbGFzcyBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHkgZmlu
YWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXIgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVy
QnVuZGxlRW5jb2RlclByb3h5PiBjcmVhdGUoUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCwgQ29u
dmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewpAQCAtNDUsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB+UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5KCk7CiAKICAgICBSZW1vdGVE
ZXZpY2VQcm94eSYgcGFyZW50KCkgeyByZXR1cm4gbV9wYXJlbnQ7IH0KLSAgICBSZW1vdGVHUFVQ
cm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5wYXJlbnQoKS5wYXJlbnQoKTsgfQorICAg
IFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnJvb3QoKTsgfQogCiBw
cml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlUmVuZGVyQnVuZGxlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZVByb3h5LmgKaW5kZXggN2MwZGM1
ZWU5ZjRmZDJkNTRjMTdjMWQyNTcxMDA3N2VlYmFkYmQxNy4uY2U3YTcwNzg5NmE5ODA0YTA3NTA4
ZjZiODQyMmE2ZDA0ZTgzMmJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5k
bGVQcm94eS5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiBj
bGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUmVtb3RlUmVuZGVyQnVuZGxl
UHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZSB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZW1vdGVSZW5k
ZXJCdW5kbGVQcm94eT4gY3JlYXRlKFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQsIENvbnZlcnRU
b0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyKQogICAgIHsKQEAgLTQ1LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgflJlbW90ZVJlbmRlckJ1bmRsZVByb3h5KCk7CiAKICAgICBSZW1vdGVEZXZpY2VQcm94eSYg
cGFyZW50KCkgeyByZXR1cm4gbV9wYXJlbnQ7IH0KLSAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgp
IHsgcmV0dXJuIG1fcGFyZW50LT5wYXJlbnQoKS5wYXJlbnQoKTsgfQorICAgIFJlbW90ZUdQVVBy
b3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnJvb3QoKTsgfQogCiBwcml2YXRlOgogICAg
IGZyaWVuZCBjbGFzcyBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVu
ZGVyUGFzc0VuY29kZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eS5oCmluZGV4IDc0Mjc5ZDE5
NmE3NDg3MzU4ODczMGNlMThkMTFlMWVlZmY3ZTJmZmUuLmU1ZjY5M2Q4YzhlYmY2ZTkwNWQ5MTQy
ZTBkM2ViZTczNGMxODRjMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQ
YXNzRW5jb2RlclByb3h5LmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYktpdDo6V2Vi
R1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBSZW1vdGVSZW5k
ZXJQYXNzRW5jb2RlclByb3h5IGZpbmFsIDogcHVibGljIFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNz
RW5jb2RlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZjxSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5PiBjcmVhdGUoUmVtb3RlQ29tbWFu
ZEVuY29kZXJQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRv
QmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7CkBAIC00
NSw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SZW1vdGVSZW5kZXJQYXNzRW5jb2Rl
clByb3h5KCk7CiAKICAgICBSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5JiBwYXJlbnQoKSB7IHJl
dHVybiBtX3BhcmVudDsgfQotICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9w
YXJlbnQtPnBhcmVudCgpLnBhcmVudCgpLnBhcmVudCgpOyB9CisgICAgUmVtb3RlR1BVUHJveHkm
IHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+cm9vdCgpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJp
ZW5kIGNsYXNzIERvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQ
aXBlbGluZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5LmgKaW5kZXggMDNjZDRjYzY5NGY1ZjlkYTNh
YjIwM2UwNjdiNzA2ZjAxZjQxMjA5YS4uMjNlMDZjZTg4Y2MxZDZmNTVjOGZjMGFmMTRmOTA0N2Nh
YjZkM2RiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBpcGVsaW5lUHJveHku
aApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogY2xhc3MgQ29u
dmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90ZVJlbmRlclBpcGVsaW5lUHJveHkg
ZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlclBp
cGVsaW5lUHJveHk+IGNyZWF0ZShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9C
YWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIg
aWRlbnRpZmllcikKICAgICB7CkBAIC00NSw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5SZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5KCk7CiAKICAgICBSZW1vdGVEZXZpY2VQcm94eSYg
cGFyZW50KCkgeyByZXR1cm4gbV9wYXJlbnQ7IH0KLSAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgp
IHsgcmV0dXJuIG1fcGFyZW50LT5wYXJlbnQoKS5wYXJlbnQoKTsgfQorICAgIFJlbW90ZUdQVVBy
b3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnJvb3QoKTsgfQogCiBwcml2YXRlOgogICAg
IGZyaWVuZCBjbGFzcyBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2Ft
cGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVTYW1wbGVyUHJveHkuaAppbmRleCAxYjcxYzAxODNhOWFjMjllOTlmOTFkMDJlZTBh
OWQ2NTFjYzcxOTJmLi5hMGZlNGE2NGUxYTliMDg2OTYyNjgwODY2MTk0YTYzMGYxZjA4NjExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVTYW1wbGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVTYW1wbGVyUHJveHkuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1l
c3BhY2UgV2ViS2l0OjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAK
IGNsYXNzIFJlbW90ZVNhbXBsZXJQcm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6U2Ft
cGxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFJlZjxSZW1vdGVTYW1wbGVyUHJveHk+IGNyZWF0ZShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50
LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQ
VUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7CkBAIC00NSw3ICs0Niw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5SZW1vdGVTYW1wbGVyUHJveHkoKTsKIAogICAgIFJlbW90ZURldmljZVBy
b3h5JiBwYXJlbnQoKSB7IHJldHVybiBtX3BhcmVudDsgfQotICAgIFJlbW90ZUdQVVByb3h5JiBy
b290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnBhcmVudCgpLnBhcmVudCgpOyB9CisgICAgUmVtb3Rl
R1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+cm9vdCgpOyB9CiAKIHByaXZhdGU6
CiAgICAgZnJpZW5kIGNsYXNzIERvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVTaGFkZXJNb2R1bGVQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlU2hhZGVyTW9kdWxlUHJveHkuaAppbmRleCBmNjFhZDk1NGJjZTM3
MWNhYTljMDJjZTllZmI3ODMxMzYxMTBmY2EwLi4zYzJhMDg0NDQyMmY0NjQ4MmZlOWJkYWFmYmJm
ZGFkMjk0ZmNlZTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNoYWRlck1vZHVsZVByb3h5
LmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIGNsYXNzIENv
bnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBSZW1vdGVTaGFkZXJNb2R1bGVQcm94eSBm
aW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlbW90ZVNoYWRlck1vZHVs
ZVByb3h5PiBjcmVhdGUoUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2lu
Z0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50
aWZpZXIpCiAgICAgewpAQCAtNDUsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UmVt
b3RlU2hhZGVyTW9kdWxlUHJveHkoKTsKIAogICAgIFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQo
KSB7IHJldHVybiBtX3BhcmVudDsgfQotICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1
cm4gbV9wYXJlbnQtPnBhcmVudCgpLnBhcmVudCgpOyB9CisgICAgUmVtb3RlR1BVUHJveHkmIHJv
b3QoKSB7IHJldHVybiBtX3BhcmVudC0+cm9vdCgpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5k
IGNsYXNzIERvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZVRleHR1cmVQcm94eS5oCmluZGV4IDk0N2ZlYjJhOWU2ZjYzZDExNDYwNGU3NTBmZjJmOGI1ZDNi
YmUwN2QuLjZlOTAxMDNiZTY2NWRhMjNiY2I2MGE3ZTVhMzc3MTU0NjNjMzdhYzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRl
eHR1cmVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZVRleHR1cmVQcm94eS5oCkBAIC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBX
ZWJLaXQ6OldlYkdQVSB7CiBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3Mg
UmVtb3RlVGV4dHVyZVByb3h5IGZpbmFsIDogcHVibGljIFBBTDo6V2ViR1BVOjpUZXh0dXJlIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJl
bW90ZVRleHR1cmVQcm94eT4gY3JlYXRlKFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQsIENvbnZl
cnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRp
ZmllciBpZGVudGlmaWVyKQogICAgIHsKQEAgLTQ5LDcgKzUwLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgflJlbW90ZVRleHR1cmVQcm94eSgpOwogCiAgICAgUmVtb3RlRGV2aWNlUHJveHkmIHBh
cmVudCgpIHsgcmV0dXJuIG1fcGFyZW50OyB9Ci0gICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7
IHJldHVybiBtX3BhcmVudC0+cGFyZW50KCkucGFyZW50KCk7IH0KKyAgICBSZW1vdGVHUFVQcm94
eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5yb290KCk7IH0KIAogcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1
cmVWaWV3UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZVRleHR1cmVWaWV3UHJveHkuaAppbmRleCA1N2MxYzk4ZDVjNWZkODYxNmQzMTQy
ZjNkMjdlZDZiYTQyNDU2NzZkLi40OWZjZmZhNzg4MGM0NDJmZjBmNTg2OGQ3YzcwMjFjYjcwN2Vl
ZDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVUZXh0dXJlVmlld1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVZpZXdQcm94eS5oCkBAIC0zNiw2
ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiBjbGFzcyBDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dDsKIAogY2xhc3MgUmVtb3RlVGV4dHVyZVZpZXdQcm94eSBmaW5hbCA6IHB1Ymxp
YyBQQUw6OldlYkdQVTo6VGV4dHVyZVZpZXcgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UmVtb3RlVGV4dHVyZVZpZXdQcm94eT4gY3JlYXRl
KFJlbW90ZVRleHR1cmVQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29u
dmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7
CkBAIC00NSw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SZW1vdGVUZXh0dXJlVmll
d1Byb3h5KCk7CiAKICAgICBSZW1vdGVUZXh0dXJlUHJveHkmIHBhcmVudCgpIHsgcmV0dXJuIG1f
cGFyZW50OyB9Ci0gICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+
cGFyZW50KCkucGFyZW50KCkucGFyZW50KCk7IH0KKyAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgp
IHsgcmV0dXJuIG1fcGFyZW50LT5yb290KCk7IH0KIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xh
c3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVURvd25jYXN0Q29udmVy
dFRvQmFja2luZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvV2ViR1BVL1dlYkdQVURvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQuaAppbmRleCA0
NDcxZDBlZjA3NDhiNjQ1ZWViZDRlOTUwZjVjZjUwMDA1MzY2OTVkLi4xNDMzYWNlNzFlMDJiNjU5
NDBhNjg4MjMwMDVlZDNhNGE5M2I1MTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdD
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvV2ViR1BVRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oCkBAIC0zMiw3ICszMiwx
MyBAQAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAogY2xhc3MgRG93bmNhc3RDb252ZXJ0
VG9CYWNraW5nQ29udGV4dCBmaW5hbCA6IHB1YmxpYyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CisgICAgc3RhdGljIFJlZjxE
b3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0PiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dCgpKTsK
KyAgICB9CisKICAgICB2aXJ0dWFsIH5Eb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0KCkg
PSBkZWZhdWx0OwogCiAgICAgV2ViR1BVSWRlbnRpZmllciBjb252ZXJ0VG9CYWNraW5nKGNvbnN0
IFBBTDo6V2ViR1BVOjpBZGFwdGVyJikgZmluYWw7CkBAIC01Nyw2ICs2Myw5IEBAIHB1YmxpYzoK
ICAgICBXZWJHUFVJZGVudGlmaWVyIGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6
OlNoYWRlck1vZHVsZSYpIGZpbmFsOwogICAgIFdlYkdQVUlkZW50aWZpZXIgY29udmVydFRvQmFj
a2luZyhjb25zdCBQQUw6OldlYkdQVTo6VGV4dHVyZSYpIGZpbmFsOwogICAgIFdlYkdQVUlkZW50
aWZpZXIgY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6VGV4dHVyZVZpZXcmKSBm
aW5hbDsKKworcHJpdmF0ZToKKyAgICBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0KCkg
PSBkZWZhdWx0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAKaW5kZXggNDM2YTVhNTIwMzVhMDY1NzU4OWMwZTkwYjA4NDJjNDMzNjU4MWUz
ZC4uNzRmMTJiYTEyZjViNmVmOWI5NmRhYzlmNzYzNTI0ZjgyNjU5YjAxZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uaCIKICNpbmNsdWRlICJQYWdlQmFubmVyLmgiCiAjaW5jbHVkZSAiUGx1Z2luVmll
dy5oIgorI2luY2x1ZGUgIlJlbW90ZUdQVVByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyQ29weS5oIgogI2luY2x1
ZGUgIlVzZXJEYXRhLmgiCkBAIC01MCw2ICs1MSw3IEBACiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIK
ICNpbmNsdWRlICJXZWJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIldlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyLmgiCisjaW5jbHVkZSAiV2ViR1BVRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dC5oIgogI2luY2x1ZGUgIldlYkhpdFRlc3RSZXN1bHREYXRhLmgiCiAjaW5jbHVkZSAiV2Vi
SW1hZ2UuaCIKICNpbmNsdWRlICJXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oIgpAQCAtOTEs
NiArOTMsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9UZXh0SW5kaWNhdG9yLmg+CiAKKyNpZiBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikK
KyNpbXBvcnQgPHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVJbXBsLmg+CisjZW5kaWYK
KwogI2lmIEVOQUJMRShBUFBMRV9QQVlfQU1TX1VJKQogI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGVQ
YXlBTVNVSVJlcXVlc3QuaD4KICNlbmRpZgpAQCAtOTQ4LDYgKzk1NCwxOSBAQCBSZWZQdHI8R3Jh
cGhpY3NDb250ZXh0R0w+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wo
Y29uc3QgR3JhcGhpYwogCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQogCitSZWZQdHI8
UEFMOjpXZWJHUFU6OkdQVT4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVHUFVGb3JXZWJHUFUoKSBj
b25zdAoreworI2lmIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQorI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykKKyAgICByZXR1cm4gUmVtb3RlR1BVUHJveHk6OmNyZWF0ZShXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLCBXZWJHUFU6OkRvd25jYXN0
Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNyZWF0ZSgpLCBXZWJHUFVJZGVudGlmaWVyOjpnZW5l
cmF0ZSgpLCBtX3BhZ2UuZW5zdXJlUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCkuZW5zdXJl
QmFja2VuZENyZWF0ZWQoKSk7CisjZWxzZQorICAgIHJldHVybiBQQUw6OldlYkdQVTo6R1BVSW1w
bDo6Y3JlYXRlKCk7CisjZW5kaWYKKyNlbHNlCisgICAgcmV0dXJuIG51bGxwdHI7CisjZW5kaWYK
K30KKwogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmF0dGFjaFJvb3RHcmFwaGljc0xheWVyKEZyYW1l
JiwgR3JhcGhpY3NMYXllciogbGF5ZXIpCiB7CiAgICAgaWYgKGxheWVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oCmluZGV4IDJmZTMyOTAzNDM0N2NlZDI4ZjgxMDU3ZGEzZmVjMjMzMDdhZTcwODQuLjlhZWNj
NGMyNzM5NjI0NWFlOTIyMDJmMGQ0NTkzNDczMTc2NmZlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgK
QEAgLTI1Miw2ICsyNTIsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAjZW5kaWYKIAorICAgIFJlZlB0
cjxQQUw6OldlYkdQVTo6R1BVPiBjcmVhdGVHUFVGb3JXZWJHUFUoKSBjb25zdCBmaW5hbDsKIAog
ICAgIENvbXBvc2l0aW5nVHJpZ2dlckZsYWdzIGFsbG93ZWRDb21wb3NpdGluZ1RyaWdnZXJzKCkg
Y29uc3QgZmluYWwKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
b25maWd1cmF0aW9ucy9XZWJLaXRMZWdhY3kueGNjb25maWcgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9Db25maWd1cmF0aW9ucy9XZWJLaXRMZWdhY3kueGNjb25maWcKaW5kZXggZmI1NWRhNzc2
ZTBmODIyNmRhOWZjMzI2NjIzMDliNDY3MzU3YWM5Ny4uZjc4NDk2NjUxZDBlYjkzYmMwZDNlM2Uz
ZWE1Zjk3OTg3ZTRmNzA0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ29u
ZmlndXJhdGlvbnMvV2ViS2l0TGVnYWN5LnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NvbmZpZ3VyYXRpb25zL1dlYktpdExlZ2FjeS54Y2NvbmZpZwpAQCAtNTgsNyArNTgs
NyBAQCBHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gJChERUJVR19ERUZJTkVTKSBCVUlM
RElOR19XRUJLSVQgRlJBTUVXT1JLX05BTUU9VwogV0VCS0lUQURESVRJT05TX0hFQURFUl9TRUFS
Q0hfUEFUSFMgPSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvdXNyL2xvY2FsL2luY2x1ZGUvV2ViS2l0
QWRkaXRpb25zICQoU0RLUk9PVCkvdXNyL2xvY2FsL2luY2x1ZGUvV2ViS2l0QWRkaXRpb25zOwog
TElCV0VCUlRDX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvdXNy
L2xvY2FsL2luY2x1ZGUvd2VicnRjICQoU0RLUk9PVCkvdXNyL2xvY2FsL2luY2x1ZGUvd2VicnRj
OwogCi1IRUFERVJfU0VBUkNIX1BBVEhTID0gIiQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElS
KS9Gb3J3YXJkaW5nSGVhZGVycyIgIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXRMZWdhY3kiICIkKEJVSUxUX1BST0RVQ1RTX0RJUikvdXNyL2xvY2FsL2luY2x1ZGUi
ICQoV0VCS0lUQURESVRJT05TX0hFQURFUl9TRUFSQ0hfUEFUSFMpICQoTElCV0VCUlRDX0hFQURF
Ul9TRUFSQ0hfUEFUSFMpICQoSEVBREVSX1NFQVJDSF9QQVRIUykgJChTUkNST09UKTsKK0hFQURF
Ul9TRUFSQ0hfUEFUSFMgPSAiJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0ZvcndhcmRp
bmdIZWFkZXJzIiAiJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdExl
Z2FjeSIgIiQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5jbHVkZSIgIiQoQlVJTFRf
UFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5jbHVkZS9wYWwvZ3JhcGhpY3MvV2ViR1BVIiAkKFdF
QktJVEFERElUSU9OU19IRUFERVJfU0VBUkNIX1BBVEhTKSAkKExJQldFQlJUQ19IRUFERVJfU0VB
UkNIX1BBVEhTKSAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpICQoU1JDUk9PVCk7CiBJTkZPUExJU1Rf
RklMRSA9IG1hYy9JbmZvLnBsaXN0OwogSU5TVEFMTF9QQVRIID0gJChJTlNUQUxMX1BBVEhfQ09D
T0FfVE9VQ0hfJChXS19JU19DT0NPQV9UT1VDSCkpOwogSU5TVEFMTF9QQVRIX0NPQ09BX1RPVUNI
X1lFUyA9ICQoV0tfQUxURVJOQVRFX1dFQktJVF9TREtfUEFUSCkkKFNZU1RFTV9MSUJSQVJZX0RJ
UikvUHJpdmF0ZUZyYW1ld29ya3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IGEzNjVkOGQ4NjRhMjA2
OWU0ZmE4MjIxZmE4ODM5MjQ2M2JlMDY2NjkuLjQ0OTEzMDY0NDc0ZDEzYzJiOTM5YmI4NDBhMTQ5
ZmM2NzUyYWY5YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0yNTUsNiArMjU1LDggQEAgcHJpdmF0
ZToKICAgICB2b2lkIGNoYW5nZVVuaXZlcnNhbEFjY2Vzc1pvb21Gb2N1cyhjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIGZpbmFsOwogI2VuZGlmCiAKKyAg
ICBSZWZQdHI8UEFMOjpXZWJHUFU6OkdQVT4gY3JlYXRlR1BVRm9yV2ViR1BVKCkgY29uc3QgZmlu
YWw7CisKICNpZiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCiAgICAgYm9vbCBtX21v
Y2tWaWRlb1ByZXNlbnRhdGlvbk1vZGVFbmFibGVkIHsgZmFsc2UgfTsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50Lm1tCmluZGV4IGExNzUxYjAyOTg0Zjc3ZTdhN2M2ZDU1YjU5NGZmYjg4MDAwOThmYWYu
LjBkNGI0ODk5MDAyOTQ4NTkwMWEwYTNlYTVlODI0NThmZDUyZTczZDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQubW0KQEAgLTkzLDYgKzkzLDEwIEBACiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CiAjaW1wb3J0
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9O
KQorI2ltcG9ydCA8cGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUltcGwuaD4KKyNlbmRp
ZgorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKEdFT0xPQ0FUSU9OKQogI2lt
cG9ydCA8V2ViQ29yZS9HZW9sb2NhdGlvbi5oPgogI2VuZGlmCkBAIC0xMTUzLDMgKzExNTcsMTIg
QEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmNoYW5nZVVuaXZlcnNhbEFjY2Vzc1pvb21Gb2N1cyhj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiB2aWUKICAgICBXZWJDb3JlOjpjaGFuZ2VVbml2ZXJzYWxB
Y2Nlc3Nab29tRm9jdXModmlld1JlY3QsIHNlbGVjdGlvblJlY3QpOwogfQogI2VuZGlmCisKK1Jl
ZlB0cjxQQUw6OldlYkdQVTo6R1BVPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUdQVUZvcldlYkdQ
VSgpIGNvbnN0Cit7CisjaWYgSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCisgICAgcmV0dXJu
IFBBTDo6V2ViR1BVOjpHUFVJbXBsOjpjcmVhdGUoKTsKKyNlbHNlCisgICAgcmV0dXJuIG51bGxw
dHI7CisjZW5kaWYKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEv
ZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy13azEvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNy
YXNoLWV4cGVjdGVkLnR4dAppbmRleCBmMjhhOGMwZTI4OTQxZWFlNmUxYTU0ZDEwNmE0OWMyOWY5
MTA5OGJkLi5kNGM0ZjlmNGVhMjhlNGQwZWYwZWM1Zjc1ZDZlZmRjY2E2OTc5MjdhIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRh
Y2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMS9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0CkBA
IC01LDYgKzUsNyBAQCBuYXZpZ2F0b3IuYXBwTmFtZSBpcyBPSwogbmF2aWdhdG9yLmFwcFZlcnNp
b24gaXMgT0sKIG5hdmlnYXRvci5jb29raWVFbmFibGVkIGlzIE9LCiBuYXZpZ2F0b3IuZ2V0U3Rv
cmFnZVVwZGF0ZXMoKSBpcyBPSworbmF2aWdhdG9yLmdwdSBpcyBPSwogbmF2aWdhdG9yLmphdmFF
bmFibGVkKCkgaXMgT0sKIG5hdmlnYXRvci5sYW5ndWFnZSBpcyBPSwogbmF2aWdhdG9yLmxhbmd1
YWdlcyBpcyBPSwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9mYXN0
L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLXdrMi9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gt
ZXhwZWN0ZWQudHh0CmluZGV4IGRjZmEyNzU3MjI5ZTkyNjJkN2IzZGFmNzYzY2M0Yjc0YTUxZWY2
MjUuLmQzNDQ3OWJmNjk4OWQ1ODhmMTQ1YTdjYzJiYWRjZTc1ZDNjMWUzY2MgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVk
LW5vLWNyYXNoLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sy
L2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQKQEAgLTks
NiArOSw3IEBAIG5hdmlnYXRvci5jb250YWN0cyBpcyBPSwogbmF2aWdhdG9yLmNvb2tpZUVuYWJs
ZWQgaXMgT0sKIG5hdmlnYXRvci5jcmVkZW50aWFscyBpcyBPSwogbmF2aWdhdG9yLmdldFN0b3Jh
Z2VVcGRhdGVzKCkgaXMgT0sKK25hdmlnYXRvci5ncHUgaXMgT0sKIG5hdmlnYXRvci5pc0xvZ2dl
ZEluKCkgaXMgT0sKIG5hdmlnYXRvci5qYXZhRW5hYmxlZCgpIGlzIE9LCiBuYXZpZ2F0b3IubGFu
Z3VhZ2UgaXMgT0sKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Rv
bS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3Rl
ZC50eHQKaW5kZXggZGFiNTU1ZGJmYjk0MjIzZWM2N2M4OThjMTdmMzY2NDBmYzYyNTNiMy4uNDBi
ZTU0MTY4OTg4YTI1YWI5MjQ5Yjc5ZjdkZTE4Y2E5NTIxMDA4MyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL25hdmln
YXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQKQEAgLTksNiArOSw3IEBAIG5hdmln
YXRvci5jb250YWN0cyBpcyBPSwogbmF2aWdhdG9yLmNvb2tpZUVuYWJsZWQgaXMgT0sKIG5hdmln
YXRvci5jcmVkZW50aWFscyBpcyBPSwogbmF2aWdhdG9yLmdldFN0b3JhZ2VVcGRhdGVzKCkgaXMg
T0sKK25hdmlnYXRvci5ncHUgaXMgT0sKIG5hdmlnYXRvci5qYXZhRW5hYmxlZCgpIGlzIE9LCiBu
YXZpZ2F0b3IubGFuZ3VhZ2UgaXMgT0sKIG5hdmlnYXRvci5sYW5ndWFnZXMgaXMgT0sK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445245</attachid>
            <date>2021-11-28 19:12:26 -0800</date>
            <delta_ts>2021-11-28 21:08:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233534-20211128191225.patch</filename>
            <type>text/plain</type>
            <size>303829</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGVhYjNiMjBkYTVmNDFhMjYwMTM4NDhj
OTViMmViNTZmMzFjZDE3ODEuLmY1Mjg2YjVmZTEzZGYzMjhhY2YxMTRkYmM1NzIzYzgxNmJkZDBk
MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMTEtMjcgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViR1BVXSBIb29rIHVwIGZpcnN0IEFQ
SSBmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMzNTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzLnlhbWw6CisKIDIwMjEtMTEt
MTkgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW01vZGVs
XSBhZGQgYXVkaW8gc3VwcG9ydApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDI4YzUzMmQ0YjE5ZmU0MzdkODJjNDdm
NmQzZmJhMjI1ZmI3NTk0OTIuLmE0NzBlODQ0NWI1MGYzNDllMzRiNmZjMjgzMGViYzg0YzllMDY5
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAyMS0xMS0yNyAgTXlsZXMgQy4gTWF4
ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJHUFVdIEhvb2sgdXAg
Zmlyc3QgQVBJIGZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzM1MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNjb25maWc6CisgICAgICAgICog
TW9kdWxlcy9XZWJHUFUvR1BVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdQVTo6c2V0QmFja2lu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpHUFU6OnJlcXVlc3RBZGFwdGVyKToKKyAgICAgICAgKiBN
b2R1bGVzL1dlYkdQVS9HUFUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdQVTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdQVTo6YmFja2luZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHUFU6OmJhY2tpbmcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R1BVOjpH
UFUpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNocm9tZTo6Y3JlYXRlR1BVRm9yV2ViR1BVIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0No
cm9tZS5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpDaHJvbWVDbGllbnQ6OmNyZWF0ZUdQVUZvcldlYkdQVSBjb25zdCk6CisgICAgICAgICogcGFn
ZS9OYXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpncHUpOgorICAg
ICAgICAqIHBhZ2UvTmF2aWdhdG9yLmg6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3JCYXNlLmg6
CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JCYXNlOjpncHUpOiBEZWxldGVkLgorICAgICAg
ICAqIHBhZ2UvV29ya2VyTmF2aWdhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck5h
dmlnYXRvcjo6Z3B1KToKKyAgICAgICAgKiBwYWdlL1dvcmtlck5hdmlnYXRvci5oOgorCiAyMDIx
LTExLTI4ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAg
ICAgW1dlYkdQVV0gQWRkIGRlcml2ZWQgc291cmNlcyB0byBYY29kZSBwcm9qZWN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0No
YW5nZUxvZwppbmRleCA1ZDZkNjc3MDI5ZGMyMDZjZDFlNGFkMDBlNjAzMWM5ODAyYjVkMjY5Li5k
YmMxYTUyNjViNjgxMmY4NDA2ZGMyOWMzOWVmMzNiNmY3ZmU3OGU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw2MSBAQAorMjAyMS0xMS0yNyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4
ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJHUFVdIEhvb2sgdXAgZmlyc3QgQVBJIGZ1
bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzM1MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFBBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVBZGFwdGVySW1wbC5jcHA6CisgICAgICAgICogcGFsL2dyYXBoaWNz
L1dlYkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNz
L1dlYkdQVS9JbXBsL1dlYkdQVUJpbmRHcm91cEltcGwuY3BwOgorICAgICAgICAqIHBhbC9ncmFw
aGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCaW5kR3JvdXBJbXBsLmg6CisgICAgICAgICogcGFsL2dy
YXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUJpbmRHcm91cExheW91dEltcGwuY3BwOgorICAgICAg
ICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCaW5kR3JvdXBMYXlvdXRJbXBsLmg6
CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUJ1ZmZlckltcGwuY3Bw
OgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCdWZmZXJJbXBsLmg6
CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbW1hbmRCdWZmZXJJ
bXBsLmNwcDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tbWFu
ZEJ1ZmZlckltcGwuaDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BV
Q29tbWFuZEVuY29kZXJJbXBsLmNwcDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0lt
cGwvV2ViR1BVQ29tbWFuZEVuY29kZXJJbXBsLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dl
YkdQVS9JbXBsL1dlYkdQVUNvbXB1dGVQYXNzRW5jb2RlckltcGwuY3BwOgorICAgICAgICAqIHBh
bC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXJJbXBsLmg6Cisg
ICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbXB1dGVQaXBlbGluZUlt
cGwuY3BwOgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb21wdXRl
UGlwZWxpbmVJbXBsLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQ
VUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2Vi
R1BVL0ltcGwvV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaDoKKyAgICAgICAgKiBwYWwv
Z3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNlSW1wbC5jcHA6CisgICAgICAgICogcGFs
L2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVURldmljZUltcGwuaDoKKyAgICAgICAgKiBwYWwv
Z3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4
dC5jcHA6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVURvd25jYXN0
Q29udmVydFRvQmFja2luZ0NvbnRleHQuaDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVRXh0ZXJuYWxUZXh0dXJlSW1wbC5jcHA6CisgICAgICAgICogcGFsL2dyYXBo
aWNzL1dlYkdQVS9JbXBsL1dlYkdQVUV4dGVybmFsVGV4dHVyZUltcGwuaDoKKyAgICAgICAgKiBw
YWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVSW1wbC5jcHA6CisgICAgICAgIChQQUw6Oldl
YkdQVTo6R1BVSW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0lt
cGwvV2ViR1BVSW1wbC5oOgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJH
UFVQaXBlbGluZUxheW91dEltcGwuY3BwOgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUv
SW1wbC9XZWJHUFVQaXBlbGluZUxheW91dEltcGwuaDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3Mv
V2ViR1BVL0ltcGwvV2ViR1BVUXVlcnlTZXRJbXBsLmNwcDoKKyAgICAgICAgKiBwYWwvZ3JhcGhp
Y3MvV2ViR1BVL0ltcGwvV2ViR1BVUXVlcnlTZXRJbXBsLmg6CisgICAgICAgICogcGFsL2dyYXBo
aWNzL1dlYkdQVS9JbXBsL1dlYkdQVVF1ZXVlSW1wbC5jcHA6CisgICAgICAgICogcGFsL2dyYXBo
aWNzL1dlYkdQVS9JbXBsL1dlYkdQVVF1ZXVlSW1wbC5oOgorICAgICAgICAqIHBhbC9ncmFwaGlj
cy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJCdW5kbGVFbmNvZGVySW1wbC5jcHA6CisgICAgICAg
ICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlckJ1bmRsZUVuY29kZXJJbXBs
Lmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlckJ1bmRs
ZUltcGwuY3BwOgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5k
ZXJCdW5kbGVJbXBsLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQ
VVJlbmRlclBhc3NFbmNvZGVySW1wbC5jcHA6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQ
VS9JbXBsL1dlYkdQVVJlbmRlclBhc3NFbmNvZGVySW1wbC5oOgorICAgICAgICAqIHBhbC9ncmFw
aGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJQaXBlbGluZUltcGwuY3BwOgorICAgICAgICAq
IHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJQaXBlbGluZUltcGwuaDoKKyAg
ICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVU2FtcGxlckltcGwuY3BwOgor
ICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVTYW1wbGVySW1wbC5oOgor
ICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVTaGFkZXJNb2R1bGVJbXBs
LmNwcDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVU2hhZGVyTW9k
dWxlSW1wbC5oOgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVUZXh0
dXJlSW1wbC5jcHA6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVRl
eHR1cmVJbXBsLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVRl
eHR1cmVWaWV3SW1wbC5jcHA6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dl
YkdQVVRleHR1cmVWaWV3SW1wbC5oOgorCiAyMDIxLTExLTI1ICBLaW1tbyBLaW5udW5lbiAgPGtr
aW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgQU5HTEUgTWV0YWw6IFRoZSBtZW1vcnkgYmFj
a2luZyBJT1N1cmZhY2VzIG9mIGZvcm1lciBjbGllbnQgYnVmZmVyIHBidWZmZXJzIGlzIGxlYWtl
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCBhZDhlNjg4MGYwNTU5ODE2YTQ3MGQ3NTUwNWIxODllZjE5MmE2ODU0Li5k
OGVkZjY5YjRkMTY5Y2I4MzgzZWE2ZjhhNWI5N2EwNjUxZWVjMjQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDkwIEBACisyMDIxLTExLTI3ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBs
ZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gSG9vayB1cCBmaXJzdCBBUEkgZnVuY3Rpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzUzNAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogQ29uZmlndXJhdGlvbnMvQmFzZVRhcmdldC54Y2NvbmZpZzoKKyAg
ICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2
ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1h
a2U6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVtb3Rl
R1BVKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMu
aW46CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQWRhcHRlci5o
OgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cC5o
OgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExh
eW91dC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZl
ci5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRC
dWZmZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21t
YW5kRW5jb2Rlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZUNvbXB1dGVQYXNzRW5jb2Rlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZUNvbXB1dGVQaXBlbGluZS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZURldmljZS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4dHVyZS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdQVTo6
UmVtb3RlR1BVKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR1BVOjp+UmVtb3RlR1BVKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR1BVOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR1BVOjpzdG9wTGlzdGVuaW5nRm9ySVBDKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R1BVOjp3b3JrUXVldWVJbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR1BVOjp3
b3JrUXVldWVVbmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHUFU6OnJlcXVl
c3RBZGFwdGVyKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVH
UFUuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVQaXBlbGlu
ZUxheW91dC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1
ZXJ5U2V0Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVl
dWUuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJC
dW5kbGUuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5k
ZXJCdW5kbGVFbmNvZGVyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlUmVuZGVyUGFzc0VuY29kZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZVNhbXBsZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGUuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVZpZXcuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL1dlYkdQVS9XZWJHUFVPYmplY3RIZWFwLmg6CisgICAgICAgICogU291cmNlcy50eHQ6
CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUFkYXB0ZXJQcm94eS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBMYXlv
dXRQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVCaW5kR3JvdXBQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVCdWZmZXJQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kQnVmZmVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFzc0Vu
Y29kZXJQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVEZXZpY2VQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFVQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdQVVByb3h5OjpSZW1vdGVHUFVQcm94eSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdQVVByb3h5OjpncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR1BVUHJveHk6OmFiYW5kb25HUFVQcm9jZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR1BVUHJveHk6Ondhc0NyZWF0ZWQpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHUFVQcm94eTo6d2FpdFVudGlsSW5pdGlhbGl6ZWQpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHUFVQcm94eTo6cmVxdWVzdEFkYXB0ZXIpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJHUFU6OlJlbW90ZUdQVVByb3h5OjpSZW1vdGVHUFVQcm94eSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlR1BVUHJveHk6On5SZW1vdGVHUFVQcm94eSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlR1BVUHJveHk6OnJlcXVlc3RBZGFw
dGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlR1BVUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlR1BVUHJveHkubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVQaXBlbGluZUxheW91dFByb3h5Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0UHJveHku
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVldWVQ
cm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVS
ZW5kZXJCdW5kbGVFbmNvZGVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBl
bGluZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZVNhbXBsZXJQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVTaGFkZXJNb2R1bGVQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVZpZXdQcm94eS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVEb3duY2FzdENvbnZlcnRU
b0JhY2tpbmdDb250ZXh0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNy
ZWF0ZUdQVUZvcldlYkdQVSBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKwogMjAyMS0xMS0yNiAgQWRyaWFuIFBlcmV6IGRlIENh
c3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFVwZGF0ZSBP
cHRpb25zV1BFLmNtYWtlIGFuZCBORVdTIGZvciB0aGUgMi4zNS4xIHJlbGVhc2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwppbmRleCA1MDFkNTAxYWIzODAxN2YxZDhmOWU4MWM5YmVmZGMyZDdm
NmYxNmZlLi4xMmE1Y2FhZjQ3ODdlN2NkYzU0NTUzNTg2Y2FjYmM0MDhmNzM0MDc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMTEtMjcgIE15bGVz
IEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViR1BVXSBI
b29rIHVwIGZpcnN0IEFQSSBmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9XZWJLaXRMZWdhY3kueGNjb25maWc6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tOgorICAgICAgICAoV2ViQ2hyb21lQ2xp
ZW50OjpjcmVhdGVHUFVGb3JXZWJHUFUgY29uc3QpOgorCiAyMDIxLTExLTI0ICBEYXZpZCBLaWx6
ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgQ29tcGlsZXIgc2hvdWxkIGJlIGFi
bGUgdG8gY2hlY2sgbG9jYWxpemVkIGZvcm1hdCBzdHJpbmdzIGZvciBjb25zaXN0ZW5jeQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzLnlh
bWwgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbApp
bmRleCBlYzgyYmY1YjVhMjk5ZDcxMjA3MDM0OGVjNDFiYmQ5YjYzNjc2OWUyLi41NzNlMDI1ZDhk
OWY3MDM2ZGJiMzgyZjUwZmI0MTUyNTJlN2E4N2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1Nj
cmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbAorKysgYi9Tb3VyY2UvV1RGL1Nj
cmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbApAQCAtMjU1MSwxMSArMjU1MSwx
MSBAQCBXZWJHUFU6CiAgIHR5cGU6IGJvb2wKICAgZGVmYXVsdFZhbHVlOgogICAgIFdlYktpdExl
Z2FjeToKLSAgICAgIGRlZmF1bHQ6IGZhbHNlCisgICAgICBkZWZhdWx0OiB0cnVlCiAgICAgV2Vi
S2l0OgotICAgICAgZGVmYXVsdDogZmFsc2UKKyAgICAgIGRlZmF1bHQ6IHRydWUKICAgICBXZWJD
b3JlOgotICAgICAgZGVmYXVsdDogZmFsc2UKKyAgICAgIGRlZmF1bHQ6IHRydWUKIAogV2ViU2Vj
dXJpdHlFbmFibGVkOgogICB0eXBlOiBib29sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybUhhdmUuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCmluZGV4IGNjZWMx
ZWZkMTFkMjk4NzU5MTkyNTVmZWU3YTZhYzIzNjQzNzY2ODEuLjAwYmNmOTc4YzhmOTYwNTAyYmFi
YzNkZmFmNDUyMzQ0ZGFjMjJjZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
SGF2ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCkBAIC0xMDk3LDMgKzEw
OTcsNyBAQAogI2lmIFBMQVRGT1JNKE1BQykKICNkZWZpbmUgSEFWRV9TQ0VORUtJVCAxCiAjZW5k
aWYKKworI2lmIFBMQVRGT1JNKENPQ09BKQorI2RlZmluZSBIQVZFX1dFQkdQVV9JTVBMRU1FTlRB
VElPTiAxCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25z
L1dlYkNvcmUueGNjb25maWcgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9XZWJDb3Jl
LnhjY29uZmlnCmluZGV4IGI4YmE0YzZhNjRhZGJjODg5Zjc2YmZmYWZkODQ5NzFjNmFjOGEyY2Qu
LjZjZWYyNDQ3ZDA3MDhkNWFhOTMyZDhmNmIzOGQ3Zjk2YTg3MTI1YjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNjb25maWcKKysrIGIvU291cmNl
L1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2NvbmZpZwpAQCAtNzMsNiArNzMsOCBA
QCBVTkVYUE9SVEVEX1NZTUJPTFNfRklMRSA9IENvbmZpZ3VyYXRpb25zL1dlYkNvcmUudW5leHA7
CiAKIFdLX0FOR0xFX0xERkxBR1MgPSAtd2Vhay1sQU5HTEUtc2hhcmVkOwogCitXS19XRUJHUFVf
TERGTEFHUyA9IC13ZWFrX2ZyYW1ld29yayBXZWJHUFU7CisKIFdLX0FQUEtJVF9MREZMQUdTID0g
JChXS19BUFBLSVRfTERGTEFHU18kKFdLX1BMQVRGT1JNX05BTUUpKTsKIFdLX0FQUEtJVF9MREZM
QUdTX21hY29zeCA9IC1mcmFtZXdvcmsgQXBwS2l0OwogV0tfQVBQS0lUX0xERkxBR1NfbWFjY2F0
YWx5c3QgPSAtZnJhbWV3b3JrIEFwcEtpdDsKQEAgLTEzMCw3ICsxMzIsNyBAQCBXS19TQ0VORUtJ
VF9MREZMQUdTID0gJChXS19TQ0VORUtJVF9MREZMQUdTXyQoV0tfUExBVEZPUk1fTkFNRSkpOwog
V0tfU0NFTkVLSVRfTERGTEFHU19tYWNvc3ggPSAtd2Vha19mcmFtZXdvcmsgU2NlbmVLaXQ7CiAK
IC8vIEZJWE1FOiBSZWR1Y2UgdGhlIG51bWJlciBvZiBhbGxvd2FibGVfY2xpZW50cyA8cmRhcjov
L3Byb2JsZW0vMzE4MjM5Njk+Ci1PVEhFUl9MREZMQUdTID0gJChpbmhlcml0ZWQpICQoV0tfUkVM
T0NBVEFCTEVfRlJBTUVXT1JLX0xERkxBR1MpIC1sc3FsaXRlMyAtbG9iamMgLWFsbG93YWJsZV9j
bGllbnQgV2ViQ29yZVRlc3RTdXBwb3J0IC1hbGxvd2FibGVfY2xpZW50IFdlYktpdExlZ2FjeSAt
Zm9yY2VfbG9hZCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvbGliUEFMLmEgLWZyYW1ld29yayBDRk5l
dHdvcmsgLWZyYW1ld29yayBDb3JlQXVkaW8gLWZyYW1ld29yayBDb3JlR3JhcGhpY3MgLWZyYW1l
d29yayBDb3JlVGV4dCAtZnJhbWV3b3JrIEZvdW5kYXRpb24gLWZyYW1ld29yayBJT1N1cmZhY2Ug
LWZyYW1ld29yayBJbWFnZUlPIC1mcmFtZXdvcmsgTWV0YWwgJChPVEhFUl9MREZMQUdTX1BMQVRG
T1JNXyQoV0tfQ09DT0FfVE9VQ0gpKSAkKE9USEVSX0xERkxBR1NfUExBVEZPUk1fJChXS19QTEFU
Rk9STV9OQU1FKSkgJChXS19BTkdMRV9MREZMQUdTKSAkKFdLX0FQUEtJVF9MREZMQUdTKSAkKFdL
X0FQUFNVUFBPUlRfTERGTEFHUykgJChXS19BVURJT19VTklUX0xERkxBR1MpICQoV0tfQ0FSQk9O
X0xERkxBR1MpICQoV0tfQ09SRV9VSV9MREZMQUdTKSAkKFdLX0RBVEFfREVURUNUT1JTX0NPUkVf
TERGTEFHUykgJChXS19HUkFQSElDU19TRVJWSUNFU19MREZMQUdTKSAkKFdLX0lPU1VSRkFDRV9B
Q0NFTEVSQVRPUl9MREZMQUdTKSAkKFdLX0xJQldFQlJUQ19MREZMQUdTKSAkKFdLX01PQklMRV9D
T1JFX1NFUlZJQ0VTX0xERkxBR1MpICQoV0tfTU9CSUxFX0dFU1RBTFRfTERGTEFHUykgJChXS19O
RVRXT1JLX0VYVEVOU0lPTl9MRF9GTEFHUykgJChXS19TWVNURU1fQ09ORklHVVJBVElPTl9MREZM
QUdTKSAkKFdLX0NPUkVfSU1BR0VfTERGTEFHUykgJChXS19VUkxfRk9STUFUVElOR19MREZMQUdT
KSAkKFdLX1NDRU5FS0lUX0xERkxBR1MpOworT1RIRVJfTERGTEFHUyA9ICQoaW5oZXJpdGVkKSAk
KFdLX1JFTE9DQVRBQkxFX0ZSQU1FV09SS19MREZMQUdTKSAtbHNxbGl0ZTMgLWxvYmpjIC1hbGxv
d2FibGVfY2xpZW50IFdlYkNvcmVUZXN0U3VwcG9ydCAtYWxsb3dhYmxlX2NsaWVudCBXZWJLaXRM
ZWdhY3kgLWZvcmNlX2xvYWQgJChCVUlMVF9QUk9EVUNUU19ESVIpL2xpYlBBTC5hIC1mcmFtZXdv
cmsgQ0ZOZXR3b3JrIC1mcmFtZXdvcmsgQ29yZUF1ZGlvIC1mcmFtZXdvcmsgQ29yZUdyYXBoaWNz
IC1mcmFtZXdvcmsgQ29yZVRleHQgLWZyYW1ld29yayBGb3VuZGF0aW9uIC1mcmFtZXdvcmsgSU9T
dXJmYWNlIC1mcmFtZXdvcmsgSW1hZ2VJTyAtZnJhbWV3b3JrIE1ldGFsICQoT1RIRVJfTERGTEFH
U19QTEFURk9STV8kKFdLX0NPQ09BX1RPVUNIKSkgJChPVEhFUl9MREZMQUdTX1BMQVRGT1JNXyQo
V0tfUExBVEZPUk1fTkFNRSkpICQoV0tfQU5HTEVfTERGTEFHUykgJChXS19XRUJHUFVfTERGTEFH
UykgJChXS19BUFBLSVRfTERGTEFHUykgJChXS19BUFBTVVBQT1JUX0xERkxBR1MpICQoV0tfQVVE
SU9fVU5JVF9MREZMQUdTKSAkKFdLX0NBUkJPTl9MREZMQUdTKSAkKFdLX0NPUkVfVUlfTERGTEFH
UykgJChXS19EQVRBX0RFVEVDVE9SU19DT1JFX0xERkxBR1MpICQoV0tfR1JBUEhJQ1NfU0VSVklD
RVNfTERGTEFHUykgJChXS19JT1NVUkZBQ0VfQUNDRUxFUkFUT1JfTERGTEFHUykgJChXS19MSUJX
RUJSVENfTERGTEFHUykgJChXS19NT0JJTEVfQ09SRV9TRVJWSUNFU19MREZMQUdTKSAkKFdLX01P
QklMRV9HRVNUQUxUX0xERkxBR1MpICQoV0tfTkVUV09SS19FWFRFTlNJT05fTERfRkxBR1MpICQo
V0tfU1lTVEVNX0NPTkZJR1VSQVRJT05fTERGTEFHUykgJChXS19DT1JFX0lNQUdFX0xERkxBR1Mp
ICQoV0tfVVJMX0ZPUk1BVFRJTkdfTERGTEFHUykgJChXS19TQ0VORUtJVF9MREZMQUdTKTsKIAog
T1RIRVJfTERGTEFHU19QTEFURk9STV9jb2NvYXRvdWNoID0gLWFsbG93YWJsZV9jbGllbnQgV2Vi
S2l0IC1hbGxvd2FibGVfY2xpZW50IGlUdW5lc1UgLWFsbG93YWJsZV9jbGllbnQgQ2FzYWJsYW5j
YSAtYWxsb3dhYmxlX2NsaWVudCBSZW1vdGUgLWFsbG93YWJsZV9jbGllbnQgVFZCb29rcyAtYWxs
b3dhYmxlX2NsaWVudCBEdW1wUmVuZGVyVHJlZSAtYWxsb3dhYmxlX2NsaWVudCBXZWJLaXRUZXN0
UnVubmVyIC1hbGxvd2FibGVfY2xpZW50IFRlc3RXZWJLaXRBUEk7CiBPVEhFUl9MREZMQUdTX1BM
QVRGT1JNX21hY29zeCA9IC1zdWJfbGlicmFyeSBsaWJvYmpjIC11bWJyZWxsYSBXZWJLaXQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVLmNwcAppbmRleCAyNjEzZjJmNzg5NGZlMGIzYTFk
ZDNkZjM4MGZlM2RiYTI0YjcwZmFkLi4xNjhkMzM3NGNmNTRiMzg2ZTE3ZjRhNTlmOTU4MTI5NzA0
YmM2YWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVS5jcHAKQEAgLTM4LDExICsz
OCwyNyBAQCBzdGF0aWMgUEFMOjpXZWJHUFU6OlJlcXVlc3RBZGFwdGVyT3B0aW9ucyBjb252ZXJ0
VG9CYWNraW5nKGNvbnN0IHN0ZDo6b3B0aW9uYWw8RwogICAgIHJldHVybiBvcHRpb25zLT5jb252
ZXJ0VG9CYWNraW5nKCk7CiB9CiAKK3ZvaWQgR1BVOjpzZXRCYWNraW5nKFBBTDo6V2ViR1BVOjpH
UFUmIGJhY2tpbmcpCit7CisgICAgbV9iYWNraW5nID0gJmJhY2tpbmc7CisgICAgd2hpbGUgKCFt
X3BlbmRpbmdSZXF1ZXN0QWRhcHRlckFyZ3VtZW50cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0
byBhcmd1bWVudHMgPSBtX3BlbmRpbmdSZXF1ZXN0QWRhcHRlckFyZ3VtZW50cy50YWtlRmlyc3Qo
KTsKKyAgICAgICAgcmVxdWVzdEFkYXB0ZXIoYXJndW1lbnRzLm9wdGlvbnMsIFdURk1vdmUoYXJn
dW1lbnRzLnByb21pc2UpKTsKKyAgICB9Cit9CisKIHZvaWQgR1BVOjpyZXF1ZXN0QWRhcHRlcihj
b25zdCBzdGQ6Om9wdGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4mIG9wdGlvbnMsIFJl
cXVlc3RBZGFwdGVyUHJvbWlzZSYmIHByb21pc2UpCiB7CisgICAgaWYgKCFtX2JhY2tpbmcpIHsK
KyAgICAgICAgbV9wZW5kaW5nUmVxdWVzdEFkYXB0ZXJBcmd1bWVudHMuYXBwZW5kKHsgb3B0aW9u
cywgV1RGTW92ZShwcm9taXNlKSB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIG1f
YmFja2luZy0+cmVxdWVzdEFkYXB0ZXIoY29udmVydFRvQmFja2luZyhvcHRpb25zKSwgW3Byb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoUmVmUHRyPFBBTDo6V2ViR1BVOjpBZGFwdGVyPiYmIGFk
YXB0ZXIpIG11dGFibGUgewotICAgICAgICBpZiAoIWFkYXB0ZXIpCi0gICAgICAgICAgICBwcm9t
aXNlLnJlc29sdmUobnVsbHB0cik7CisgICAgICAgIGlmICghYWRhcHRlcikgeworICAgICAgICAg
ICAgcHJvbWlzZS5yZWplY3QobnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKEdQVUFkYXB0ZXI6OmNyZWF0ZShhZGFwdGVyLnJl
bGVhc2VOb25OdWxsKCkpLnB0cigpKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJH
UFUvR1BVLmgKaW5kZXggMTZlNDc3NGIzMWM4ZDZlMmFlYzg3MTg2NzkwMTU3YTdlZmVmZTA3MC4u
ZDMwNGU4ZThmN2ExNTM1Yjc4YjkzMGY3ZTFjNjhiMDYzMzViOTU1MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9XZWJHUFUvR1BVLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJKU0RPTVByb21p
c2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgPG9wdGlvbmFsPgogI2luY2x1ZGUgPHBhbC9ncmFwaGlj
cy9XZWJHUFUvV2ViR1BVLmg+CisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTM3LDI0ICszOCwyNSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdQVSA6IHB1YmxpYyBSZWZDb3VudGVkPEdQ
VT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8R1BVPiBjcmVhdGUoUmVmPFBBTDo6V2ViR1BV
OjpHUFU+JiYgYmFja2luZykKKyAgICBzdGF0aWMgUmVmPEdQVT4gY3JlYXRlKCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdQVShXVEZNb3ZlKGJhY2tpbmcpKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdQVSgpKTsKICAgICB9CiAKICAgICB1c2luZyBSZXF1
ZXN0QWRhcHRlclByb21pc2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURMTnVsbGFibGU8SURMSW50
ZXJmYWNlPEdQVUFkYXB0ZXI+Pj47CiAgICAgdm9pZCByZXF1ZXN0QWRhcHRlcihjb25zdCBzdGQ6
Om9wdGlvbmFsPEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucz4mLCBSZXF1ZXN0QWRhcHRlclByb21p
c2UmJik7CiAKLSAgICBQQUw6OldlYkdQVTo6R1BVJiBiYWNraW5nKCkgeyByZXR1cm4gbV9iYWNr
aW5nOyB9Ci0gICAgY29uc3QgUEFMOjpXZWJHUFU6OkdQVSYgYmFja2luZygpIGNvbnN0IHsgcmV0
dXJuIG1fYmFja2luZzsgfQorICAgIHZvaWQgc2V0QmFja2luZyhQQUw6OldlYkdQVTo6R1BVJik7
CiAKIHByaXZhdGU6Ci0gICAgR1BVKFJlZjxQQUw6OldlYkdQVTo6R1BVPiYmIGJhY2tpbmcpCi0g
ICAgICAgIDogbV9iYWNraW5nKFdURk1vdmUoYmFja2luZykpCi0gICAgewotICAgIH0KLQotICAg
IFJlZjxQQUw6OldlYkdQVTo6R1BVPiBtX2JhY2tpbmc7CisgICAgR1BVKCkgPSBkZWZhdWx0Owor
CisgICAgc3RydWN0IFBlbmRpbmdSZXF1ZXN0QWRhcHRlckFyZ3VtZW50cyB7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8R1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zPiBvcHRpb25zOworICAgICAgICBS
ZXF1ZXN0QWRhcHRlclByb21pc2UgcHJvbWlzZTsKKyAgICB9OworICAgIERlcXVlPFBlbmRpbmdS
ZXF1ZXN0QWRhcHRlckFyZ3VtZW50cz4gbV9wZW5kaW5nUmVxdWVzdEFkYXB0ZXJBcmd1bWVudHM7
CisgICAgUmVmUHRyPFBBTDo6V2ViR1BVOjpHUFU+IG1fYmFja2luZzsKIH07CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVURldmljZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVEZXZpY2UuY3BwCmluZGV4IDdiODczMjNmNTRk
ODcxMjYxNjYyMjA5NWNlYjIyYzc0MzYxZTI1YmUuLmMwNDU1MjM2OTNkNjg3OTNhYjNjOTZiNGYy
YTQyYWUyNjk1YjYwZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BV
L0dQVURldmljZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVRGV2
aWNlLmNwcApAQCAtMjA0LDggKzIwNCwxMCBAQCB2b2lkIEdQVURldmljZTo6cHVzaEVycm9yU2Nv
cGUoR1BVRXJyb3JGaWx0ZXIgZXJyb3JGaWx0ZXIpCiB2b2lkIEdQVURldmljZTo6cG9wRXJyb3JT
Y29wZShFcnJvclNjb3BlUHJvbWlzZSYmIGVycm9yU2NvcGVQcm9taXNlKQogewogICAgIG1fYmFj
a2luZy0+cG9wRXJyb3JTY29wZShbcHJvbWlzZSA9IFdURk1vdmUoZXJyb3JTY29wZVByb21pc2Up
XSAoc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6RXJyb3I+JiYgZXJyb3IpIG11dGFibGUgewot
ICAgICAgICBpZiAoIWVycm9yKQorICAgICAgICBpZiAoIWVycm9yKSB7CiAgICAgICAgICAgICBw
cm9taXNlLnJlc29sdmUoc3RkOjpudWxsb3B0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQogICAgICAgICBXVEY6OnN3aXRjaE9uKFdURk1vdmUoKmVycm9yKSwgWyZdIChSZWY8UEFM
OjpXZWJHUFU6Ok91dE9mTWVtb3J5RXJyb3I+JiYgb3V0T2ZNZW1vcnlFcnJvcikgewogICAgICAg
ICAgICAgR1BVRXJyb3IgZXJyb3IgPSBSZWZQdHI8R1BVT3V0T2ZNZW1vcnlFcnJvcj4oR1BVT3V0
T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKFdURk1vdmUob3V0T2ZNZW1vcnlFcnJvcikpKTsKICAgICAg
ICAgICAgIHByb21pc2UucmVzb2x2ZShlcnJvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
UEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWU2OTk3NWZiYmI2Y2NiOWI2MWU0
NzA3N2ExYTI1M2JjZGMzYWRiMC4uZDM0OGJmNzY2OTJkNDY3MTBkYzYxZTJiOGE0ZDMxMTdmMGYy
ZTIxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTQxLDYgKzE0MSw3IEBACiAJCTFDQzNBQ0U4MjJCRDdFQzUwMEYzNjBGMCAv
KiBNZXRhbFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUNDM0FDRTcyMkJEN0VCODAwRjM2MEYwIC8qIE1ldGFsU1BJLmggKi87IH07CiAJCTFDQ0VF
NEY1MjBEODcxOTMwMDQ3QjA5NyAvKiBDb3JlVUlTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQ0VFNEY0MjBEODcxOTMwMDQ3QjA5NyAvKiBDb3Jl
VUlTUEkuaCAqLzsgfTsKIAkJMUNDRUU0RjcyMEQ4NzQzRjAwNDdCMDk3IC8qIE5TQXBwZWFyYW5j
ZVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUND
RUU0RjYyMEQ4NzQzRjAwNDdCMDk3IC8qIE5TQXBwZWFyYW5jZVNQSS5oICovOyB9OworCQkxQ0Q0
MTJFODI3NTFFNERDMDBDQTJFMjIgLyogV2ViR1BVSW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMxOUU2OUIyNzNGNDI0MjAwNEIxN0IwIC8qIFdl
YkdQVUltcGwuaCAqLzsgfTsKIAkJMUNFRkExQzMyNzM3QTRDODAwRjBEQTk1IC8qIFdlYkdQVUJp
bmRHcm91cERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFDQzVFNDZFMjczNzQ5NDgwMDZGNkZGNCAvKiBXZWJHUFVCaW5kR3JvdXBEZXNj
cmlwdG9yLmggKi87IH07CiAJCTFDRUZBMUM0MjczN0E0QzgwMEYwREE5NSAvKiBXZWJHUFVTYW1w
bGVyRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUNDNUU0MjMyNzM3NDkyQzAwNkY2RkY0IC8qIFdlYkdQVVNhbXBsZXJEZXNjcmlwdG9y
LmggKi87IH07CiAJCTFDRUZBMUM1MjczN0E0QzgwMEYwREE5NSAvKiBXZWJHUFVTdG9yYWdlVGV4
dHVyZUFjY2Vzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUNDNUU0MjAyNzM3NDkyQzAwNkY2RkY0IC8qIFdlYkdQVVN0b3JhZ2VUZXh0dXJlQWNjZXNz
LmggKi87IH07CkBAIC0xNjI0LDYgKzE2MjUsNyBAQAogCQkJCTFDRUZBMjMyMjczN0E0QzgwMEYw
REE5NSAvKiBXZWJHUFVJbWFnZUNvcHlUZXh0dXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQ0VG
QTIzRjI3MzdBNEM4MDBGMERBOTUgLyogV2ViR1BVSW1hZ2VDb3B5VGV4dHVyZVRhZ2dlZC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUNFRkEyM0IyNzM3QTRDODAwRjBEQTk1IC8qIFdlYkdQVUltYWdl
RGF0YUxheW91dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUNENDEyRTgyNzUxRTREQzAwQ0EyRTIy
IC8qIFdlYkdQVUltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDRUZBMjA3MjczN0E0QzgwMEYw
REE5NSAvKiBXZWJHUFVJbmRleEZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUNFRkEyMTQy
NzM3QTRDODAwRjBEQTk1IC8qIFdlYkdQVUludGVncmFsVHlwZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFDRUZBMjFEMjczN0E0QzgwMEYwREE5NSAvKiBXZWJHUFVMb2FkT3AuaCBpbiBIZWFkZXJz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUv
SW1wbC9XZWJHUFVBZGFwdGVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGlj
cy9XZWJHUFUvSW1wbC9XZWJHUFVBZGFwdGVySW1wbC5oCmluZGV4IDgxNGEyNTcwYjI4ZWFlN2Ji
ZGNhOWZmNmEyOGM3ODc3YjVlZDM5YzcuLjliNWUyNzUwZDE4YmE0MWQ1YThhZDVhMjlkN2U0OTNl
ZjAzMmZhYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2Vi
R1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmgKQEAgLTM2LDYgKzM2LDcg
QEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0
OwogCiBjbGFzcyBBZGFwdGVySW1wbCBmaW5hbCA6IHB1YmxpYyBBZGFwdGVyIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEFkYXB0ZXJJbXBs
PiBjcmVhdGUoV0dQVUFkYXB0ZXIgYWRhcHRlciwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNv
bnZlcnRUb0JhY2tpbmdDb250ZXh0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQmluZEdyb3VwSW1wbC5oIGIvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCaW5kR3JvdXBJ
bXBsLmgKaW5kZXggMzVhZDQzMzFlYWQ5OTBiZTJjN2MxMTQzYmFlZDcyZmNjZTU5ZTA2ZS4uNzc3
ODNhMTRlZGQ3YzNjNzc1MTEyZGI2YzgxZjA4YzFlMjU1N2FmMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCaW5kR3JvdXBJbXBs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJH
UFVCaW5kR3JvdXBJbXBsLmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BV
IHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBCaW5kR3JvdXBJbXBs
IGZpbmFsIDogcHVibGljIEJpbmRHcm91cCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxCaW5kR3JvdXBJbXBsPiBjcmVhdGUoV0dQVUJpbmRH
cm91cCBiaW5kR3JvdXAsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5n
Q29udGV4dCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBo
aWNzL1dlYkdQVS9JbXBsL1dlYkdQVUJpbmRHcm91cExheW91dEltcGwuaCBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQmluZEdyb3VwTGF5b3V0SW1w
bC5oCmluZGV4IDg2NWNkYzk4MjA4M2IyZTM2YjQ3MjYzM2EwMTEyMzU2MjQwZDYyOTEuLmVkNGQ1
NzhhNGVjZWY0YmI1NTlmN2ZiYjNlZGQzYzEwMDg1OWYzMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQmluZEdyb3VwTGF5b3V0
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVQmluZEdyb3VwTGF5b3V0SW1wbC5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBQ
QUw6OldlYkdQVSB7CiBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgQmlu
ZEdyb3VwTGF5b3V0SW1wbCBmaW5hbCA6IHB1YmxpYyBCaW5kR3JvdXBMYXlvdXQgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8QmluZEdyb3Vw
TGF5b3V0SW1wbD4gY3JlYXRlKFdHUFVCaW5kR3JvdXBMYXlvdXQgYmluZEdyb3VwTGF5b3V0LCBD
b252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9X
ZWJHUFVCdWZmZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQ
VS9JbXBsL1dlYkdQVUJ1ZmZlckltcGwuaAppbmRleCBjMzY3ZTdiYzczOWY3NzNlZTYyMjQ4M2Nj
YzcxNWU1MGM0M2FjNTI3Li5jMTQ2NWVjNDc3ZGY1NTY1MjVmYTg4YzVhM2EwMTExMGNlOTBmMjg3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBs
L1dlYkdQVUJ1ZmZlckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNz
L1dlYkdQVS9JbXBsL1dlYkdQVUJ1ZmZlckltcGwuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3Bh
Y2UgUEFMOjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNz
IEJ1ZmZlckltcGwgZmluYWwgOiBwdWJsaWMgQnVmZmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEJ1ZmZlckltcGw+IGNyZWF0ZShXR1BV
QnVmZmVyIGJ1ZmZlciwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdD
b250ZXh0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhp
Y3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tbWFuZEJ1ZmZlckltcGwuaCBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tbWFuZEJ1ZmZlckltcGwuaApp
bmRleCA0YmMzYzFlZDdjM2I0OGU4MDM3YTk1NzExMTNjNmY1YjgwNTQ5YTNhLi4yMDRjOGE2OWQ1
YTU4YTNlMDc2ZTU1NGNiYWYxYzEzNjcxOTRlNmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbW1hbmRCdWZmZXJJbXBsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVD
b21tYW5kQnVmZmVySW1wbC5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBQQUw6OldlYkdQ
VSB7CiBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgQ29tbWFuZEJ1ZmZl
ckltcGwgZmluYWwgOiBwdWJsaWMgQ29tbWFuZEJ1ZmZlciB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxDb21tYW5kQnVmZmVySW1wbD4gY3Jl
YXRlKFdHUFVDb21tYW5kQnVmZmVyIGNvbW1hbmRCdWZmZXIsIENvbnZlcnRUb0JhY2tpbmdDb250
ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbW1hbmRFbmNvZGVy
SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJH
UFVDb21tYW5kRW5jb2RlckltcGwuaAppbmRleCBmNTU2NjJkYzQ0ZWY2ZmY0MGM0NzUwOThkY2Vk
ZmU3ZGMwZTNhMzg1Li5hZDYwYWMwMmIxYWQ2ZTI0MDg5NGI5ZDVhMjkxMGJiYmQ0MzYxMWE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dl
YkdQVUNvbW1hbmRFbmNvZGVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3Jh
cGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tbWFuZEVuY29kZXJJbXBsLmgKQEAgLTM1LDYgKzM1
LDcgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250
ZXh0OwogCiBjbGFzcyBDb21tYW5kRW5jb2RlckltcGwgZmluYWwgOiBwdWJsaWMgQ29tbWFuZEVu
Y29kZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRp
YyBSZWY8Q29tbWFuZEVuY29kZXJJbXBsPiBjcmVhdGUoV0dQVUNvbW1hbmRFbmNvZGVyIENvbW1h
bmRFbmNvZGVyLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRl
eHQpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlcklt
cGwuaAppbmRleCAyYjU3NjJlYTc1M2FlNWI5YzRmYTVmYTFhZDNmOTU4ODhmODJkODNkLi41Mjg4
YjViOGMwZGJlN2E2MTBlYjExNjUzMTU1ZjMzY2ExNTNkNTEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbXB1dGVQYXNzRW5j
b2RlckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9J
bXBsL1dlYkdQVUNvbXB1dGVQYXNzRW5jb2RlckltcGwuaApAQCAtMzUsNiArMzUsNyBAQCBuYW1l
c3BhY2UgUEFMOjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNs
YXNzIENvbXB1dGVQYXNzRW5jb2RlckltcGwgZmluYWwgOiBwdWJsaWMgQ29tcHV0ZVBhc3NFbmNv
ZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UmVmPENvbXB1dGVQYXNzRW5jb2RlckltcGw+IGNyZWF0ZShXR1BVQ29tcHV0ZVBhc3NFbmNvZGVy
IGNvbXB1dGVQYXNzRW5jb2RlciwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Z3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lSW1wbC5oIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb21wdXRlUGlwZWxp
bmVJbXBsLmgKaW5kZXggYzg5OGM5OWFlN2M0MWVkMGFlYjVkYTlkY2I0OGMwMTFlNTg1MDc1MC4u
MjJlNjEzNDZkMTdiZjE1MTUzODI2N2NhYTM3Yjc1YTY3ODMzN2RiMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb21wdXRlUGlw
ZWxpbmVJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUv
SW1wbC9XZWJHUFVDb21wdXRlUGlwZWxpbmVJbXBsLmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNw
YWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFz
cyBDb21wdXRlUGlwZWxpbmVJbXBsIGZpbmFsIDogcHVibGljIENvbXB1dGVQaXBlbGluZSB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxDb21w
dXRlUGlwZWxpbmVJbXBsPiBjcmVhdGUoV0dQVUNvbXB1dGVQaXBlbGluZSBjb21wdXRlUGlwZWxp
bmUsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9J
bXBsL1dlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgK
aW5kZXggM2M5YjVjN2I0ZDU4M2QyYTY3MjhiYmQ3MjczYjViYjI2MGM2MmQzOS4uMDkzZDgzM2M0
ZTNhZjAwMzRjMjhlZjk0ZmYxOTZmODM5YWRhNDAyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaApAQCAtOTMsNiArOTMsNyBAQCBlbnVtIGNs
YXNzIFZlcnRleEZvcm1hdCA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFZlcnRleFN0ZXBNb2RlIDog
dWludDhfdDsKIAogY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQgOiBwdWJsaWMgUmVmQ291
bnRlZDxDb252ZXJ0VG9CYWNraW5nQ29udGV4dD4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KCkgPSBk
ZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dl
YkdQVS9JbXBsL1dlYkdQVURldmljZUltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3Jh
cGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNlSW1wbC5oCmluZGV4IDYyNDkzNmJlOTcyNGEy
ZmNjMmFjZDk5MGQxM2QyMDM5ZGY0OGNjNWEuLjEzOGM1ZmIwYzNjMTExMDY1MzhjYTUxMTM5MGIx
OTgxYjc4NTU0ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3Mv
V2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNlSW1wbC5oCkBAIC0zNiw2ICszNiw3
IEBAIG5hbWVzcGFjZSBQQUw6OldlYkdQVSB7CiBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4
dDsKIAogY2xhc3MgRGV2aWNlSW1wbCBmaW5hbCA6IHB1YmxpYyBEZXZpY2UgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8RGV2aWNlSW1wbD4g
Y3JlYXRlKFdHUFVEZXZpY2UgZGV2aWNlLCBSZWY8U3VwcG9ydGVkRmVhdHVyZXM+JiYgZmVhdHVy
ZXMsIFJlZjxTdXBwb3J0ZWRMaW1pdHM+JiYgbGltaXRzLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4
dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEb3duY2FzdENvbnZlcnRU
b0JhY2tpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQ
VS9JbXBsL1dlYkdQVURvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQuaAppbmRleCBiZDBm
Y2ExNjJlMWFlOTA1MTFlM2RmYjZmNWUzY2ZjN2MzMTQyMDU2Li4zOWM5NDE2Y2ExYmYzNWI0ZTM2
MjE4ZmI3NjkxNzg2NjQ4MDM4NGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVURvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dl
YkdQVURvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQuaApAQCAtMzIsNiArMzIsNyBAQAog
bmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIAogY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5n
Q29udGV4dCBmaW5hbCA6IHB1YmxpYyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxEb3duY2FzdENv
bnZlcnRUb0JhY2tpbmdDb250ZXh0PiBjcmVhdGUoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRXh0ZXJuYWxUZXh0
dXJlSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9X
ZWJHUFVFeHRlcm5hbFRleHR1cmVJbXBsLmgKaW5kZXggMmFhYzk3ZWFjNTk1YTQ2ZWE4OWY0MTk0
NzBlOGYyNjJlZjU0YTE2MS4uZDBhZDE2MmU2Yzk1ODM1Y2I5ZGZmNDdjOGRiMTM0YmRkMWQxZjMz
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1w
bC9XZWJHUFVFeHRlcm5hbFRleHR1cmVJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVFeHRlcm5hbFRleHR1cmVJbXBsLmgKQEAgLTM1
LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tp
bmdDb250ZXh0OwogCiBjbGFzcyBFeHRlcm5hbFRleHR1cmVJbXBsIGZpbmFsIDogcHVibGljIEV4
dGVybmFsVGV4dHVyZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlZjxFeHRlcm5hbFRleHR1cmVJbXBsPiBjcmVhdGUoQ29udmVydFRvQmFja2lu
Z0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVSW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUltcGwu
Y3BwCmluZGV4IDhjYzQ1ZjBjYjExNjkxNTA2MWU5NDJiNTFjZmZiMDkxOWM3NzQwZWUuLjU4MWQ5
MjgwMTcyOGM3MjQzMmU3MGI0M2RiYjFjYjk3NTBkOWYzZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVSW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVJbXBsLmNw
cApAQCAtMjksMTEgKzI5LDI5IEBACiAjaWYgSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCiAK
ICNpbmNsdWRlICJXZWJHUFVBZGFwdGVySW1wbC5oIgotI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRU
b0JhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVRG93bmNhc3RDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPFdlYkdQVS9XZWJHUFVFeHQuaD4KIAorI2lmIFBMQVRG
T1JNKENPQ09BKQorI2luY2x1ZGUgPHd0Zi9kYXJ3aW4vV2Vha0xpbmtpbmcuaD4KKworV1RGX1dF
QUtfTElOS19GT1JDRV9JTVBPUlQod2dwdUNyZWF0ZUluc3RhbmNlKTsKKyNlbmRpZgorCiBuYW1l
c3BhY2UgUEFMOjpXZWJHUFUgewogCitSZWZQdHI8R1BVSW1wbD4gR1BVSW1wbDo6Y3JlYXRlKCkK
K3sKKyAgICBXR1BVSW5zdGFuY2VEZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSB7IG51bGxwdHIgfTsK
KyAgICBpZiAoISZ3Z3B1Q3JlYXRlSW5zdGFuY2UpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIGF1dG8gaW5zdGFuY2UgPSB3Z3B1Q3JlYXRlSW5zdGFuY2UoJmRlc2NyaXB0b3IpOworICAg
IGlmICghaW5zdGFuY2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8gY29udmVy
dFRvQmFja2luZ0NvbnRleHQgPSBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OjpjcmVh
dGUoKTsKKyAgICByZXR1cm4gY3JlYXRlKGluc3RhbmNlLCBjb252ZXJ0VG9CYWNraW5nQ29udGV4
dCk7Cit9CisKIEdQVUltcGw6OkdQVUltcGwoV0dQVUluc3RhbmNlIGluc3RhbmNlLCBDb252ZXJ0
VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCiAgICAgOiBtX2JhY2tp
bmcoaW5zdGFuY2UpCiAgICAgLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KGNvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGlj
cy9XZWJHUFUvSW1wbC9XZWJHUFVJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBo
aWNzL1dlYkdQVS9JbXBsL1dlYkdQVUltcGwuaAppbmRleCBjNzM1YTI0ZTBmY2E2NDFlNDk0OTJk
YjVlNTY2ODc4YzM5M2ZhNzEyLi5kNTUyM2VjY2JlMzRjMDg2MmNlZDE1YTZmMGM0MDFkOGI4MTc1
NTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9J
bXBsL1dlYkdQVUltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dl
YkdQVS9JbXBsL1dlYkdQVUltcGwuaApAQCAtMzYsNyArMzYsMTAgQEAgbmFtZXNwYWNlIFBBTDo6
V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBHUFVJbXBs
IGZpbmFsIDogcHVibGljIEdQVSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CisgICAgUEFMX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEdQVUltcGw+IGNyZWF0ZSgpOworCiAg
ICAgc3RhdGljIFJlZjxHUFVJbXBsPiBjcmVhdGUoV0dQVUluc3RhbmNlIGluc3RhbmNlLCBDb252
ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCiAgICAgewogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHUFVJbXBsKGluc3RhbmNlLCBjb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGlj
cy9XZWJHUFUvSW1wbC9XZWJHUFVQaXBlbGluZUxheW91dEltcGwuaCBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUGlwZWxpbmVMYXlvdXRJbXBsLmgK
aW5kZXggMDA5YzJiNWM4MTQxOTdhZjBkYjZlZGUwYjI4NWNmNjFhZWU4NDU5Ni4uZTYyZTk1Y2E5
N2NjODgwYWE0YzJiMWIyNTMwODg1MWU3ZWY1ZDIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVQaXBlbGluZUxheW91dEltcGwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQ
VVBpcGVsaW5lTGF5b3V0SW1wbC5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBQQUw6Oldl
YkdQVSB7CiBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUGlwZWxpbmVM
YXlvdXRJbXBsIGZpbmFsIDogcHVibGljIFBpcGVsaW5lTGF5b3V0IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFBpcGVsaW5lTGF5b3V0SW1w
bD4gY3JlYXRlKFdHUFVQaXBlbGluZUxheW91dCBwaXBlbGluZUxheW91dCwgQ29udmVydFRvQmFj
a2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUXVlcnlT
ZXRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dl
YkdQVVF1ZXJ5U2V0SW1wbC5oCmluZGV4IDg5OWFhNzMxYjYwYTU1YTk3OWFkZGNlZWE1NzlhYmIx
MGY1Yjk1NGMuLjVkODliNzZiMmYyMzkxOGNjZjQ1ODMwZWQ0NjAwNGMyYjczMmVlMGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BV
UXVlcnlTZXRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJH
UFUvSW1wbC9XZWJHUFVRdWVyeVNldEltcGwuaApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2Ug
UEFMOjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFF1
ZXJ5U2V0SW1wbCBmaW5hbCA6IHB1YmxpYyBRdWVyeVNldCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxRdWVyeVNldEltcGw+IGNyZWF0ZShX
R1BVUXVlcnlTZXQgcXVlcnlTZXQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9C
YWNraW5nQ29udGV4dCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVF1ZXVlSW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVRdWV1ZUltcGwuaAppbmRleCBkZDkx
ZjhjMWE3MzJjZTFjNGUwNmE5Mzc5MDU5YmFmNjk2ZjBlMDc0Li45N2JhZjBhMjQ5OWZkOWI0M2Vi
MGVlMmZlNzdjZWUzNTlkMDgzMzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVF1ZXVlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUXVldWVJbXBsLmgKQEAgLTM2
LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tp
bmdDb250ZXh0OwogCiBjbGFzcyBRdWV1ZUltcGwgZmluYWwgOiBwdWJsaWMgUXVldWUgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UXVldWVJ
bXBsPiBjcmVhdGUoV0dQVVF1ZXVlIHF1ZXVlLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29u
dmVydFRvQmFja2luZ0NvbnRleHQpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJCdW5kbGVFbmNvZGVySW1w
bC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVS
ZW5kZXJCdW5kbGVFbmNvZGVySW1wbC5oCmluZGV4IDMxN2QxYzRmZjg4NmRlMTc1Mjc3ZjI1ODJm
OWZmNThjYjFiNDFlOWQuLjc3ZjRiNGQwYzE0NmU1YmZkZjhmN2U5MDJlMjgyYjAwMDc3YWIzNDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVUmVuZGVyQnVuZGxlRW5jb2RlckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlckJ1bmRsZUVuY29kZXJJbXBsLmgK
QEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRU
b0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBSZW5kZXJCdW5kbGVFbmNvZGVySW1wbCBmaW5hbCA6
IHB1YmxpYyBSZW5kZXJCdW5kbGVFbmNvZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlbmRlckJ1bmRsZUVuY29kZXJJbXBsPiBjcmVh
dGUoV0dQVVJlbmRlckJ1bmRsZUVuY29kZXIgcmVuZGVyQnVuZGxlRW5jb2RlciwgQ29udmVydFRv
QmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQogICAgIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUmVu
ZGVyQnVuZGxlSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUv
SW1wbC9XZWJHUFVSZW5kZXJCdW5kbGVJbXBsLmgKaW5kZXggZDI2NjVmMTliNzE5OTNkZGEwYzU0
MzM1NTkxNDE1YmMzYTQ2MjE1OS4uZmNlYjkyYmE3NjgyM2NiMTI2NDUxNjU2MDgzZTkwMTIxZjE5
MzVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUv
SW1wbC9XZWJHUFVSZW5kZXJCdW5kbGVJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJCdW5kbGVJbXBsLmgKQEAgLTM1LDYg
KzM1LDcgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdD
b250ZXh0OwogCiBjbGFzcyBSZW5kZXJCdW5kbGVJbXBsIGZpbmFsIDogcHVibGljIFJlbmRlckJ1
bmRsZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFJlZjxSZW5kZXJCdW5kbGVJbXBsPiBjcmVhdGUoV0dQVVJlbmRlckJ1bmRsZSByZW5kZXJCdW5k
bGUsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9J
bXBsL1dlYkdQVVJlbmRlclBhc3NFbmNvZGVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJQYXNzRW5jb2RlckltcGwuaAppbmRl
eCA5YzRlMTAxNmU0YjU3YjE4YTgzNjM2MWI0NTI0ZDUwOTU4YzlkOWE3Li4zZWU5MDcxNDU4Mjk3
ZWJhOWU3MDk4MTdhNjIyOGJmMmUyZWVjZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlclBhc3NFbmNvZGVySW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BV
UmVuZGVyUGFzc0VuY29kZXJJbXBsLmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFBBTDo6
V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBSZW5kZXJQ
YXNzRW5jb2RlckltcGwgZmluYWwgOiBwdWJsaWMgUmVuZGVyUGFzc0VuY29kZXIgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UmVuZGVyUGFz
c0VuY29kZXJJbXBsPiBjcmVhdGUoV0dQVVJlbmRlclBhc3NFbmNvZGVyIHJlbmRlclBhc3NFbmNv
ZGVyLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCiAg
ICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUv
SW1wbC9XZWJHUFVSZW5kZXJQaXBlbGluZUltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Z3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUmVuZGVyUGlwZWxpbmVJbXBsLmgKaW5kZXggNGYz
ZmJmODliMzkxNjg4NmM0ODk3MTQ5MmVmZWQwNjE1MGRmOTZmZi4uNWM3NmVkZTExNGYxMTJhM2Jj
NzgyNDRlMzU3MWM4OGIxNzE1NzQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJQaXBlbGluZUltcGwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlclBp
cGVsaW5lSW1wbC5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBQQUw6OldlYkdQVSB7CiBj
bGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUmVuZGVyUGlwZWxpbmVJbXBs
IGZpbmFsIDogcHVibGljIFJlbmRlclBpcGVsaW5lIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlbmRlclBpcGVsaW5lSW1wbD4gY3JlYXRl
KFdHUFVSZW5kZXJQaXBlbGluZSByZW5kZXJQaXBlbGluZSwgQ29udmVydFRvQmFja2luZ0NvbnRl
eHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVU2FtcGxlckltcGwuaCBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVU2FtcGxl
ckltcGwuaAppbmRleCBhZjQzNmNjMDZmNmYwNjAxMGQ5YzgyY2YxMThlNjJhNDBjMTM4MDlhLi4y
MzkxMDAzZmNmOWUzMTk3YzNhMjU0NDY1NDRkMmI2ZGI5NDkyYTM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVNhbXBsZXJJbXBs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJH
UFVTYW1wbGVySW1wbC5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBQQUw6OldlYkdQVSB7
CiBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgU2FtcGxlckltcGwgZmlu
YWwgOiBwdWJsaWMgU2FtcGxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxTYW1wbGVySW1wbD4gY3JlYXRlKFdHUFVTYW1wbGVyIHNhbXBs
ZXIsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9J
bXBsL1dlYkdQVVNoYWRlck1vZHVsZUltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3Jh
cGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVU2hhZGVyTW9kdWxlSW1wbC5oCmluZGV4IDIwMTU2ZGVj
NmExYzg2OWM2ODFiNzVkYjA4NWMyMWVmNmI1ZmE2NjQuLjM0YmUxZmU0NGJmYTgxYmQ2OWE1YmFm
NTBjMWViNmE1ZDQyZGRlMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3Jh
cGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVU2hhZGVyTW9kdWxlSW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVU2hhZGVyTW9kdWxlSW1w
bC5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBQQUw6OldlYkdQVSB7CiBjbGFzcyBDb252
ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgU2hhZGVyTW9kdWxlSW1wbCBmaW5hbCA6IHB1
YmxpYyBTaGFkZXJNb2R1bGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIHN0YXRpYyBSZWY8U2hhZGVyTW9kdWxlSW1wbD4gY3JlYXRlKFdHUFVTaGFkZXJNb2R1
bGUgc2hhZGVyTW9kdWxlLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2lu
Z0NvbnRleHQpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFw
aGljcy9XZWJHUFUvSW1wbC9XZWJHUFVUZXh0dXJlSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVUZXh0dXJlSW1wbC5oCmluZGV4IDMzODNl
YTEzNjk0Y2M5ZjA3OTQ1MzBlMDhiMGIyYzI0YTU2Y2Q4YTAuLmY5YWYzNDEwNTFhMjMwNzUyZmJh
NWJlM2UwMTZmYmJhMjNjOTY4MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Z3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVVGV4dHVyZUltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVRleHR1cmVJbXBsLmgKQEAg
LTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0OwogCiBjbGFzcyBUZXh0dXJlSW1wbCBmaW5hbCA6IHB1YmxpYyBUZXh0dXJl
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVm
PFRleHR1cmVJbXBsPiBjcmVhdGUoV0dQVVRleHR1cmUgdGV4dHVyZSwgVGV4dHVyZUZvcm1hdCBm
b3JtYXQsIFRleHR1cmVEaW1lbnNpb24gZGltZW5zaW9uLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4
dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVUZXh0dXJlVmlld0ltcGwu
aCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVVGV4
dHVyZVZpZXdJbXBsLmgKaW5kZXggNmQ4NTY4MzA4N2RhNjE3ZTE2M2ViODVjZjM1ZTgxNjY4YzVl
ZmM1Ni4uNDg4MmE0MGE1YzBjZmEwYTI4NDE1YTgxNTg3YjNkMTAyYWU3NmEwOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVUZXh0
dXJlVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQ
VS9JbXBsL1dlYkdQVVRleHR1cmVWaWV3SW1wbC5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFj
ZSBQQUw6OldlYkdQVSB7CiBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3Mg
VGV4dHVyZVZpZXdJbXBsIGZpbmFsIDogcHVibGljIFRleHR1cmVWaWV3IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFRleHR1cmVWaWV3SW1w
bD4gY3JlYXRlKFdHUFVUZXh0dXJlVmlldyB0ZXh0dXJlVmlldywgQ29udmVydFRvQmFja2luZ0Nv
bnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNw
cAppbmRleCBjMTNmNmNmOWQ2ZTE3ODdlYTYwNTg5ZmU0NmEyZTE3N2Q5Mzc0ODFkLi4yMmIwMGRk
OTRkYWZhZjI1NTE4ODk5OTk2NmYxZjNiZmYzNDAwNDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3Bw
CkBAIC01NDYsNiArNTQ2LDExIEBAIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gQ2hyb21lOjpj
cmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHCiB9CiAjZW5kaWYK
IAorUmVmUHRyPFBBTDo6V2ViR1BVOjpHUFU+IENocm9tZTo6Y3JlYXRlR1BVRm9yV2ViR1BVKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9jbGllbnQuY3JlYXRlR1BVRm9yV2ViR1BVKCk7Cit9CisK
IFBsYXRmb3JtRGlzcGxheUlEIENocm9tZTo6ZGlzcGxheUlEKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV9wYWdlLmRpc3BsYXlJRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9D
aHJvbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKaW5kZXggMzcyMTgyZmVjNjIw
ZmVkOWRmZTczZGE4OTIyNDZhZjkxM2M1NTMzZS4uMTI0MzljMTBjYzNmYzI2Mjg0OWM3NzhmZWE2
OTZlOGZkNDI5MzU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCkBAIC0zMiw2ICszMiwxMCBAQAogT0JK
Q19DTEFTUyBOU1ZpZXc7CiAjZW5kaWYKIAorbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKK2NsYXNz
IEdQVTsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDaHJvbWVDbGllbnQ7CkBA
IC05MSw2ICs5NSw4IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNy
ZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYp
IGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCiAKKyAgICBSZWZQdHI8UEFMOjpXZWJHUFU6OkdQVT4g
Y3JlYXRlR1BVRm9yV2ViR1BVKCkgY29uc3Q7CisKICAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNw
bGF5SUQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHdpbmRvd1NjcmVlbkRpZENoYW5nZShQ
bGF0Zm9ybURpc3BsYXlJRCwgc3RkOjpvcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+KSBvdmVycmlk
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggZjIzOTE0NTcwNmQwYjE5MDU0
MTBhZDhlNjZjZmU5OTAwY2RjNzZlZS4uZjExNjQzOTBiMzhhZjgxMzA5MjdiNWYzMzFlMzNiMGY4
MWE5NDBmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC01Miw2ICs1Miw3IEBA
CiAjaW5jbHVkZSAiU2VhcmNoUG9wdXBNZW51LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUtleWJvYXJk
VUlNb2RlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29sZVR5cGVzLmg+CisjaW5j
bHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFUuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0
aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CkBAIC0zNTYsNiArMzU3LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgUmVm
UHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCkgY29u
c3QgeyByZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlmCiAKKyAgICB2aXJ0dWFsIFJlZlB0cjxQQUw6
OldlYkdQVTo6R1BVPiBjcmVhdGVHUFVGb3JXZWJHUFUoKSBjb25zdCB7IHJldHVybiBudWxscHRy
OyB9CisKICAgICAvLyBQYXNzIG51bGxwdHIgYXMgdGhlIEdyYXBoaWNzTGF5ZXIgdG8gZGV0YXRj
aCB0aGUgcm9vdCBsYXllci4KICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoUm9vdEdyYXBoaWNzTGF5
ZXIoRnJhbWUmLCBHcmFwaGljc0xheWVyKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hW
aWV3T3ZlcmxheUdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllciopID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
TmF2aWdhdG9yLmNwcAppbmRleCA2ZjE5YjJlYjNiZTQ3OTg2NWU1YzU0NGVkMDQ1Y2U0N2M0ZmQx
M2JjLi5mNWJkNGIwYTZlZjJiNTBlN2QyNGZjOTFkZGM3NzAwZjllMjAzOWNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9OYXZpZ2F0b3IuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIK
ICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50Lmgi
CisjaW5jbHVkZSAiR1BVLmgiCiAjaW5jbHVkZSAiR2VvbG9jYXRpb24uaCIKICNpbmNsdWRlICJK
U0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCkBAIC0z
NDcsNCArMzQ4LDI0IEBAIHZvaWQgTmF2aWdhdG9yOjpnZXRTdG9yYWdlVXBkYXRlcygpCiB7CiB9
CiAKK0dQVSogTmF2aWdhdG9yOjpncHUoKQoreworICAgIGlmICghbV9ncHVGb3JXZWJHUFUpIHsK
KyAgICAgICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgICAgICBpZiAoIWZyYW1l
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGF1dG8qIHBhZ2UgPSBmcmFt
ZS0+cGFnZSgpOworICAgICAgICBpZiAoIXBhZ2UpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgYXV0byBncHUgPSBwYWdlLT5jaHJvbWUoKS5jcmVhdGVHUFVGb3JXZWJHUFUo
KTsKKyAgICAgICAgaWYgKCFncHUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
ICAgICBtX2dwdUZvcldlYkdQVSA9IEdQVTo6Y3JlYXRlKCk7CisgICAgICAgIG1fZ3B1Rm9yV2Vi
R1BVLT5zZXRCYWNraW5nKCpncHUpOworICAgIH0KKworICAgIHJldHVybiBtX2dwdUZvcldlYkdQ
VS5nZXQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9y
LmgKaW5kZXggYmRkMDQ2NDdiZDI4N2I2NjZmNmRhNzM1MTBlNWQzZDJhN2Y1MWZkOC4uYmFjNDli
MzQxMWJkYzhjNmNlZGI1ODJiMzliNjk0MzRhMGQ5NDQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRv
ci5oCkBAIC02NCw2ICs2NCw4IEBAIHB1YmxpYzoKICAgICBpbnQgbWF4VG91Y2hQb2ludHMoKSBj
b25zdCB7IHJldHVybiAwOyB9CiAjZW5kaWYKIAorICAgIEdQVSogZ3B1KCk7CisKIHByaXZhdGU6
CiAgICAgdm9pZCBzaG93U2hhcmVEYXRhKEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRV
UkwmPiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAgICAgZXhwbGljaXQgTmF2aWdhdG9yKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBET01XaW5kb3cmKTsKQEAgLTc2LDUgKzc4LDYgQEAgcHJp
dmF0ZToKICAgICBtdXRhYmxlIFJlZlB0cjxET01NaW1lVHlwZUFycmF5PiBtX21pbWVUeXBlczsK
ICAgICBtdXRhYmxlIFN0cmluZyBtX3VzZXJBZ2VudDsKICAgICBtdXRhYmxlIFN0cmluZyBtX3Bs
YXRmb3JtOworICAgIFJlZlB0cjxHUFU+IG1fZ3B1Rm9yV2ViR1BVOwogfTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yQmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9OYXZpZ2F0b3JCYXNlLmgKaW5kZXggYjUxMjJhNGJkYWUzMDY5YWViMzdmZGFiYzFhNmQ2
NjRhMmM0NmNlZS4uZDVjYjU2ZTMzN2FhNGE0ZDRhYTI2NGFlYTcyZjFjNjQ3YWRjY2EwYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmgKQEAgLTYzLDcgKzYzLDYgQEAgcHVibGljOgog
CiAgICAgU3RvcmFnZU1hbmFnZXImIHN0b3JhZ2UoKTsKICAgICBXZWJMb2NrTWFuYWdlciYgbG9j
a3MoKTsKLSAgICBHUFUmIGdwdSgpIHsgcmV0dXJuICptX2dwdUZvcldlYkdQVTsgfTsKIAogcHJv
dGVjdGVkOgogICAgIGV4cGxpY2l0IE5hdmlnYXRvckJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCopOwpAQCAtNzEsNyArNzAsNiBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIFJlZlB0cjxT
dG9yYWdlTWFuYWdlcj4gbV9zdG9yYWdlTWFuYWdlcjsKICAgICBSZWZQdHI8V2ViTG9ja01hbmFn
ZXI+IG1fd2ViTG9ja01hbmFnZXI7Ci0gICAgUmVmUHRyPEdQVT4gbV9ncHVGb3JXZWJHUFU7CiAK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1dvcmtlck5hdmlnYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dv
cmtlck5hdmlnYXRvci5jcHAKaW5kZXggNTVkZTAwNGIwMDA0NGRkM2RhZDM0NTI3NzM0ODBjZjhh
ZTFhZTQ1Ny4uMDA0MTI0ZmRiYjJmN2VjZDVkODE3NTMyMDVkOGU1YzQ1OTljYzUxYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Xb3JrZXJOYXZpZ2F0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvV29ya2VyTmF2aWdhdG9yLmNwcApAQCAtMjcsNiArMjcsOCBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldvcmtlck5hdmlnYXRvci5oIgogCisjaW5jbHVk
ZSAiR1BVLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV29ya2VyTmF2aWdhdG9yOjpXb3Jr
ZXJOYXZpZ2F0b3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5n
JiB1c2VyQWdlbnQsIGJvb2wgaXNPbmxpbmUpCkBAIC00Niw0ICs0OCwxNCBAQCBib29sIFdvcmtl
ck5hdmlnYXRvcjo6b25MaW5lKCkgY29uc3QKICAgICByZXR1cm4gbV9pc09ubGluZTsKIH0KIAor
R1BVKiBXb3JrZXJOYXZpZ2F0b3I6OmdwdSgpCit7CisgICAgaWYgKCFtX2dwdUZvcldlYkdQVSkg
eworICAgICAgICAvLyBGSVhNRTogU3RhcnQgdGhlIHByb2Nlc3Mgb2Ygc2V0dGluZyB0aGUgYmFj
a2luZy4KKyAgICAgICAgbV9ncHVGb3JXZWJHUFUgPSBHUFU6OmNyZWF0ZSgpOworICAgIH0KKwor
ICAgIHJldHVybiBtX2dwdUZvcldlYkdQVS5nZXQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Xb3JrZXJOYXZpZ2F0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvV29ya2VyTmF2aWdhdG9yLmgKaW5kZXggNDVlY2Y2NmM3ZDIw
YzgyYmQ1MmNmNTVkMWZiOTRhOGMzMmI0YjQ1MC4uYzU3YmZmNGFlOTg0MWI1ZTU5ZTE2NWM4Njlh
MzVmYzBhZDc1NjFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Xb3JrZXJOYXZp
Z2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dvcmtlck5hdmlnYXRvci5oCkBAIC0z
OSwxMSArMzksMTQgQEAgcHVibGljOgogICAgIGJvb2wgb25MaW5lKCkgY29uc3QgZmluYWw7CiAg
ICAgdm9pZCBzZXRJc09ubGluZShib29sIGlzT25saW5lKSB7IG1faXNPbmxpbmUgPSBpc09ubGlu
ZTsgfQogCisgICAgR1BVKiBncHUoKTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXb3JrZXJO
YXZpZ2F0b3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYsIGJvb2wgaXNP
bmxpbmUpOwogCiAgICAgU3RyaW5nIG1fdXNlckFnZW50OwogICAgIGJvb2wgbV9pc09ubGluZTsK
KyAgICBSZWZQdHI8R1BVPiBtX2dwdUZvcldlYkdQVTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIubW0gYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9BZGFwdGVyLm1tCmluZGV4IGZkODBkOGQxZGE0ZDVkYTVhMjQzOTFj
N2YxZjE0YjlmYjg5ODRlMDEuLjM5YmMzNTM0OGM3M2RhY2I2M2VmZTg4OTdjMjE0MGU1MjVhNjYz
YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIubW0KKysrIGIvU291
cmNlL1dlYkdQVS9XZWJHUFUvQWRhcHRlci5tbQpAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2Ug
V2ViR1BVIHsKIGJvb2wgQWRhcHRlcjo6Z2V0TGltaXRzKFdHUFVTdXBwb3J0ZWRMaW1pdHMqIGxp
bWl0cykKIHsKICAgICBVTlVTRURfUEFSQU0obGltaXRzKTsKLSAgICByZXR1cm4gZmFsc2U7Cisg
ICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgQWRhcHRlcjo6Z2V0UHJvcGVydGllcyhXR1BVQWRh
cHRlclByb3BlcnRpZXMqIHByb3BlcnRpZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9JbnN0YW5jZS5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0luc3RhbmNlLm1tCmluZGV4
IDRjODZjNmUyNGYzOGQ1MGQ3MTFiZjc2ODJkMWM0N2RmMGIwOWY0MWQuLjEzNmE5YzcwY2M2NmU2
NzU5OTExNDEyODQxZDI0ZTE1OGUyNmVlYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0luc3RhbmNlLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0luc3RhbmNlLm1tCkBA
IC00Niw4ICs0Niw5IEBAIHZvaWQgSW5zdGFuY2U6OnByb2Nlc3NFdmVudHMoKQogCiB2b2lkIElu
c3RhbmNlOjpyZXF1ZXN0QWRhcHRlcihjb25zdCBXR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zKiBv
cHRpb25zLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoV0dQVVJlcXVlc3RBZGFwdGVyU3RhdHVzLCBBZGFw
dGVyJiYsIGNvbnN0IGNoYXIqKT4mJiBjYWxsYmFjaykKIHsKKyAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IHRoaXMgcHJvcGVybHkuCiAgICAgVU5VU0VEX1BBUkFNKG9wdGlvbnMpOwotICAgIFVOVVNF
RF9QQVJBTShjYWxsYmFjayk7CisgICAgY2FsbGJhY2soV0dQVVJlcXVlc3RBZGFwdGVyU3RhdHVz
X1VuYXZhaWxhYmxlLCB7IH0sICJBZGFwdGVyIik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkdQ
VQpAQCAtNjAsNyArNjEsNyBAQCB2b2lkIHdncHVJbnN0YW5jZVJlbGVhc2UoV0dQVUluc3RhbmNl
IGluc3RhbmNlKQogV0dQVUluc3RhbmNlIHdncHVDcmVhdGVJbnN0YW5jZShjb25zdCBXR1BVSW5z
dGFuY2VEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQogewogICAgIFVOVVNFRF9QQVJBTShkZXNjcmlw
dG9yKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbmV3IFdHUFVJbnN0YW5jZUlt
cGw7CiB9CiAKIFdHUFVQcm9jIHdncHVHZXRQcm9jQWRkcmVzcyhXR1BVRGV2aWNlIGRldmljZSwg
Y29uc3QgY2hhciogcHJvY05hbWUpCkBAIC0zODAsNyArMzgxLDcgQEAgdm9pZCB3Z3B1SW5zdGFu
Y2VQcm9jZXNzRXZlbnRzKFdHUFVJbnN0YW5jZSBpbnN0YW5jZSkKIAogdm9pZCB3Z3B1SW5zdGFu
Y2VSZXF1ZXN0QWRhcHRlcihXR1BVSW5zdGFuY2UgaW5zdGFuY2UsIGNvbnN0IFdHUFVSZXF1ZXN0
QWRhcHRlck9wdGlvbnMqIG9wdGlvbnMsIFdHUFVSZXF1ZXN0QWRhcHRlckNhbGxiYWNrIGNhbGxi
YWNrLCB2b2lkKiB1c2VyZGF0YSkKIHsKLSAgICByZXR1cm4gaW5zdGFuY2UtPmluc3RhbmNlLnJl
cXVlc3RBZGFwdGVyKG9wdGlvbnMsIFtjYWxsYmFjaywgdXNlcmRhdGFdIChXR1BVUmVxdWVzdEFk
YXB0ZXJTdGF0dXMgc3RhdHVzLCBXZWJHUFU6OkFkYXB0ZXImJiBhZGFwdGVyLCBjb25zdCBjaGFy
KiBtZXNzYWdlKSB7CisgICAgaW5zdGFuY2UtPmluc3RhbmNlLnJlcXVlc3RBZGFwdGVyKG9wdGlv
bnMsIFtjYWxsYmFjaywgdXNlcmRhdGFdIChXR1BVUmVxdWVzdEFkYXB0ZXJTdGF0dXMgc3RhdHVz
LCBXZWJHUFU6OkFkYXB0ZXImJiBhZGFwdGVyLCBjb25zdCBjaGFyKiBtZXNzYWdlKSB7CiAgICAg
ICAgIGNhbGxiYWNrKHN0YXR1cywgbmV3IFdHUFVBZGFwdGVySW1wbCB7IFdURk1vdmUoYWRhcHRl
cikgfSwgbWVzc2FnZSwgdXNlcmRhdGEpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5k
ZXggYzMyOTc0YTg0YjJhNjY5NDA3MzhmMGQ0ZjNjMmJmOWU2MTBiYzAyYi4uODJhYTVmMjJkZDcy
MGMxOTE4NDZhOTQyYTM5MTRjYmZlYWM4NmM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC05Miw2
ICs5Miw3IEBAIHNldChXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVF9E
SVJ9L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24iCiAgICAgIiR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vz
cy9HUFUiCiAgICAgIiR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MiCisgICAg
IiR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVIgogICAgICIke1dF
QktJVF9ESVJ9L1dlYlByb2Nlc3MvR1BVL21lZGlhIgogICAgICIke1dFQktJVF9ESVJ9L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0YyIKICAgICAiJHtXRUJLSVRfRElSfS9XZWJQcm9jZXNzL0ljb25EYXRh
YmFzZSIKQEAgLTI2MSw2ICsyNjIsOCBAQCBzZXQoV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAg
ICAgV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eQog
ICAgIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eQog
CisgICAgV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5CisKICAg
ICBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVuZXIKICAgICBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUKICAgICBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9NZWRpYVNvdXJjZVByaXZhdGVSZW1vdGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ29uZmlndXJhdGlvbnMvQmFzZVRhcmdldC54Y2NvbmZpZyBiL1NvdXJjZS9XZWJL
aXQvQ29uZmlndXJhdGlvbnMvQmFzZVRhcmdldC54Y2NvbmZpZwppbmRleCAyMDIxNTg1YmIwYzRh
ZWFjZTE3MWFiMmViOTdlM2UxZTZiZjBiNzk1Li4zYjFjMmMzNjE5Mjg1M2QzN2I5MDgxMzdhZmNh
OGRiZGY2MDVkMjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL0Jh
c2VUYXJnZXQueGNjb25maWcKKysrIGIvU291cmNlL1dlYktpdC9Db25maWd1cmF0aW9ucy9CYXNl
VGFyZ2V0LnhjY29uZmlnCkBAIC00Nyw3ICs0Nyw3IEBAIEdDQ19QUkVQUk9DRVNTT1JfREVGSU5J
VElPTlMgPSAkKERFQlVHX0RFRklORVMpICQoV0tfRU5BQkxFX0VYUEVSSU1FTlRBTF9GRUFUVVJF
CiBXRUJLSVRBRERJVElPTlNfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICQoQlVJTFRfUFJPRFVDVFNf
RElSKS91c3IvbG9jYWwvaW5jbHVkZS9XZWJLaXRBZGRpdGlvbnMgJChTREtST09UKS91c3IvbG9j
YWwvaW5jbHVkZS9XZWJLaXRBZGRpdGlvbnM7CiBMSUJXRUJSVENfSEVBREVSX1NFQVJDSF9QQVRI
UyA9ICQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5jbHVkZS93ZWJydGMgJChTREtS
T09UKS91c3IvbG9jYWwvaW5jbHVkZS93ZWJydGM7CiAKLUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvdXNyL2xvY2FsL2luY2x1ZGUgIiQoV0VCQ09SRV9QUklWQVRF
X0hFQURFUlNfRElSKS9Gb3J3YXJkaW5nSGVhZGVycyIgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIgJChXRUJLSVRBRERJVElPTlNfSEVBREVSX1NFQVJDSF9QQVRI
UykgJChMSUJXRUJSVENfSEVBREVSX1NFQVJDSF9QQVRIUykgJChTUkNST09UKSAkKEhFQURFUl9T
RUFSQ0hfUEFUSFMpOworSEVBREVSX1NFQVJDSF9QQVRIUyA9ICQoQlVJTFRfUFJPRFVDVFNfRElS
KS91c3IvbG9jYWwvaW5jbHVkZSAiJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0Zvcndh
cmRpbmdIZWFkZXJzIiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
MiAiJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRlL3BhbC9ncmFwaGljcy9X
ZWJHUFUiICQoV0VCS0lUQURESVRJT05TX0hFQURFUl9TRUFSQ0hfUEFUSFMpICQoTElCV0VCUlRD
X0hFQURFUl9TRUFSQ0hfUEFUSFMpICQoU1JDUk9PVCkgJChIRUFERVJfU0VBUkNIX1BBVEhTKTsK
IAogT1RIRVJfQ0ZMQUdTID0gJChpbmhlcml0ZWQpIC1pZnJhbWV3b3JrICQoU0RLUk9PVCkkKFNZ
U1RFTV9MSUJSQVJZX0RJUikvUHJpdmF0ZUZyYW1ld29ya3M7CiBPVEhFUl9DUExVU1BMVVNGTEFH
UyA9ICQoT1RIRVJfQ0ZMQUdTKSAtaXN5c3RlbSAkKFNES1JPT1QpL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvU3lzdGVtLmZyYW1ld29yay9Qcml2YXRlSGVhZGVyczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCA3OTlhZDc1YjJhMWFiMjEw
ZDA4MWQ1OWZkNWI0YjAyZDhiNmRhZWI0Li5hNzg5N2I5NjFhMzlkYWY5MjdjNTRkMTJlZmEzYzg5
NzE0OTdiMDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0CkBAIC0xNzQsNiArMTc0LDcgQEAgJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9GdWxs
U2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9X
ZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNU
X0RJUikvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVUHJveHkubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFT
b3VyY2VQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVuZXIubWVzc2FnZXMuaW4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9T
b3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IGE2NWZj
MzYxODRjZmY4Zjc3NTJkNjg1Mjc5ODYxNTRiNmFmODAxYzQuLjkzYTYxNDZkNmIxMzljYjhhMTZh
MTcxYmI3N2Q0NGJkM2I1OGI2NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNl
cy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMjQyLDYgKzI0Miw5IEBAICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUV4dGVybmFsVGV4dHVyZU1lc3NhZ2Vz
UmVwbGllCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1v
dGVHUFVNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9SZW1vdGVHUFVNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHUFVNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlR1BVUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9SZW1vdGVHUFVQcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdQVVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTE1lc3NhZ2VzUmVwbGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZGRl
NWM2M2ZlM2Y0YjMxNTI5N2RiNGI2ODQ4OWMyOWRlNWJiYTQ1Yy4uNDU3NDM4NjVhNGFjODMyZDNl
NWRiZDRhZmQ0MzhiZDc1MzJjZDkyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVk
U291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAt
MTg2LDYgKzE4Niw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVdlYlByb2Nlc3MvR1BVL0dQ
VVByb2Nlc3NDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkgXAogCVdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkgXAorCVdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVHUFVQcm94eSBcCiAJV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcyBcCiAJ
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBcCiAJV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRl
eCA1MmFlODgxOTM3MWEzZWRkNjBjZDcyMGNkMDg0YmIzYzg1N2ZhN2NkLi40NmYwNjBhYzRkMWE4
ZTBkMjAzZjdiMGQ3Yzc3YmJmMDI2M2VjZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC00Myw2ICs0Myw3
IEBACiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9IYXJkd2FyZUxpc3RlbmVyUHJveHkuaCIKICNpbmNs
dWRlICJSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFn
ZXIuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVy
bmFsVW5pdE1hbmFnZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZUdQVS5oIgogI2luY2x1
ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5TWVzc2FnZXMuaCIKQEAgLTYzLDYgKzY0LDcgQEAKICNpbmNsdWRlICJSZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCisjaW5jbHVkZSAiV2ViR1BVT2Jq
ZWN0SGVhcC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvTG9nSW5pdGlhbGl6YXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL01vY2tSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyLmg+CkBAIC01NTUsNiArNTU3LDE5IEBAIHZvaWQgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6cmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMRm9yVGVzdGluZyhHcmFw
aGljc0NvbnRlCiB9CiAjZW5kaWYKIAordm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpj
cmVhdGVSZW1vdGVHUFUoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgSVBDOjpTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyJiYgc3RyZWFtKQoreworICAgIGF1dG8gaXQgPSBtX3JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRNYXAuZmluZChyZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CisgICAgaWYgKGl0
ID09IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIGF1dG8qIHJlbmRlcmluZ0JhY2tlbmQgPSBpdC0+dmFsdWUuZ2V0KCk7CisKKyAgICBhdXRv
IGFkZFJlc3VsdCA9IG1fcmVtb3RlR1BVTWFwLmVuc3VyZShpZGVudGlmaWVyLCBbJl0oKSB7Cisg
ICAgICAgIHJldHVybiBJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUgeyBSZW1v
dGVHUFU6OmNyZWF0ZShpZGVudGlmaWVyLCAqdGhpcywgKnJlbmRlcmluZ0JhY2tlbmQsIFdURk1v
dmUoc3RyZWFtKSkgfTsKKyAgICB9KTsKKyAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRk
UmVzdWx0LmlzTmV3RW50cnkpOworfQorCiB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmNsZWFyTm93UGxheWluZ0luZm8oKQogewogICAgIG1faXNBY3RpdmVOb3dQbGF5aW5nUHJvY2Vz
cyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggYWU3OTUwNTI1ODYwZGUzY2Y2YTJiMTc4OGZlMzVhNWVh
YmRhNTY3ZC4uZTQzY2Y3NjQxZmRjNjk5YTQ5ZDZlNzQ3NjUxMjdjYzg3NDBkYTM3NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oCkBAIC0zMiw5ICszMiwxMSBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlck1hcC5oIgog
I2luY2x1ZGUgIlJlbW90ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5lcklkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJSZW1vdGVBdWRpb1Nlc3Npb25JZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUmVtb3RlR1BV
LmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVySWRlbnRpZmllci5oIgog
I2luY2x1ZGUgIlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2NvcGVk
QWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oIgorI2luY2x1ZGUgIldlYkdQVUlkZW50aWZpZXIu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0xpYldlYlJUQ0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL05vd1BsYXlpbmdNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRp
Zmllci5oPgpAQCAtMjEyLDYgKzIxNCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVHcmFw
aGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMsIEdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIElQQzo6
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsKICAgICB2b2lkIHJlbGVhc2VHcmFwaGljc0NvbnRl
eHRHTChHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwogI2VuZGlmCisgICAgdm9pZCBjcmVh
dGVSZW1vdGVHUFUoV2ViR1BVSWRlbnRpZmllciwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIs
IElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsKIAogICAgIHZvaWQgY2xlYXJOb3dQbGF5
aW5nSW5mbygpOwogICAgIHZvaWQgc2V0Tm93UGxheWluZ0luZm8oV2ViQ29yZTo6Tm93UGxheWlu
Z0luZm8mJik7CkBAIC0zMDgsNiArMzExLDggQEAgcHJpdmF0ZToKICAgICB1c2luZyBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTE1hcCA9IEhhc2hNYXA8R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCBJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w+PjsKICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcCBtX3JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMTWFwOwogI2VuZGlmCisgICAgdXNpbmcgUmVtb3RlR1BVTWFwID0gSGFzaE1hcDxX
ZWJHUFVJZGVudGlmaWVyLCBJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVt
b3RlR1BVPj47CisgICAgUmVtb3RlR1BVTWFwIG1fcmVtb3RlR1BVTWFwOwogI2lmIEVOQUJMRShF
TkNSWVBURURfTUVESUEpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUZhY3RvcnlQcm94
eT4gbV9jZG1GYWN0b3J5UHJveHk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
aW5kZXggMzkxYzE5ZmU5ZDg1MTRmNzRmYzFhNDM4ODY0OTBiNmFhZDNhNWFlNS4uOTE5YjVkMzBl
MTBmZTUwYTliMGE2OWQyOTlhMDZlODMwYTU4OTRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4KQEAgLTI5LDYgKzI5LDcgQEAgbWVzc2FnZXMgLT4gR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyBXYW50c0Rpc3BhdGNoTWVzc2FnZSB7CiAgICAgdm9pZCBDcmVhdGVHcmFwaGljc0NvbnRl
eHRHTChzdHJ1Y3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0
ZXMsIFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllciwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyIHN0cmVhbSkKICAg
ICB2b2lkIFJlbGVhc2VHcmFwaGljc0NvbnRleHRHTChXZWJLaXQ6OkdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCiAjZW5kaWYKKyAgICB2b2lk
IENyZWF0ZVJlbW90ZUdQVShXZWJLaXQ6OldlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2Vi
S2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
ciwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyIHN0cmVhbSkKICAgICB2b2lkIENsZWFyTm93
UGxheWluZ0luZm8oKQogICAgIHZvaWQgU2V0Tm93UGxheWluZ0luZm8oc3RydWN0IFdlYkNvcmU6
Ok5vd1BsYXlpbmdJbmZvIG5vd1BsYXlpbmdJbmZvKQogI2lmIFVTRShBVURJT19TRVNTSU9OKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVBZGFwdGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlQWRhcHRlci5jcHAKaW5kZXggNDFiZGYxNjUyMDZiMDk2OTlhYjE1MzYyMWFkM2MyZWUx
ZTg2ODg0OC4uZmFjNjRjNzU1ZmRjZDkxYTYwMjRlNGY2NGQ4ZDBjODQ5NWRlNjU2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVBZGFw
dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZUFkYXB0ZXIuY3BwCkBAIC0yOCwxMCArMjgsMTEgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZUFkYXB0ZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJl
bW90ZURldmljZS5oIgorI2luY2x1ZGUgIlN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCIKICNpbmNs
dWRlICJXZWJHUFVEZXZpY2VEZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiV2ViR1BVT2JqZWN0SGVh
cC5oIgotI2luY2x1ZGUgIldlYkdQVU9iamVjdFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiV2ViR1BV
U3VwcG9ydGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJXZWJHUFVTdXBwb3J0ZWRMaW1pdHMuaCIK
ICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUFkYXB0ZXIuaD4KQEAgLTM5LDM0
ICs0MCwzNCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlQWRhcHRlcjo6UmVtb3Rl
QWRhcHRlcihQQUw6OldlYkdQVTo6QWRhcHRlciYgYWRhcHRlciwgV2ViR1BVOjpPYmplY3RSZWdp
c3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2Vi
R1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorUmVtb3RlQWRhcHRlcjo6UmVtb3RlQWRhcHRlcihQ
QUw6OldlYkdQVTo6QWRhcHRlciYgYWRhcHRlciwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RI
ZWFwLCBSZWY8SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiYmIHN0cmVhbUNvbm5lY3Rpb24s
IFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICA6IG1fYmFja2luZyhhZGFwdGVyKQot
ICAgICwgbV9vYmplY3RSZWdpc3RyeShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVh
cChvYmplY3RIZWFwKQorICAgICwgbV9zdHJlYW1Db25uZWN0aW9uKFdURk1vdmUoc3RyZWFtQ29u
bmVjdGlvbikpCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKLSAgICBtX29iamVj
dFJlZ2lzdHJ5LmFkZE9iamVjdChtX2lkZW50aWZpZXIsIG1fYmFja2luZyk7CisgICAgbV9zdHJl
YW1Db25uZWN0aW9uLT5zdGFydFJlY2VpdmluZ01lc3NhZ2VzKCp0aGlzLCBNZXNzYWdlczo6UmVt
b3RlQWRhcHRlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQo
KSk7CiB9CiAKLVJlbW90ZUFkYXB0ZXI6On5SZW1vdGVBZGFwdGVyKCkKK1JlbW90ZUFkYXB0ZXI6
On5SZW1vdGVBZGFwdGVyKCkgPSBkZWZhdWx0OworCit2b2lkIFJlbW90ZUFkYXB0ZXI6OnN0b3BM
aXN0ZW5pbmdGb3JJUEMoKQogewotICAgIG1fb2JqZWN0UmVnaXN0cnkucmVtb3ZlT2JqZWN0KG1f
aWRlbnRpZmllcik7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdG9wUmVjZWl2aW5nTWVzc2Fn
ZXMoTWVzc2FnZXM6OlJlbW90ZUFkYXB0ZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVu
dGlmaWVyLnRvVUludDY0KCkpOwogfQogCiB2b2lkIFJlbW90ZUFkYXB0ZXI6OnJlcXVlc3REZXZp
Y2UoY29uc3QgV2ViR1BVOjpEZXZpY2VEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJHUFU6OlN1
cHBvcnRlZEZlYXR1cmVzJiYsIFdlYkdQVTo6U3VwcG9ydGVkTGltaXRzJiYpPiYmIGNhbGxiYWNr
KQogewotICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0UmVnaXN0cnkuY29u
dmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOworICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRv
ciA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7CiAgICAgQVNT
RVJUKGNvbnZlcnRlZERlc2NyaXB0b3IpOwogICAgIGlmICghY29udmVydGVkRGVzY3JpcHRvcikg
ewogICAgICAgICBjYWxsYmFjayh7IHsgfSB9LCB7IH0pOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgbV9iYWNraW5nLT5yZXF1ZXN0RGV2aWNlKCpjb252ZXJ0ZWREZXNjcmlwdG9yLCBb
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgd2Vha09iamVjdEhlYXAgPSBXZWFrUHRyPFdl
YkdQVTo6T2JqZWN0SGVhcD4obV9vYmplY3RIZWFwKSwgb2JqZWN0UmVnaXN0cnkgPSBtX29iamVj
dFJlZ2lzdHJ5LCBpZGVudGlmaWVyXSAoUmVmPFBBTDo6V2ViR1BVOjpEZXZpY2U+JiYgZGV2aWNl
KSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCF3ZWFrT2JqZWN0SGVhcCkKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgYXV0byByZW1vdGVEZXZpY2UgPSBSZW1vdGVEZXZpY2U6OmNyZWF0ZShk
ZXZpY2UsIG9iamVjdFJlZ2lzdHJ5LCAqd2Vha09iamVjdEhlYXAsIGlkZW50aWZpZXIpOwotICAg
ICAgICB3ZWFrT2JqZWN0SGVhcC0+YWRkT2JqZWN0KHJlbW90ZURldmljZSk7CisgICAgbV9iYWNr
aW5nLT5yZXF1ZXN0RGV2aWNlKCpjb252ZXJ0ZWREZXNjcmlwdG9yLCBbY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKSwgb2JqZWN0SGVhcCA9IFJlZiB7IG1fb2JqZWN0SGVhcCB9LCBzdHJlYW1D
b25uZWN0aW9uID0gbV9zdHJlYW1Db25uZWN0aW9uLmNvcHlSZWYoKSwgaWRlbnRpZmllciA9IG1f
aWRlbnRpZmllcl0gKFJlZjxQQUw6OldlYkdQVTo6RGV2aWNlPiYmIGRldmljZSkgbXV0YWJsZSB7
CisgICAgICAgIGF1dG8gcmVtb3RlRGV2aWNlID0gUmVtb3RlRGV2aWNlOjpjcmVhdGUoZGV2aWNl
LCBvYmplY3RIZWFwLCBXVEZNb3ZlKHN0cmVhbUNvbm5lY3Rpb24pLCBpZGVudGlmaWVyKTsKKyAg
ICAgICAgb2JqZWN0SGVhcC0+YWRkT2JqZWN0KGlkZW50aWZpZXIsIHJlbW90ZURldmljZSk7CiAg
ICAgICAgIGNvbnN0IGF1dG8mIGZlYXR1cmVzID0gZGV2aWNlLT5mZWF0dXJlcygpOwogICAgICAg
ICBjb25zdCBhdXRvJiBsaW1pdHMgPSBkZXZpY2UtPmxpbWl0cygpOwogICAgICAgICBjYWxsYmFj
ayhXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVzIHsgZmVhdHVyZXMuZmVhdHVyZXMoKSB9LCBXZWJH
UFU6OlN1cHBvcnRlZExpbWl0cyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUFkYXB0ZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQWRhcHRlci5oCmluZGV4IDFlYTJjMTAxODZlMWI2
Zjg4YjBhMzJjZTA0Mjc4NWJmYzI4YWYzMmEuLmEzZjMzY2IwNTk4MDRkY2RjNDFhZjhlNGNkYzg0
Y2I1Y2ZjNmRlZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlQWRhcHRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlQWRhcHRlci5oCkBAIC0zNiwyOSArMzYsMzUgQEAgbmFtZXNw
YWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNzIEFkYXB0ZXI7CiB9CiAKK25hbWVzcGFjZSBJUEMgewor
Y2xhc3MgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAK
IG5hbWVzcGFjZSBXZWJHUFUgewogc3RydWN0IERldmljZURlc2NyaXB0b3I7CiBjbGFzcyBPYmpl
Y3RIZWFwOwotY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiBzdHJ1Y3QgU3VwcG9ydGVkRmVhdHVyZXM7
CiBzdHJ1Y3QgU3VwcG9ydGVkTGltaXRzOwogfQogCiBjbGFzcyBSZW1vdGVBZGFwdGVyIGZpbmFs
IDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZUFkYXB0ZXI+IGNyZWF0
ZShQQUw6OldlYkdQVTo6QWRhcHRlciYgYWRhcHRlciwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYg
b2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRl
bnRpZmllciBpZGVudGlmaWVyKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlQWRhcHRlcj4gY3JlYXRl
KFBBTDo6V2ViR1BVOjpBZGFwdGVyJiBhZGFwdGVyLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVj
dEhlYXAsIFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+JiYgc3RyZWFtQ29ubmVjdGlv
biwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUmVtb3RlQWRhcHRlcihhZGFwdGVyLCBvYmplY3RSZWdpc3RyeSwgb2JqZWN0
SGVhcCwgaWRlbnRpZmllcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVB
ZGFwdGVyKGFkYXB0ZXIsIG9iamVjdEhlYXAsIFdURk1vdmUoc3RyZWFtQ29ubmVjdGlvbiksIGlk
ZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVBZGFwdGVyKCk7CiAKLXBy
aXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIE9iamVjdFJlZ2lzdHJ5OworICAgIHZvaWQgc3RvcExp
c3RlbmluZ0ZvcklQQygpOwogCi0gICAgUmVtb3RlQWRhcHRlcihQQUw6OldlYkdQVTo6QWRhcHRl
ciYsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJ
ZGVudGlmaWVyKTsKKyAgICBQQUw6OldlYkdQVTo6QWRhcHRlciYgYmFja2luZygpIHsgcmV0dXJu
IG1fYmFja2luZzsgfQorCitwcml2YXRlOgorICAgIFJlbW90ZUFkYXB0ZXIoUEFMOjpXZWJHUFU6
OkFkYXB0ZXImLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBSZWY8SVBDOjpTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uPiYmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZUFkYXB0ZXIoY29uc3Qg
UmVtb3RlQWRhcHRlciYpID0gZGVsZXRlOwogICAgIFJlbW90ZUFkYXB0ZXIoUmVtb3RlQWRhcHRl
ciYmKSA9IGRlbGV0ZTsKQEAgLTcwLDggKzc2LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlcXVl
c3REZXZpY2UoY29uc3QgV2ViR1BVOjpEZXZpY2VEZXNjcmlwdG9yJiwgV2ViR1BVSWRlbnRpZmll
ciwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXMm
JiwgV2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHMmJik+JiYpOwogCiAgICAgUmVmPFBBTDo6V2ViR1BV
OjpBZGFwdGVyPiBtX2JhY2tpbmc7Ci0gICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgbV9vYmpl
Y3RSZWdpc3RyeTsKICAgICBXZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKKyAgICBS
ZWY8SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiBtX3N0cmVhbUNvbm5lY3Rpb247CiAgICAg
V2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cC5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cC5j
cHAKaW5kZXggMDg1ZjQ5NTM4NGUzZWYzY2M0NGE1MzJjNTY4ODViNDE5ZmY0MTc1ZC4uYzNiYmQ0
YWE2ZmEwZjZkMDhlMTc0MTE3MGM0ZjdkNWMzMzk4MTEwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3Vw
LmNwcApAQCAtMjgsMjQgKzI4LDI3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNp
bmNsdWRlICJSZW1vdGVCaW5kR3JvdXBNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlN0cmVhbVNlcnZl
ckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCi0jaW5jbHVkZSAi
V2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dl
YkdQVUJpbmRHcm91cC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlQmluZEdyb3Vw
OjpSZW1vdGVCaW5kR3JvdXAoUEFMOjpXZWJHUFU6OkJpbmRHcm91cCYgYmluZEdyb3VwLCBXZWJH
UFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBv
YmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCitSZW1vdGVCaW5kR3JvdXA6
OlJlbW90ZUJpbmRHcm91cChQQUw6OldlYkdQVTo6QmluZEdyb3VwJiBiaW5kR3JvdXAsIFdlYkdQ
VTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlv
bj4mJiBzdHJlYW1Db25uZWN0aW9uLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAg
OiBtX2JhY2tpbmcoYmluZEdyb3VwKQotICAgICwgbV9vYmplY3RSZWdpc3RyeShvYmplY3RSZWdp
c3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQorICAgICwgbV9zdHJlYW1Db25u
ZWN0aW9uKFdURk1vdmUoc3RyZWFtQ29ubmVjdGlvbikpCiAgICAgLCBtX2lkZW50aWZpZXIoaWRl
bnRpZmllcikKIHsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LmFkZE9iamVjdChtX2lkZW50aWZpZXIs
IG1fYmFja2luZyk7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdGFydFJlY2VpdmluZ01lc3Nh
Z2VzKCp0aGlzLCBNZXNzYWdlczo6UmVtb3RlQmluZEdyb3VwOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAotUmVtb3RlQmluZEdyb3VwOjp+UmVt
b3RlQmluZEdyb3VwKCkKK1JlbW90ZUJpbmRHcm91cDo6flJlbW90ZUJpbmRHcm91cCgpID0gZGVm
YXVsdDsKKwordm9pZCBSZW1vdGVCaW5kR3JvdXA6OnN0b3BMaXN0ZW5pbmdGb3JJUEMoKQogewot
ICAgIG1fb2JqZWN0UmVnaXN0cnkucmVtb3ZlT2JqZWN0KG1faWRlbnRpZmllcik7CisgICAgbV9z
dHJlYW1Db25uZWN0aW9uLT5zdG9wUmVjZWl2aW5nTWVzc2FnZXMoTWVzc2FnZXM6OlJlbW90ZUJp
bmRHcm91cDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7
CiB9CiAKIHZvaWQgUmVtb3RlQmluZEdyb3VwOjpzZXRMYWJlbChTdHJpbmcmJiBsYWJlbCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
QmluZEdyb3VwLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZUJpbmRHcm91cC5oCmluZGV4IGNlMTQwOGM2N2Q1NDgxMmQ5ZGQ0YzE3ZTYzZGQwYjBiMjQ2
NzBmNWYuLjVjY2UyNDBjZWRmOThmYWJkMDU3NzVkM2Y5NGMyMWQ1NGM3MzM5OWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdy
b3VwLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVCaW5kR3JvdXAuaApAQCAtMzYsMjYgKzM2LDMyIEBAIG5hbWVzcGFjZSBQQUw6OldlYkdQVSB7
CiBjbGFzcyBCaW5kR3JvdXA7CiB9CiAKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgU3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBXZWJH
UFUgewogY2xhc3MgT2JqZWN0SGVhcDsKLWNsYXNzIE9iamVjdFJlZ2lzdHJ5OwogfQogCiBjbGFz
cyBSZW1vdGVCaW5kR3JvdXAgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2
ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8UmVtb3RlQmluZEdyb3VwPiBjcmVhdGUoUEFMOjpXZWJHUFU6OkJpbmRHcm91cCYgYmluZEdy
b3VwLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmpl
Y3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgc3Rh
dGljIFJlZjxSZW1vdGVCaW5kR3JvdXA+IGNyZWF0ZShQQUw6OldlYkdQVTo6QmluZEdyb3VwJiBi
aW5kR3JvdXAsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgUmVmPElQQzo6U3RyZWFt
U2VydmVyQ29ubmVjdGlvbj4mJiBzdHJlYW1Db25uZWN0aW9uLCBXZWJHUFVJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVCaW5k
R3JvdXAoYmluZEdyb3VwLCBvYmplY3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikp
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVCaW5kR3JvdXAoYmluZEdyb3Vw
LCBvYmplY3RIZWFwLCBXVEZNb3ZlKHN0cmVhbUNvbm5lY3Rpb24pLCBpZGVudGlmaWVyKSk7CiAg
ICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlQmluZEdyb3VwKCk7CiAKLXByaXZhdGU6Ci0gICAg
ZnJpZW5kIGNsYXNzIE9iamVjdFJlZ2lzdHJ5OworICAgIHZvaWQgc3RvcExpc3RlbmluZ0ZvcklQ
QygpOwogCi0gICAgUmVtb3RlQmluZEdyb3VwKFBBTDo6V2ViR1BVOjpCaW5kR3JvdXAmLCBXZWJH
UFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmll
cik7CisgICAgUEFMOjpXZWJHUFU6OkJpbmRHcm91cCYgYmFja2luZygpIHsgcmV0dXJuIG1fYmFj
a2luZzsgfQorCitwcml2YXRlOgorICAgIFJlbW90ZUJpbmRHcm91cChQQUw6OldlYkdQVTo6Qmlu
ZEdyb3VwJiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVj
dGlvbj4mJiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVCaW5kR3JvdXAoY29uc3Qg
UmVtb3RlQmluZEdyb3VwJikgPSBkZWxldGU7CiAgICAgUmVtb3RlQmluZEdyb3VwKFJlbW90ZUJp
bmRHcm91cCYmKSA9IGRlbGV0ZTsKQEAgLTY3LDggKzczLDggQEAgcHJpdmF0ZToKICAgICB2b2lk
IHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6QmluZEdyb3VwPiBt
X2JhY2tpbmc7Ci0gICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgbV9vYmplY3RSZWdpc3RyeTsK
ICAgICBXZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKKyAgICBSZWY8SVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uPiBtX3N0cmVhbUNvbm5lY3Rpb247CiAgICAgV2ViR1BVSWRlbnRp
ZmllciBtX2lkZW50aWZpZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExheW91dC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExheW91dC5j
cHAKaW5kZXggMGIxNmZmMjk4N2QxNTQyYTNhYWEyYWVkMDY0MmVlYWYyZTdkNTE5Mi4uMmMyZTFh
NDViOTliOWMxYzA1ZWQwNDUwMzVlMTI5NTJiYzI4YWQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBMYXlvdXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmlu
ZEdyb3VwTGF5b3V0LmNwcApAQCAtMjgsMjQgKzI4LDI3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVCaW5kR3JvdXBMYXlvdXRNZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgIlN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJHUFVPYmplY3RI
ZWFwLmgiCi0jaW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIKICNpbmNsdWRlIDxwYWwv
Z3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJpbmRHcm91cExheW91dC5oPgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotUmVtb3RlQmluZEdyb3VwTGF5b3V0OjpSZW1vdGVCaW5kR3JvdXBMYXlvdXQoUEFM
OjpXZWJHUFU6OkJpbmRHcm91cExheW91dCYgYmluZEdyb3VwTGF5b3V0LCBXZWJHUFU6Ok9iamVj
dFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFw
LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCitSZW1vdGVCaW5kR3JvdXBMYXlvdXQ6OlJl
bW90ZUJpbmRHcm91cExheW91dChQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0JiBiaW5kR3Jv
dXBMYXlvdXQsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgUmVmPElQQzo6U3RyZWFt
U2VydmVyQ29ubmVjdGlvbj4mJiBzdHJlYW1Db25uZWN0aW9uLCBXZWJHUFVJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCiAgICAgOiBtX2JhY2tpbmcoYmluZEdyb3VwTGF5b3V0KQotICAgICwgbV9vYmpl
Y3RSZWdpc3RyeShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFw
KQorICAgICwgbV9zdHJlYW1Db25uZWN0aW9uKFdURk1vdmUoc3RyZWFtQ29ubmVjdGlvbikpCiAg
ICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LmFk
ZE9iamVjdChtX2lkZW50aWZpZXIsIG1fYmFja2luZyk7CisgICAgbV9zdHJlYW1Db25uZWN0aW9u
LT5zdGFydFJlY2VpdmluZ01lc3NhZ2VzKCp0aGlzLCBNZXNzYWdlczo6UmVtb3RlQmluZEdyb3Vw
TGF5b3V0OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsK
IH0KIAotUmVtb3RlQmluZEdyb3VwTGF5b3V0Ojp+UmVtb3RlQmluZEdyb3VwTGF5b3V0KCkKK1Jl
bW90ZUJpbmRHcm91cExheW91dDo6flJlbW90ZUJpbmRHcm91cExheW91dCgpID0gZGVmYXVsdDsK
Kwordm9pZCBSZW1vdGVCaW5kR3JvdXBMYXlvdXQ6OnN0b3BMaXN0ZW5pbmdGb3JJUEMoKQogewot
ICAgIG1fb2JqZWN0UmVnaXN0cnkucmVtb3ZlT2JqZWN0KG1faWRlbnRpZmllcik7CisgICAgbV9z
dHJlYW1Db25uZWN0aW9uLT5zdG9wUmVjZWl2aW5nTWVzc2FnZXMoTWVzc2FnZXM6OlJlbW90ZUJp
bmRHcm91cExheW91dDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50
NjQoKSk7CiB9CiAKIHZvaWQgUmVtb3RlQmluZEdyb3VwTGF5b3V0OjpzZXRMYWJlbChTdHJpbmcm
JiBsYWJlbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlQmluZEdyb3VwTGF5b3V0LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExheW91dC5oCmluZGV4IDI4ZDBiZTRiYjQz
OTA4NzU1YmJmODkzOGVkMjA4ZTY3ZmRmY2ZjODcuLmE3YThmMjkzYjE2ZDIxZGNmNjBlNTJlN2I0
NzM2M2JlYzY3YWFiMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwTGF5b3V0LmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBMYXlvdXQuaApAQCAtMzYs
MjYgKzM2LDMyIEBAIG5hbWVzcGFjZSBQQUw6OldlYkdQVSB7CiBjbGFzcyBCaW5kR3JvdXBMYXlv
dXQ7CiB9CiAKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjsK
K30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogY2xhc3MgT2Jq
ZWN0SGVhcDsKLWNsYXNzIE9iamVjdFJlZ2lzdHJ5OwogfQogCiBjbGFzcyBSZW1vdGVCaW5kR3Jv
dXBMYXlvdXQgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3Rl
QmluZEdyb3VwTGF5b3V0PiBjcmVhdGUoUEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dCYgYmlu
ZEdyb3VwTGF5b3V0LCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2Vi
R1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIp
CisgICAgc3RhdGljIFJlZjxSZW1vdGVCaW5kR3JvdXBMYXlvdXQ+IGNyZWF0ZShQQUw6OldlYkdQ
VTo6QmluZEdyb3VwTGF5b3V0JiBiaW5kR3JvdXBMYXlvdXQsIFdlYkdQVTo6T2JqZWN0SGVhcCYg
b2JqZWN0SGVhcCwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiBzdHJlYW1Db25u
ZWN0aW9uLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0LCBv
YmplY3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBSZW1vdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0LCBvYmpl
Y3RIZWFwLCBXVEZNb3ZlKHN0cmVhbUNvbm5lY3Rpb24pLCBpZGVudGlmaWVyKSk7CiAgICAgfQog
CiAgICAgdmlydHVhbCB+UmVtb3RlQmluZEdyb3VwTGF5b3V0KCk7CiAKLXByaXZhdGU6Ci0gICAg
ZnJpZW5kIGNsYXNzIE9iamVjdFJlZ2lzdHJ5OworICAgIHZvaWQgc3RvcExpc3RlbmluZ0ZvcklQ
QygpOwogCi0gICAgUmVtb3RlQmluZEdyb3VwTGF5b3V0KFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBM
YXlvdXQmLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2Vi
R1BVSWRlbnRpZmllcik7CisgICAgUEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dCYgYmFja2lu
ZygpIHsgcmV0dXJuIG1fYmFja2luZzsgfQorCitwcml2YXRlOgorICAgIFJlbW90ZUJpbmRHcm91
cExheW91dChQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0JiwgV2ViR1BVOjpPYmplY3RIZWFw
JiwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiwgV2ViR1BVSWRlbnRpZmllcik7
CiAKICAgICBSZW1vdGVCaW5kR3JvdXBMYXlvdXQoY29uc3QgUmVtb3RlQmluZEdyb3VwTGF5b3V0
JikgPSBkZWxldGU7CiAgICAgUmVtb3RlQmluZEdyb3VwTGF5b3V0KFJlbW90ZUJpbmRHcm91cExh
eW91dCYmKSA9IGRlbGV0ZTsKQEAgLTY3LDggKzczLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHNl
dExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0
PiBtX2JhY2tpbmc7Ci0gICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgbV9vYmplY3RSZWdpc3Ry
eTsKICAgICBXZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKKyAgICBSZWY8SVBDOjpT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiBtX3N0cmVhbUNvbm5lY3Rpb247CiAgICAgV2ViR1BVSWRl
bnRpZmllciBtX2lkZW50aWZpZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZlci5jcHAKaW5kZXggYzY2NGIz
ODM5OThiNzNjMmQ3Y2JjYTMxMmY1OWY5YjdlNGJkMjdkNy4uMjY1MDkzNGMzYzllNTJmMDdmNDVi
MGE4YWRjMmQ0N2M0YzRkM2Q0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVyLmNwcApAQCAtMjgsMjMgKzI4LDI2
IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVCdWZmZXJN
ZXNzYWdlcy5oIgorI2luY2x1ZGUgIlN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRl
ICJXZWJHUFVPYmplY3RIZWFwLmgiCi0jaW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90ZUJ1ZmZlcjo6UmVtb3RlQnVmZmVyKFBBTDo6
V2ViR1BVOjpCdWZmZXImIGJ1ZmZlciwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVn
aXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBp
ZGVudGlmaWVyKQorUmVtb3RlQnVmZmVyOjpSZW1vdGVCdWZmZXIoUEFMOjpXZWJHUFU6OkJ1ZmZl
ciYgYnVmZmVyLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFJlZjxJUEM6OlN0cmVh
bVNlcnZlckNvbm5lY3Rpb24+JiYgc3RyZWFtQ29ubmVjdGlvbiwgV2ViR1BVSWRlbnRpZmllciBp
ZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5nKGJ1ZmZlcikKLSAgICAsIG1fb2JqZWN0UmVnaXN0
cnkob2JqZWN0UmVnaXN0cnkpCiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkKKyAgICAs
IG1fc3RyZWFtQ29ubmVjdGlvbihXVEZNb3ZlKHN0cmVhbUNvbm5lY3Rpb24pKQogICAgICwgbV9p
ZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5hZGRPYmplY3Qo
bV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+c3RhcnRS
ZWNlaXZpbmdNZXNzYWdlcygqdGhpcywgTWVzc2FnZXM6OlJlbW90ZUJ1ZmZlcjo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKLVJlbW90ZUJ1ZmZl
cjo6flJlbW90ZUJ1ZmZlcigpCitSZW1vdGVCdWZmZXI6On5SZW1vdGVCdWZmZXIoKSA9IGRlZmF1
bHQ7CisKK3ZvaWQgUmVtb3RlQnVmZmVyOjpzdG9wTGlzdGVuaW5nRm9ySVBDKCkKIHsKLSAgICBt
X29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOworICAgIG1fc3RyZWFt
Q29ubmVjdGlvbi0+c3RvcFJlY2VpdmluZ01lc3NhZ2VzKE1lc3NhZ2VzOjpSZW1vdGVCdWZmZXI6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCiB2
b2lkIFJlbW90ZUJ1ZmZlcjo6bWFwQXN5bmMoUEFMOjpXZWJHUFU6Ok1hcE1vZGVGbGFncyBtYXBN
b2RlRmxhZ3MsIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemU2ND4gb2Zmc2V0LCBzdGQ6
Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplNjQ+IHNpemUsIFdURjo6Q29tcGxldGlvbkhhbmRs
ZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4mJik+JiYgY2FsbGJhY2spCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZUJ1ZmZlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVCdWZmZXIuaAppbmRleCBhNWZhZDViMmVmZDA4MTM2YzAyY2ViODU5ZmFkMzdlMjVjMzIzZjMz
Li44YTI5OWE3YjdiNmYxODIxNzU1NTkwNGNjODg3OTU2ZDAyYTE4MzQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVy
LmgKQEAgLTQxLDI2ICs0MSwzMiBAQCBuYW1lc3BhY2UgUEFMOjpXZWJHUFUgewogY2xhc3MgQnVm
ZmVyOwogfQogCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFN0cmVhbVNlcnZlckNvbm5lY3Rpb247
Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIGNsYXNzIE9i
amVjdEhlYXA7Ci1jbGFzcyBPYmplY3RSZWdpc3RyeTsKIH0KIAogY2xhc3MgUmVtb3RlQnVmZmVy
IGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZUJ1ZmZlcj4g
Y3JlYXRlKFBBTDo6V2ViR1BVOjpCdWZmZXImIGJ1ZmZlciwgV2ViR1BVOjpPYmplY3RSZWdpc3Ry
eSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BV
SWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlQnVmZmVyPiBjcmVh
dGUoUEFMOjpXZWJHUFU6OkJ1ZmZlciYgYnVmZmVyLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVj
dEhlYXAsIFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+JiYgc3RyZWFtQ29ubmVjdGlv
biwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUmVtb3RlQnVmZmVyKGJ1ZmZlciwgb2JqZWN0UmVnaXN0cnksIG9iamVjdEhl
YXAsIGlkZW50aWZpZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQnVm
ZmVyKGJ1ZmZlciwgb2JqZWN0SGVhcCwgV1RGTW92ZShzdHJlYW1Db25uZWN0aW9uKSwgaWRlbnRp
ZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90ZUJ1ZmZlcigpOwogCi1wcml2YXRl
OgotICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKKyAgICB2b2lkIHN0b3BMaXN0ZW5p
bmdGb3JJUEMoKTsKIAotICAgIFJlbW90ZUJ1ZmZlcihQQUw6OldlYkdQVTo6QnVmZmVyJiwgV2Vi
R1BVOjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZp
ZXIpOworICAgIFBBTDo6V2ViR1BVOjpCdWZmZXImIGJhY2tpbmcoKSB7IHJldHVybiBtX2JhY2tp
bmc7IH0KKworcHJpdmF0ZToKKyAgICBSZW1vdGVCdWZmZXIoUEFMOjpXZWJHUFU6OkJ1ZmZlciYs
IFdlYkdQVTo6T2JqZWN0SGVhcCYsIFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+JiYs
IFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlQnVmZmVyKGNvbnN0IFJlbW90ZUJ1ZmZl
ciYpID0gZGVsZXRlOwogICAgIFJlbW90ZUJ1ZmZlcihSZW1vdGVCdWZmZXImJikgPSBkZWxldGU7
CkBAIC03Nyw4ICs4Myw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7
CiAKICAgICBSZWY8UEFMOjpXZWJHUFU6OkJ1ZmZlcj4gbV9iYWNraW5nOwotICAgIFdlYkdQVTo6
T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7CiAgICAgV2ViR1BVOjpPYmplY3RIZWFw
JiBtX29iamVjdEhlYXA7CisgICAgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4gbV9z
dHJlYW1Db25uZWN0aW9uOwogICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAg
IGJvb2wgbV9pc01hcHBlZCB7IGZhbHNlIH07CiAgICAgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQ
VTo6QnVmZmVyOjpNYXBwZWRSYW5nZT4gbV9tYXBwZWRSYW5nZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEJ1ZmZlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1h
bmRCdWZmZXIuY3BwCmluZGV4IGE5YzZhMmI2ZTYwM2Y0MDc4MGNhZWEwMDdiNTczYjJlNGQ2ZDRh
MzUuLmZlZmVjMjE3YTA2ZGM5ZDc5NDBkM2M0YjY5ZThiYTdhODVmZWIyZDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEJ1
ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVDb21tYW5kQnVmZmVyLmNwcApAQCAtMjgsMjQgKzI4LDI3IEBACiAKICNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVDb21tYW5kQnVmZmVyTWVzc2FnZXMuaCIK
KyNpbmNsdWRlICJTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViR1BVT2Jq
ZWN0SGVhcC5oIgotI2luY2x1ZGUgIldlYkdQVU9iamVjdFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8
cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVDb21tYW5kQnVmZmVyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1SZW1vdGVDb21tYW5kQnVmZmVyOjpSZW1vdGVDb21tYW5kQnVmZmVyKFBBTDo6
V2ViR1BVOjpDb21tYW5kQnVmZmVyJiBjb21tYW5kQnVmZmVyLCBXZWJHUFU6Ok9iamVjdFJlZ2lz
dHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJH
UFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCitSZW1vdGVDb21tYW5kQnVmZmVyOjpSZW1vdGVDb21t
YW5kQnVmZmVyKFBBTDo6V2ViR1BVOjpDb21tYW5kQnVmZmVyJiBjb21tYW5kQnVmZmVyLCBXZWJH
UFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rp
b24+JiYgc3RyZWFtQ29ubmVjdGlvbiwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAg
IDogbV9iYWNraW5nKGNvbW1hbmRCdWZmZXIpCi0gICAgLCBtX29iamVjdFJlZ2lzdHJ5KG9iamVj
dFJlZ2lzdHJ5KQogICAgICwgbV9vYmplY3RIZWFwKG9iamVjdEhlYXApCisgICAgLCBtX3N0cmVh
bUNvbm5lY3Rpb24oV1RGTW92ZShzdHJlYW1Db25uZWN0aW9uKSkKICAgICAsIG1faWRlbnRpZmll
cihpZGVudGlmaWVyKQogewotICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1faWRlbnRp
ZmllciwgbV9iYWNraW5nKTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0YXJ0UmVjZWl2aW5n
TWVzc2FnZXMoKnRoaXMsIE1lc3NhZ2VzOjpSZW1vdGVDb21tYW5kQnVmZmVyOjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAotUmVtb3RlQ29tbWFu
ZEJ1ZmZlcjo6flJlbW90ZUNvbW1hbmRCdWZmZXIoKQorUmVtb3RlQ29tbWFuZEJ1ZmZlcjo6flJl
bW90ZUNvbW1hbmRCdWZmZXIoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgUmVtb3RlQ29tbWFuZEJ1ZmZl
cjo6c3RvcExpc3RlbmluZ0ZvcklQQygpCiB7Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5yZW1vdmVP
YmplY3QobV9pZGVudGlmaWVyKTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0b3BSZWNlaXZp
bmdNZXNzYWdlcyhNZXNzYWdlczo6UmVtb3RlQ29tbWFuZEJ1ZmZlcjo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgUmVtb3RlQ29tbWFu
ZEJ1ZmZlcjo6c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRCdWZmZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEJ1ZmZl
ci5oCmluZGV4IDE0MGMxYTQ4YTExZGVmOWNhYmFjOWE1MWM4NGExY2RkYzc0MmQ4NWQuLjMyNzVi
OTlhMjk3ZTYzOWNjMjc5NTdhNWVhODk0NmE1YTVmYzI4NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEJ1ZmZlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFu
ZEJ1ZmZlci5oCkBAIC0zNiwyNiArMzYsMzIgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNs
YXNzIENvbW1hbmRCdWZmZXI7CiB9CiAKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgU3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBXZWJH
UFUgewogY2xhc3MgT2JqZWN0SGVhcDsKLWNsYXNzIE9iamVjdFJlZ2lzdHJ5OwogfQogCiBjbGFz
cyBSZW1vdGVDb21tYW5kQnVmZmVyIGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJl
Y2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPFJlbW90ZUNvbW1hbmRCdWZmZXI+IGNyZWF0ZShQQUw6OldlYkdQVTo6Q29tbWFuZEJ1
ZmZlciYgY29tbWFuZEJ1ZmZlciwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0
cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVu
dGlmaWVyKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlQ29tbWFuZEJ1ZmZlcj4gY3JlYXRlKFBBTDo6
V2ViR1BVOjpDb21tYW5kQnVmZmVyJiBjb21tYW5kQnVmZmVyLCBXZWJHUFU6Ok9iamVjdEhlYXAm
IG9iamVjdEhlYXAsIFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+JiYgc3RyZWFtQ29u
bmVjdGlvbiwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQ29tbWFuZEJ1ZmZlcihjb21tYW5kQnVmZmVyLCBvYmpl
Y3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBSZW1vdGVDb21tYW5kQnVmZmVyKGNvbW1hbmRCdWZmZXIsIG9iamVjdEhlYXAs
IFdURk1vdmUoc3RyZWFtQ29ubmVjdGlvbiksIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB2
aXJ0dWFsIH5SZW1vdGVDb21tYW5kQnVmZmVyKCk7CiAKLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNs
YXNzIE9iamVjdFJlZ2lzdHJ5OworICAgIHZvaWQgc3RvcExpc3RlbmluZ0ZvcklQQygpOwogCi0g
ICAgUmVtb3RlQ29tbWFuZEJ1ZmZlcihQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZlciYsIFdlYkdQ
VTo6T2JqZWN0UmVnaXN0cnkmLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVudGlmaWVy
KTsKKyAgICBQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZlciYgYmFja2luZygpIHsgcmV0dXJuIG1f
YmFja2luZzsgfQorCitwcml2YXRlOgorICAgIFJlbW90ZUNvbW1hbmRCdWZmZXIoUEFMOjpXZWJH
UFU6OkNvbW1hbmRCdWZmZXImLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBSZWY8SVBDOjpTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uPiYmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZUNvbW1h
bmRCdWZmZXIoY29uc3QgUmVtb3RlQ29tbWFuZEJ1ZmZlciYpID0gZGVsZXRlOwogICAgIFJlbW90
ZUNvbW1hbmRCdWZmZXIoUmVtb3RlQ29tbWFuZEJ1ZmZlciYmKSA9IGRlbGV0ZTsKQEAgLTY3LDgg
KzczLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJl
ZjxQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZlcj4gbV9iYWNraW5nOwotICAgIFdlYkdQVTo6T2Jq
ZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7CiAgICAgV2ViR1BVOjpPYmplY3RIZWFwJiBt
X29iamVjdEhlYXA7CisgICAgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4gbV9zdHJl
YW1Db25uZWN0aW9uOwogICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVDb21tYW5kRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZUNvbW1hbmRFbmNvZGVyLmNwcAppbmRleCBhYzk0OWVmYTRiNmI0ZWNlMjJm
MjE2Y2NhMTY1M2U1NzYwMGIwZDgyLi5kOWViNzkzZGFkNDQ1Nzc3MmFiMDNkZDBmYjU0MjQyMWMy
OGNhMDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZUNvbW1hbmRFbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRFbmNvZGVyLmNwcApAQCAtMjksNDYgKzI5
LDQ5IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiUmVtb3RlQ29tbWFu
ZEJ1ZmZlci5oIgorI2luY2x1ZGUgIlJlbW90ZUNvbW1hbmRFbmNvZGVyTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJSZW1vdGVDb21wdXRlUGFzc0VuY29kZXIuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5k
ZXJQYXNzRW5jb2Rlci5oIgorI2luY2x1ZGUgIlN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCIKICNp
bmNsdWRlICJXZWJHUFVDb21wdXRlUGFzc0Rlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJXZWJHUFVP
YmplY3RIZWFwLmgiCi0jaW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIKICNpbmNsdWRl
IDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbW1hbmRFbmNvZGVyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi1SZW1vdGVDb21tYW5kRW5jb2Rlcjo6UmVtb3RlQ29tbWFuZEVuY29kZXIo
UEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyJiBjb21tYW5kRW5jb2RlciwgV2ViR1BVOjpPYmpl
Y3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVh
cCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorUmVtb3RlQ29tbWFuZEVuY29kZXI6OlJl
bW90ZUNvbW1hbmRFbmNvZGVyKFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2RlciYgY29tbWFuZEVu
Y29kZXIsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgUmVmPElQQzo6U3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbj4mJiBzdHJlYW1Db25uZWN0aW9uLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50
aWZpZXIpCiAgICAgOiBtX2JhY2tpbmcoY29tbWFuZEVuY29kZXIpCi0gICAgLCBtX29iamVjdFJl
Z2lzdHJ5KG9iamVjdFJlZ2lzdHJ5KQogICAgICwgbV9vYmplY3RIZWFwKG9iamVjdEhlYXApCisg
ICAgLCBtX3N0cmVhbUNvbm5lY3Rpb24oV1RGTW92ZShzdHJlYW1Db25uZWN0aW9uKSkKICAgICAs
IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogewotICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRkT2Jq
ZWN0KG1faWRlbnRpZmllciwgbV9iYWNraW5nKTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0
YXJ0UmVjZWl2aW5nTWVzc2FnZXMoKnRoaXMsIE1lc3NhZ2VzOjpSZW1vdGVDb21tYW5kRW5jb2Rl
cjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAK
LVJlbW90ZUNvbW1hbmRFbmNvZGVyOjp+UmVtb3RlQ29tbWFuZEVuY29kZXIoKQorUmVtb3RlQ29t
bWFuZEVuY29kZXI6On5SZW1vdGVDb21tYW5kRW5jb2RlcigpID0gZGVmYXVsdDsKKwordm9pZCBS
ZW1vdGVDb21tYW5kRW5jb2Rlcjo6c3RvcExpc3RlbmluZ0ZvcklQQygpCiB7Ci0gICAgbV9vYmpl
Y3RSZWdpc3RyeS5yZW1vdmVPYmplY3QobV9pZGVudGlmaWVyKTsKKyAgICBtX3N0cmVhbUNvbm5l
Y3Rpb24tPnN0b3BSZWNlaXZpbmdNZXNzYWdlcyhNZXNzYWdlczo6UmVtb3RlQ29tbWFuZEVuY29k
ZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQog
CiB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyOjpiZWdpblJlbmRlclBhc3MoY29uc3QgV2ViR1BV
OjpSZW5kZXJQYXNzRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgV2ViR1BVSWRlbnRpZmllciBpZGVu
dGlmaWVyKQogewotICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0UmVnaXN0
cnkuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOworICAgIGF1dG8gY29udmVydGVkRGVz
Y3JpcHRvciA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7CiAg
ICAgQVNTRVJUKGNvbnZlcnRlZERlc2NyaXB0b3IpOwogICAgIGlmICghY29udmVydGVkRGVzY3Jp
cHRvcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byByZW5kZXJQYXNzRW5jb2RlciA9IG1f
YmFja2luZy0+YmVnaW5SZW5kZXJQYXNzKCpjb252ZXJ0ZWREZXNjcmlwdG9yKTsKLSAgICBhdXRv
IHJlbW90ZVJlbmRlclBhc3NFbmNvZGVyID0gUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0
ZShyZW5kZXJQYXNzRW5jb2RlciwgbV9vYmplY3RSZWdpc3RyeSwgbV9vYmplY3RIZWFwLCBpZGVu
dGlmaWVyKTsKLSAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KHJlbW90ZVJlbmRlclBhc3NFbmNv
ZGVyKTsKKyAgICBhdXRvIHJlbW90ZVJlbmRlclBhc3NFbmNvZGVyID0gUmVtb3RlUmVuZGVyUGFz
c0VuY29kZXI6OmNyZWF0ZShyZW5kZXJQYXNzRW5jb2RlciwgbV9vYmplY3RIZWFwLCBtX3N0cmVh
bUNvbm5lY3Rpb24uY29weVJlZigpLCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVjdEhlYXAuYWRk
T2JqZWN0KGlkZW50aWZpZXIsIHJlbW90ZVJlbmRlclBhc3NFbmNvZGVyKTsKIH0KIAogdm9pZCBS
ZW1vdGVDb21tYW5kRW5jb2Rlcjo6YmVnaW5Db21wdXRlUGFzcyhjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkdQVTo6Q29tcHV0ZVBhc3NEZXNjcmlwdG9yPiYgZGVzY3JpcHRvciwgV2ViR1BVSWRlbnRp
ZmllciBpZGVudGlmaWVyKQogewogICAgIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkNvbXB1
dGVQYXNzRGVzY3JpcHRvcj4gY29udmVydGVkRGVzY3JpcHRvcjsKICAgICBpZiAoZGVzY3JpcHRv
cikgewotICAgICAgICBhdXRvIHJlc3VsdERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNv
bnZlcnRGcm9tQmFja2luZygqZGVzY3JpcHRvcik7CisgICAgICAgIGF1dG8gcmVzdWx0RGVzY3Jp
cHRvciA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0RnJvbUJhY2tpbmcoKmRlc2NyaXB0b3IpOwogICAg
ICAgICBBU1NFUlQocmVzdWx0RGVzY3JpcHRvcik7CiAgICAgICAgIGNvbnZlcnRlZERlc2NyaXB0
b3IgPSBXVEZNb3ZlKHJlc3VsdERlc2NyaXB0b3IpOwogICAgICAgICBpZiAoIWNvbnZlcnRlZERl
c2NyaXB0b3IpCkBAIC03Niw4ICs3OSw4IEBAIHZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXI6OmJl
Z2luQ29tcHV0ZVBhc3MoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJHUFU6OkNvbXB1dGVQCiAgICAg
fQogCiAgICAgYXV0byBjb21wdXRlUGFzc0VuY29kZXIgPSBtX2JhY2tpbmctPmJlZ2luQ29tcHV0
ZVBhc3MoKmNvbnZlcnRlZERlc2NyaXB0b3IpOwotICAgIGF1dG8gY29tcHV0ZVJlbmRlclBhc3NF
bmNvZGVyID0gUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpjcmVhdGUoY29tcHV0ZVBhc3NFbmNv
ZGVyLCBtX29iamVjdFJlZ2lzdHJ5LCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIpOwotICAgIG1f
b2JqZWN0SGVhcC5hZGRPYmplY3QoY29tcHV0ZVJlbmRlclBhc3NFbmNvZGVyKTsKKyAgICBhdXRv
IGNvbXB1dGVSZW5kZXJQYXNzRW5jb2RlciA9IFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6Y3Jl
YXRlKGNvbXB1dGVQYXNzRW5jb2RlciwgbV9vYmplY3RIZWFwLCBtX3N0cmVhbUNvbm5lY3Rpb24u
Y29weVJlZigpLCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KGlkZW50
aWZpZXIsIGNvbXB1dGVSZW5kZXJQYXNzRW5jb2Rlcik7CiB9CiAKIHZvaWQgUmVtb3RlQ29tbWFu
ZEVuY29kZXI6OmNvcHlCdWZmZXJUb0J1ZmZlcigKQEAgLTg3LDkgKzkwLDkgQEAgdm9pZCBSZW1v
dGVDb21tYW5kRW5jb2Rlcjo6Y29weUJ1ZmZlclRvQnVmZmVyKAogICAgIFBBTDo6V2ViR1BVOjpT
aXplNjQgZGVzdGluYXRpb25PZmZzZXQsCiAgICAgUEFMOjpXZWJHUFU6OlNpemU2NCBzaXplKQog
ewotICAgIGF1dG8gY29udmVydGVkU291cmNlID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0QnVm
ZmVyRnJvbUJhY2tpbmcoc291cmNlKTsKKyAgICBhdXRvIGNvbnZlcnRlZFNvdXJjZSA9IG1fb2Jq
ZWN0SGVhcC5jb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoc291cmNlKTsKICAgICBBU1NFUlQoY29u
dmVydGVkU291cmNlKTsKLSAgICBhdXRvIGNvbnZlcnRlZERlc3RpbmF0aW9uID0gbV9vYmplY3RS
ZWdpc3RyeS5jb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoc291cmNlKTsKKyAgICBhdXRvIGNvbnZl
cnRlZERlc3RpbmF0aW9uID0gbV9vYmplY3RIZWFwLmNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhz
b3VyY2UpOwogICAgIEFTU0VSVChjb252ZXJ0ZWREZXN0aW5hdGlvbik7CiAgICAgaWYgKCFjb252
ZXJ0ZWRTb3VyY2UgfHwgIWNvbnZlcnRlZERlc3RpbmF0aW9uKQogICAgICAgICByZXR1cm47CkBA
IC0xMDIsMTEgKzEwNSwxMSBAQCB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVy
VG9UZXh0dXJlKAogICAgIGNvbnN0IFdlYkdQVTo6SW1hZ2VDb3B5VGV4dHVyZSYgZGVzdGluYXRp
b24sCiAgICAgY29uc3QgV2ViR1BVOjpFeHRlbnQzRCYgY29weVNpemUpCiB7Ci0gICAgYXV0byBj
b252ZXJ0ZWRTb3VyY2UgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhzb3Vy
Y2UpOworICAgIGF1dG8gY29udmVydGVkU291cmNlID0gbV9vYmplY3RIZWFwLmNvbnZlcnRGcm9t
QmFja2luZyhzb3VyY2UpOwogICAgIEFTU0VSVChjb252ZXJ0ZWRTb3VyY2UpOwotICAgIGF1dG8g
Y29udmVydGVkRGVzdGluYXRpb24gPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2lu
ZyhkZXN0aW5hdGlvbik7CisgICAgYXV0byBjb252ZXJ0ZWREZXN0aW5hdGlvbiA9IG1fb2JqZWN0
SGVhcC5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzdGluYXRpb24pOwogICAgIEFTU0VSVChjb252ZXJ0
ZWREZXN0aW5hdGlvbik7Ci0gICAgYXV0byBjb252ZXJ0ZWRDb3B5U2l6ZSA9IG1fb2JqZWN0UmVn
aXN0cnkuY29udmVydEZyb21CYWNraW5nKGNvcHlTaXplKTsKKyAgICBhdXRvIGNvbnZlcnRlZENv
cHlTaXplID0gbV9vYmplY3RIZWFwLmNvbnZlcnRGcm9tQmFja2luZyhjb3B5U2l6ZSk7CiAgICAg
QVNTRVJUKGNvbnZlcnRlZENvcHlTaXplKTsKICAgICBpZiAoIWNvbnZlcnRlZFNvdXJjZSB8fCAh
Y29udmVydGVkRGVzdGluYXRpb24gfHwgIWNvbnZlcnRlZENvcHlTaXplKQogICAgICAgICByZXR1
cm47CkBAIC0xMTksMTEgKzEyMiwxMSBAQCB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyOjpjb3B5
VGV4dHVyZVRvQnVmZmVyKAogICAgIGNvbnN0IFdlYkdQVTo6SW1hZ2VDb3B5QnVmZmVyJiBkZXN0
aW5hdGlvbiwKICAgICBjb25zdCBXZWJHUFU6OkV4dGVudDNEJiBjb3B5U2l6ZSkKIHsKLSAgICBh
dXRvIGNvbnZlcnRlZFNvdXJjZSA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5n
KHNvdXJjZSk7CisgICAgYXV0byBjb252ZXJ0ZWRTb3VyY2UgPSBtX29iamVjdEhlYXAuY29udmVy
dEZyb21CYWNraW5nKHNvdXJjZSk7CiAgICAgQVNTRVJUKGNvbnZlcnRlZFNvdXJjZSk7Ci0gICAg
YXV0byBjb252ZXJ0ZWREZXN0aW5hdGlvbiA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21C
YWNraW5nKGRlc3RpbmF0aW9uKTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc3RpbmF0aW9uID0gbV9v
YmplY3RIZWFwLmNvbnZlcnRGcm9tQmFja2luZyhkZXN0aW5hdGlvbik7CiAgICAgQVNTRVJUKGNv
bnZlcnRlZERlc3RpbmF0aW9uKTsKLSAgICBhdXRvIGNvbnZlcnRlZENvcHlTaXplID0gbV9vYmpl
Y3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoY29weVNpemUpOworICAgIGF1dG8gY29udmVy
dGVkQ29weVNpemUgPSBtX29iamVjdEhlYXAuY29udmVydEZyb21CYWNraW5nKGNvcHlTaXplKTsK
ICAgICBBU1NFUlQoY29udmVydGVkQ29weVNpemUpOwogICAgIGlmICghY29udmVydGVkU291cmNl
IHx8ICFjb252ZXJ0ZWREZXN0aW5hdGlvbiB8fCAhY29udmVydGVkQ29weVNpemUpCiAgICAgICAg
IHJldHVybjsKQEAgLTEzNiwxMSArMTM5LDExIEBAIHZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXI6
OmNvcHlUZXh0dXJlVG9UZXh0dXJlKAogICAgIGNvbnN0IFdlYkdQVTo6SW1hZ2VDb3B5VGV4dHVy
ZSYgZGVzdGluYXRpb24sCiAgICAgY29uc3QgV2ViR1BVOjpFeHRlbnQzRCYgY29weVNpemUpCiB7
Ci0gICAgYXV0byBjb252ZXJ0ZWRTb3VyY2UgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9t
QmFja2luZyhzb3VyY2UpOworICAgIGF1dG8gY29udmVydGVkU291cmNlID0gbV9vYmplY3RIZWFw
LmNvbnZlcnRGcm9tQmFja2luZyhzb3VyY2UpOwogICAgIEFTU0VSVChjb252ZXJ0ZWRTb3VyY2Up
OwotICAgIGF1dG8gY29udmVydGVkRGVzdGluYXRpb24gPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZl
cnRGcm9tQmFja2luZyhkZXN0aW5hdGlvbik7CisgICAgYXV0byBjb252ZXJ0ZWREZXN0aW5hdGlv
biA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzdGluYXRpb24pOwogICAgIEFT
U0VSVChjb252ZXJ0ZWREZXN0aW5hdGlvbik7Ci0gICAgYXV0byBjb252ZXJ0ZWRDb3B5U2l6ZSA9
IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGNvcHlTaXplKTsKKyAgICBhdXRv
IGNvbnZlcnRlZENvcHlTaXplID0gbV9vYmplY3RIZWFwLmNvbnZlcnRGcm9tQmFja2luZyhjb3B5
U2l6ZSk7CiAgICAgQVNTRVJUKGNvbnZlcnRlZENvcHlTaXplKTsKICAgICBpZiAoIWNvbnZlcnRl
ZFNvdXJjZSB8fCAhY29udmVydGVkRGVzdGluYXRpb24gfHwgIWNvbnZlcnRlZENvcHlTaXplKQog
ICAgICAgICByZXR1cm47CkBAIC0xNTMsNyArMTU2LDcgQEAgdm9pZCBSZW1vdGVDb21tYW5kRW5j
b2Rlcjo6ZmlsbEJ1ZmZlcigKICAgICBQQUw6OldlYkdQVTo6U2l6ZTY0IGRlc3RpbmF0aW9uT2Zm
c2V0LAogICAgIFBBTDo6V2ViR1BVOjpTaXplNjQgc2l6ZSkKIHsKLSAgICBhdXRvIGNvbnZlcnRl
ZERlc3RpbmF0aW9uID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmco
ZGVzdGluYXRpb24pOworICAgIGF1dG8gY29udmVydGVkRGVzdGluYXRpb24gPSBtX29iamVjdEhl
YXAuY29udmVydEJ1ZmZlckZyb21CYWNraW5nKGRlc3RpbmF0aW9uKTsKICAgICBBU1NFUlQoY29u
dmVydGVkRGVzdGluYXRpb24pOwogICAgIGlmICghY29udmVydGVkRGVzdGluYXRpb24pCiAgICAg
ICAgIHJldHVybjsKQEAgLTE3OCw3ICsxODEsNyBAQCB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVy
OjppbnNlcnREZWJ1Z01hcmtlcihTdHJpbmcmJiBtYXJrZXJMYWJlbCkKIAogdm9pZCBSZW1vdGVD
b21tYW5kRW5jb2Rlcjo6d3JpdGVUaW1lc3RhbXAoV2ViR1BVSWRlbnRpZmllciBxdWVyeVNldCwg
UEFMOjpXZWJHUFU6OlNpemUzMiBxdWVyeUluZGV4KQogewotICAgIGF1dG8gY29udmVydGVkUXVl
cnlTZXQgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRRdWVyeVNldEZyb21CYWNraW5nKHF1ZXJ5
U2V0KTsKKyAgICBhdXRvIGNvbnZlcnRlZFF1ZXJ5U2V0ID0gbV9vYmplY3RIZWFwLmNvbnZlcnRR
dWVyeVNldEZyb21CYWNraW5nKHF1ZXJ5U2V0KTsKICAgICBBU1NFUlQoY29udmVydGVkUXVlcnlT
ZXQpOwogICAgIGlmICghY29udmVydGVkUXVlcnlTZXQpCiAgICAgICAgIHJldHVybjsKQEAgLTE5
Myw5ICsxOTYsOSBAQCB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyOjpyZXNvbHZlUXVlcnlTZXQo
CiAgICAgV2ViR1BVSWRlbnRpZmllciBkZXN0aW5hdGlvbiwKICAgICBQQUw6OldlYkdQVTo6U2l6
ZTY0IGRlc3RpbmF0aW9uT2Zmc2V0KQogewotICAgIGF1dG8gY29udmVydGVkUXVlcnlTZXQgPSBt
X29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRRdWVyeVNldEZyb21CYWNraW5nKHF1ZXJ5U2V0KTsKKyAg
ICBhdXRvIGNvbnZlcnRlZFF1ZXJ5U2V0ID0gbV9vYmplY3RIZWFwLmNvbnZlcnRRdWVyeVNldEZy
b21CYWNraW5nKHF1ZXJ5U2V0KTsKICAgICBBU1NFUlQoY29udmVydGVkUXVlcnlTZXQpOwotICAg
IGF1dG8gY29udmVydGVkRGVzdGluYXRpb24gPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRCdWZm
ZXJGcm9tQmFja2luZyhkZXN0aW5hdGlvbik7CisgICAgYXV0byBjb252ZXJ0ZWREZXN0aW5hdGlv
biA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoZGVzdGluYXRpb24pOwog
ICAgIEFTU0VSVChjb252ZXJ0ZWREZXN0aW5hdGlvbik7CiAgICAgaWYgKCFjb252ZXJ0ZWRRdWVy
eVNldCB8fCAhY29udmVydGVkRGVzdGluYXRpb24pCiAgICAgICAgIHJldHVybjsKQEAgLTIwNSwx
NCArMjA4LDE0IEBAIHZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXI6OnJlc29sdmVRdWVyeVNldCgK
IAogdm9pZCBSZW1vdGVDb21tYW5kRW5jb2Rlcjo6ZmluaXNoKGNvbnN0IFdlYkdQVTo6Q29tbWFu
ZEJ1ZmZlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmll
cikKIHsKLSAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNv
bnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0
b3IgPSBtX29iamVjdEhlYXAuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOwogICAgIEFT
U0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKICAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3Ip
CiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gY29tbWFuZEJ1ZmZlciA9IG1fYmFja2luZy0+
ZmluaXNoKCpjb252ZXJ0ZWREZXNjcmlwdG9yKTsKLSAgICBhdXRvIHJlbW90ZUNvbW1hbmRCdWZm
ZXIgPSBSZW1vdGVDb21tYW5kQnVmZmVyOjpjcmVhdGUoY29tbWFuZEJ1ZmZlciwgbV9vYmplY3RS
ZWdpc3RyeSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKLSAgICBtX29iamVjdEhlYXAuYWRk
T2JqZWN0KHJlbW90ZUNvbW1hbmRCdWZmZXIpOworICAgIGF1dG8gcmVtb3RlQ29tbWFuZEJ1ZmZl
ciA9IFJlbW90ZUNvbW1hbmRCdWZmZXI6OmNyZWF0ZShjb21tYW5kQnVmZmVyLCBtX29iamVjdEhl
YXAsIG1fc3RyZWFtQ29ubmVjdGlvbi5jb3B5UmVmKCksIGlkZW50aWZpZXIpOworICAgIG1fb2Jq
ZWN0SGVhcC5hZGRPYmplY3QoaWRlbnRpZmllciwgcmVtb3RlQ29tbWFuZEJ1ZmZlcik7CiB9CiAK
IHZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXI6OnNldExhYmVsKFN0cmluZyYmIGxhYmVsKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVD
b21tYW5kRW5jb2Rlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVDb21tYW5kRW5jb2Rlci5oCmluZGV4IGJiNjA0YWE3YzhhZGRiNGMxZjBiOWUwMDBk
Y2JiYWFmNDk4NzIyNzYuLjgzMTQ0YTg2ZmEzNDQ2Njc1OWI0ODhkMTUxNmNlYmE0NWIwOGVmZGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlQ29tbWFuZEVuY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRFbmNvZGVyLmgKQEAgLTM4LDYgKzM4LDEwIEBAIG5hbWVz
cGFjZSBQQUw6OldlYkdQVSB7CiBjbGFzcyBDb21tYW5kRW5jb2RlcjsKIH0KIAorbmFtZXNwYWNl
IElQQyB7CitjbGFzcyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uOworfQorCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogbmFtZXNwYWNlIFdlYkdQVSB7CkBAIC00NiwyMyArNTAsMjUgQEAgc3RydWN0IENv
bXB1dGVQYXNzRGVzY3JpcHRvcjsKIHN0cnVjdCBJbWFnZUNvcHlCdWZmZXI7CiBzdHJ1Y3QgSW1h
Z2VDb3B5VGV4dHVyZTsKIGNsYXNzIE9iamVjdEhlYXA7Ci1jbGFzcyBPYmplY3RSZWdpc3RyeTsK
IHN0cnVjdCBSZW5kZXJQYXNzRGVzY3JpcHRvcjsKIH0KIAogY2xhc3MgUmVtb3RlQ29tbWFuZEVu
Y29kZXIgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlQ29t
bWFuZEVuY29kZXI+IGNyZWF0ZShQQUw6OldlYkdQVTo6Q29tbWFuZEVuY29kZXImIGNvbW1hbmRF
bmNvZGVyLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpP
YmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAg
c3RhdGljIFJlZjxSZW1vdGVDb21tYW5kRW5jb2Rlcj4gY3JlYXRlKFBBTDo6V2ViR1BVOjpDb21t
YW5kRW5jb2RlciYgY29tbWFuZEVuY29kZXIsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVh
cCwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiBzdHJlYW1Db25uZWN0aW9uLCBX
ZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBSZW1vdGVDb21tYW5kRW5jb2Rlcihjb21tYW5kRW5jb2Rlciwgb2JqZWN0UmVnaXN0
cnksIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUmVtb3RlQ29tbWFuZEVuY29kZXIoY29tbWFuZEVuY29kZXIsIG9iamVjdEhlYXAsIFdURk1v
dmUoc3RyZWFtQ29ubmVjdGlvbiksIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFs
IH5SZW1vdGVDb21tYW5kRW5jb2RlcigpOwogCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBP
YmplY3RSZWdpc3RyeTsKKyAgICB2b2lkIHN0b3BMaXN0ZW5pbmdGb3JJUEMoKTsKIAotICAgIFJl
bW90ZUNvbW1hbmRFbmNvZGVyKFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2RlciYsIFdlYkdQVTo6
T2JqZWN0UmVnaXN0cnkmLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsK
KyAgICBQQUw6OldlYkdQVTo6Q29tbWFuZEVuY29kZXImIGJhY2tpbmcoKSB7IHJldHVybiBtX2Jh
Y2tpbmc7IH0KKworcHJpdmF0ZToKKyAgICBSZW1vdGVDb21tYW5kRW5jb2RlcihQQUw6OldlYkdQ
VTo6Q29tbWFuZEVuY29kZXImLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBSZWY8SVBDOjpTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uPiYmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZUNvbW1h
bmRFbmNvZGVyKGNvbnN0IFJlbW90ZUNvbW1hbmRFbmNvZGVyJikgPSBkZWxldGU7CiAgICAgUmVt
b3RlQ29tbWFuZEVuY29kZXIoUmVtb3RlQ29tbWFuZEVuY29kZXImJikgPSBkZWxldGU7CkBAIC0x
MTksOCArMTI1LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAog
ICAgIFJlZjxQQUw6OldlYkdQVTo6Q29tbWFuZEVuY29kZXI+IG1fYmFja2luZzsKLSAgICBXZWJH
UFU6Ok9iamVjdFJlZ2lzdHJ5JiBtX29iamVjdFJlZ2lzdHJ5OwogICAgIFdlYkdQVTo6T2JqZWN0
SGVhcCYgbV9vYmplY3RIZWFwOworICAgIFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+
IG1fc3RyZWFtQ29ubmVjdGlvbjsKICAgICBXZWJHUFVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyLmNwcAppbmRleCA4YjEy
MzMxNTk3NGRhNjRhYjExOGYyODUyZjI5MGM3YzJkNWJjZGVjLi44ZTA3M2VkMWRmY2JhNGFkNmRk
NjQ3NjllYzQ4MDczNWZkODllYjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFzc0Vu
Y29kZXIuY3BwCkBAIC0yOCwyOSArMjgsMzIgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykK
IAorI2luY2x1ZGUgIlJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlck1lc3NhZ2VzLmgiCisjaW5jbHVk
ZSAiU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAu
aCIKLSNpbmNsdWRlICJXZWJHUFVPYmplY3RSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHBhbC9ncmFw
aGljcy9XZWJHUFUvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCi1SZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rl
cihQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyJiBjb21wdXRlUGFzc0VuY29kZXIsIFdl
YkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAm
IG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK1JlbW90ZUNvbXB1dGVQ
YXNzRW5jb2Rlcjo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyKFBBTDo6V2ViR1BVOjpDb21wdXRl
UGFzc0VuY29kZXImIGNvbXB1dGVQYXNzRW5jb2RlciwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmpl
Y3RIZWFwLCBSZWY8SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiYmIHN0cmVhbUNvbm5lY3Rp
b24sIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICA6IG1fYmFja2luZyhjb21wdXRl
UGFzc0VuY29kZXIpCi0gICAgLCBtX29iamVjdFJlZ2lzdHJ5KG9iamVjdFJlZ2lzdHJ5KQogICAg
ICwgbV9vYmplY3RIZWFwKG9iamVjdEhlYXApCisgICAgLCBtX3N0cmVhbUNvbm5lY3Rpb24oV1RG
TW92ZShzdHJlYW1Db25uZWN0aW9uKSkKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQog
ewotICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1faWRlbnRpZmllciwgbV9iYWNraW5n
KTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXMoKnRoaXMs
IE1lc3NhZ2VzOjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCi1SZW1vdGVDb21wdXRlUGFzc0VuY29k
ZXI6On5SZW1vdGVDb21wdXRlUGFzc0VuY29kZXIoKQorUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVy
Ojp+UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyKCkgPSBkZWZhdWx0OworCit2b2lkIFJlbW90ZUNv
bXB1dGVQYXNzRW5jb2Rlcjo6c3RvcExpc3RlbmluZ0ZvcklQQygpCiB7Ci0gICAgbV9vYmplY3RS
ZWdpc3RyeS5yZW1vdmVPYmplY3QobV9pZGVudGlmaWVyKTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rp
b24tPnN0b3BSZWNlaXZpbmdNZXNzYWdlcyhNZXNzYWdlczo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNv
ZGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0K
IAogdm9pZCBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OnNldFBpcGVsaW5lKFdlYkdQVUlkZW50
aWZpZXIgY29tcHV0ZVBpcGVsaW5lKQogewotICAgIGF1dG8gY29udmVydGVkQ29tcHV0ZVBpcGVs
aW5lID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0Q29tcHV0ZVBpcGVsaW5lRnJvbUJhY2tpbmco
Y29tcHV0ZVBpcGVsaW5lKTsKKyAgICBhdXRvIGNvbnZlcnRlZENvbXB1dGVQaXBlbGluZSA9IG1f
b2JqZWN0SGVhcC5jb252ZXJ0Q29tcHV0ZVBpcGVsaW5lRnJvbUJhY2tpbmcoY29tcHV0ZVBpcGVs
aW5lKTsKICAgICBBU1NFUlQoY29udmVydGVkQ29tcHV0ZVBpcGVsaW5lKTsKICAgICBpZiAoIWNv
bnZlcnRlZENvbXB1dGVQaXBlbGluZSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjUsNyArNjgsNyBA
QCB2b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6ZGlzcGF0Y2goUEFMOjpXZWJHUFU6OlNp
emUzMiB4LCBzdGQ6Om9wdGlvbmFsPFBBTAogCiB2b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rl
cjo6ZGlzcGF0Y2hJbmRpcmVjdChXZWJHUFVJZGVudGlmaWVyIGluZGlyZWN0QnVmZmVyLCBQQUw6
OldlYkdQVTo6U2l6ZTY0IGluZGlyZWN0T2Zmc2V0KQogewotICAgIGF1dG8gY29udmVydGVkSW5k
aXJlY3RCdWZmZXIgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhp
bmRpcmVjdEJ1ZmZlcik7CisgICAgYXV0byBjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlciA9IG1fb2Jq
ZWN0SGVhcC5jb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoaW5kaXJlY3RCdWZmZXIpOwogICAgIEFT
U0VSVChjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlcik7CiAgICAgaWYgKCFjb252ZXJ0ZWRJbmRpcmVj
dEJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwpAQCAtNzUsNyArNzgsNyBAQCB2b2lkIFJlbW90ZUNv
bXB1dGVQYXNzRW5jb2Rlcjo6ZGlzcGF0Y2hJbmRpcmVjdChXZWJHUFVJZGVudGlmaWVyIGluZGly
ZWN0QnVmZmVyLAogCiB2b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6YmVnaW5QaXBlbGlu
ZVN0YXRpc3RpY3NRdWVyeShXZWJHUFVJZGVudGlmaWVyIHF1ZXJ5U2V0LCBQQUw6OldlYkdQVTo6
U2l6ZTMyIHF1ZXJ5SW5kZXgpCiB7Ci0gICAgYXV0byBjb252ZXJ0ZWRRdWVyeVNldCA9IG1fb2Jq
ZWN0UmVnaXN0cnkuY29udmVydFF1ZXJ5U2V0RnJvbUJhY2tpbmcocXVlcnlTZXQpOworICAgIGF1
dG8gY29udmVydGVkUXVlcnlTZXQgPSBtX29iamVjdEhlYXAuY29udmVydFF1ZXJ5U2V0RnJvbUJh
Y2tpbmcocXVlcnlTZXQpOwogICAgIEFTU0VSVChjb252ZXJ0ZWRRdWVyeVNldCk7CiAgICAgaWYg
KCFjb252ZXJ0ZWRRdWVyeVNldCkKICAgICAgICAgcmV0dXJuOwpAQCAtOTYsNyArOTksNyBAQCB2
b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6ZW5kUGFzcygpCiB2b2lkIFJlbW90ZUNvbXB1
dGVQYXNzRW5jb2Rlcjo6c2V0QmluZEdyb3VwKFBBTDo6V2ViR1BVOjpJbmRleDMyIGluZGV4LCBX
ZWJHUFVJZGVudGlmaWVyIGJpbmRHcm91cCwKICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxQQUw6
OldlYkdQVTo6QnVmZmVyRHluYW1pY09mZnNldD4+JiYgb2Zmc2V0cykKIHsKLSAgICBhdXRvIGNv
bnZlcnRlZEJpbmRHcm91cCA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEJpbmRHcm91cEZyb21C
YWNraW5nKGJpbmRHcm91cCk7CisgICAgYXV0byBjb252ZXJ0ZWRCaW5kR3JvdXAgPSBtX29iamVj
dEhlYXAuY29udmVydEJpbmRHcm91cEZyb21CYWNraW5nKGJpbmRHcm91cCk7CiAgICAgQVNTRVJU
KGNvbnZlcnRlZEJpbmRHcm91cCk7CiAgICAgaWYgKCFjb252ZXJ0ZWRCaW5kR3JvdXApCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlci5oCmluZGV4IDAw
ZjlkZDMwZDcxNjVlYmY5OGQzYmE1YTdmZWE4YTAxYjYwZTk4YjYuLmNlODY1M2JhNzg3ZDg5ODNm
NjY1OGMwNjVlNzcyYzljZjk2MTNkNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFzc0Vu
Y29kZXIuaApAQCAtMzcsMjYgKzM3LDMyIEBAIG5hbWVzcGFjZSBQQUw6OldlYkdQVSB7CiBjbGFz
cyBDb21wdXRlUGFzc0VuY29kZXI7CiB9CiAKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgU3RyZWFt
U2VydmVyQ29ubmVjdGlvbjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBX
ZWJHUFUgewogY2xhc3MgT2JqZWN0SGVhcDsKLWNsYXNzIE9iamVjdFJlZ2lzdHJ5OwogfQogCiBj
bGFzcyBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXIgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1N
ZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyPiBjcmVhdGUoUEFMOjpXZWJH
UFU6OkNvbXB1dGVQYXNzRW5jb2RlciYgY29tcHV0ZVBhc3NFbmNvZGVyLCBXZWJHUFU6Ok9iamVj
dFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFw
LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxSZW1vdGVDb21w
dXRlUGFzc0VuY29kZXI+IGNyZWF0ZShQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyJiBj
b21wdXRlUGFzc0VuY29kZXIsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgUmVmPElQ
Qzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiBzdHJlYW1Db25uZWN0aW9uLCBXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBS
ZW1vdGVDb21wdXRlUGFzc0VuY29kZXIoY29tcHV0ZVBhc3NFbmNvZGVyLCBvYmplY3RSZWdpc3Ry
eSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXIoY29tcHV0ZVBhc3NFbmNvZGVyLCBvYmplY3RIZWFw
LCBXVEZNb3ZlKHN0cmVhbUNvbm5lY3Rpb24pLCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAg
dmlydHVhbCB+UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyKCk7CiAKLXByaXZhdGU6Ci0gICAgZnJp
ZW5kIGNsYXNzIE9iamVjdFJlZ2lzdHJ5OworICAgIHZvaWQgc3RvcExpc3RlbmluZ0ZvcklQQygp
OwogCi0gICAgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyKFBBTDo6V2ViR1BVOjpDb21wdXRlUGFz
c0VuY29kZXImLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwg
V2ViR1BVSWRlbnRpZmllcik7CisgICAgUEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2RlciYg
YmFja2luZygpIHsgcmV0dXJuIG1fYmFja2luZzsgfQorCitwcml2YXRlOgorICAgIFJlbW90ZUNv
bXB1dGVQYXNzRW5jb2RlcihQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyJiwgV2ViR1BV
OjpPYmplY3RIZWFwJiwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiwgV2ViR1BV
SWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXIoY29uc3QgUmVtb3Rl
Q29tcHV0ZVBhc3NFbmNvZGVyJikgPSBkZWxldGU7CiAgICAgUmVtb3RlQ29tcHV0ZVBhc3NFbmNv
ZGVyKFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlciYmKSA9IGRlbGV0ZTsKQEAgLTg0LDggKzkwLDgg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6
OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyPiBtX2JhY2tpbmc7Ci0gICAgV2ViR1BVOjpPYmpl
Y3RSZWdpc3RyeSYgbV9vYmplY3RSZWdpc3RyeTsKICAgICBXZWJHUFU6Ok9iamVjdEhlYXAmIG1f
b2JqZWN0SGVhcDsKKyAgICBSZWY8SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiBtX3N0cmVh
bUNvbm5lY3Rpb247CiAgICAgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZUNvbXB1dGVQaXBlbGluZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZUNvbXB1dGVQaXBlbGluZS5jcHAKaW5kZXggNzAxNmExZjk3OTA5ZWMyYjRi
NmZmZDBmMWI4YjM0YmY0ZjExZTY4Zi4uY2ZjMzJiODE4ZGIzYzNjMzcwZGFlMTM4MjUyMzE0NGE2
MzA2NmI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVDb21wdXRlUGlwZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBpcGVsaW5lLmNwcApAQCAtMjksMzIg
KzI5LDM1IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiUmVtb3RlQmlu
ZEdyb3VwTGF5b3V0LmgiCisjaW5jbHVkZSAiUmVtb3RlQ29tcHV0ZVBpcGVsaW5lTWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViR1BV
T2JqZWN0SGVhcC5oIgotI2luY2x1ZGUgIldlYkdQVU9iamVjdFJlZ2lzdHJ5LmgiCiAjaW5jbHVk
ZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVCaW5kR3JvdXBMYXlvdXQuaD4KICNpbmNsdWRl
IDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbXB1dGVQaXBlbGluZS5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotUmVtb3RlQ29tcHV0ZVBpcGVsaW5lOjpSZW1vdGVDb21wdXRlUGlwZWxp
bmUoUEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZSYgY29tcHV0ZVBpcGVsaW5lLCBXZWJHUFU6
Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmpl
Y3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCitSZW1vdGVDb21wdXRlUGlwZWxp
bmU6OlJlbW90ZUNvbXB1dGVQaXBlbGluZShQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lJiBj
b21wdXRlUGlwZWxpbmUsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgUmVmPElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiBzdHJlYW1Db25uZWN0aW9uLCBXZWJHUFVJZGVudGlm
aWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2JhY2tpbmcoY29tcHV0ZVBpcGVsaW5lKQotICAgICwg
bV9vYmplY3RSZWdpc3RyeShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmpl
Y3RIZWFwKQorICAgICwgbV9zdHJlYW1Db25uZWN0aW9uKFdURk1vdmUoc3RyZWFtQ29ubmVjdGlv
bikpCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKLSAgICBtX29iamVjdFJlZ2lz
dHJ5LmFkZE9iamVjdChtX2lkZW50aWZpZXIsIG1fYmFja2luZyk7CisgICAgbV9zdHJlYW1Db25u
ZWN0aW9uLT5zdGFydFJlY2VpdmluZ01lc3NhZ2VzKCp0aGlzLCBNZXNzYWdlczo6UmVtb3RlQ29t
cHV0ZVBpcGVsaW5lOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2
NCgpKTsKIH0KIAotUmVtb3RlQ29tcHV0ZVBpcGVsaW5lOjp+UmVtb3RlQ29tcHV0ZVBpcGVsaW5l
KCkKK1JlbW90ZUNvbXB1dGVQaXBlbGluZTo6flJlbW90ZUNvbXB1dGVQaXBlbGluZSgpID0gZGVm
YXVsdDsKKwordm9pZCBSZW1vdGVDb21wdXRlUGlwZWxpbmU6OnN0b3BMaXN0ZW5pbmdGb3JJUEMo
KQogewotICAgIG1fb2JqZWN0UmVnaXN0cnkucmVtb3ZlT2JqZWN0KG1faWRlbnRpZmllcik7Cisg
ICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdG9wUmVjZWl2aW5nTWVzc2FnZXMoTWVzc2FnZXM6OlJl
bW90ZUNvbXB1dGVQaXBlbGluZTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIu
dG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgUmVtb3RlQ29tcHV0ZVBpcGVsaW5lOjpnZXRCaW5kR3Jv
dXBMYXlvdXQodWludDMyX3QgaW5kZXgsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsK
ICAgICBhdXRvIGJpbmRHcm91cExheW91dCA9IG1fYmFja2luZy0+Z2V0QmluZEdyb3VwTGF5b3V0
KGluZGV4KTsKLSAgICBhdXRvIHJlbW90ZUJpbmRHcm91cExheW91dCA9IFJlbW90ZUJpbmRHcm91
cExheW91dDo6Y3JlYXRlKGJpbmRHcm91cExheW91dCwgbV9vYmplY3RSZWdpc3RyeSwgbV9vYmpl
Y3RIZWFwLCBpZGVudGlmaWVyKTsKLSAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KHJlbW90ZUJp
bmRHcm91cExheW91dCk7CisgICAgYXV0byByZW1vdGVCaW5kR3JvdXBMYXlvdXQgPSBSZW1vdGVC
aW5kR3JvdXBMYXlvdXQ6OmNyZWF0ZShiaW5kR3JvdXBMYXlvdXQsIG1fb2JqZWN0SGVhcCwgbV9z
dHJlYW1Db25uZWN0aW9uLmNvcHlSZWYoKSwgaWRlbnRpZmllcik7CisgICAgbV9vYmplY3RIZWFw
LmFkZE9iamVjdChpZGVudGlmaWVyLCByZW1vdGVCaW5kR3JvdXBMYXlvdXQpOwogfQogCiB2b2lk
IFJlbW90ZUNvbXB1dGVQaXBlbGluZTo6c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1
dGVQaXBlbGluZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVDb21wdXRlUGlwZWxpbmUuaAppbmRleCA4NGRhYWI4NmNjNjlkYjRmMzM1MWUxZmMxMGVm
MzQ2M2JhNzc3ZGI3Li41ZWNlNDFiMGU4NTRjNDM4ZTRhZTI3ZjhkOGQ5MzdmODU0OTRhNjUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZUNvbXB1dGVQaXBlbGluZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBpcGVsaW5lLmgKQEAgLTM2LDI2ICszNiwzMiBAQCBuYW1l
c3BhY2UgUEFMOjpXZWJHUFUgewogY2xhc3MgQ29tcHV0ZVBpcGVsaW5lOwogfQogCituYW1lc3Bh
Y2UgSVBDIHsKK2NsYXNzIFN0cmVhbVNlcnZlckNvbm5lY3Rpb247Cit9CisKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIGNsYXNzIE9iamVjdEhlYXA7Ci1jbGFzcyBP
YmplY3RSZWdpc3RyeTsKIH0KIAogY2xhc3MgUmVtb3RlQ29tcHV0ZVBpcGVsaW5lIGZpbmFsIDog
cHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZUNvbXB1dGVQaXBlbGluZT4g
Y3JlYXRlKFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmUmIGNvbXB1dGVQaXBlbGluZSwgV2Vi
R1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYg
b2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIHN0YXRpYyBSZWY8
UmVtb3RlQ29tcHV0ZVBpcGVsaW5lPiBjcmVhdGUoUEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGlu
ZSYgY29tcHV0ZVBpcGVsaW5lLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFJlZjxJ
UEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+JiYgc3RyZWFtQ29ubmVjdGlvbiwgV2ViR1BVSWRl
bnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
UmVtb3RlQ29tcHV0ZVBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZSwgb2JqZWN0UmVnaXN0cnksIG9i
amVjdEhlYXAsIGlkZW50aWZpZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVt
b3RlQ29tcHV0ZVBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZSwgb2JqZWN0SGVhcCwgV1RGTW92ZShz
dHJlYW1Db25uZWN0aW9uKSwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJl
bW90ZUNvbXB1dGVQaXBlbGluZSgpOwogCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBPYmpl
Y3RSZWdpc3RyeTsKKyAgICB2b2lkIHN0b3BMaXN0ZW5pbmdGb3JJUEMoKTsKIAotICAgIFJlbW90
ZUNvbXB1dGVQaXBlbGluZShQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lJiwgV2ViR1BVOjpP
YmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOwor
ICAgIFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmUmIGJhY2tpbmcoKSB7IHJldHVybiBtX2Jh
Y2tpbmc7IH0KKworcHJpdmF0ZToKKyAgICBSZW1vdGVDb21wdXRlUGlwZWxpbmUoUEFMOjpXZWJH
UFU6OkNvbXB1dGVQaXBlbGluZSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFJlZjxJUEM6OlN0cmVh
bVNlcnZlckNvbm5lY3Rpb24+JiYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlQ29t
cHV0ZVBpcGVsaW5lKGNvbnN0IFJlbW90ZUNvbXB1dGVQaXBlbGluZSYpID0gZGVsZXRlOwogICAg
IFJlbW90ZUNvbXB1dGVQaXBlbGluZShSZW1vdGVDb21wdXRlUGlwZWxpbmUmJikgPSBkZWxldGU7
CkBAIC02OSw4ICs3NSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7
CiAKICAgICBSZWY8UEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZT4gbV9iYWNraW5nOwotICAg
IFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7CiAgICAgV2ViR1BVOjpP
YmplY3RIZWFwJiBtX29iamVjdEhlYXA7CisgICAgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVj
dGlvbj4gbV9zdHJlYW1Db25uZWN0aW9uOwogICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlm
aWVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVEZXZpY2UuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVEZXZpY2UuY3BwCmluZGV4IDg0NWM0M2I0ZDE0MTUyM2RhNjQwOWJl
ODA0NDM4NjgxY2NiZjNlYmEuLjllZGNjNDgwYzU2YzNkZDhhYzY4NGFkM2I0MjZiMTlmOGE2YjZk
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlRGV2aWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZURldmljZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJSZW1v
dGVCdWZmZXIuaCIKICNpbmNsdWRlICJSZW1vdGVDb21tYW5kRW5jb2Rlci5oIgogI2luY2x1ZGUg
IlJlbW90ZUNvbXB1dGVQaXBlbGluZS5oIgorI2luY2x1ZGUgIlJlbW90ZURldmljZU1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiUmVtb3RlRXh0ZXJuYWxUZXh0dXJlLmgiCiAjaW5jbHVkZSAiUmVtb3Rl
UGlwZWxpbmVMYXlvdXQuaCIKICNpbmNsdWRlICJSZW1vdGVRdWVyeVNldC5oIgpAQCAtNDEsOSAr
NDIsOSBAQAogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZXIuaCIKICNpbmNsdWRlICJSZW1vdGVTaGFk
ZXJNb2R1bGUuaCIKICNpbmNsdWRlICJSZW1vdGVUZXh0dXJlLmgiCisjaW5jbHVkZSAiU3RyZWFt
U2VydmVyQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYkdQVUNvbW1hbmRFbmNvZGVyRGVzY3Jp
cHRvci5oIgogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKLSNpbmNsdWRlICJXZWJHUFVP
YmplY3RSZWdpc3RyeS5oIgogI2luY2x1ZGUgIldlYkdQVU91dE9mTWVtb3J5RXJyb3IuaCIKICNp
bmNsdWRlICJXZWJHUFVWYWxpZGF0aW9uRXJyb3IuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3Mv
V2ViR1BVL1dlYkdQVUJpbmRHcm91cC5oPgpAQCAtNzcsMTggKzc4LDIwIEBACiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi1SZW1vdGVEZXZpY2U6OlJlbW90ZURldmljZShQQUw6OldlYkdQVTo6RGV2
aWNlJiBkZXZpY2UsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJH
UFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikK
K1JlbW90ZURldmljZTo6UmVtb3RlRGV2aWNlKFBBTDo6V2ViR1BVOjpEZXZpY2UmIGRldmljZSwg
V2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBSZWY8SVBDOjpTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uPiYmIHN0cmVhbUNvbm5lY3Rpb24sIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikK
ICAgICA6IG1fYmFja2luZyhkZXZpY2UpCi0gICAgLCBtX29iamVjdFJlZ2lzdHJ5KG9iamVjdFJl
Z2lzdHJ5KQogICAgICwgbV9vYmplY3RIZWFwKG9iamVjdEhlYXApCisgICAgLCBtX3N0cmVhbUNv
bm5lY3Rpb24oV1RGTW92ZShzdHJlYW1Db25uZWN0aW9uKSkKICAgICAsIG1faWRlbnRpZmllcihp
ZGVudGlmaWVyKQogewotICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1faWRlbnRpZmll
ciwgbV9iYWNraW5nKTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0YXJ0UmVjZWl2aW5nTWVz
c2FnZXMoKnRoaXMsIE1lc3NhZ2VzOjpSZW1vdGVEZXZpY2U6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCi1SZW1vdGVEZXZpY2U6On5SZW1vdGVE
ZXZpY2UoKQorUmVtb3RlRGV2aWNlOjp+UmVtb3RlRGV2aWNlKCkgPSBkZWZhdWx0OworCit2b2lk
IFJlbW90ZURldmljZTo6c3RvcExpc3RlbmluZ0ZvcklQQygpCiB7Ci0gICAgbV9vYmplY3RSZWdp
c3RyeS5yZW1vdmVPYmplY3QobV9pZGVudGlmaWVyKTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24t
PnN0b3BSZWNlaXZpbmdNZXNzYWdlcyhNZXNzYWdlczo6UmVtb3RlRGV2aWNlOjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBSZW1vdGVE
ZXZpY2U6OmRlc3Ryb3koKQpAQCAtOTgsMTU2ICsxMDEsMTUyIEBAIHZvaWQgUmVtb3RlRGV2aWNl
OjpkZXN0cm95KCkKIAogdm9pZCBSZW1vdGVEZXZpY2U6OmNyZWF0ZUJ1ZmZlcihjb25zdCBXZWJH
UFU6OkJ1ZmZlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRp
ZmllcikKIHsKLSAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5
LmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc2Ny
aXB0b3IgPSBtX29iamVjdEhlYXAuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOwogICAg
IEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKICAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0
b3IpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gYnVmZmVyID0gbV9iYWNraW5nLT5jcmVh
dGVCdWZmZXIoKmNvbnZlcnRlZERlc2NyaXB0b3IpOwotICAgIGF1dG8gcmVtb3RlQnVmZmVyID0g
UmVtb3RlQnVmZmVyOjpjcmVhdGUoYnVmZmVyLCBtX29iamVjdFJlZ2lzdHJ5LCBtX29iamVjdEhl
YXAsIGlkZW50aWZpZXIpOwotICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QocmVtb3RlQnVmZmVy
KTsKKyAgICBhdXRvIHJlbW90ZUJ1ZmZlciA9IFJlbW90ZUJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlciwg
bV9vYmplY3RIZWFwLCBtX3N0cmVhbUNvbm5lY3Rpb24uY29weVJlZigpLCBpZGVudGlmaWVyKTsK
KyAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KGlkZW50aWZpZXIsIHJlbW90ZUJ1ZmZlcik7CiB9
CiAKIHZvaWQgUmVtb3RlRGV2aWNlOjpjcmVhdGVUZXh0dXJlKGNvbnN0IFdlYkdQVTo6VGV4dHVy
ZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsK
LSAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRG
cm9tQmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBt
X29iamVjdEhlYXAuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOwogICAgIEFTU0VSVChj
b252ZXJ0ZWREZXNjcmlwdG9yKTsKICAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGF1dG8gdGV4dHVyZSA9IG1fYmFja2luZy0+Y3JlYXRlVGV4dHVy
ZSgqY29udmVydGVkRGVzY3JpcHRvcik7Ci0gICAgYXV0byByZW1vdGVUZXh0dXJlID0gUmVtb3Rl
VGV4dHVyZTo6Y3JlYXRlKHRleHR1cmUsIG1fb2JqZWN0UmVnaXN0cnksIG1fb2JqZWN0SGVhcCwg
aWRlbnRpZmllcik7Ci0gICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChyZW1vdGVUZXh0dXJlKTsK
KyAgICBhdXRvIHJlbW90ZVRleHR1cmUgPSBSZW1vdGVUZXh0dXJlOjpjcmVhdGUodGV4dHVyZSwg
bV9vYmplY3RIZWFwLCBtX3N0cmVhbUNvbm5lY3Rpb24uY29weVJlZigpLCBpZGVudGlmaWVyKTsK
KyAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KGlkZW50aWZpZXIsIHJlbW90ZVRleHR1cmUpOwog
fQogCiB2b2lkIFJlbW90ZURldmljZTo6Y3JlYXRlU2FtcGxlcihjb25zdCBXZWJHUFU6OlNhbXBs
ZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7
Ci0gICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0
RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0g
bV9vYmplY3RIZWFwLmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKICAgICBBU1NFUlQo
Y29udmVydGVkRGVzY3JpcHRvcik7CiAgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKQogICAg
ICAgICByZXR1cm47CiAKICAgICBhdXRvIHNhbXBsZXIgPSBtX2JhY2tpbmctPmNyZWF0ZVNhbXBs
ZXIoKmNvbnZlcnRlZERlc2NyaXB0b3IpOwotICAgIGF1dG8gcmVtb3RlU2FtcGxlciA9IFJlbW90
ZVNhbXBsZXI6OmNyZWF0ZShzYW1wbGVyLCBtX29iamVjdFJlZ2lzdHJ5LCBtX29iamVjdEhlYXAs
IGlkZW50aWZpZXIpOwotICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QocmVtb3RlU2FtcGxlcik7
CisgICAgYXV0byByZW1vdGVTYW1wbGVyID0gUmVtb3RlU2FtcGxlcjo6Y3JlYXRlKHNhbXBsZXIs
IG1fb2JqZWN0SGVhcCwgbV9zdHJlYW1Db25uZWN0aW9uLmNvcHlSZWYoKSwgaWRlbnRpZmllcik7
CisgICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChpZGVudGlmaWVyLCByZW1vdGVTYW1wbGVyKTsK
IH0KIAogdm9pZCBSZW1vdGVEZXZpY2U6OmltcG9ydEV4dGVybmFsVGV4dHVyZShjb25zdCBXZWJH
UFU6OkV4dGVybmFsVGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZp
ZXIgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVj
dFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBhdXRvIGNvbnZl
cnRlZERlc2NyaXB0b3IgPSBtX29iamVjdEhlYXAuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0
b3IpOwogICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKICAgICBpZiAoIWNvbnZlcnRl
ZERlc2NyaXB0b3IpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gZXh0ZXJuYWxUZXh0dXJl
ID0gbV9iYWNraW5nLT5pbXBvcnRFeHRlcm5hbFRleHR1cmUoKmNvbnZlcnRlZERlc2NyaXB0b3Ip
OwotICAgIGF1dG8gcmVtb3RlRXh0ZXJuYWxUZXh0dXJlID0gUmVtb3RlRXh0ZXJuYWxUZXh0dXJl
OjpjcmVhdGUoZXh0ZXJuYWxUZXh0dXJlLCBtX29iamVjdFJlZ2lzdHJ5LCBtX29iamVjdEhlYXAs
IGlkZW50aWZpZXIpOwotICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QocmVtb3RlRXh0ZXJuYWxU
ZXh0dXJlKTsKKyAgICBhdXRvIHJlbW90ZUV4dGVybmFsVGV4dHVyZSA9IFJlbW90ZUV4dGVybmFs
VGV4dHVyZTo6Y3JlYXRlKGV4dGVybmFsVGV4dHVyZSwgbV9vYmplY3RIZWFwLCBtX3N0cmVhbUNv
bm5lY3Rpb24uY29weVJlZigpLCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVjdEhlYXAuYWRkT2Jq
ZWN0KGlkZW50aWZpZXIsIHJlbW90ZUV4dGVybmFsVGV4dHVyZSk7CiB9CiAKIHZvaWQgUmVtb3Rl
RGV2aWNlOjpjcmVhdGVCaW5kR3JvdXBMYXlvdXQoY29uc3QgV2ViR1BVOjpCaW5kR3JvdXBMYXlv
dXREZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7
Ci0gICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0
RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0g
bV9vYmplY3RIZWFwLmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKICAgICBBU1NFUlQo
Y29udmVydGVkRGVzY3JpcHRvcik7CiAgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKQogICAg
ICAgICByZXR1cm47CiAKICAgICBhdXRvIGJpbmRHcm91cExheW91dCA9IG1fYmFja2luZy0+Y3Jl
YXRlQmluZEdyb3VwTGF5b3V0KCpjb252ZXJ0ZWREZXNjcmlwdG9yKTsKLSAgICBhdXRvIHJlbW90
ZUJpbmRHcm91cExheW91dCA9IFJlbW90ZUJpbmRHcm91cExheW91dDo6Y3JlYXRlKGJpbmRHcm91
cExheW91dCwgbV9vYmplY3RSZWdpc3RyeSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKLSAg
ICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KHJlbW90ZUJpbmRHcm91cExheW91dCk7CisgICAgYXV0
byByZW1vdGVCaW5kR3JvdXBMYXlvdXQgPSBSZW1vdGVCaW5kR3JvdXBMYXlvdXQ6OmNyZWF0ZShi
aW5kR3JvdXBMYXlvdXQsIG1fb2JqZWN0SGVhcCwgbV9zdHJlYW1Db25uZWN0aW9uLmNvcHlSZWYo
KSwgaWRlbnRpZmllcik7CisgICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChpZGVudGlmaWVyLCBy
ZW1vdGVCaW5kR3JvdXBMYXlvdXQpOwogfQogCiB2b2lkIFJlbW90ZURldmljZTo6Y3JlYXRlUGlw
ZWxpbmVMYXlvdXQoY29uc3QgV2ViR1BVOjpQaXBlbGluZUxheW91dERlc2NyaXB0b3ImIGRlc2Ny
aXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIGNvbnZlcnRl
ZERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlw
dG9yKTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdEhlYXAuY29udmVy
dEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOwogICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9y
KTsKICAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGF1dG8gcGlwZWxpbmVMYXlvdXQgPSBtX2JhY2tpbmctPmNyZWF0ZVBpcGVsaW5lTGF5b3V0KCpj
b252ZXJ0ZWREZXNjcmlwdG9yKTsKLSAgICBhdXRvIHJlbW90ZVBpcGVsaW5lTGF5b3V0ID0gUmVt
b3RlUGlwZWxpbmVMYXlvdXQ6OmNyZWF0ZShwaXBlbGluZUxheW91dCwgbV9vYmplY3RSZWdpc3Ry
eSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKLSAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0
KHJlbW90ZVBpcGVsaW5lTGF5b3V0KTsKKyAgICBhdXRvIHJlbW90ZVBpcGVsaW5lTGF5b3V0ID0g
UmVtb3RlUGlwZWxpbmVMYXlvdXQ6OmNyZWF0ZShwaXBlbGluZUxheW91dCwgbV9vYmplY3RIZWFw
LCBtX3N0cmVhbUNvbm5lY3Rpb24uY29weVJlZigpLCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVj
dEhlYXAuYWRkT2JqZWN0KGlkZW50aWZpZXIsIHJlbW90ZVBpcGVsaW5lTGF5b3V0KTsKIH0KIAog
dm9pZCBSZW1vdGVEZXZpY2U6OmNyZWF0ZUJpbmRHcm91cChjb25zdCBXZWJHUFU6OkJpbmRHcm91
cERlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsK
LSAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRG
cm9tQmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBt
X29iamVjdEhlYXAuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOwogICAgIEFTU0VSVChj
b252ZXJ0ZWREZXNjcmlwdG9yKTsKICAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGF1dG8gYmluZEdyb3VwID0gbV9iYWNraW5nLT5jcmVhdGVCaW5k
R3JvdXAoKmNvbnZlcnRlZERlc2NyaXB0b3IpOwotICAgIGF1dG8gcmVtb3RlQmluZEdyb3VwID0g
UmVtb3RlQmluZEdyb3VwOjpjcmVhdGUoYmluZEdyb3VwLCBtX29iamVjdFJlZ2lzdHJ5LCBtX29i
amVjdEhlYXAsIGlkZW50aWZpZXIpOwotICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QocmVtb3Rl
QmluZEdyb3VwKTsKKyAgICBhdXRvIHJlbW90ZUJpbmRHcm91cCA9IFJlbW90ZUJpbmRHcm91cDo6
Y3JlYXRlKGJpbmRHcm91cCwgbV9vYmplY3RIZWFwLCBtX3N0cmVhbUNvbm5lY3Rpb24uY29weVJl
ZigpLCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KGlkZW50aWZpZXIs
IHJlbW90ZUJpbmRHcm91cCk7CiB9CiAKIHZvaWQgUmVtb3RlRGV2aWNlOjpjcmVhdGVTaGFkZXJN
b2R1bGUoY29uc3QgV2ViR1BVOjpTaGFkZXJNb2R1bGVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBX
ZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBjb252ZXJ0ZWREZXNjcmlw
dG9yID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7Cisg
ICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RIZWFwLmNvbnZlcnRGcm9tQmFj
a2luZyhkZXNjcmlwdG9yKTsKICAgICBBU1NFUlQoY29udmVydGVkRGVzY3JpcHRvcik7CiAgICAg
aWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHNo
YWRlck1vZHVsZSA9IG1fYmFja2luZy0+Y3JlYXRlU2hhZGVyTW9kdWxlKCpjb252ZXJ0ZWREZXNj
cmlwdG9yKTsKLSAgICBhdXRvIHJlbW90ZVNoYWRlck1vZHVsZSA9IFJlbW90ZVNoYWRlck1vZHVs
ZTo6Y3JlYXRlKHNoYWRlck1vZHVsZSwgbV9vYmplY3RSZWdpc3RyeSwgbV9vYmplY3RIZWFwLCBp
ZGVudGlmaWVyKTsKLSAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KHJlbW90ZVNoYWRlck1vZHVs
ZSk7CisgICAgYXV0byByZW1vdGVTaGFkZXJNb2R1bGUgPSBSZW1vdGVTaGFkZXJNb2R1bGU6OmNy
ZWF0ZShzaGFkZXJNb2R1bGUsIG1fb2JqZWN0SGVhcCwgbV9zdHJlYW1Db25uZWN0aW9uLmNvcHlS
ZWYoKSwgaWRlbnRpZmllcik7CisgICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChpZGVudGlmaWVy
LCByZW1vdGVTaGFkZXJNb2R1bGUpOwogfQogCiB2b2lkIFJlbW90ZURldmljZTo6Y3JlYXRlQ29t
cHV0ZVBpcGVsaW5lKGNvbnN0IFdlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYgZGVz
Y3JpcHRvciwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGF1dG8gY29udmVy
dGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGRlc2Ny
aXB0b3IpOworICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0SGVhcC5jb252
ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7CiAgICAgQVNTRVJUKGNvbnZlcnRlZERlc2NyaXB0
b3IpOwogICAgIGlmICghY29udmVydGVkRGVzY3JpcHRvcikKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgYXV0byBjb21wdXRlUGlwZWxpbmUgPSBtX2JhY2tpbmctPmNyZWF0ZUNvbXB1dGVQaXBlbGlu
ZSgqY29udmVydGVkRGVzY3JpcHRvcik7Ci0gICAgYXV0byByZW1vdGVDb21wdXRlUGlwZWxpbmUg
PSBSZW1vdGVDb21wdXRlUGlwZWxpbmU6OmNyZWF0ZShjb21wdXRlUGlwZWxpbmUsIG1fb2JqZWN0
UmVnaXN0cnksIG1fb2JqZWN0SGVhcCwgaWRlbnRpZmllcik7Ci0gICAgbV9vYmplY3RIZWFwLmFk
ZE9iamVjdChyZW1vdGVDb21wdXRlUGlwZWxpbmUpOworICAgIGF1dG8gcmVtb3RlQ29tcHV0ZVBp
cGVsaW5lID0gUmVtb3RlQ29tcHV0ZVBpcGVsaW5lOjpjcmVhdGUoY29tcHV0ZVBpcGVsaW5lLCBt
X29iamVjdEhlYXAsIG1fc3RyZWFtQ29ubmVjdGlvbi5jb3B5UmVmKCksIGlkZW50aWZpZXIpOwor
ICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QoaWRlbnRpZmllciwgcmVtb3RlQ29tcHV0ZVBpcGVs
aW5lKTsKIH0KIAogdm9pZCBSZW1vdGVEZXZpY2U6OmNyZWF0ZVJlbmRlclBpcGVsaW5lKGNvbnN0
IFdlYkdQVTo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9v
YmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgYXV0byBj
b252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RIZWFwLmNvbnZlcnRGcm9tQmFja2luZyhkZXNj
cmlwdG9yKTsKICAgICBBU1NFUlQoY29udmVydGVkRGVzY3JpcHRvcik7CiAgICAgaWYgKCFjb252
ZXJ0ZWREZXNjcmlwdG9yKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHJlbmRlclBpcGVs
aW5lID0gbV9iYWNraW5nLT5jcmVhdGVSZW5kZXJQaXBlbGluZSgqY29udmVydGVkRGVzY3JpcHRv
cik7Ci0gICAgYXV0byByZW1vdGVSZW5kZXJQaXBlbGluZSA9IFJlbW90ZVJlbmRlclBpcGVsaW5l
OjpjcmVhdGUocmVuZGVyUGlwZWxpbmUsIG1fb2JqZWN0UmVnaXN0cnksIG1fb2JqZWN0SGVhcCwg
aWRlbnRpZmllcik7Ci0gICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChyZW1vdGVSZW5kZXJQaXBl
bGluZSk7CisgICAgYXV0byByZW1vdGVSZW5kZXJQaXBlbGluZSA9IFJlbW90ZVJlbmRlclBpcGVs
aW5lOjpjcmVhdGUocmVuZGVyUGlwZWxpbmUsIG1fb2JqZWN0SGVhcCwgbV9zdHJlYW1Db25uZWN0
aW9uLmNvcHlSZWYoKSwgaWRlbnRpZmllcik7CisgICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChp
ZGVudGlmaWVyLCByZW1vdGVSZW5kZXJQaXBlbGluZSk7CiB9CiAKIHZvaWQgUmVtb3RlRGV2aWNl
OjpjcmVhdGVDb21wdXRlUGlwZWxpbmVBc3luYyhjb25zdCBXZWJHUFU6OkNvbXB1dGVQaXBlbGlu
ZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgV1RG
OjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7Ci0gICAgYXV0byBjb252
ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoZGVz
Y3JpcHRvcik7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RIZWFwLmNv
bnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKICAgICBBU1NFUlQoY29udmVydGVkRGVzY3Jp
cHRvcik7CiAgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKSB7CiAgICAgICAgIGNhbGxiYWNr
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2JhY2tpbmctPmNyZWF0ZUNvbXB1
dGVQaXBlbGluZUFzeW5jKCpjb252ZXJ0ZWREZXNjcmlwdG9yLCBbY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKSwgd2Vha09iamVjdEhlYXAgPSBXZWFrUHRyPFdlYkdQVTo6T2JqZWN0SGVhcD4o
bV9vYmplY3RIZWFwKSwgb2JqZWN0UmVnaXN0cnkgPSBtX29iamVjdFJlZ2lzdHJ5LCBpZGVudGlm
aWVyXSAoUmVmPFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmU+JiYgY29tcHV0ZVBpcGVsaW5l
KSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCF3ZWFrT2JqZWN0SGVhcCkKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgYXV0byByZW1vdGVDb21wdXRlUGlwZWxpbmUgPSBSZW1vdGVDb21wdXRl
UGlwZWxpbmU6OmNyZWF0ZShjb21wdXRlUGlwZWxpbmUsIG9iamVjdFJlZ2lzdHJ5LCAqd2Vha09i
amVjdEhlYXAsIGlkZW50aWZpZXIpOwotICAgICAgICB3ZWFrT2JqZWN0SGVhcC0+YWRkT2JqZWN0
KHJlbW90ZUNvbXB1dGVQaXBlbGluZSk7CisgICAgbV9iYWNraW5nLT5jcmVhdGVDb21wdXRlUGlw
ZWxpbmVBc3luYygqY29udmVydGVkRGVzY3JpcHRvciwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayksIG9iamVjdEhlYXAgPSBSZWYgeyBtX29iamVjdEhlYXAgfSwgc3RyZWFtQ29ubmVjdGlv
biA9IG1fc3RyZWFtQ29ubmVjdGlvbi5jb3B5UmVmKCksIGlkZW50aWZpZXIgPSBtX2lkZW50aWZp
ZXJdIChSZWY8UEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZT4mJiBjb21wdXRlUGlwZWxpbmUp
IG11dGFibGUgeworICAgICAgICBhdXRvIHJlbW90ZUNvbXB1dGVQaXBlbGluZSA9IFJlbW90ZUNv
bXB1dGVQaXBlbGluZTo6Y3JlYXRlKGNvbXB1dGVQaXBlbGluZSwgb2JqZWN0SGVhcCwgV1RGTW92
ZShzdHJlYW1Db25uZWN0aW9uKSwgaWRlbnRpZmllcik7CisgICAgICAgIG9iamVjdEhlYXAtPmFk
ZE9iamVjdChpZGVudGlmaWVyLCByZW1vdGVDb21wdXRlUGlwZWxpbmUpOwogICAgICAgICBjYWxs
YmFjaygpOwogICAgIH0pOwogfQogCiB2b2lkIFJlbW90ZURldmljZTo6Y3JlYXRlUmVuZGVyUGlw
ZWxpbmVBc3luYyhjb25zdCBXZWJHUFU6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3Jp
cHRvciwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKLSAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBt
X29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBhdXRv
IGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdEhlYXAuY29udmVydEZyb21CYWNraW5nKGRl
c2NyaXB0b3IpOwogICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKICAgICBpZiAoIWNv
bnZlcnRlZERlc2NyaXB0b3IpIHsKICAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIG1fYmFja2luZy0+Y3JlYXRlUmVuZGVyUGlwZWxpbmVBc3luYygqY29u
dmVydGVkRGVzY3JpcHRvciwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHdlYWtPYmpl
Y3RIZWFwID0gV2Vha1B0cjxXZWJHUFU6Ok9iamVjdEhlYXA+KG1fb2JqZWN0SGVhcCksIG9iamVj
dFJlZ2lzdHJ5ID0gbV9vYmplY3RSZWdpc3RyeSwgaWRlbnRpZmllcl0gKFJlZjxQQUw6OldlYkdQ
VTo6UmVuZGVyUGlwZWxpbmU+JiYgcmVuZGVyUGlwZWxpbmUpIG11dGFibGUgewotICAgICAgICBp
ZiAoIXdlYWtPYmplY3RIZWFwKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBhdXRvIHJl
bW90ZVJlbmRlclBpcGVsaW5lID0gUmVtb3RlUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZShyZW5kZXJQ
aXBlbGluZSwgb2JqZWN0UmVnaXN0cnksICp3ZWFrT2JqZWN0SGVhcCwgaWRlbnRpZmllcik7Ci0g
ICAgICAgIHdlYWtPYmplY3RIZWFwLT5hZGRPYmplY3QocmVtb3RlUmVuZGVyUGlwZWxpbmUpOwor
ICAgIG1fYmFja2luZy0+Y3JlYXRlUmVuZGVyUGlwZWxpbmVBc3luYygqY29udmVydGVkRGVzY3Jp
cHRvciwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIG9iamVjdEhlYXAgPSBSZWYgeyBt
X29iamVjdEhlYXAgfSwgc3RyZWFtQ29ubmVjdGlvbiA9IG1fc3RyZWFtQ29ubmVjdGlvbi5jb3B5
UmVmKCksIGlkZW50aWZpZXIgPSBtX2lkZW50aWZpZXJdIChSZWY8UEFMOjpXZWJHUFU6OlJlbmRl
clBpcGVsaW5lPiYmIHJlbmRlclBpcGVsaW5lKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byByZW1v
dGVSZW5kZXJQaXBlbGluZSA9IFJlbW90ZVJlbmRlclBpcGVsaW5lOjpjcmVhdGUocmVuZGVyUGlw
ZWxpbmUsIG9iamVjdEhlYXAsIFdURk1vdmUoc3RyZWFtQ29ubmVjdGlvbiksIGlkZW50aWZpZXIp
OworICAgICAgICBvYmplY3RIZWFwLT5hZGRPYmplY3QoaWRlbnRpZmllciwgcmVtb3RlUmVuZGVy
UGlwZWxpbmUpOwogICAgICAgICBjYWxsYmFjaygpOwogICAgIH0pOwogfQpAQCAtMjU2LDM5ICsy
NTUsMzkgQEAgdm9pZCBSZW1vdGVEZXZpY2U6OmNyZWF0ZUNvbW1hbmRFbmNvZGVyKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8V2ViR1BVOjpDb21tYW5kRW5jb2QKIHsKICAgICBzdGQ6Om9wdGlvbmFsPFBB
TDo6V2ViR1BVOjpDb21tYW5kRW5jb2RlckRlc2NyaXB0b3I+IGNvbnZlcnRlZERlc2NyaXB0b3I7
CiAgICAgaWYgKGRlc2NyaXB0b3IpIHsKLSAgICAgICAgYXV0byByZXN1bHREZXNjcmlwdG9yID0g
bV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoKmRlc2NyaXB0b3IpOworICAgICAg
ICBhdXRvIHJlc3VsdERlc2NyaXB0b3IgPSBtX29iamVjdEhlYXAuY29udmVydEZyb21CYWNraW5n
KCpkZXNjcmlwdG9yKTsKICAgICAgICAgQVNTRVJUKHJlc3VsdERlc2NyaXB0b3IpOwogICAgICAg
ICBjb252ZXJ0ZWREZXNjcmlwdG9yID0gV1RGTW92ZShyZXN1bHREZXNjcmlwdG9yKTsKICAgICAg
ICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBhdXRvIGNvbW1hbmRFbmNvZGVyID0gbV9iYWNraW5nLT5jcmVhdGVDb21tYW5kRW5jb2Rl
cigqY29udmVydGVkRGVzY3JpcHRvcik7Ci0gICAgYXV0byByZW1vdGVDb21tYW5kRW5jb2RlciA9
IFJlbW90ZUNvbW1hbmRFbmNvZGVyOjpjcmVhdGUoY29tbWFuZEVuY29kZXIsIG1fb2JqZWN0UmVn
aXN0cnksIG1fb2JqZWN0SGVhcCwgaWRlbnRpZmllcik7Ci0gICAgbV9vYmplY3RIZWFwLmFkZE9i
amVjdChyZW1vdGVDb21tYW5kRW5jb2Rlcik7CisgICAgYXV0byByZW1vdGVDb21tYW5kRW5jb2Rl
ciA9IFJlbW90ZUNvbW1hbmRFbmNvZGVyOjpjcmVhdGUoY29tbWFuZEVuY29kZXIsIG1fb2JqZWN0
SGVhcCwgbV9zdHJlYW1Db25uZWN0aW9uLmNvcHlSZWYoKSwgaWRlbnRpZmllcik7CisgICAgbV9v
YmplY3RIZWFwLmFkZE9iamVjdChpZGVudGlmaWVyLCByZW1vdGVDb21tYW5kRW5jb2Rlcik7CiB9
CiAKIHZvaWQgUmVtb3RlRGV2aWNlOjpjcmVhdGVSZW5kZXJCdW5kbGVFbmNvZGVyKGNvbnN0IFdl
YkdQVTo6UmVuZGVyQnVuZGxlRW5jb2RlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdlYkdQVUlk
ZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBt
X29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBhdXRv
IGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdEhlYXAuY29udmVydEZyb21CYWNraW5nKGRl
c2NyaXB0b3IpOwogICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKICAgICBpZiAoIWNv
bnZlcnRlZERlc2NyaXB0b3IpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gcmVuZGVyQnVu
ZGxlRW5jb2RlciA9IG1fYmFja2luZy0+Y3JlYXRlUmVuZGVyQnVuZGxlRW5jb2RlcigqY29udmVy
dGVkRGVzY3JpcHRvcik7Ci0gICAgYXV0byByZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyID0gUmVt
b3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6Y3JlYXRlKHJlbmRlckJ1bmRsZUVuY29kZXIsIG1fb2Jq
ZWN0UmVnaXN0cnksIG1fb2JqZWN0SGVhcCwgaWRlbnRpZmllcik7Ci0gICAgbV9vYmplY3RIZWFw
LmFkZE9iamVjdChyZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyKTsKKyAgICBhdXRvIHJlbW90ZVJl
bmRlckJ1bmRsZUVuY29kZXIgPSBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpjcmVhdGUocmVu
ZGVyQnVuZGxlRW5jb2RlciwgbV9vYmplY3RIZWFwLCBtX3N0cmVhbUNvbm5lY3Rpb24uY29weVJl
ZigpLCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KGlkZW50aWZpZXIs
IHJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIpOwogfQogCiB2b2lkIFJlbW90ZURldmljZTo6Y3Jl
YXRlUXVlcnlTZXQoY29uc3QgV2ViR1BVOjpRdWVyeVNldERlc2NyaXB0b3ImIGRlc2NyaXB0b3Is
IFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIGNvbnZlcnRlZERlc2Ny
aXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsK
KyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdEhlYXAuY29udmVydEZyb21C
YWNraW5nKGRlc2NyaXB0b3IpOwogICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKICAg
ICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8g
cXVlcnlTZXQgPSBtX2JhY2tpbmctPmNyZWF0ZVF1ZXJ5U2V0KCpjb252ZXJ0ZWREZXNjcmlwdG9y
KTsKLSAgICBhdXRvIHJlbW90ZVF1ZXJ5U2V0ID0gUmVtb3RlUXVlcnlTZXQ6OmNyZWF0ZShxdWVy
eVNldCwgbV9vYmplY3RSZWdpc3RyeSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKLSAgICBt
X29iamVjdEhlYXAuYWRkT2JqZWN0KHJlbW90ZVF1ZXJ5U2V0KTsKKyAgICBhdXRvIHJlbW90ZVF1
ZXJ5U2V0ID0gUmVtb3RlUXVlcnlTZXQ6OmNyZWF0ZShxdWVyeVNldCwgbV9vYmplY3RIZWFwLCBt
X3N0cmVhbUNvbm5lY3Rpb24uY29weVJlZigpLCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVjdEhl
YXAuYWRkT2JqZWN0KGlkZW50aWZpZXIsIHJlbW90ZVF1ZXJ5U2V0KTsKIH0KIAogdm9pZCBSZW1v
dGVEZXZpY2U6OnB1c2hFcnJvclNjb3BlKFBBTDo6V2ViR1BVOjpFcnJvckZpbHRlciBlcnJvckZp
bHRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlRGV2aWNlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZURldmljZS5oCmluZGV4IDQ5N2NkYTA5NjE0ZWU0NmFkMGMxNTc5MjhkMTZhMjJh
YjYwYmU3NmEuLmIzNTYzN2NjNWU3MmFmZTEzMDNiMTA1NjM4NTJhNDJkYjkzYTE2M2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRGV2
aWNlLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVEZXZpY2UuaApAQCAtMzksNiArMzksMTAgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNs
YXNzIERldmljZTsKIH0KIAorbmFtZXNwYWNlIElQQyB7CitjbGFzcyBTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIFdlYkdQVSB7CkBA
IC00OSw3ICs1Myw2IEBAIHN0cnVjdCBDb21tYW5kRW5jb2RlckRlc2NyaXB0b3I7CiBzdHJ1Y3Qg
Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjsKIHN0cnVjdCBFeHRlcm5hbFRleHR1cmVEZXNjcmlw
dG9yOwogY2xhc3MgT2JqZWN0SGVhcDsKLWNsYXNzIE9iamVjdFJlZ2lzdHJ5Owogc3RydWN0IFBp
cGVsaW5lTGF5b3V0RGVzY3JpcHRvcjsKIHN0cnVjdCBRdWVyeVNldERlc2NyaXB0b3I7CiBzdHJ1
Y3QgUmVuZGVyQnVuZGxlRW5jb2RlckRlc2NyaXB0b3I7CkBAIC02MCwxOCArNjMsMjEgQEAgc3Ry
dWN0IFRleHR1cmVEZXNjcmlwdG9yOwogfQogCiBjbGFzcyBSZW1vdGVEZXZpY2UgZmluYWwgOiBw
dWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlRGV2aWNlPiBjcmVhdGUoUEFM
OjpXZWJHUFU6OkRldmljZSYgZGV2aWNlLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RS
ZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVy
IGlkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxSZW1vdGVEZXZpY2U+IGNyZWF0ZShQQUw6Oldl
YkdQVTo6RGV2aWNlJiBkZXZpY2UsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgUmVm
PElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiBzdHJlYW1Db25uZWN0aW9uLCBXZWJHUFVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBSZW1vdGVEZXZpY2UoZGV2aWNlLCBvYmplY3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRp
ZmllcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVEZXZpY2UoZGV2aWNl
LCBvYmplY3RIZWFwLCBXVEZNb3ZlKHN0cmVhbUNvbm5lY3Rpb24pLCBpZGVudGlmaWVyKSk7CiAg
ICAgfQogCiAgICAgflJlbW90ZURldmljZSgpOwogCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFz
cyBPYmplY3RSZWdpc3RyeTsKKyAgICB2b2lkIHN0b3BMaXN0ZW5pbmdGb3JJUEMoKTsKIAotICAg
IFJlbW90ZURldmljZShQQUw6OldlYkdQVTo6RGV2aWNlJiwgV2ViR1BVOjpPYmplY3RSZWdpc3Ry
eSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOworICAgIFBBTDo6V2Vi
R1BVOjpEZXZpY2UmIGJhY2tpbmcoKSB7IHJldHVybiBtX2JhY2tpbmc7IH0KKworcHJpdmF0ZToK
KyAgICBSZW1vdGVEZXZpY2UoUEFMOjpXZWJHUFU6OkRldmljZSYsIFdlYkdQVTo6T2JqZWN0SGVh
cCYsIFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+JiYsIFdlYkdQVUlkZW50aWZpZXIp
OwogCiAgICAgUmVtb3RlRGV2aWNlKGNvbnN0IFJlbW90ZURldmljZSYpID0gZGVsZXRlOwogICAg
IFJlbW90ZURldmljZShSZW1vdGVEZXZpY2UmJikgPSBkZWxldGU7CkBAIC0xMDgsOCArMTE0LDgg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6
OldlYkdQVTo6RGV2aWNlPiBtX2JhY2tpbmc7Ci0gICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYg
bV9vYmplY3RSZWdpc3RyeTsKICAgICBXZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsK
KyAgICBSZWY8SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiBtX3N0cmVhbUNvbm5lY3Rpb247
CiAgICAgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4
dHVyZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZUV4dGVybmFsVGV4dHVyZS5jcHAKaW5kZXggOTUzZDBlNGQ4MGE2ZWY4ZmRiM2Q3NjE1N2Q3MmNh
NDQ5ZTg0MDJiYS4uZTdmOGMxMmM0NDVmYTFiNjEyNzYxZGU0ZWNlZmFiMmViNTVkZDc4MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVF
eHRlcm5hbFRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlLmNwcApAQCAtMjgsMjQgKzI4LDI3IEBACiAK
ICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVFeHRlcm5hbFRleHR1
cmVNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCIKICNpbmNs
dWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCi0jaW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnku
aCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUV4dGVybmFsVGV4dHVyZS5o
PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlRXh0ZXJuYWxUZXh0dXJlOjpSZW1vdGVF
eHRlcm5hbFRleHR1cmUoUEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZSYgZXh0ZXJuYWxUZXh0
dXJlLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmpl
Y3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCitSZW1vdGVF
eHRlcm5hbFRleHR1cmU6OlJlbW90ZUV4dGVybmFsVGV4dHVyZShQQUw6OldlYkdQVTo6RXh0ZXJu
YWxUZXh0dXJlJiBleHRlcm5hbFRleHR1cmUsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVh
cCwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiBzdHJlYW1Db25uZWN0aW9uLCBX
ZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2JhY2tpbmcoZXh0ZXJuYWxUZXh0
dXJlKQotICAgICwgbV9vYmplY3RSZWdpc3RyeShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2Jq
ZWN0SGVhcChvYmplY3RIZWFwKQorICAgICwgbV9zdHJlYW1Db25uZWN0aW9uKFdURk1vdmUoc3Ry
ZWFtQ29ubmVjdGlvbikpCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKLSAgICBt
X29iamVjdFJlZ2lzdHJ5LmFkZE9iamVjdChtX2lkZW50aWZpZXIsIG1fYmFja2luZyk7CisgICAg
bV9zdHJlYW1Db25uZWN0aW9uLT5zdGFydFJlY2VpdmluZ01lc3NhZ2VzKCp0aGlzLCBNZXNzYWdl
czo6UmVtb3RlRXh0ZXJuYWxUZXh0dXJlOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRp
Zmllci50b1VJbnQ2NCgpKTsKIH0KIAotUmVtb3RlRXh0ZXJuYWxUZXh0dXJlOjp+UmVtb3RlRXh0
ZXJuYWxUZXh0dXJlKCkKK1JlbW90ZUV4dGVybmFsVGV4dHVyZTo6flJlbW90ZUV4dGVybmFsVGV4
dHVyZSgpID0gZGVmYXVsdDsKKwordm9pZCBSZW1vdGVFeHRlcm5hbFRleHR1cmU6OnN0b3BMaXN0
ZW5pbmdGb3JJUEMoKQogewotICAgIG1fb2JqZWN0UmVnaXN0cnkucmVtb3ZlT2JqZWN0KG1faWRl
bnRpZmllcik7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdG9wUmVjZWl2aW5nTWVzc2FnZXMo
TWVzc2FnZXM6OlJlbW90ZUV4dGVybmFsVGV4dHVyZTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBt
X2lkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgUmVtb3RlRXh0ZXJuYWxUZXh0dXJl
OjpzZXRMYWJlbChTdHJpbmcmJiBsYWJlbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlLmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4dHVyZS5o
CmluZGV4IDMxZDFjNTQzOTkyYmJiYmVmMTM0NjJiZDEwM2JiODI4ZTFmZjk2MGYuLjBlYzI0YjI4
ZjE0OWY1Yzg4ZDM4ZmFhMWE3YmI4ZDQwZjQwMmM0MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlLmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVFeHRlcm5h
bFRleHR1cmUuaApAQCAtMzYsMjYgKzM2LDMyIEBAIG5hbWVzcGFjZSBQQUw6OldlYkdQVSB7CiBj
bGFzcyBFeHRlcm5hbFRleHR1cmU7CiB9CiAKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgU3RyZWFt
U2VydmVyQ29ubmVjdGlvbjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBX
ZWJHUFUgewogY2xhc3MgT2JqZWN0SGVhcDsKLWNsYXNzIE9iamVjdFJlZ2lzdHJ5OwogfQogCiBj
bGFzcyBSZW1vdGVFeHRlcm5hbFRleHR1cmUgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNz
YWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8UmVtb3RlRXh0ZXJuYWxUZXh0dXJlPiBjcmVhdGUoUEFMOjpXZWJHUFU6OkV4
dGVybmFsVGV4dHVyZSYgZXh0ZXJuYWxUZXh0dXJlLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBv
YmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxSZW1vdGVFeHRlcm5hbFRleHR1cmU+
IGNyZWF0ZShQQUw6OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlJiBleHRlcm5hbFRleHR1cmUsIFdl
YkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVj
dGlvbj4mJiBzdHJlYW1Db25uZWN0aW9uLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVFeHRlcm5hbFRleHR1cmUo
ZXh0ZXJuYWxUZXh0dXJlLCBvYmplY3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikp
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVFeHRlcm5hbFRleHR1cmUoZXh0
ZXJuYWxUZXh0dXJlLCBvYmplY3RIZWFwLCBXVEZNb3ZlKHN0cmVhbUNvbm5lY3Rpb24pLCBpZGVu
dGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlRXh0ZXJuYWxUZXh0dXJlKCk7
CiAKLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIE9iamVjdFJlZ2lzdHJ5OworICAgIHZvaWQg
c3RvcExpc3RlbmluZ0ZvcklQQygpOwogCi0gICAgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlKFBBTDo6
V2ViR1BVOjpFeHRlcm5hbFRleHR1cmUmLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BV
OjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7CisgICAgUEFMOjpXZWJHUFU6OkV4dGVy
bmFsVGV4dHVyZSYgYmFja2luZygpIHsgcmV0dXJuIG1fYmFja2luZzsgfQorCitwcml2YXRlOgor
ICAgIFJlbW90ZUV4dGVybmFsVGV4dHVyZShQQUw6OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlJiwg
V2ViR1BVOjpPYmplY3RIZWFwJiwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiwg
V2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVFeHRlcm5hbFRleHR1cmUoY29uc3QgUmVt
b3RlRXh0ZXJuYWxUZXh0dXJlJikgPSBkZWxldGU7CiAgICAgUmVtb3RlRXh0ZXJuYWxUZXh0dXJl
KFJlbW90ZUV4dGVybmFsVGV4dHVyZSYmKSA9IGRlbGV0ZTsKQEAgLTY3LDggKzczLDggQEAgcHJp
dmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQ
VTo6RXh0ZXJuYWxUZXh0dXJlPiBtX2JhY2tpbmc7Ci0gICAgV2ViR1BVOjpPYmplY3RSZWdpc3Ry
eSYgbV9vYmplY3RSZWdpc3RyeTsKICAgICBXZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVh
cDsKKyAgICBSZWY8SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiBtX3N0cmVhbUNvbm5lY3Rp
b247CiAgICAgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5jcHAK
aW5kZXggZDcyZWVlOWE4NTc0NjBmYjdhNWJkNzE1OTIyNDk5YzllNGIyYzg5MC4uZTgwMDhiYTY0
NmIzYWVjMDc3MmZkZGY3YTEyNjc5OWZlMzJmMTVkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLmNwcApAQCAtMjgsNDgg
KzI4LDEwMSBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlJlbW90ZUFkYXB0ZXIuaCIKKyNpbmNs
dWRlICJSZW1vdGVHUFVNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZUdQVVByb3h5TWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgiCisjaW5jbHVkZSAiU3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKLSNp
bmNsdWRlICJXZWJHUFVPYmplY3RSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9X
ZWJHUFUvV2ViR1BVLmg+CiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVBZGFw
dGVyLmg+CiAKKyNpZiBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKKyNpbXBvcnQgPHBhbC9n
cmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVJbXBsLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdl
YktpdCB7CiAKLVJlbW90ZUdQVTo6UmVtb3RlR1BVKFBBTDo6V2ViR1BVOjpHUFUmIGdwdSwgV2Vi
R1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYg
b2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQotICAgIDogbV9iYWNraW5n
KGdwdSkKLSAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2JqZWN0UmVnaXN0cnkpCi0gICAgLCBtX29i
amVjdEhlYXAob2JqZWN0SGVhcCkKK1JlbW90ZUdQVTo6UmVtb3RlR1BVKFdlYkdQVUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2VzcywgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgcmVuZGVyaW5nQmFja2VuZCwgSVBD
OjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtKQorICAgIDogbV9ncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCisgICAgLCBtX3dvcmtRdWV1
ZShJUEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6OmNyZWF0ZSgiV2ViR1BVIHdvcmsgcXVl
dWUiKSkKKyAgICAsIG1fc3RyZWFtQ29ubmVjdGlvbihJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rp
b246OmNyZWF0ZShncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKSwgV1RGTW92
ZShzdHJlYW0pLCBtX3dvcmtRdWV1ZSkpCisgICAgLCBtX29iamVjdEhlYXAoV2ViR1BVOjpPYmpl
Y3RIZWFwOjpjcmVhdGUoKSkKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICwg
bV9yZW5kZXJpbmdCYWNrZW5kKHJlbmRlcmluZ0JhY2tlbmQpCisgICAgLCBtX3dlYlByb2Nlc3NJ
ZGVudGlmaWVyKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mud2ViUHJvY2Vzc0lkZW50aWZpZXIo
KSkKK3sKKyAgICBpbml0aWFsaXplKCk7Cit9CisKK1JlbW90ZUdQVTo6flJlbW90ZUdQVSgpID0g
ZGVmYXVsdDsKKwordm9pZCBSZW1vdGVHUFU6OmluaXRpYWxpemUoKQoreworICAgIGFzc2VydElz
TWFpblJ1bkxvb3AoKTsKKyAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMg
PSBSZWYgeyAqdGhpcyB9XSgpIG11dGFibGUgeworICAgICAgICBwcm90ZWN0ZWRUaGlzLT53b3Jr
UXVldWVJbml0aWFsaXplKCk7CisgICAgfSk7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdGFy
dFJlY2VpdmluZ01lc3NhZ2VzKCp0aGlzLCBNZXNzYWdlczo6UmVtb3RlR1BVOjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKK30KKwordm9pZCBSZW1vdGVH
UFU6OnN0b3BMaXN0ZW5pbmdGb3JJUEMoUmVmPFJlbW90ZUdQVT4mJiByZWZGcm9tQ29ubmVjdGlv
bikKK3sKKyAgICBhc3NlcnRJc01haW5SdW5Mb29wKCk7CisgICAgbV9zdHJlYW1Db25uZWN0aW9u
LT5zdG9wUmVjZWl2aW5nTWVzc2FnZXMoTWVzc2FnZXM6OlJlbW90ZUdQVTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgbV93b3JrUXVldWUtPmRp
c3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShyZWZGcm9tQ29ubmVjdGlvbildKCkgewor
ICAgICAgICBwcm90ZWN0ZWRUaGlzLT53b3JrUXVldWVVbmluaXRpYWxpemUoKTsKKyAgICB9KTsK
K30KKwordm9pZCBSZW1vdGVHUFU6OndvcmtRdWV1ZUluaXRpYWxpemUoKQogewotICAgIG1fb2Jq
ZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1faWRlbnRpZmllciwgbV9iYWNraW5nKTsKKyAgICBtX3N0
cmVhbVRocmVhZC5yZXNldCgpOworICAgIGFzc2VydElzQ3VycmVudChtX3N0cmVhbVRocmVhZCk7
CisjaWYgSEFWRShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCisgICAgYXV0byBiYWNraW5nID0gUEFM
OjpXZWJHUFU6OkdQVUltcGw6OmNyZWF0ZSgpOworI2Vsc2UKKyAgICBSZWZQdHI8UEFMOjpXZWJH
UFU6OkdQVT4gYmFja2luZzsKKyNlbmRpZgorICAgIGlmIChiYWNraW5nKSB7CisgICAgICAgIG1f
YmFja2luZyA9IGJhY2tpbmcucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR1BVUHJveHk6Oldhc0NyZWF0ZWQodHJ1ZSwgbV93b3JrUXVldWUtPndha2VVcFNl
bWFwaG9yZSgpKSk7CisgICAgfSBlbHNlCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdQ
VVByb3h5OjpXYXNDcmVhdGVkKGZhbHNlLCBtX3dvcmtRdWV1ZS0+d2FrZVVwU2VtYXBob3JlKCkp
KTsKIH0KIAotUmVtb3RlR1BVOjp+UmVtb3RlR1BVKCkKK3ZvaWQgUmVtb3RlR1BVOjp3b3JrUXVl
dWVVbmluaXRpYWxpemUoKQogewotICAgIG1fb2JqZWN0UmVnaXN0cnkucmVtb3ZlT2JqZWN0KG1f
aWRlbnRpZmllcik7CisgICAgYXNzZXJ0SXNDdXJyZW50KG1fc3RyZWFtVGhyZWFkKTsKKyAgICBt
X3N0cmVhbUNvbm5lY3Rpb24gPSBudWxscHRyOwogfQogCi12b2lkIFJlbW90ZUdQVTo6cmVxdWVz
dEFkYXB0ZXIoY29uc3QgV2ViR1BVOjpSZXF1ZXN0QWRhcHRlck9wdGlvbnMmIG9wdGlvbnMsIFdl
YkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0
cmluZyYmLCBXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVzJiYsIFdlYkdQVTo6U3VwcG9ydGVkTGlt
aXRzJiYsIGJvb2wpPiYmIGNhbGxiYWNrKQordm9pZCBSZW1vdGVHUFU6OnJlcXVlc3RBZGFwdGVy
KGNvbnN0IFdlYkdQVTo6UmVxdWVzdEFkYXB0ZXJPcHRpb25zJiBvcHRpb25zLCBXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlv
bmFsPFJlcXVlc3RBZGFwdGVyUmVzcG9uc2U+JiYpPiYmIGNhbGxiYWNrKQogewotICAgIGF1dG8g
Y29udmVydGVkT3B0aW9ucyA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKG9w
dGlvbnMpOworICAgIGFzc2VydElzQ3VycmVudChtX3N0cmVhbVRocmVhZCk7CisgICAgQVNTRVJU
KG1fYmFja2luZyk7CisKKyAgICBhdXRvIGNvbnZlcnRlZE9wdGlvbnMgPSBtX29iamVjdEhlYXAt
PmNvbnZlcnRGcm9tQmFja2luZyhvcHRpb25zKTsKICAgICBBU1NFUlQoY29udmVydGVkT3B0aW9u
cyk7CiAgICAgaWYgKCFjb252ZXJ0ZWRPcHRpb25zKSB7Ci0gICAgICAgIGNhbGxiYWNrKFN0cmlu
Z0ltcGw6OmVtcHR5KCksIHsgeyB9IH0sIHsgfSwgZmFsc2UpOworICAgICAgICBjYWxsYmFjayhz
dGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9iYWNraW5nLT5y
ZXF1ZXN0QWRhcHRlcigqY29udmVydGVkT3B0aW9ucywgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayksIHdlYWtPYmplY3RIZWFwID0gV2Vha1B0cjxXZWJHUFU6Ok9iamVjdEhlYXA+KG1fb2Jq
ZWN0SGVhcCksIG9iamVjdFJlZ2lzdHJ5ID0gbV9vYmplY3RSZWdpc3RyeSwgaWRlbnRpZmllcl0g
KFJlZlB0cjxQQUw6OldlYkdQVTo6QWRhcHRlcj4mJiBhZGFwdGVyKSBtdXRhYmxlIHsKLSAgICAg
ICAgaWYgKCF3ZWFrT2JqZWN0SGVhcCB8fCAhYWRhcHRlcikgewotICAgICAgICAgICAgLy8gRklY
TUU6IERlYWwgd2l0aCBmYWlsdXJlIGhlcmUuCisgICAgbV9iYWNraW5nLT5yZXF1ZXN0QWRhcHRl
cigqY29udmVydGVkT3B0aW9ucywgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIG9iamVj
dEhlYXAgPSBtX29iamVjdEhlYXAsIHN0cmVhbUNvbm5lY3Rpb24gPSBSZWYgeyAqbV9zdHJlYW1D
b25uZWN0aW9uIH0sIGlkZW50aWZpZXIgPSBtX2lkZW50aWZpZXJdIChSZWZQdHI8UEFMOjpXZWJH
UFU6OkFkYXB0ZXI+JiYgYWRhcHRlcikgbXV0YWJsZSB7CisgICAgICAgIGlmICghYWRhcHRlcikg
eworICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQotICAgICAgICBhdXRvIHJlbW90ZUFkYXB0ZXIgPSBSZW1vdGVBZGFwdGVy
OjpjcmVhdGUoKmFkYXB0ZXIsIG9iamVjdFJlZ2lzdHJ5LCAqd2Vha09iamVjdEhlYXAsIGlkZW50
aWZpZXIpOwotICAgICAgICB3ZWFrT2JqZWN0SGVhcC0+YWRkT2JqZWN0KHJlbW90ZUFkYXB0ZXIp
OworCisgICAgICAgIGF1dG8gcmVtb3RlQWRhcHRlciA9IFJlbW90ZUFkYXB0ZXI6OmNyZWF0ZSgq
YWRhcHRlciwgb2JqZWN0SGVhcCwgV1RGTW92ZShzdHJlYW1Db25uZWN0aW9uKSwgaWRlbnRpZmll
cik7CisgICAgICAgIG9iamVjdEhlYXAtPmFkZE9iamVjdChpZGVudGlmaWVyLCByZW1vdGVBZGFw
dGVyKTsKKwogICAgICAgICBhdXRvIG5hbWUgPSBhZGFwdGVyLT5uYW1lKCk7CiAgICAgICAgIGNv
bnN0IGF1dG8mIGZlYXR1cmVzID0gYWRhcHRlci0+ZmVhdHVyZXMoKTsKICAgICAgICAgY29uc3Qg
YXV0byYgbGltaXRzID0gYWRhcHRlci0+bGltaXRzKCk7Ci0gICAgICAgIGNhbGxiYWNrKFdURk1v
dmUobmFtZSksIFdlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXMgeyBmZWF0dXJlcy5mZWF0dXJlcygp
IH0sIFdlYkdQVTo6U3VwcG9ydGVkTGltaXRzIHsKKyAgICAgICAgY2FsbGJhY2soeyB7IFdURk1v
dmUobmFtZSksIFdlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXMgeyBmZWF0dXJlcy5mZWF0dXJlcygp
IH0sIFdlYkdQVTo6U3VwcG9ydGVkTGltaXRzIHsKICAgICAgICAgICAgIGxpbWl0cy5tYXhUZXh0
dXJlRGltZW5zaW9uMUQoKSwKICAgICAgICAgICAgIGxpbWl0cy5tYXhUZXh0dXJlRGltZW5zaW9u
MkQoKSwKICAgICAgICAgICAgIGxpbWl0cy5tYXhUZXh0dXJlRGltZW5zaW9uM0QoKSwKQEAgLTk2
LDcgKzE0OSw3IEBAIHZvaWQgUmVtb3RlR1BVOjpyZXF1ZXN0QWRhcHRlcihjb25zdCBXZWJHUFU6
OlJlcXVlc3RBZGFwdGVyT3B0aW9ucyYgb3B0aW9ucywgV2ViCiAgICAgICAgICAgICBsaW1pdHMu
bWF4Q29tcHV0ZVdvcmtncm91cFNpemVZKCksCiAgICAgICAgICAgICBsaW1pdHMubWF4Q29tcHV0
ZVdvcmtncm91cFNpemVaKCksCiAgICAgICAgICAgICBsaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91
cHNQZXJEaW1lbnNpb24oKSwKLSAgICAgICAgfSwgYWRhcHRlci0+aXNGYWxsYmFja0FkYXB0ZXIo
KSk7CisgICAgICAgIH0sIGFkYXB0ZXItPmlzRmFsbGJhY2tBZGFwdGVyKCkgfSB9KTsKICAgICB9
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVHUFUuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlR1BVLmgKaW5kZXggNzU4NTU0MzM0NTYwYzEyM2MzZTFmZmI5YTg0MTk3ODRlYmFm
ZDA3OS4uYWVkNmI0ZmY1Y2M3YjdmM2NlZWM4YzI5OThjZGQxNjJhOTI5MjU2ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5o
CkBAIC0yNyw1MiArMjcsMTE5IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNs
dWRlICJTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmgiCiAjaW5jbHVkZSAiU3RyZWFtTWVzc2Fn
ZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIgogI2luY2x1
ZGUgIldlYkdQVUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCiAj
aW5jbHVkZSAiV2ViR1BVU3VwcG9ydGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJXZWJHUFVTdXBw
b3J0ZWRMaW1pdHMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CiAj
aW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgor
I2luY2x1ZGUgPHd0Zi9UaHJlYWRBc3NlcnRpb25zLmg+CiAKIG5hbWVzcGFjZSBQQUw6OldlYkdQ
VSB7CiBjbGFzcyBHUFU7CiB9CiAKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgU3RyZWFtU2VydmVy
Q29ubmVjdGlvbjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M7CitjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOworCiBuYW1lc3Bh
Y2UgV2ViR1BVIHsKIGNsYXNzIE9iamVjdEhlYXA7Ci1jbGFzcyBPYmplY3RSZWdpc3RyeTsKIHN0
cnVjdCBSZXF1ZXN0QWRhcHRlck9wdGlvbnM7CiB9CiAKIGNsYXNzIFJlbW90ZUdQVSBmaW5hbCA6
IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVHUFU+IGNyZWF0ZShQQUw6
OldlYkdQVTo6R1BVJiBncHUsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5
LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRp
ZmllcikKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUdQVT4gY3JlYXRlKFdlYkdQVUlkZW50aWZpZXIg
aWRlbnRpZmllciwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2VzcywgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgcmVuZGVyaW5nQmFja2VuZCwgSVBDOjpT
dHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUmVtb3RlR1BVKGdwdSwgb2JqZWN0UmVnaXN0cnksIG9iamVjdEhlYXAsIGlk
ZW50aWZpZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlR1BVKGlkZW50
aWZpZXIsIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIHJlbmRlcmluZ0JhY2tlbmQsIFdURk1v
dmUoc3RyZWFtKSkpOwogICAgIH0KIAorICAgIHZvaWQgc3RvcExpc3RlbmluZ0ZvcklQQyhSZWY8
UmVtb3RlR1BVPiYmIHJlZkZyb21Db25uZWN0aW9uKTsKKwogICAgIHZpcnR1YWwgflJlbW90ZUdQ
VSgpOwogCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKKyAgICBz
dHJ1Y3QgUmVxdWVzdEFkYXB0ZXJSZXNwb25zZSB7CisgICAgICAgIFN0cmluZyBuYW1lOworICAg
ICAgICBXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVzIGZlYXR1cmVzOworICAgICAgICBXZWJHUFU6
OlN1cHBvcnRlZExpbWl0cyBsaW1pdHM7CisgICAgICAgIGJvb2wgaXNGYWxsYmFja0FkYXB0ZXI7
CisKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgZW5jb2RlciA8PCBuYW1lOwor
ICAgICAgICAgICAgZW5jb2RlciA8PCBmZWF0dXJlczsKKyAgICAgICAgICAgIGVuY29kZXIgPDwg
bGltaXRzOworICAgICAgICAgICAgZW5jb2RlciA8PCBpc0ZhbGxiYWNrQWRhcHRlcjsKKyAgICAg
ICAgfQorCisgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFJlcXVlc3RBZGFwdGVyUmVzcG9uc2U+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAg
ICAgICB7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbmFtZTsKKyAgICAgICAg
ICAgIGRlY29kZXIgPj4gbmFtZTsKKyAgICAgICAgICAgIGlmICghbmFtZSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPFdl
YkdQVTo6U3VwcG9ydGVkRmVhdHVyZXM+IGZlYXR1cmVzOworICAgICAgICAgICAgZGVjb2RlciA+
PiBmZWF0dXJlczsKKyAgICAgICAgICAgIGlmICghZmVhdHVyZXMpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxXZWJHUFU6
OlN1cHBvcnRlZExpbWl0cz4gbGltaXRzOworICAgICAgICAgICAgZGVjb2RlciA+PiBsaW1pdHM7
CisgICAgICAgICAgICBpZiAoIWxpbWl0cykKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworCisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzRmFsbGJhY2tBZGFw
dGVyOworICAgICAgICAgICAgZGVjb2RlciA+PiBpc0ZhbGxiYWNrQWRhcHRlcjsKKyAgICAgICAg
ICAgIGlmICghaXNGYWxsYmFja0FkYXB0ZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKworICAgICAgICAgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpuYW1lKSwgV1RGTW92
ZSgqZmVhdHVyZXMpLCBXVEZNb3ZlKCpsaW1pdHMpLCAqaXNGYWxsYmFja0FkYXB0ZXIgfSB9Owor
ICAgICAgICB9CisgICAgfTsKIAotICAgIFJlbW90ZUdQVShQQUw6OldlYkdQVTo6R1BVJiwgV2Vi
R1BVOjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZp
ZXIpOworcHJpdmF0ZToKKyAgICBSZW1vdGVHUFUoV2ViR1BVSWRlbnRpZmllciwgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyYsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmLCBJUEM6OlN0cmVhbUNv
bm5lY3Rpb25CdWZmZXImJik7CiAKICAgICBSZW1vdGVHUFUoY29uc3QgUmVtb3RlR1BVJikgPSBk
ZWxldGU7CiAgICAgUmVtb3RlR1BVKFJlbW90ZUdQVSYmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVH
UFUmIG9wZXJhdG9yPShjb25zdCBSZW1vdGVHUFUmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVHUFUm
IG9wZXJhdG9yPShSZW1vdGVHUFUmJikgPSBkZWxldGU7CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVT
dHJlYW1NZXNzYWdlKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UmLCBJUEM6OkRlY29k
ZXImKSBmaW5hbDsKKyAgICB2b2lkIGluaXRpYWxpemUoKTsKKyAgICB2b2lkIHdvcmtRdWV1ZUlu
aXRpYWxpemUoKTsKKyAgICB2b2lkIHdvcmtRdWV1ZVVuaW5pdGlhbGl6ZSgpOwogCi0gICAgdm9p
ZCByZXF1ZXN0QWRhcHRlcihjb25zdCBXZWJHUFU6OlJlcXVlc3RBZGFwdGVyT3B0aW9ucyYsIFdl
YkdQVUlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJiwgV2Vi
R1BVOjpTdXBwb3J0ZWRGZWF0dXJlcyYmLCBXZWJHUFU6OlN1cHBvcnRlZExpbWl0cyYmLCBib29s
KT4mJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBib29sIHNlbmQoVCYmIG1lc3Nh
Z2UpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9zdHJlYW1Db25uZWN0aW9uLT5jb25u
ZWN0aW9uKCkuc2VuZChXVEZNb3ZlKG1lc3NhZ2UpLCBtX2lkZW50aWZpZXIpOworICAgIH0KKwor
ICAgIHZvaWQgZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uQmFzZSYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCi0gICAgUmVmPFBBTDo6V2ViR1BVOjpH
UFU+IG1fYmFja2luZzsKLSAgICBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBtX29iamVjdFJlZ2lz
dHJ5OwotICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFwOwotICAgIFdlYkdQVUlk
ZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAgIHZvaWQgcmVxdWVzdEFkYXB0ZXIoY29uc3QgV2Vi
R1BVOjpSZXF1ZXN0QWRhcHRlck9wdGlvbnMmLCBXZWJHUFVJZGVudGlmaWVyLCBXVEY6OkNvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxSZXF1ZXN0QWRhcHRlclJlc3BvbnNlPiYm
KT4mJik7CisKKyAgICBXZWFrUHRyPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1fZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2VzczsKKyAgICBSZWY8SVBDOjpTdHJlYW1Db25uZWN0aW9uV29ya1F1
ZXVlPiBtX3dvcmtRdWV1ZTsKKyAgICBSZWZQdHI8SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
PiBtX3N0cmVhbUNvbm5lY3Rpb247CisgICAgUmVmUHRyPFBBTDo6V2ViR1BVOjpHUFU+IG1fYmFj
a2luZyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fc3RyZWFtVGhyZWFkKTsKKyAgICBSZWY8V2ViR1BV
OjpPYmplY3RIZWFwPiBtX29iamVjdEhlYXAgV1RGX0dVQVJERURfQllfTE9DSyhtX3N0cmVhbVRo
cmVhZCk7CisgICAgY29uc3QgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgUmVm
PFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IG1fcmVuZGVyaW5nQmFja2VuZDsKKyAgICBOT19VTklR
VUVfQUREUkVTUyBUaHJlYWRBc3NlcnRpb24gbV9zdHJlYW1UaHJlYWQ7CisgICAgY29uc3QgV2Vi
Q29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV93ZWJQcm9jZXNzSWRlbnRpZmllcjsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5tZXNzYWdlcy5pbgppbmRleCBlNGQ5
NTI2NWFhNWQwMDM4OTRhYzgwNjI5MTQwMDBhMjRjYjUzZTI5Li5mOWM4NWJiODg5N2Q4YjkxYjgy
MTBjMmIzYjA4MDlmZjI5Mzc4NTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5tZXNzYWdlcy5pbgpAQCAt
MjQsNyArMjQsNyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogbWVzc2FnZXMgLT4gUmVt
b3RlR1BVIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHsKLSAgICB2b2lkIFJlcXVlc3RBZGFwdGVyKFdl
YktpdDo6V2ViR1BVOjpSZXF1ZXN0QWRhcHRlck9wdGlvbnMgb3B0aW9ucywgV2ViS2l0OjpXZWJH
UFVJZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+IChTdHJpbmcgbmFtZSwgV2ViS2l0OjpXZWJHUFU6
OlN1cHBvcnRlZEZlYXR1cmVzIHN1cHBvcnRlZEZlYXR1cmVzLCBXZWJLaXQ6OldlYkdQVTo6U3Vw
cG9ydGVkTGltaXRzIHN1cHBvcnRlZExpbWl0cywgYm9vbCBpc0ZhbGxiYWNrQWRhcHRlcikgU3lu
Y2hyb25vdXMKKyAgICB2b2lkIFJlcXVlc3RBZGFwdGVyKFdlYktpdDo6V2ViR1BVOjpSZXF1ZXN0
QWRhcHRlck9wdGlvbnMgb3B0aW9ucywgV2ViS2l0OjpXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZp
ZXIpIC0+IChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6UmVtb3RlR1BVOjpSZXF1ZXN0QWRhcHRlclJl
c3BvbnNlPiByZXNwb25zZSkgU3luY2hyb25vdXMKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVBpcGVsaW5lTGF5
b3V0LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
UGlwZWxpbmVMYXlvdXQuY3BwCmluZGV4IDZjZDhiNjc3ZDU5MTgwMmM2MjlkYjZmZDM0ODc0NzZh
YTNlNmUwYzAuLmI3MjVlZDJmNmY0ODhlZmVmZjRmMGRjYTE3YjBlNjkyZDdkMmM1MDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUGlw
ZWxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlUGlwZWxpbmVMYXlvdXQuY3BwCkBAIC0yOCwyNCArMjgsMjcgQEAKIAogI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZVBpcGVsaW5lTGF5b3V0TWVz
c2FnZXMuaCIKKyNpbmNsdWRlICJTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAi
V2ViR1BVT2JqZWN0SGVhcC5oIgotI2luY2x1ZGUgIldlYkdQVU9iamVjdFJlZ2lzdHJ5LmgiCiAj
aW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVQaXBlbGluZUxheW91dC5oPgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlUGlwZWxpbmVMYXlvdXQ6OlJlbW90ZVBpcGVsaW5l
TGF5b3V0KFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91dCYgcGlwZWxpbmVMYXlvdXQsIFdlYkdQ
VTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9i
amVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK1JlbW90ZVBpcGVsaW5lTGF5
b3V0OjpSZW1vdGVQaXBlbGluZUxheW91dChQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQmIHBp
cGVsaW5lTGF5b3V0LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFJlZjxJUEM6OlN0
cmVhbVNlcnZlckNvbm5lY3Rpb24+JiYgc3RyZWFtQ29ubmVjdGlvbiwgV2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5nKHBpcGVsaW5lTGF5b3V0KQotICAgICwgbV9v
YmplY3RSZWdpc3RyeShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RI
ZWFwKQorICAgICwgbV9zdHJlYW1Db25uZWN0aW9uKFdURk1vdmUoc3RyZWFtQ29ubmVjdGlvbikp
CiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKLSAgICBtX29iamVjdFJlZ2lzdHJ5
LmFkZE9iamVjdChtX2lkZW50aWZpZXIsIG1fYmFja2luZyk7CisgICAgbV9zdHJlYW1Db25uZWN0
aW9uLT5zdGFydFJlY2VpdmluZ01lc3NhZ2VzKCp0aGlzLCBNZXNzYWdlczo6UmVtb3RlUGlwZWxp
bmVMYXlvdXQ6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkp
OwogfQogCi1SZW1vdGVQaXBlbGluZUxheW91dDo6flJlbW90ZVBpcGVsaW5lTGF5b3V0KCkKK1Jl
bW90ZVBpcGVsaW5lTGF5b3V0Ojp+UmVtb3RlUGlwZWxpbmVMYXlvdXQoKSA9IGRlZmF1bHQ7CisK
K3ZvaWQgUmVtb3RlUGlwZWxpbmVMYXlvdXQ6OnN0b3BMaXN0ZW5pbmdGb3JJUEMoKQogewotICAg
IG1fb2JqZWN0UmVnaXN0cnkucmVtb3ZlT2JqZWN0KG1faWRlbnRpZmllcik7CisgICAgbV9zdHJl
YW1Db25uZWN0aW9uLT5zdG9wUmVjZWl2aW5nTWVzc2FnZXMoTWVzc2FnZXM6OlJlbW90ZVBpcGVs
aW5lTGF5b3V0OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKIH0KIAogdm9pZCBSZW1vdGVQaXBlbGluZUxheW91dDo6c2V0TGFiZWwoU3RyaW5nJiYgbGFi
ZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZVBpcGVsaW5lTGF5b3V0LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZVBpcGVsaW5lTGF5b3V0LmgKaW5kZXggMjNiY2FlYjYwNjQxMjBiNTMy
MDcyYzczNjJhODZmMGY2YzY3ZjIwZS4uNDk4MjlkMTg4YjA3OWY4NjRjZDk4ZWYzNDYzYTE5ZWEy
ZjJhMTNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVQaXBlbGluZUxheW91dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUGlwZWxpbmVMYXlvdXQuaApAQCAtMzYsMjYgKzM2LDMy
IEBAIG5hbWVzcGFjZSBQQUw6OldlYkdQVSB7CiBjbGFzcyBQaXBlbGluZUxheW91dDsKIH0KIAor
bmFtZXNwYWNlIElQQyB7CitjbGFzcyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uOworfQorCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIFdlYkdQVSB7CiBjbGFzcyBPYmplY3RIZWFwOwot
Y2xhc3MgT2JqZWN0UmVnaXN0cnk7CiB9CiAKIGNsYXNzIFJlbW90ZVBpcGVsaW5lTGF5b3V0IGZp
bmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZVBpcGVsaW5lTGF5
b3V0PiBjcmVhdGUoUEFMOjpXZWJHUFU6OlBpcGVsaW5lTGF5b3V0JiBwaXBlbGluZUxheW91dCwg
V2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVh
cCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIHN0YXRpYyBS
ZWY8UmVtb3RlUGlwZWxpbmVMYXlvdXQ+IGNyZWF0ZShQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlv
dXQmIHBpcGVsaW5lTGF5b3V0LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFJlZjxJ
UEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+JiYgc3RyZWFtQ29ubmVjdGlvbiwgV2ViR1BVSWRl
bnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
UmVtb3RlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXQsIG9iamVjdFJlZ2lzdHJ5LCBvYmpl
Y3RIZWFwLCBpZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90
ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0LCBvYmplY3RIZWFwLCBXVEZNb3ZlKHN0cmVh
bUNvbm5lY3Rpb24pLCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3Rl
UGlwZWxpbmVMYXlvdXQoKTsKIAotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgT2JqZWN0UmVn
aXN0cnk7CisgICAgdm9pZCBzdG9wTGlzdGVuaW5nRm9ySVBDKCk7CiAKLSAgICBSZW1vdGVQaXBl
bGluZUxheW91dChQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQmLCBXZWJHUFU6Ok9iamVjdFJl
Z2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7CisgICAgUEFM
OjpXZWJHUFU6OlBpcGVsaW5lTGF5b3V0JiBiYWNraW5nKCkgeyByZXR1cm4gbV9iYWNraW5nOyB9
CisKK3ByaXZhdGU6CisgICAgUmVtb3RlUGlwZWxpbmVMYXlvdXQoUEFMOjpXZWJHUFU6OlBpcGVs
aW5lTGF5b3V0JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29u
bmVjdGlvbj4mJiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVQaXBlbGluZUxheW91
dChjb25zdCBSZW1vdGVQaXBlbGluZUxheW91dCYpID0gZGVsZXRlOwogICAgIFJlbW90ZVBpcGVs
aW5lTGF5b3V0KFJlbW90ZVBpcGVsaW5lTGF5b3V0JiYpID0gZGVsZXRlOwpAQCAtNjcsOCArNzMs
OCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCiAgICAgUmVmPFBB
TDo6V2ViR1BVOjpQaXBlbGluZUxheW91dD4gbV9iYWNraW5nOwotICAgIFdlYkdQVTo6T2JqZWN0
UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7CiAgICAgV2ViR1BVOjpPYmplY3RIZWFwJiBtX29i
amVjdEhlYXA7CisgICAgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4gbV9zdHJlYW1D
b25uZWN0aW9uOwogICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVR
dWVyeVNldC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZVF1ZXJ5U2V0LmNwcAppbmRleCBlMGNkMWM1YzNkN2IxNTQ1NTVkZDExODkxZDZhYjIwMDdj
YWY0YTc1Li44ODIwNzBjZjZkMzY5MjJhZGExMjFkN2ZjMmM4NGU2MmEyYTMyMTMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5
U2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZVF1ZXJ5U2V0LmNwcApAQCAtMjgsMjQgKzI4LDI3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVRdWVyeVNldE1lc3NhZ2VzLmgiCisjaW5jbHVkZSAi
U3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIK
LSNpbmNsdWRlICJXZWJHUFVPYmplY3RSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGlj
cy9XZWJHUFUvV2ViR1BVUXVlcnlTZXQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90
ZVF1ZXJ5U2V0OjpSZW1vdGVRdWVyeVNldChQQUw6OldlYkdQVTo6UXVlcnlTZXQmIHF1ZXJ5U2V0
LCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RI
ZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCitSZW1vdGVRdWVy
eVNldDo6UmVtb3RlUXVlcnlTZXQoUEFMOjpXZWJHUFU6OlF1ZXJ5U2V0JiBxdWVyeVNldCwgV2Vi
R1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBSZWY8SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uPiYmIHN0cmVhbUNvbm5lY3Rpb24sIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAg
ICA6IG1fYmFja2luZyhxdWVyeVNldCkKLSAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2JqZWN0UmVn
aXN0cnkpCiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkKKyAgICAsIG1fc3RyZWFtQ29u
bmVjdGlvbihXVEZNb3ZlKHN0cmVhbUNvbm5lY3Rpb24pKQogICAgICwgbV9pZGVudGlmaWVyKGlk
ZW50aWZpZXIpCiB7Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5hZGRPYmplY3QobV9pZGVudGlmaWVy
LCBtX2JhY2tpbmcpOworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+c3RhcnRSZWNlaXZpbmdNZXNz
YWdlcygqdGhpcywgTWVzc2FnZXM6OlJlbW90ZVF1ZXJ5U2V0OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAotUmVtb3RlUXVlcnlTZXQ6On5SZW1v
dGVRdWVyeVNldCgpCitSZW1vdGVRdWVyeVNldDo6flJlbW90ZVF1ZXJ5U2V0KCkgPSBkZWZhdWx0
OworCit2b2lkIFJlbW90ZVF1ZXJ5U2V0OjpzdG9wTGlzdGVuaW5nRm9ySVBDKCkKIHsKLSAgICBt
X29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOworICAgIG1fc3RyZWFt
Q29ubmVjdGlvbi0+c3RvcFJlY2VpdmluZ01lc3NhZ2VzKE1lc3NhZ2VzOjpSZW1vdGVRdWVyeVNl
dDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAK
IHZvaWQgUmVtb3RlUXVlcnlTZXQ6OmRlc3Ryb3koKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWVyeVNldC5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWVyeVNldC5oCmluZGV4IGUx
N2Q3M2MzMmVmM2VmMGYzN2Q2YWJlYTU1NTkwZjlkMDUxMjYzOGEuLmRiNmM4ODkyZmJjYzRlNDE1
NzU1MWJlZGEyYmFmODNjMTBjYTIzOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVlcnlTZXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0LmgKQEAgLTM2LDI2ICsz
NiwzMiBAQCBuYW1lc3BhY2UgUEFMOjpXZWJHUFUgewogY2xhc3MgUXVlcnlTZXQ7CiB9CiAKK25h
bWVzcGFjZSBJUEMgeworY2xhc3MgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjsKK30KKwogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogY2xhc3MgT2JqZWN0SGVhcDsKLWNs
YXNzIE9iamVjdFJlZ2lzdHJ5OwogfQogCiBjbGFzcyBSZW1vdGVRdWVyeVNldCBmaW5hbCA6IHB1
YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVRdWVyeVNldD4gY3JlYXRlKFBB
TDo6V2ViR1BVOjpRdWVyeVNldCYgcXVlcnlTZXQsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9i
amVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50
aWZpZXIgaWRlbnRpZmllcikKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVF1ZXJ5U2V0PiBjcmVhdGUo
UEFMOjpXZWJHUFU6OlF1ZXJ5U2V0JiBxdWVyeVNldCwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmpl
Y3RIZWFwLCBSZWY8SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiYmIHN0cmVhbUNvbm5lY3Rp
b24sIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFJlbW90ZVF1ZXJ5U2V0KHF1ZXJ5U2V0LCBvYmplY3RSZWdpc3RyeSwgb2Jq
ZWN0SGVhcCwgaWRlbnRpZmllcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1v
dGVRdWVyeVNldChxdWVyeVNldCwgb2JqZWN0SGVhcCwgV1RGTW92ZShzdHJlYW1Db25uZWN0aW9u
KSwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90ZVF1ZXJ5U2V0KCk7
CiAKLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIE9iamVjdFJlZ2lzdHJ5OworICAgIHZvaWQg
c3RvcExpc3RlbmluZ0ZvcklQQygpOwogCi0gICAgUmVtb3RlUXVlcnlTZXQoUEFMOjpXZWJHUFU6
OlF1ZXJ5U2V0JiwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYs
IFdlYkdQVUlkZW50aWZpZXIpOworICAgIFBBTDo6V2ViR1BVOjpRdWVyeVNldCYgYmFja2luZygp
IHsgcmV0dXJuIG1fYmFja2luZzsgfQorCitwcml2YXRlOgorICAgIFJlbW90ZVF1ZXJ5U2V0KFBB
TDo6V2ViR1BVOjpRdWVyeVNldCYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFJlZjxJUEM6OlN0cmVh
bVNlcnZlckNvbm5lY3Rpb24+JiYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlUXVl
cnlTZXQoY29uc3QgUmVtb3RlUXVlcnlTZXQmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVRdWVyeVNl
dChSZW1vdGVRdWVyeVNldCYmKSA9IGRlbGV0ZTsKQEAgLTY5LDggKzc1LDggQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6UXVl
cnlTZXQ+IG1fYmFja2luZzsKLSAgICBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBtX29iamVjdFJl
Z2lzdHJ5OwogICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFwOworICAgIFJlZjxJ
UEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+IG1fc3RyZWFtQ29ubmVjdGlvbjsKICAgICBXZWJH
UFVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVldWUuY3BwIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWV1ZS5jcHAKaW5kZXggZGVh
NjQwOThmYTZkNDVjODU3MzkzNDRlNWFhN2YwZjA4MjNiOWE5Ni4uNmZlZjAzYzg3YTYyMmQwYWE3
NTBhZDY5YTNhNzg2OWQ3NWZhYzdlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWV1ZS5jcHAKQEAgLTI4LDI0ICsyOCwy
NyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiUmVtb3RlUXVldWVN
ZXNzYWdlcy5oIgorI2luY2x1ZGUgIlN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRl
ICJXZWJHUFVPYmplY3RIZWFwLmgiCi0jaW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIK
ICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVF1ZXVlLmg+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi1SZW1vdGVRdWV1ZTo6UmVtb3RlUXVldWUoUEFMOjpXZWJHUFU6OlF1ZXVl
JiBxdWV1ZSwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6
T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorUmVt
b3RlUXVldWU6OlJlbW90ZVF1ZXVlKFBBTDo6V2ViR1BVOjpRdWV1ZSYgcXVldWUsIFdlYkdQVTo6
T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4m
JiBzdHJlYW1Db25uZWN0aW9uLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgOiBt
X2JhY2tpbmcocXVldWUpCi0gICAgLCBtX29iamVjdFJlZ2lzdHJ5KG9iamVjdFJlZ2lzdHJ5KQog
ICAgICwgbV9vYmplY3RIZWFwKG9iamVjdEhlYXApCisgICAgLCBtX3N0cmVhbUNvbm5lY3Rpb24o
V1RGTW92ZShzdHJlYW1Db25uZWN0aW9uKSkKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVy
KQogewotICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1faWRlbnRpZmllciwgbV9iYWNr
aW5nKTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXMoKnRo
aXMsIE1lc3NhZ2VzOjpSZW1vdGVRdWV1ZTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50
aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKLVJlbW90ZVF1ZXVlOjp+UmVtb3RlUXVldWUoKQorUmVt
b3RlUXVldWU6On5SZW1vdGVRdWV1ZSgpID0gZGVmYXVsdDsKKwordm9pZCBSZW1vdGVRdWV1ZTo6
c3RvcExpc3RlbmluZ0ZvcklQQygpCiB7Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5yZW1vdmVPYmpl
Y3QobV9pZGVudGlmaWVyKTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0b3BSZWNlaXZpbmdN
ZXNzYWdlcyhNZXNzYWdlczo6UmVtb3RlUXVldWU6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9p
ZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCiB2b2lkIFJlbW90ZVF1ZXVlOjpzdWJtaXQoVmVj
dG9yPFdlYkdQVUlkZW50aWZpZXI+JiYgY29tbWFuZEJ1ZmZlcnMpCkBAIC01Myw3ICs1Niw3IEBA
IHZvaWQgUmVtb3RlUXVldWU6OnN1Ym1pdChWZWN0b3I8V2ViR1BVSWRlbnRpZmllcj4mJiBjb21t
YW5kQnVmZmVycykKICAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQ
VTo6Q29tbWFuZEJ1ZmZlcj4+IGNvbnZlcnRlZENvbW1hbmRCdWZmZXJzOwogICAgIGNvbnZlcnRl
ZENvbW1hbmRCdWZmZXJzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY29tbWFuZEJ1ZmZlcnMuc2l6
ZSgpKTsKICAgICBmb3IgKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciA6IGNvbW1hbmRCdWZm
ZXJzKSB7Ci0gICAgICAgIGF1dG8gY29udmVydGVkQ29tbWFuZEJ1ZmZlciA9IG1fb2JqZWN0UmVn
aXN0cnkuY29udmVydENvbW1hbmRCdWZmZXJGcm9tQmFja2luZyhpZGVudGlmaWVyKTsKKyAgICAg
ICAgYXV0byBjb252ZXJ0ZWRDb21tYW5kQnVmZmVyID0gbV9vYmplY3RIZWFwLmNvbnZlcnRDb21t
YW5kQnVmZmVyRnJvbUJhY2tpbmcoaWRlbnRpZmllcik7CiAgICAgICAgIEFTU0VSVChjb252ZXJ0
ZWRDb21tYW5kQnVmZmVyKTsKICAgICAgICAgaWYgKCFjb252ZXJ0ZWRDb21tYW5kQnVmZmVyKQog
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtNzQsNyArNzcsNyBAQCB2b2lkIFJlbW90ZVF1ZXVlOjp3
cml0ZUJ1ZmZlcigKICAgICBQQUw6OldlYkdQVTo6U2l6ZTY0IGJ1ZmZlck9mZnNldCwKICAgICBW
ZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewotICAgIGF1dG8gY29udmVydGVkQnVmZmVyID0gbV9v
YmplY3RSZWdpc3RyeS5jb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoYnVmZmVyKTsKKyAgICBhdXRv
IGNvbnZlcnRlZEJ1ZmZlciA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmco
YnVmZmVyKTsKICAgICBBU1NFUlQoY29udmVydGVkQnVmZmVyKTsKICAgICBpZiAoIWNvbnZlcnRl
ZEJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwpAQCAtODgsMTEgKzkxLDExIEBAIHZvaWQgUmVtb3Rl
UXVldWU6OndyaXRlVGV4dHVyZSgKICAgICBjb25zdCBXZWJHUFU6OkltYWdlRGF0YUxheW91dCYg
ZGF0YUxheW91dCwKICAgICBjb25zdCBXZWJHUFU6OkV4dGVudDNEJiBzaXplKQogewotICAgIGF1
dG8gY29udmVydGVkRGVzdGluYXRpb24gPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFj
a2luZyhkZXN0aW5hdGlvbik7CisgICAgYXV0byBjb252ZXJ0ZWREZXN0aW5hdGlvbiA9IG1fb2Jq
ZWN0SGVhcC5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzdGluYXRpb24pOwogICAgIEFTU0VSVChjb252
ZXJ0ZWREZXN0aW5hdGlvbik7Ci0gICAgYXV0byBjb252ZXJ0ZWREYXRhTGF5b3V0ID0gbV9vYmpl
Y3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoZGF0YUxheW91dCk7CisgICAgYXV0byBjb252
ZXJ0ZWREYXRhTGF5b3V0ID0gbV9vYmplY3RIZWFwLmNvbnZlcnRGcm9tQmFja2luZyhkYXRhTGF5
b3V0KTsKICAgICBBU1NFUlQoY29udmVydGVkRGVzdGluYXRpb24pOwotICAgIGF1dG8gY29udmVy
dGVkU2l6ZSA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKHNpemUpOworICAg
IGF1dG8gY29udmVydGVkU2l6ZSA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0RnJvbUJhY2tpbmcoc2l6
ZSk7CiAgICAgQVNTRVJUKGNvbnZlcnRlZFNpemUpOwogICAgIGlmICghY29udmVydGVkRGVzdGlu
YXRpb24gfHwgIWNvbnZlcnRlZERlc3RpbmF0aW9uIHx8ICFjb252ZXJ0ZWRTaXplKQogICAgICAg
ICByZXR1cm47CkBAIC0xMDUsMTEgKzEwOCwxMSBAQCB2b2lkIFJlbW90ZVF1ZXVlOjpjb3B5RXh0
ZXJuYWxJbWFnZVRvVGV4dHVyZSgKICAgICBjb25zdCBXZWJHUFU6OkltYWdlQ29weVRleHR1cmVU
YWdnZWQmIGRlc3RpbmF0aW9uLAogICAgIGNvbnN0IFdlYkdQVTo6RXh0ZW50M0QmIGNvcHlTaXpl
KQogewotICAgIGF1dG8gY29udmVydGVkU291cmNlID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0
RnJvbUJhY2tpbmcoc291cmNlKTsKKyAgICBhdXRvIGNvbnZlcnRlZFNvdXJjZSA9IG1fb2JqZWN0
SGVhcC5jb252ZXJ0RnJvbUJhY2tpbmcoc291cmNlKTsKICAgICBBU1NFUlQoY29udmVydGVkU291
cmNlKTsKLSAgICBhdXRvIGNvbnZlcnRlZERlc3RpbmF0aW9uID0gbV9vYmplY3RSZWdpc3RyeS5j
b252ZXJ0RnJvbUJhY2tpbmcoZGVzdGluYXRpb24pOworICAgIGF1dG8gY29udmVydGVkRGVzdGlu
YXRpb24gPSBtX29iamVjdEhlYXAuY29udmVydEZyb21CYWNraW5nKGRlc3RpbmF0aW9uKTsKICAg
ICBBU1NFUlQoY29udmVydGVkRGVzdGluYXRpb24pOwotICAgIGF1dG8gY29udmVydGVkQ29weVNp
emUgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhjb3B5U2l6ZSk7CisgICAg
YXV0byBjb252ZXJ0ZWRDb3B5U2l6ZSA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0RnJvbUJhY2tpbmco
Y29weVNpemUpOwogICAgIEFTU0VSVChjb252ZXJ0ZWRDb3B5U2l6ZSk7CiAgICAgaWYgKCFjb252
ZXJ0ZWREZXN0aW5hdGlvbiB8fCAhY29udmVydGVkRGVzdGluYXRpb24gfHwgIWNvbnZlcnRlZENv
cHlTaXplKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXVlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXVlLmgKaW5kZXggYTUwYWY4MjQ1MWZiOWZi
ZWRhOTdjMTA2NWU2OTM2NWYzOWY3YjM4Ni4uZDUwNTQyZTBjMmJhNGE4YWI3ZjkzNWRjMGYwYzYz
NTliNzVkOGYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlUXVldWUuaApAQCAtNDEsNiArNDEsMTAgQEAgbmFtZXNwYWNlIFBB
TDo6V2ViR1BVIHsKIGNsYXNzIFF1ZXVlOwogfQogCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFN0
cmVhbVNlcnZlckNvbm5lY3Rpb247Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3Bh
Y2UgV2ViR1BVIHsKQEAgLTQ5LDIyICs1MywyNCBAQCBzdHJ1Y3QgSW1hZ2VDb3B5VGV4dHVyZTsK
IHN0cnVjdCBJbWFnZUNvcHlUZXh0dXJlVGFnZ2VkOwogc3RydWN0IEltYWdlRGF0YUxheW91dDsK
IGNsYXNzIE9iamVjdEhlYXA7Ci1jbGFzcyBPYmplY3RSZWdpc3RyeTsKIH0KIAogY2xhc3MgUmVt
b3RlUXVldWUgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3Rl
UXVldWU+IGNyZWF0ZShQQUw6OldlYkdQVTo6UXVldWUmIHF1ZXVlLCBXZWJHUFU6Ok9iamVjdFJl
Z2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBX
ZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxSZW1vdGVRdWV1ZT4g
Y3JlYXRlKFBBTDo6V2ViR1BVOjpRdWV1ZSYgcXVldWUsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2Jq
ZWN0SGVhcCwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiBzdHJlYW1Db25uZWN0
aW9uLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBSZW1vdGVRdWV1ZShxdWV1ZSwgb2JqZWN0UmVnaXN0cnksIG9iamVjdEhl
YXAsIGlkZW50aWZpZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlUXVl
dWUocXVldWUsIG9iamVjdEhlYXAsIFdURk1vdmUoc3RyZWFtQ29ubmVjdGlvbiksIGlkZW50aWZp
ZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVRdWV1ZSgpOwogCi1wcml2YXRlOgot
ICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKKyAgICB2b2lkIHN0b3BMaXN0ZW5pbmdG
b3JJUEMoKTsKIAotICAgIFJlbW90ZVF1ZXVlKFBBTDo6V2ViR1BVOjpRdWV1ZSYsIFdlYkdQVTo6
T2JqZWN0UmVnaXN0cnkmLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsK
KyAgICBQQUw6OldlYkdQVTo6UXVldWUmIGJhY2tpbmcoKSB7IHJldHVybiBtX2JhY2tpbmc7IH0K
KworcHJpdmF0ZToKKyAgICBSZW1vdGVRdWV1ZShQQUw6OldlYkdQVTo6UXVldWUmLCBXZWJHUFU6
Ok9iamVjdEhlYXAmLCBSZWY8SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiYmLCBXZWJHUFVJ
ZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZVF1ZXVlKGNvbnN0IFJlbW90ZVF1ZXVlJikgPSBkZWxl
dGU7CiAgICAgUmVtb3RlUXVldWUoUmVtb3RlUXVldWUmJikgPSBkZWxldGU7CkBAIC05Niw4ICsx
MDIsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCiAgICAgUmVm
PFBBTDo6V2ViR1BVOjpRdWV1ZT4gbV9iYWNraW5nOwotICAgIFdlYkdQVTo6T2JqZWN0UmVnaXN0
cnkmIG1fb2JqZWN0UmVnaXN0cnk7CiAgICAgV2ViR1BVOjpPYmplY3RIZWFwJiBtX29iamVjdEhl
YXA7CisgICAgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4gbV9zdHJlYW1Db25uZWN0
aW9uOwogICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJC
dW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVSZW5kZXJCdW5kbGUuY3BwCmluZGV4IDE3ZTBhY2Y5MDE5YzM0ZDk5ZjJiMDY3NzI4NDFkMzVk
MzhmOGM5ZTQuLmU1ZDZkMjVlZWUzZTg1YTRmN2RhN2M2YzhhMjNiMGRjZDliOGVlOTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVu
ZGVyQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZVJlbmRlckJ1bmRsZS5jcHAKQEAgLTI4LDI0ICsyOCwyNyBAQAogCiAjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiUmVtb3RlUmVuZGVyQnVuZGxlTWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViR1BV
T2JqZWN0SGVhcC5oIgotI2luY2x1ZGUgIldlYkdQVU9iamVjdFJlZ2lzdHJ5LmgiCiAjaW5jbHVk
ZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJCdW5kbGUuaD4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLVJlbW90ZVJlbmRlckJ1bmRsZTo6UmVtb3RlUmVuZGVyQnVuZGxlKFBBTDo6
V2ViR1BVOjpSZW5kZXJCdW5kbGUmIHJlbmRlckJ1bmRsZSwgV2ViR1BVOjpPYmplY3RSZWdpc3Ry
eSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BV
SWRlbnRpZmllciBpZGVudGlmaWVyKQorUmVtb3RlUmVuZGVyQnVuZGxlOjpSZW1vdGVSZW5kZXJC
dW5kbGUoUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZSYgcmVuZGVyQnVuZGxlLCBXZWJHUFU6Ok9i
amVjdEhlYXAmIG9iamVjdEhlYXAsIFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+JiYg
c3RyZWFtQ29ubmVjdGlvbiwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDogbV9i
YWNraW5nKHJlbmRlckJ1bmRsZSkKLSAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2JqZWN0UmVnaXN0
cnkpCiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkKKyAgICAsIG1fc3RyZWFtQ29ubmVj
dGlvbihXVEZNb3ZlKHN0cmVhbUNvbm5lY3Rpb24pKQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50
aWZpZXIpCiB7Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5hZGRPYmplY3QobV9pZGVudGlmaWVyLCBt
X2JhY2tpbmcpOworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+c3RhcnRSZWNlaXZpbmdNZXNzYWdl
cygqdGhpcywgTWVzc2FnZXM6OlJlbW90ZVJlbmRlckJ1bmRsZTo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKLVJlbW90ZVJlbmRlckJ1bmRsZTo6
flJlbW90ZVJlbmRlckJ1bmRsZSgpCitSZW1vdGVSZW5kZXJCdW5kbGU6On5SZW1vdGVSZW5kZXJC
dW5kbGUoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgUmVtb3RlUmVuZGVyQnVuZGxlOjpzdG9wTGlzdGVu
aW5nRm9ySVBDKCkKIHsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdChtX2lkZW50
aWZpZXIpOworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+c3RvcFJlY2VpdmluZ01lc3NhZ2VzKE1l
c3NhZ2VzOjpSZW1vdGVSZW5kZXJCdW5kbGU6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVu
dGlmaWVyLnRvVUludDY0KCkpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlckJ1bmRsZTo6c2V0TGFi
ZWwoU3RyaW5nJiYgbGFiZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZS5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGUuaAppbmRleCA2YjgwZDU5
YmE3MjcyODIyZGUwNzZhMmE1NzdjNjE3ZTE4OWExY2FmLi45MzFiODVmODMyZDMzYmNiNzQxYzAy
NzhkYTFiNDBmOWY2NDI1ZjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlLmgKQEAgLTM2LDI2
ICszNiwzMiBAQCBuYW1lc3BhY2UgUEFMOjpXZWJHUFUgewogY2xhc3MgUmVuZGVyQnVuZGxlOwog
fQogCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFN0cmVhbVNlcnZlckNvbm5lY3Rpb247Cit9CisK
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIGNsYXNzIE9iamVjdEhl
YXA7Ci1jbGFzcyBPYmplY3RSZWdpc3RyeTsKIH0KIAogY2xhc3MgUmVtb3RlUmVuZGVyQnVuZGxl
IGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlckJ1
bmRsZT4gY3JlYXRlKFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGUmIHJlbmRlckJ1bmRsZSwgV2Vi
R1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYg
b2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIHN0YXRpYyBSZWY8
UmVtb3RlUmVuZGVyQnVuZGxlPiBjcmVhdGUoUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZSYgcmVu
ZGVyQnVuZGxlLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFJlZjxJUEM6OlN0cmVh
bVNlcnZlckNvbm5lY3Rpb24+JiYgc3RyZWFtQ29ubmVjdGlvbiwgV2ViR1BVSWRlbnRpZmllciBp
ZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlUmVu
ZGVyQnVuZGxlKHJlbmRlckJ1bmRsZSwgb2JqZWN0UmVnaXN0cnksIG9iamVjdEhlYXAsIGlkZW50
aWZpZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlUmVuZGVyQnVuZGxl
KHJlbmRlckJ1bmRsZSwgb2JqZWN0SGVhcCwgV1RGTW92ZShzdHJlYW1Db25uZWN0aW9uKSwgaWRl
bnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90ZVJlbmRlckJ1bmRsZSgpOwog
Ci1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKKyAgICB2b2lkIHN0
b3BMaXN0ZW5pbmdGb3JJUEMoKTsKIAotICAgIFJlbW90ZVJlbmRlckJ1bmRsZShQQUw6OldlYkdQ
VTo6UmVuZGVyQnVuZGxlJiwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0
SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOworICAgIFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGUm
IGJhY2tpbmcoKSB7IHJldHVybiBtX2JhY2tpbmc7IH0KKworcHJpdmF0ZToKKyAgICBSZW1vdGVS
ZW5kZXJCdW5kbGUoUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZSYsIFdlYkdQVTo6T2JqZWN0SGVh
cCYsIFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+JiYsIFdlYkdQVUlkZW50aWZpZXIp
OwogCiAgICAgUmVtb3RlUmVuZGVyQnVuZGxlKGNvbnN0IFJlbW90ZVJlbmRlckJ1bmRsZSYpID0g
ZGVsZXRlOwogICAgIFJlbW90ZVJlbmRlckJ1bmRsZShSZW1vdGVSZW5kZXJCdW5kbGUmJikgPSBk
ZWxldGU7CkBAIC02Nyw4ICs3Myw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRMYWJlbChTdHJp
bmcmJik7CiAKICAgICBSZWY8UEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZT4gbV9iYWNraW5nOwot
ICAgIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7CiAgICAgV2ViR1BV
OjpPYmplY3RIZWFwJiBtX29iamVjdEhlYXA7CisgICAgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29u
bmVjdGlvbj4gbV9zdHJlYW1Db25uZWN0aW9uOwogICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVu
dGlmaWVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlci5jcHAK
aW5kZXggNzcyY2Y4MmE5MTYwYTg2ZTMwNDE0ODg0NDY5Y2IxMmE4ZTlmNWNhYy4uMGRjMmU5Njhj
YmExMjY5YzM1MWJkYjFhZDdjNDlhMWJjOWM3NDE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJl
bmRlckJ1bmRsZUVuY29kZXIuY3BwCkBAIC0yOSwzMCArMjksMzMgQEAKICNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpCiAKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJCdW5kbGUuaCIKKyNpbmNsdWRlICJS
ZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViR1BVT2JqZWN0SGVhcC5oIgotI2luY2x1ZGUg
IldlYkdQVU9iamVjdFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9X
ZWJHUFVSZW5kZXJCdW5kbGUuaD4KICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQ
VVJlbmRlckJ1bmRsZUVuY29kZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90ZVJl
bmRlckJ1bmRsZUVuY29kZXI6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIoUEFMOjpXZWJHUFU6
OlJlbmRlckJ1bmRsZUVuY29kZXImIHJlbmRlckJ1bmRsZUVuY29kZXIsIFdlYkdQVTo6T2JqZWN0
UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAs
IFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK1JlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6
OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIoUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29k
ZXImIHJlbmRlckJ1bmRsZUVuY29kZXIsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwg
UmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiBzdHJlYW1Db25uZWN0aW9uLCBXZWJH
UFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2JhY2tpbmcocmVuZGVyQnVuZGxlRW5j
b2RlcikKLSAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2JqZWN0UmVnaXN0cnkpCiAgICAgLCBtX29i
amVjdEhlYXAob2JqZWN0SGVhcCkKKyAgICAsIG1fc3RyZWFtQ29ubmVjdGlvbihXVEZNb3ZlKHN0
cmVhbUNvbm5lY3Rpb24pKQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7Ci0gICAg
bV9vYmplY3RSZWdpc3RyeS5hZGRPYmplY3QobV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOworICAg
IG1fc3RyZWFtQ29ubmVjdGlvbi0+c3RhcnRSZWNlaXZpbmdNZXNzYWdlcygqdGhpcywgTWVzc2Fn
ZXM6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9p
ZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCi1SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjp+
UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlcigpCitSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjp+
UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlcigpID0gZGVmYXVsdDsKKwordm9pZCBSZW1vdGVSZW5k
ZXJCdW5kbGVFbmNvZGVyOjpzdG9wTGlzdGVuaW5nRm9ySVBDKCkKIHsKLSAgICBtX29iamVjdFJl
Z2lzdHJ5LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOworICAgIG1fc3RyZWFtQ29ubmVjdGlv
bi0+c3RvcFJlY2VpdmluZ01lc3NhZ2VzKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNv
ZGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0K
IAogdm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpzZXRQaXBlbGluZShXZWJHUFVJZGVu
dGlmaWVyIHJlbmRlclBpcGVsaW5lKQogewotICAgIGF1dG8gY29udmVydGVkUmVuZGVyUGlwZWxp
bmUgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRSZW5kZXJQaXBlbGluZUZyb21CYWNraW5nKHJl
bmRlclBpcGVsaW5lKTsKKyAgICBhdXRvIGNvbnZlcnRlZFJlbmRlclBpcGVsaW5lID0gbV9vYmpl
Y3RIZWFwLmNvbnZlcnRSZW5kZXJQaXBlbGluZUZyb21CYWNraW5nKHJlbmRlclBpcGVsaW5lKTsK
ICAgICBBU1NFUlQoY29udmVydGVkUmVuZGVyUGlwZWxpbmUpOwogICAgIGlmICghY29udmVydGVk
UmVuZGVyUGlwZWxpbmUpCiAgICAgICAgIHJldHVybjsKQEAgLTYyLDcgKzY1LDcgQEAgdm9pZCBS
ZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpzZXRQaXBlbGluZShXZWJHUFVJZGVudGlmaWVyIHJl
bmRlclBpcGVsaW5lKQogCiB2b2lkIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OnNldEluZGV4
QnVmZmVyKFdlYkdQVUlkZW50aWZpZXIgYnVmZmVyLCBQQUw6OldlYkdQVTo6SW5kZXhGb3JtYXQg
aW5kZXhGb3JtYXQsIFBBTDo6V2ViR1BVOjpTaXplNjQgb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPFBB
TDo6V2ViR1BVOjpTaXplNjQ+IHNpemUpCiB7Ci0gICAgYXV0byBjb252ZXJ0ZWRCdWZmZXIgPSBt
X29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhidWZmZXIpOworICAgIGF1
dG8gY29udmVydGVkQnVmZmVyID0gbV9vYmplY3RIZWFwLmNvbnZlcnRCdWZmZXJGcm9tQmFja2lu
ZyhidWZmZXIpOwogICAgIEFTU0VSVChjb252ZXJ0ZWRCdWZmZXIpOwogICAgIGlmICghY29udmVy
dGVkQnVmZmVyKQogICAgICAgICByZXR1cm47CkBAIC03Miw3ICs3NSw3IEBAIHZvaWQgUmVtb3Rl
UmVuZGVyQnVuZGxlRW5jb2Rlcjo6c2V0SW5kZXhCdWZmZXIoV2ViR1BVSWRlbnRpZmllciBidWZm
ZXIsIFBBTDo6V2ViCiAKIHZvaWQgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6c2V0VmVydGV4
QnVmZmVyKFBBTDo6V2ViR1BVOjpJbmRleDMyIHNsb3QsIFdlYkdQVUlkZW50aWZpZXIgYnVmZmVy
LCBQQUw6OldlYkdQVTo6U2l6ZTY0IG9mZnNldCwgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6
U2l6ZTY0PiBzaXplKQogewotICAgIGF1dG8gY29udmVydGVkQnVmZmVyID0gbV9vYmplY3RSZWdp
c3RyeS5jb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoYnVmZmVyKTsKKyAgICBhdXRvIGNvbnZlcnRl
ZEJ1ZmZlciA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoYnVmZmVyKTsK
ICAgICBBU1NFUlQoY29udmVydGVkQnVmZmVyKTsKICAgICBpZiAoIWNvbnZlcnRlZEJ1ZmZlcikK
ICAgICAgICAgcmV0dXJuOwpAQCAtOTYsNyArOTksNyBAQCB2b2lkIFJlbW90ZVJlbmRlckJ1bmRs
ZUVuY29kZXI6OmRyYXdJbmRleGVkKFBBTDo6V2ViR1BVOjpTaXplMzIgaW5kZXhDb3VudCwgUEFM
OgogCiB2b2lkIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OmRyYXdJbmRpcmVjdChXZWJHUFVJ
ZGVudGlmaWVyIGluZGlyZWN0QnVmZmVyLCBQQUw6OldlYkdQVTo6U2l6ZTY0IGluZGlyZWN0T2Zm
c2V0KQogewotICAgIGF1dG8gY29udmVydGVkSW5kaXJlY3RCdWZmZXIgPSBtX29iamVjdFJlZ2lz
dHJ5LmNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhpbmRpcmVjdEJ1ZmZlcik7CisgICAgYXV0byBj
b252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlciA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0QnVmZmVyRnJvbUJh
Y2tpbmcoaW5kaXJlY3RCdWZmZXIpOwogICAgIEFTU0VSVChjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZl
cik7CiAgICAgaWYgKCFjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwpA
QCAtMTA2LDcgKzEwOSw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6ZHJhd0lu
ZGlyZWN0KFdlYkdQVUlkZW50aWZpZXIgaW5kaXJlY3RCdWZmZXIsIFBBCiAKIHZvaWQgUmVtb3Rl
UmVuZGVyQnVuZGxlRW5jb2Rlcjo6ZHJhd0luZGV4ZWRJbmRpcmVjdChXZWJHUFVJZGVudGlmaWVy
IGluZGlyZWN0QnVmZmVyLCBQQUw6OldlYkdQVTo6U2l6ZTY0IGluZGlyZWN0T2Zmc2V0KQogewot
ICAgIGF1dG8gY29udmVydGVkSW5kaXJlY3RCdWZmZXIgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZl
cnRCdWZmZXJGcm9tQmFja2luZyhpbmRpcmVjdEJ1ZmZlcik7CisgICAgYXV0byBjb252ZXJ0ZWRJ
bmRpcmVjdEJ1ZmZlciA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoaW5k
aXJlY3RCdWZmZXIpOwogICAgIEFTU0VSVChjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlcik7CiAgICAg
aWYgKCFjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwpAQCAtMTE3LDcg
KzEyMCw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6ZHJhd0luZGV4ZWRJbmRp
cmVjdChXZWJHUFVJZGVudGlmaWVyIGluZGlyZWN0QnVmCiB2b2lkIFJlbW90ZVJlbmRlckJ1bmRs
ZUVuY29kZXI6OnNldEJpbmRHcm91cChQQUw6OldlYkdQVTo6SW5kZXgzMiBpbmRleCwgV2ViR1BV
SWRlbnRpZmllciBiaW5kR3JvdXAsCiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8UEFMOjpXZWJH
UFU6OkJ1ZmZlckR5bmFtaWNPZmZzZXQ+PiYmIGR5bmFtaWNPZmZzZXRzKQogewotICAgIGF1dG8g
Y29udmVydGVkQmluZEdyb3VwID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0QmluZEdyb3VwRnJv
bUJhY2tpbmcoYmluZEdyb3VwKTsKKyAgICBhdXRvIGNvbnZlcnRlZEJpbmRHcm91cCA9IG1fb2Jq
ZWN0SGVhcC5jb252ZXJ0QmluZEdyb3VwRnJvbUJhY2tpbmcoYmluZEdyb3VwKTsKICAgICBBU1NF
UlQoY29udmVydGVkQmluZEdyb3VwKTsKICAgICBpZiAoIWNvbnZlcnRlZEJpbmRHcm91cCkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTQyLDE0ICsxNDUsMTQgQEAgdm9pZCBSZW1vdGVSZW5kZXJCdW5k
bGVFbmNvZGVyOjppbnNlcnREZWJ1Z01hcmtlcihTdHJpbmcmJiBtYXJrZXJMYWJlbCkKIAogdm9p
ZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpmaW5pc2goY29uc3QgV2ViR1BVOjpSZW5kZXJC
dW5kbGVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIp
CiB7Ci0gICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RSZWdpc3RyeS5jb252
ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9y
ID0gbV9vYmplY3RIZWFwLmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKICAgICBBU1NF
UlQoY29udmVydGVkRGVzY3JpcHRvcik7CiAgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKQog
ICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHJlbmRlckJ1bmRsZSA9IG1fYmFja2luZy0+Zmlu
aXNoKCpjb252ZXJ0ZWREZXNjcmlwdG9yKTsKLSAgICBhdXRvIHJlbW90ZVJlbmRlckJ1bmRsZSA9
IFJlbW90ZVJlbmRlckJ1bmRsZTo6Y3JlYXRlKHJlbmRlckJ1bmRsZSwgbV9vYmplY3RSZWdpc3Ry
eSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKLSAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0
KHJlbW90ZVJlbmRlckJ1bmRsZSk7CisgICAgYXV0byByZW1vdGVSZW5kZXJCdW5kbGUgPSBSZW1v
dGVSZW5kZXJCdW5kbGU6OmNyZWF0ZShyZW5kZXJCdW5kbGUsIG1fb2JqZWN0SGVhcCwgbV9zdHJl
YW1Db25uZWN0aW9uLmNvcHlSZWYoKSwgaWRlbnRpZmllcik7CisgICAgbV9vYmplY3RIZWFwLmFk
ZE9iamVjdChpZGVudGlmaWVyLCByZW1vdGVSZW5kZXJCdW5kbGUpOwogfQogCiB2b2lkIFJlbW90
ZVJlbmRlckJ1bmRsZUVuY29kZXI6OnNldExhYmVsKFN0cmluZyYmIGxhYmVsKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJC
dW5kbGVFbmNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIuaAppbmRleCBmODdiNzNlMDFjN2FhNGIxYjY2ZDRj
NWE3NmFhYmI1NTNkNzcxNjMyLi41NzgxNGQyMWUyZGVjMWE2ZmVlOWJmOWNhM2ZhYmNkODgyZmQ3
NzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIuaApAQCAtMzgsMjcg
KzM4LDMzIEBAIG5hbWVzcGFjZSBQQUw6OldlYkdQVSB7CiBjbGFzcyBSZW5kZXJCdW5kbGVFbmNv
ZGVyOwogfQogCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFN0cmVhbVNlcnZlckNvbm5lY3Rpb247
Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIGNsYXNzIE9i
amVjdEhlYXA7Ci1jbGFzcyBPYmplY3RSZWdpc3RyeTsKIHN0cnVjdCBSZW5kZXJCdW5kbGVEZXNj
cmlwdG9yOwogfQogCiBjbGFzcyBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyIGZpbmFsIDogcHVi
bGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI+
IGNyZWF0ZShQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2RlciYgcmVuZGVyQnVuZGxlRW5j
b2RlciwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2Jq
ZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIHN0
YXRpYyBSZWY8UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcj4gY3JlYXRlKFBBTDo6V2ViR1BVOjpS
ZW5kZXJCdW5kbGVFbmNvZGVyJiByZW5kZXJCdW5kbGVFbmNvZGVyLCBXZWJHUFU6Ok9iamVjdEhl
YXAmIG9iamVjdEhlYXAsIFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+JiYgc3RyZWFt
Q29ubmVjdGlvbiwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlcihyZW5kZXJCdW5k
bGVFbmNvZGVyLCBvYmplY3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyKHJlbmRl
ckJ1bmRsZUVuY29kZXIsIG9iamVjdEhlYXAsIFdURk1vdmUoc3RyZWFtQ29ubmVjdGlvbiksIGlk
ZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB+UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlcigpOwog
Ci1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKKyAgICB2b2lkIHN0
b3BMaXN0ZW5pbmdGb3JJUEMoKTsKIAotICAgIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIoUEFM
OjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXImLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5Jiwg
V2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7CisgICAgUEFMOjpXZWJHUFU6
OlJlbmRlckJ1bmRsZUVuY29kZXImIGJhY2tpbmcoKSB7IHJldHVybiBtX2JhY2tpbmc7IH0KKwor
cHJpdmF0ZToKKyAgICBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyKFBBTDo6V2ViR1BVOjpSZW5k
ZXJCdW5kbGVFbmNvZGVyJiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgUmVmPElQQzo6U3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbj4mJiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVSZW5kZXJC
dW5kbGVFbmNvZGVyKGNvbnN0IFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXImKSA9IGRlbGV0ZTsK
ICAgICBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyKFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIm
JikgPSBkZWxldGU7CkBAIC05NCw4ICsxMDAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0TGFi
ZWwoU3RyaW5nJiYpOwogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVy
PiBtX2JhY2tpbmc7Ci0gICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgbV9vYmplY3RSZWdpc3Ry
eTsKICAgICBXZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKKyAgICBSZWY8SVBDOjpT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiBtX3N0cmVhbUNvbm5lY3Rpb247CiAgICAgV2ViR1BVSWRl
bnRpZmllciBtX2lkZW50aWZpZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBhc3NFbmNvZGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0Vu
Y29kZXIuY3BwCmluZGV4IDk3YjgxMjM0MDcwZDYyZmE4ZDJjMzFkOGM1ZjgxN2FkNjI4ZmM4ZmUu
LjYyZDBjYTc1ZWEyYjY4MDI3OWM1NjUyYTliZjNjODJjMjNiYTFmMjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0Vu
Y29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlUmVuZGVyUGFzc0VuY29kZXIuY3BwCkBAIC0yOCwyOSArMjgsMzIgQEAKIAogI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyTWVz
c2FnZXMuaCIKKyNpbmNsdWRlICJTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAi
V2ViR1BVT2JqZWN0SGVhcC5oIgotI2luY2x1ZGUgIldlYkdQVU9iamVjdFJlZ2lzdHJ5LmgiCiAj
aW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oPgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OlJlbW90ZVJl
bmRlclBhc3NFbmNvZGVyKFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRW5jb2RlciYgcmVuZGVyUGFz
c0VuY29kZXIsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6
Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK1Jl
bW90ZVJlbmRlclBhc3NFbmNvZGVyOjpSZW1vdGVSZW5kZXJQYXNzRW5jb2RlcihQQUw6OldlYkdQ
VTo6UmVuZGVyUGFzc0VuY29kZXImIHJlbmRlclBhc3NFbmNvZGVyLCBXZWJHUFU6Ok9iamVjdEhl
YXAmIG9iamVjdEhlYXAsIFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+JiYgc3RyZWFt
Q29ubmVjdGlvbiwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5n
KHJlbmRlclBhc3NFbmNvZGVyKQotICAgICwgbV9vYmplY3RSZWdpc3RyeShvYmplY3RSZWdpc3Ry
eSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQorICAgICwgbV9zdHJlYW1Db25uZWN0
aW9uKFdURk1vdmUoc3RyZWFtQ29ubmVjdGlvbikpCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRp
ZmllcikKIHsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LmFkZE9iamVjdChtX2lkZW50aWZpZXIsIG1f
YmFja2luZyk7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdGFydFJlY2VpdmluZ01lc3NhZ2Vz
KCp0aGlzLCBNZXNzYWdlczo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCi1SZW1vdGVSZW5kZXJQYXNz
RW5jb2Rlcjo6flJlbW90ZVJlbmRlclBhc3NFbmNvZGVyKCkKK1JlbW90ZVJlbmRlclBhc3NFbmNv
ZGVyOjp+UmVtb3RlUmVuZGVyUGFzc0VuY29kZXIoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgUmVtb3Rl
UmVuZGVyUGFzc0VuY29kZXI6OnN0b3BMaXN0ZW5pbmdGb3JJUEMoKQogewotICAgIG1fb2JqZWN0
UmVnaXN0cnkucmVtb3ZlT2JqZWN0KG1faWRlbnRpZmllcik7CisgICAgbV9zdHJlYW1Db25uZWN0
aW9uLT5zdG9wUmVjZWl2aW5nTWVzc2FnZXMoTWVzc2FnZXM6OlJlbW90ZVJlbmRlclBhc3NFbmNv
ZGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0K
IAogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUoV2ViR1BVSWRlbnRp
ZmllciByZW5kZXJQaXBlbGluZSkKIHsKLSAgICBhdXRvIGNvbnZlcnRlZFJlbmRlclBpcGVsaW5l
ID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0UmVuZGVyUGlwZWxpbmVGcm9tQmFja2luZyhyZW5k
ZXJQaXBlbGluZSk7CisgICAgYXV0byBjb252ZXJ0ZWRSZW5kZXJQaXBlbGluZSA9IG1fb2JqZWN0
SGVhcC5jb252ZXJ0UmVuZGVyUGlwZWxpbmVGcm9tQmFja2luZyhyZW5kZXJQaXBlbGluZSk7CiAg
ICAgQVNTRVJUKGNvbnZlcnRlZFJlbmRlclBpcGVsaW5lKTsKICAgICBpZiAoIWNvbnZlcnRlZFJl
bmRlclBpcGVsaW5lKQogICAgICAgICByZXR1cm47CkBAIC02MCw3ICs2Myw3IEBAIHZvaWQgUmVt
b3RlUmVuZGVyUGFzc0VuY29kZXI6OnNldFBpcGVsaW5lKFdlYkdQVUlkZW50aWZpZXIgcmVuZGVy
UGlwZWxpbmUpCiAKIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnNldEluZGV4QnVmZmVy
KFdlYkdQVUlkZW50aWZpZXIgYnVmZmVyLCBQQUw6OldlYkdQVTo6SW5kZXhGb3JtYXQgaW5kZXhG
b3JtYXQsIFBBTDo6V2ViR1BVOjpTaXplNjQgb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2Vi
R1BVOjpTaXplNjQ+IHNpemUpCiB7Ci0gICAgYXV0byBjb252ZXJ0ZWRCdWZmZXIgPSBtX29iamVj
dFJlZ2lzdHJ5LmNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhidWZmZXIpOworICAgIGF1dG8gY29u
dmVydGVkQnVmZmVyID0gbV9vYmplY3RIZWFwLmNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhidWZm
ZXIpOwogICAgIEFTU0VSVChjb252ZXJ0ZWRCdWZmZXIpOwogICAgIGlmICghY29udmVydGVkQnVm
ZmVyKQogICAgICAgICByZXR1cm47CkBAIC03MCw3ICs3Myw3IEBAIHZvaWQgUmVtb3RlUmVuZGVy
UGFzc0VuY29kZXI6OnNldEluZGV4QnVmZmVyKFdlYkdQVUlkZW50aWZpZXIgYnVmZmVyLCBQQUw6
OldlYkdQCiAKIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnNldFZlcnRleEJ1ZmZlcihQ
QUw6OldlYkdQVTo6SW5kZXgzMiBzbG90LCBXZWJHUFVJZGVudGlmaWVyIGJ1ZmZlciwgUEFMOjpX
ZWJHUFU6OlNpemU2NCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemU2ND4g
c2l6ZSkKIHsKLSAgICBhdXRvIGNvbnZlcnRlZEJ1ZmZlciA9IG1fb2JqZWN0UmVnaXN0cnkuY29u
dmVydEJ1ZmZlckZyb21CYWNraW5nKGJ1ZmZlcik7CisgICAgYXV0byBjb252ZXJ0ZWRCdWZmZXIg
PSBtX29iamVjdEhlYXAuY29udmVydEJ1ZmZlckZyb21CYWNraW5nKGJ1ZmZlcik7CiAgICAgQVNT
RVJUKGNvbnZlcnRlZEJ1ZmZlcik7CiAgICAgaWYgKCFjb252ZXJ0ZWRCdWZmZXIpCiAgICAgICAg
IHJldHVybjsKQEAgLTk0LDcgKzk3LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6
ZHJhd0luZGV4ZWQoUEFMOjpXZWJHUFU6OlNpemUzMiBpbmRleENvdW50LCBQQUw6OlcKIAogdm9p
ZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6ZHJhd0luZGlyZWN0KFdlYkdQVUlkZW50aWZpZXIg
aW5kaXJlY3RCdWZmZXIsIFBBTDo6V2ViR1BVOjpTaXplNjQgaW5kaXJlY3RPZmZzZXQpCiB7Ci0g
ICAgYXV0byBjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVy
dEJ1ZmZlckZyb21CYWNraW5nKGluZGlyZWN0QnVmZmVyKTsKKyAgICBhdXRvIGNvbnZlcnRlZElu
ZGlyZWN0QnVmZmVyID0gbV9vYmplY3RIZWFwLmNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhpbmRp
cmVjdEJ1ZmZlcik7CiAgICAgQVNTRVJUKGNvbnZlcnRlZEluZGlyZWN0QnVmZmVyKTsKICAgICBp
ZiAoIWNvbnZlcnRlZEluZGlyZWN0QnVmZmVyKQogICAgICAgICByZXR1cm47CkBAIC0xMDQsNyAr
MTA3LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6ZHJhd0luZGlyZWN0KFdlYkdQ
VUlkZW50aWZpZXIgaW5kaXJlY3RCdWZmZXIsIFBBTDoKIAogdm9pZCBSZW1vdGVSZW5kZXJQYXNz
RW5jb2Rlcjo6ZHJhd0luZGV4ZWRJbmRpcmVjdChXZWJHUFVJZGVudGlmaWVyIGluZGlyZWN0QnVm
ZmVyLCBQQUw6OldlYkdQVTo6U2l6ZTY0IGluZGlyZWN0T2Zmc2V0KQogewotICAgIGF1dG8gY29u
dmVydGVkSW5kaXJlY3RCdWZmZXIgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRCdWZmZXJGcm9t
QmFja2luZyhpbmRpcmVjdEJ1ZmZlcik7CisgICAgYXV0byBjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZl
ciA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoaW5kaXJlY3RCdWZmZXIp
OwogICAgIEFTU0VSVChjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlcik7CiAgICAgaWYgKCFjb252ZXJ0
ZWRJbmRpcmVjdEJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwpAQCAtMTE1LDcgKzExOCw3IEBAIHZv
aWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OmRyYXdJbmRleGVkSW5kaXJlY3QoV2ViR1BVSWRl
bnRpZmllciBpbmRpcmVjdEJ1ZmZlCiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpzZXRC
aW5kR3JvdXAoUEFMOjpXZWJHUFU6OkluZGV4MzIgaW5kZXgsIFdlYkdQVUlkZW50aWZpZXIgYmlu
ZEdyb3VwLAogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFBBTDo6V2ViR1BVOjpCdWZmZXJEeW5h
bWljT2Zmc2V0Pj4mJiBkeW5hbWljT2Zmc2V0cykKIHsKLSAgICBhdXRvIGNvbnZlcnRlZEJpbmRH
cm91cCA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEJpbmRHcm91cEZyb21CYWNraW5nKGJpbmRH
cm91cCk7CisgICAgYXV0byBjb252ZXJ0ZWRCaW5kR3JvdXAgPSBtX29iamVjdEhlYXAuY29udmVy
dEJpbmRHcm91cEZyb21CYWNraW5nKGJpbmRHcm91cCk7CiAgICAgQVNTRVJUKGNvbnZlcnRlZEJp
bmRHcm91cCk7CiAgICAgaWYgKCFjb252ZXJ0ZWRCaW5kR3JvdXApCiAgICAgICAgIHJldHVybjsK
QEAgLTE1Myw3ICsxNTYsNyBAQCB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpzZXRTY2lz
c29yUmVjdChQQUw6OldlYkdQVTo6SW50ZWdlckNvb3JkaW5hdGUgeCwgUAogCiB2b2lkIFJlbW90
ZVJlbmRlclBhc3NFbmNvZGVyOjpzZXRCbGVuZENvbnN0YW50KFdlYkdQVTo6Q29sb3IgY29sb3Ip
CiB7Ci0gICAgYXV0byBjb252ZXJ0ZWRDb2xvciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZy
b21CYWNraW5nKGNvbG9yKTsKKyAgICBhdXRvIGNvbnZlcnRlZENvbG9yID0gbV9vYmplY3RIZWFw
LmNvbnZlcnRGcm9tQmFja2luZyhjb2xvcik7CiAgICAgQVNTRVJUKGNvbnZlcnRlZENvbG9yKTsK
ICAgICBpZiAoIWNvbnZlcnRlZENvbG9yKQogICAgICAgICByZXR1cm47CkBAIC0xNzgsNyArMTgx
LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6ZW5kT2NjbHVzaW9uUXVlcnkoKQog
CiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpiZWdpblBpcGVsaW5lU3RhdGlzdGljc1F1
ZXJ5KFdlYkdQVUlkZW50aWZpZXIgcXVlcnlTZXQsIFBBTDo6V2ViR1BVOjpTaXplMzIgcXVlcnlJ
bmRleCkKIHsKLSAgICBhdXRvIGNvbnZlcnRlZFF1ZXJ5U2V0ID0gbV9vYmplY3RSZWdpc3RyeS5j
b252ZXJ0UXVlcnlTZXRGcm9tQmFja2luZyhxdWVyeVNldCk7CisgICAgYXV0byBjb252ZXJ0ZWRR
dWVyeVNldCA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0UXVlcnlTZXRGcm9tQmFja2luZyhxdWVyeVNl
dCk7CiAgICAgQVNTRVJUKGNvbnZlcnRlZFF1ZXJ5U2V0KTsKICAgICBpZiAoIWNvbnZlcnRlZFF1
ZXJ5U2V0KQogICAgICAgICByZXR1cm47CkBAIC0xOTYsNyArMTk5LDcgQEAgdm9pZCBSZW1vdGVS
ZW5kZXJQYXNzRW5jb2Rlcjo6ZXhlY3V0ZUJ1bmRsZXMoVmVjdG9yPFdlYkdQVUlkZW50aWZpZXI+
JiYgcmVuZGVyQnUKICAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQ
VTo6UmVuZGVyQnVuZGxlPj4gY29udmVydGVkQnVuZGxlczsKICAgICBjb252ZXJ0ZWRCdW5kbGVz
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocmVuZGVyQnVuZGxlcy5zaXplKCkpOwogICAgIGZvciAo
V2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyIDogcmVuZGVyQnVuZGxlcykgewotICAgICAgICBh
dXRvIGNvbnZlcnRlZEJ1bmRsZSA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydFJlbmRlckJ1bmRs
ZUZyb21CYWNraW5nKGlkZW50aWZpZXIpOworICAgICAgICBhdXRvIGNvbnZlcnRlZEJ1bmRsZSA9
IG1fb2JqZWN0SGVhcC5jb252ZXJ0UmVuZGVyQnVuZGxlRnJvbUJhY2tpbmcoaWRlbnRpZmllcik7
CiAgICAgICAgIEFTU0VSVChjb252ZXJ0ZWRCdW5kbGUpOwogICAgICAgICBpZiAoIWNvbnZlcnRl
ZEJ1bmRsZSkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0Vu
Y29kZXIuaAppbmRleCBmYjZkM2RiNTlhOTMyMTRhZDhkNDA0ZmRhZGM1ZGM3MWE5M2VhY2VjLi5k
NWY5YmRkN2Y0NGI0ZWUwNGFiMDEzMzhhODM5ZDU5YjA2MzVjNmQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBhc3NFbmNv
ZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVSZW5kZXJQYXNzRW5jb2Rlci5oCkBAIC0zOSwyNiArMzksMzIgQEAgbmFtZXNwYWNlIFBBTDo6
V2ViR1BVIHsKIGNsYXNzIFJlbmRlclBhc3NFbmNvZGVyOwogfQogCituYW1lc3BhY2UgSVBDIHsK
K2NsYXNzIFN0cmVhbVNlcnZlckNvbm5lY3Rpb247Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBuYW1lc3BhY2UgV2ViR1BVIHsKIGNsYXNzIE9iamVjdEhlYXA7Ci1jbGFzcyBPYmplY3RSZWdp
c3RyeTsKIH0KIAogY2xhc3MgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIgZmluYWwgOiBwdWJsaWMg
SVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI+IGNyZWF0
ZShQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXImIHJlbmRlclBhc3NFbmNvZGVyLCBXZWJH
UFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBv
YmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxS
ZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcj4gY3JlYXRlKFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRW5j
b2RlciYgcmVuZGVyUGFzc0VuY29kZXIsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwg
UmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiBzdHJlYW1Db25uZWN0aW9uLCBXZWJH
UFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlcihyZW5kZXJQYXNzRW5jb2Rlciwgb2JqZWN0UmVn
aXN0cnksIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIocmVuZGVyUGFzc0VuY29kZXIsIG9iamVjdEhl
YXAsIFdURk1vdmUoc3RyZWFtQ29ubmVjdGlvbiksIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAg
ICB+UmVtb3RlUmVuZGVyUGFzc0VuY29kZXIoKTsKIAotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xh
c3MgT2JqZWN0UmVnaXN0cnk7CisgICAgdm9pZCBzdG9wTGlzdGVuaW5nRm9ySVBDKCk7CiAKLSAg
ICBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlcihQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXIm
LCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRl
bnRpZmllcik7CisgICAgUEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyJiBiYWNraW5nKCkg
eyByZXR1cm4gbV9iYWNraW5nOyB9CisKK3ByaXZhdGU6CisgICAgUmVtb3RlUmVuZGVyUGFzc0Vu
Y29kZXIoUEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyJiwgV2ViR1BVOjpPYmplY3RIZWFw
JiwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiwgV2ViR1BVSWRlbnRpZmllcik7
CiAKICAgICBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcihjb25zdCBSZW1vdGVSZW5kZXJQYXNzRW5j
b2RlciYpID0gZGVsZXRlOwogICAgIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyKFJlbW90ZVJlbmRl
clBhc3NFbmNvZGVyJiYpID0gZGVsZXRlOwpAQCAtMTExLDggKzExNyw4IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7CiAKICAgICBSZWY8UEFMOjpXZWJHUFU6OlJlbmRl
clBhc3NFbmNvZGVyPiBtX2JhY2tpbmc7Ci0gICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgbV9v
YmplY3RSZWdpc3RyeTsKICAgICBXZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKKyAg
ICBSZWY8SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiBtX3N0cmVhbUNvbm5lY3Rpb247CiAg
ICAgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBpcGVsaW5l
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVu
ZGVyUGlwZWxpbmUuY3BwCmluZGV4IDE1NTE1MDM3YzUxNDAyNzJiMGM5OWRmM2MxZGViYzM3ZDA4
NTVlZDEuLjJjZTY4MDUwMTk1MjBjNjhmNDQ5ZTNiNGVmMWUyODRkYTlhM2E3ZjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVy
UGlwZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlUmVuZGVyUGlwZWxpbmUuY3BwCkBAIC0yOSwzMiArMjksMzUgQEAKICNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJSZW1vdGVCaW5kR3JvdXBMYXlvdXQuaCIKKyNp
bmNsdWRlICJSZW1vdGVSZW5kZXJQaXBlbGluZU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU3RyZWFt
U2VydmVyQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKLSNpbmNs
dWRlICJXZWJHUFVPYmplY3RSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJH
UFUvV2ViR1BVQmluZEdyb3VwTGF5b3V0Lmg+CiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQ
VS9XZWJHUFVSZW5kZXJQaXBlbGluZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3Rl
UmVuZGVyUGlwZWxpbmU6OlJlbW90ZVJlbmRlclBpcGVsaW5lKFBBTDo6V2ViR1BVOjpSZW5kZXJQ
aXBlbGluZSYgcmVuZGVyUGlwZWxpbmUsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJl
Z2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIg
aWRlbnRpZmllcikKK1JlbW90ZVJlbmRlclBpcGVsaW5lOjpSZW1vdGVSZW5kZXJQaXBlbGluZShQ
QUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmUmIHJlbmRlclBpcGVsaW5lLCBXZWJHUFU6Ok9iamVj
dEhlYXAmIG9iamVjdEhlYXAsIFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+JiYgc3Ry
ZWFtQ29ubmVjdGlvbiwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDogbV9iYWNr
aW5nKHJlbmRlclBpcGVsaW5lKQotICAgICwgbV9vYmplY3RSZWdpc3RyeShvYmplY3RSZWdpc3Ry
eSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQorICAgICwgbV9zdHJlYW1Db25uZWN0
aW9uKFdURk1vdmUoc3RyZWFtQ29ubmVjdGlvbikpCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRp
ZmllcikKIHsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LmFkZE9iamVjdChtX2lkZW50aWZpZXIsIG1f
YmFja2luZyk7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdGFydFJlY2VpdmluZ01lc3NhZ2Vz
KCp0aGlzLCBNZXNzYWdlczo6UmVtb3RlUmVuZGVyUGlwZWxpbmU6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCi1SZW1vdGVSZW5kZXJQaXBlbGlu
ZTo6flJlbW90ZVJlbmRlclBpcGVsaW5lKCkKK1JlbW90ZVJlbmRlclBpcGVsaW5lOjp+UmVtb3Rl
UmVuZGVyUGlwZWxpbmUoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgUmVtb3RlUmVuZGVyUGlwZWxpbmU6
OnN0b3BMaXN0ZW5pbmdGb3JJUEMoKQogewotICAgIG1fb2JqZWN0UmVnaXN0cnkucmVtb3ZlT2Jq
ZWN0KG1faWRlbnRpZmllcik7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdG9wUmVjZWl2aW5n
TWVzc2FnZXMoTWVzc2FnZXM6OlJlbW90ZVJlbmRlclBpcGVsaW5lOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQ
aXBlbGluZTo6Z2V0QmluZEdyb3VwTGF5b3V0KHVpbnQzMl90IGluZGV4LCBXZWJHUFVJZGVudGlm
aWVyIGlkZW50aWZpZXIpCiB7CiAgICAgYXV0byBiaW5kR3JvdXBMYXlvdXQgPSBtX2JhY2tpbmct
PmdldEJpbmRHcm91cExheW91dChpbmRleCk7Ci0gICAgYXV0byByZW1vdGVCaW5kR3JvdXBMYXlv
dXQgPSBSZW1vdGVCaW5kR3JvdXBMYXlvdXQ6OmNyZWF0ZShiaW5kR3JvdXBMYXlvdXQsIG1fb2Jq
ZWN0UmVnaXN0cnksIG1fb2JqZWN0SGVhcCwgaWRlbnRpZmllcik7Ci0gICAgbV9vYmplY3RIZWFw
LmFkZE9iamVjdChyZW1vdGVCaW5kR3JvdXBMYXlvdXQpOworICAgIGF1dG8gcmVtb3RlQmluZEdy
b3VwTGF5b3V0ID0gUmVtb3RlQmluZEdyb3VwTGF5b3V0OjpjcmVhdGUoYmluZEdyb3VwTGF5b3V0
LCBtX29iamVjdEhlYXAsIG1fc3RyZWFtQ29ubmVjdGlvbi5jb3B5UmVmKCksIGlkZW50aWZpZXIp
OworICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QoaWRlbnRpZmllciwgcmVtb3RlQmluZEdyb3Vw
TGF5b3V0KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQaXBlbGluZTo6c2V0TGFiZWwoU3RyaW5n
JiYgbGFiZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZVJlbmRlclBpcGVsaW5lLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBpcGVsaW5lLmgKaW5kZXggYmM2Yjk2NTc1ZGNj
ZDNiZjljMDZjMjg5MjFjZjk1ZDYwYzg2NjU4MC4uNGRmY2I2ZDY1OWM1NTc4ZTMzYzU3NzRhMmU3
MWM4NGZhOThjNmFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGlwZWxpbmUuaApAQCAtMzYsMjYg
KzM2LDMyIEBAIG5hbWVzcGFjZSBQQUw6OldlYkdQVSB7CiBjbGFzcyBSZW5kZXJQaXBlbGluZTsK
IH0KIAorbmFtZXNwYWNlIElQQyB7CitjbGFzcyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uOworfQor
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIFdlYkdQVSB7CiBjbGFzcyBPYmplY3RI
ZWFwOwotY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiB9CiAKIGNsYXNzIFJlbW90ZVJlbmRlclBpcGVs
aW5lIGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRl
clBpcGVsaW5lPiBjcmVhdGUoUEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lJiByZW5kZXJQaXBl
bGluZSwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2Jq
ZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIHN0
YXRpYyBSZWY8UmVtb3RlUmVuZGVyUGlwZWxpbmU+IGNyZWF0ZShQQUw6OldlYkdQVTo6UmVuZGVy
UGlwZWxpbmUmIHJlbmRlclBpcGVsaW5lLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAs
IFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+JiYgc3RyZWFtQ29ubmVjdGlvbiwgV2Vi
R1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgUmVtb3RlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmUsIG9iamVjdFJlZ2lzdHJ5
LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFJlbW90ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lLCBvYmplY3RIZWFwLCBXVEZNb3Zl
KHN0cmVhbUNvbm5lY3Rpb24pLCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+
UmVtb3RlUmVuZGVyUGlwZWxpbmUoKTsKIAotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgT2Jq
ZWN0UmVnaXN0cnk7CisgICAgdm9pZCBzdG9wTGlzdGVuaW5nRm9ySVBDKCk7CiAKLSAgICBSZW1v
dGVSZW5kZXJQaXBlbGluZShQQUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmUmLCBXZWJHUFU6Ok9i
amVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7Cisg
ICAgUEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lJiBiYWNraW5nKCkgeyByZXR1cm4gbV9iYWNr
aW5nOyB9CisKK3ByaXZhdGU6CisgICAgUmVtb3RlUmVuZGVyUGlwZWxpbmUoUEFMOjpXZWJHUFU6
OlJlbmRlclBpcGVsaW5lJiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgUmVmPElQQzo6U3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbj4mJiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVSZW5kZXJQ
aXBlbGluZShjb25zdCBSZW1vdGVSZW5kZXJQaXBlbGluZSYpID0gZGVsZXRlOwogICAgIFJlbW90
ZVJlbmRlclBpcGVsaW5lKFJlbW90ZVJlbmRlclBpcGVsaW5lJiYpID0gZGVsZXRlOwpAQCAtNjks
OCArNzUsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCiAgICAg
UmVmPFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZT4gbV9iYWNraW5nOwotICAgIFdlYkdQVTo6
T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7CiAgICAgV2ViR1BVOjpPYmplY3RIZWFw
JiBtX29iamVjdEhlYXA7CisgICAgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4gbV9z
dHJlYW1Db25uZWN0aW9uOwogICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVTYW1wbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlU2FtcGxlci5jcHAKaW5kZXggYTc2YjY5NDVkNTc4M2ZmMDBjODk3OTVlZDQyM2M1
MmIwMGMwNGJhZC4uMmMwMGJkNTMwZGQ5MWQ2YTBlMDI4MDAxMjlhNTc4ZDE1Njc5ZDQ3MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVT
YW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZVNhbXBsZXIuY3BwCkBAIC0yOCwyNCArMjgsMjcgQEAKIAogI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZVNhbXBsZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUg
IlN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgi
Ci0jaW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhp
Y3MvV2ViR1BVL1dlYkdQVVNhbXBsZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90
ZVNhbXBsZXI6OlJlbW90ZVNhbXBsZXIoUEFMOjpXZWJHUFU6OlNhbXBsZXImIHNhbXBsZXIsIFdl
YkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAm
IG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK1JlbW90ZVNhbXBsZXI6
OlJlbW90ZVNhbXBsZXIoUEFMOjpXZWJHUFU6OlNhbXBsZXImIHNhbXBsZXIsIFdlYkdQVTo6T2Jq
ZWN0SGVhcCYgb2JqZWN0SGVhcCwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiBz
dHJlYW1Db25uZWN0aW9uLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2Jh
Y2tpbmcoc2FtcGxlcikKLSAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2JqZWN0UmVnaXN0cnkpCiAg
ICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkKKyAgICAsIG1fc3RyZWFtQ29ubmVjdGlvbihX
VEZNb3ZlKHN0cmVhbUNvbm5lY3Rpb24pKQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIp
CiB7Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5hZGRPYmplY3QobV9pZGVudGlmaWVyLCBtX2JhY2tp
bmcpOworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+c3RhcnRSZWNlaXZpbmdNZXNzYWdlcygqdGhp
cywgTWVzc2FnZXM6OlJlbW90ZVNhbXBsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVu
dGlmaWVyLnRvVUludDY0KCkpOwogfQogCi1SZW1vdGVTYW1wbGVyOjp+UmVtb3RlU2FtcGxlcigp
CitSZW1vdGVTYW1wbGVyOjp+UmVtb3RlU2FtcGxlcigpID0gZGVmYXVsdDsKKwordm9pZCBSZW1v
dGVTYW1wbGVyOjpzdG9wTGlzdGVuaW5nRm9ySVBDKCkKIHsKLSAgICBtX29iamVjdFJlZ2lzdHJ5
LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+c3Rv
cFJlY2VpdmluZ01lc3NhZ2VzKE1lc3NhZ2VzOjpSZW1vdGVTYW1wbGVyOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBSZW1vdGVTYW1w
bGVyOjpzZXRMYWJlbChTdHJpbmcmJiBsYWJlbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2FtcGxlci5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTYW1wbGVyLmgKaW5kZXggYWM5MDM4
YTViOWNhODdlY2JmNWJmZTQxZjg3NDYwNDNlMDAwY2EzMy4uZjE5YTgzNGMwNGFmOWUyOTE5YjA4
Mjg0ZDk3MGQ2MmM3MDI3OTg2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTYW1wbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTYW1wbGVyLmgKQEAgLTM2LDI2ICszNiwzMiBA
QCBuYW1lc3BhY2UgUEFMOjpXZWJHUFUgewogY2xhc3MgU2FtcGxlcjsKIH0KIAorbmFtZXNwYWNl
IElQQyB7CitjbGFzcyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uOworfQorCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogbmFtZXNwYWNlIFdlYkdQVSB7CiBjbGFzcyBPYmplY3RIZWFwOwotY2xhc3MgT2Jq
ZWN0UmVnaXN0cnk7CiB9CiAKIGNsYXNzIFJlbW90ZVNhbXBsZXIgZmluYWwgOiBwdWJsaWMgSVBD
OjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlU2FtcGxlcj4gY3JlYXRlKFBBTDo6V2ViR1BV
OjpTYW1wbGVyJiBzYW1wbGVyLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3Ry
eSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50
aWZpZXIpCisgICAgc3RhdGljIFJlZjxSZW1vdGVTYW1wbGVyPiBjcmVhdGUoUEFMOjpXZWJHUFU6
OlNhbXBsZXImIHNhbXBsZXIsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgUmVmPElQ
Qzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiBzdHJlYW1Db25uZWN0aW9uLCBXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBS
ZW1vdGVTYW1wbGVyKHNhbXBsZXIsIG9iamVjdFJlZ2lzdHJ5LCBvYmplY3RIZWFwLCBpZGVudGlm
aWVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVNhbXBsZXIoc2FtcGxl
ciwgb2JqZWN0SGVhcCwgV1RGTW92ZShzdHJlYW1Db25uZWN0aW9uKSwgaWRlbnRpZmllcikpOwog
ICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90ZVNhbXBsZXIoKTsKIAotcHJpdmF0ZToKLSAgICBm
cmllbmQgY2xhc3MgT2JqZWN0UmVnaXN0cnk7CisgICAgdm9pZCBzdG9wTGlzdGVuaW5nRm9ySVBD
KCk7CiAKLSAgICBSZW1vdGVTYW1wbGVyKFBBTDo6V2ViR1BVOjpTYW1wbGVyJiwgV2ViR1BVOjpP
YmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOwor
ICAgIFBBTDo6V2ViR1BVOjpTYW1wbGVyJiBiYWNraW5nKCkgeyByZXR1cm4gbV9iYWNraW5nOyB9
CisKK3ByaXZhdGU6CisgICAgUmVtb3RlU2FtcGxlcihQQUw6OldlYkdQVTo6U2FtcGxlciYsIFdl
YkdQVTo6T2JqZWN0SGVhcCYsIFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+JiYsIFdl
YkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlU2FtcGxlcihjb25zdCBSZW1vdGVTYW1wbGVy
JikgPSBkZWxldGU7CiAgICAgUmVtb3RlU2FtcGxlcihSZW1vdGVTYW1wbGVyJiYpID0gZGVsZXRl
OwpAQCAtNjcsOCArNzMsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYp
OwogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpTYW1wbGVyPiBtX2JhY2tpbmc7Ci0gICAgV2ViR1BV
OjpPYmplY3RSZWdpc3RyeSYgbV9vYmplY3RSZWdpc3RyeTsKICAgICBXZWJHUFU6Ok9iamVjdEhl
YXAmIG1fb2JqZWN0SGVhcDsKKyAgICBSZWY8SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiBt
X3N0cmVhbUNvbm5lY3Rpb247CiAgICAgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZVNoYWRlck1vZHVsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZVNoYWRlck1vZHVsZS5jcHAKaW5kZXggNDVhYzBkM2Y3MzY1YzE5YjU0
ODhjYzFkZDA5NGQyMmExNDdlMDM2Ny4uMTQ2ZDNkNDM5MDA0YzRlNjEwZjk1YzI4YTMzMDdjM2Uw
OWQ3ZWM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVTaGFkZXJNb2R1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2hhZGVyTW9kdWxlLmNwcApAQCAtMjgsMjYgKzI4LDI5
IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVTaGFkZXJN
b2R1bGVNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCIKICNp
bmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCi0jaW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0
cnkuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbXBpbGF0aW9uSW5m
by5oPgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29tcGlsYXRpb25NZXNz
YWdlLmg+CiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVTaGFkZXJNb2R1bGUu
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90ZVNoYWRlck1vZHVsZTo6UmVtb3RlU2hh
ZGVyTW9kdWxlKFBBTDo6V2ViR1BVOjpTaGFkZXJNb2R1bGUmIHNoYWRlck1vZHVsZSwgV2ViR1BV
OjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2Jq
ZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorUmVtb3RlU2hhZGVyTW9kdWxl
OjpSZW1vdGVTaGFkZXJNb2R1bGUoUEFMOjpXZWJHUFU6OlNoYWRlck1vZHVsZSYgc2hhZGVyTW9k
dWxlLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFJlZjxJUEM6OlN0cmVhbVNlcnZl
ckNvbm5lY3Rpb24+JiYgc3RyZWFtQ29ubmVjdGlvbiwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyKQogICAgIDogbV9iYWNraW5nKHNoYWRlck1vZHVsZSkKLSAgICAsIG1fb2JqZWN0UmVnaXN0
cnkob2JqZWN0UmVnaXN0cnkpCiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkKKyAgICAs
IG1fc3RyZWFtQ29ubmVjdGlvbihXVEZNb3ZlKHN0cmVhbUNvbm5lY3Rpb24pKQogICAgICwgbV9p
ZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5hZGRPYmplY3Qo
bV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+c3RhcnRS
ZWNlaXZpbmdNZXNzYWdlcygqdGhpcywgTWVzc2FnZXM6OlJlbW90ZVNoYWRlck1vZHVsZTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKLVJlbW90
ZVNoYWRlck1vZHVsZTo6flJlbW90ZVNoYWRlck1vZHVsZSgpCitSZW1vdGVTaGFkZXJNb2R1bGU6
On5SZW1vdGVTaGFkZXJNb2R1bGUoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgUmVtb3RlU2hhZGVyTW9k
dWxlOjpzdG9wTGlzdGVuaW5nRm9ySVBDKCkKIHsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LnJlbW92
ZU9iamVjdChtX2lkZW50aWZpZXIpOworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+c3RvcFJlY2Vp
dmluZ01lc3NhZ2VzKE1lc3NhZ2VzOjpSZW1vdGVTaGFkZXJNb2R1bGU6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCiB2b2lkIFJlbW90ZVNoYWRl
ck1vZHVsZTo6Y29tcGlsYXRpb25JbmZvKFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8V2ViR1BVOjpDb21waWxhdGlvbk1lc3NhZ2U+JiYpPiYmIGNhbGxiYWNrKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJN
b2R1bGUuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
U2hhZGVyTW9kdWxlLmgKaW5kZXggZjk3ZjAxOTZiYjA2N2VkYmNiOTIzNWNkZWMxMDY0ZWMzNDE2
NzJiYi4uY2I1YWFlOGUyYTgyYTM2ZmEyZjBhNGZlMGIwZTA0NDZkYTk5MTI5NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJN
b2R1bGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZVNoYWRlck1vZHVsZS5oCkBAIC0zOSwyNiArMzksMzIgQEAgbmFtZXNwYWNlIFBBTDo6V2Vi
R1BVIHsKIGNsYXNzIFNoYWRlck1vZHVsZTsKIH0KIAorbmFtZXNwYWNlIElQQyB7CitjbGFzcyBT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNw
YWNlIFdlYkdQVSB7CiBjbGFzcyBPYmplY3RIZWFwOwotY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiB9
CiAKIGNsYXNzIFJlbW90ZVNoYWRlck1vZHVsZSBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1l
c3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxSZW1vdGVTaGFkZXJNb2R1bGU+IGNyZWF0ZShQQUw6OldlYkdQVTo6U2hh
ZGVyTW9kdWxlJiBzaGFkZXJNb2R1bGUsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJl
Z2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIg
aWRlbnRpZmllcikKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVNoYWRlck1vZHVsZT4gY3JlYXRlKFBB
TDo6V2ViR1BVOjpTaGFkZXJNb2R1bGUmIHNoYWRlck1vZHVsZSwgV2ViR1BVOjpPYmplY3RIZWFw
JiBvYmplY3RIZWFwLCBSZWY8SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiYmIHN0cmVhbUNv
bm5lY3Rpb24sIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVNoYWRlck1vZHVsZShzaGFkZXJNb2R1bGUsIG9iamVj
dFJlZ2lzdHJ5LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFJlbW90ZVNoYWRlck1vZHVsZShzaGFkZXJNb2R1bGUsIG9iamVjdEhlYXAsIFdU
Rk1vdmUoc3RyZWFtQ29ubmVjdGlvbiksIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0
dWFsIH5SZW1vdGVTaGFkZXJNb2R1bGUoKTsKIAotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3Mg
T2JqZWN0UmVnaXN0cnk7CisgICAgdm9pZCBzdG9wTGlzdGVuaW5nRm9ySVBDKCk7CiAKLSAgICBS
ZW1vdGVTaGFkZXJNb2R1bGUoUEFMOjpXZWJHUFU6OlNoYWRlck1vZHVsZSYsIFdlYkdQVTo6T2Jq
ZWN0UmVnaXN0cnkmLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKKyAg
ICBQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlJiBiYWNraW5nKCkgeyByZXR1cm4gbV9iYWNraW5n
OyB9CisKK3ByaXZhdGU6CisgICAgUmVtb3RlU2hhZGVyTW9kdWxlKFBBTDo6V2ViR1BVOjpTaGFk
ZXJNb2R1bGUmLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBSZWY8SVBDOjpTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uPiYmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZVNoYWRlck1vZHVsZShj
b25zdCBSZW1vdGVTaGFkZXJNb2R1bGUmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVTaGFkZXJNb2R1
bGUoUmVtb3RlU2hhZGVyTW9kdWxlJiYpID0gZGVsZXRlOwpAQCAtNzIsOCArNzgsOCBAQCBwcml2
YXRlOgogICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCiAgICAgUmVmPFBBTDo6V2ViR1BV
OjpTaGFkZXJNb2R1bGU+IG1fYmFja2luZzsKLSAgICBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBt
X29iamVjdFJlZ2lzdHJ5OwogICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFwOwor
ICAgIFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+IG1fc3RyZWFtQ29ubmVjdGlvbjsK
ICAgICBXZWJHUFVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmUu
Y3BwCmluZGV4IGEwMWY0MmQwMDllZTUyNmQxODY4NzYwNTQ4NmEwNDQyZmE1N2Q0M2IuLmZmOTc1
YjVlYmMzNTIxMzBhNTk4MmI5YmVhNzQ5NTI2OGY2YzExMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlLmNw
cApAQCAtMjgsOSArMjgsMTAgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1
ZGUgIlJlbW90ZVRleHR1cmVNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVRleHR1cmVWaWV3
LmgiCisjaW5jbHVkZSAiU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYkdQ
VU9iamVjdEhlYXAuaCIKLSNpbmNsdWRlICJXZWJHUFVPYmplY3RSZWdpc3RyeS5oIgogI2luY2x1
ZGUgIldlYkdQVVRleHR1cmVWaWV3RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGlj
cy9XZWJHUFUvV2ViR1BVVGV4dHVyZS5oPgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUv
V2ViR1BVVGV4dHVyZVZpZXcuaD4KQEAgLTM4LDI1ICszOSwyNyBAQAogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotUmVtb3RlVGV4dHVyZTo6UmVtb3RlVGV4dHVyZShQQUw6OldlYkdQVTo6VGV4dHVy
ZSYgdGV4dHVyZSwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQ
VTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQor
UmVtb3RlVGV4dHVyZTo6UmVtb3RlVGV4dHVyZShQQUw6OldlYkdQVTo6VGV4dHVyZSYgdGV4dHVy
ZSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBSZWY8SVBDOjpTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uPiYmIHN0cmVhbUNvbm5lY3Rpb24sIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmll
cikKICAgICA6IG1fYmFja2luZyh0ZXh0dXJlKQotICAgICwgbV9vYmplY3RSZWdpc3RyeShvYmpl
Y3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQorICAgICwgbV9zdHJl
YW1Db25uZWN0aW9uKFdURk1vdmUoc3RyZWFtQ29ubmVjdGlvbikpCiAgICAgLCBtX2lkZW50aWZp
ZXIoaWRlbnRpZmllcikKIHsKLSAgICBtX29iamVjdFJlZ2lzdHJ5LmFkZE9iamVjdChtX2lkZW50
aWZpZXIsIG1fYmFja2luZyk7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdGFydFJlY2Vpdmlu
Z01lc3NhZ2VzKCp0aGlzLCBNZXNzYWdlczo6UmVtb3RlVGV4dHVyZTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKLVJlbW90ZVRleHR1cmU6On5S
ZW1vdGVUZXh0dXJlKCkKK1JlbW90ZVRleHR1cmU6On5SZW1vdGVUZXh0dXJlKCkgPSBkZWZhdWx0
OworCit2b2lkIFJlbW90ZVRleHR1cmU6OnN0b3BMaXN0ZW5pbmdGb3JJUEMoKQogewotICAgIG1f
b2JqZWN0UmVnaXN0cnkucmVtb3ZlT2JqZWN0KG1faWRlbnRpZmllcik7CisgICAgbV9zdHJlYW1D
b25uZWN0aW9uLT5zdG9wUmVjZWl2aW5nTWVzc2FnZXMoTWVzc2FnZXM6OlJlbW90ZVRleHR1cmU6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCiB2
b2lkIFJlbW90ZVRleHR1cmU6OmNyZWF0ZVZpZXcoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJHUFU6
OlRleHR1cmVWaWV3RGVzY3JpcHRvcj4mIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRl
bnRpZmllcikKIHsKICAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlld0Rl
c2NyaXB0b3I+IGNvbnZlcnRlZERlc2NyaXB0b3I7CiAgICAgaWYgKGRlc2NyaXB0b3IpIHsKLSAg
ICAgICAgYXV0byByZXN1bHREZXNjcmlwdG9yID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJv
bUJhY2tpbmcoKmRlc2NyaXB0b3IpOworICAgICAgICBhdXRvIHJlc3VsdERlc2NyaXB0b3IgPSBt
X29iamVjdEhlYXAuY29udmVydEZyb21CYWNraW5nKCpkZXNjcmlwdG9yKTsKICAgICAgICAgQVNT
RVJUKHJlc3VsdERlc2NyaXB0b3IpOwogICAgICAgICBjb252ZXJ0ZWREZXNjcmlwdG9yID0gV1RG
TW92ZShyZXN1bHREZXNjcmlwdG9yKTsKICAgICAgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9y
KQpAQCAtNjQsOCArNjcsOCBAQCB2b2lkIFJlbW90ZVRleHR1cmU6OmNyZWF0ZVZpZXcoY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJHUFU6OlRleHR1cmVWaWV3RGVzY3JpcHRvcgogICAgIH0KICAgICBB
U1NFUlQoY29udmVydGVkRGVzY3JpcHRvcik7CiAgICAgYXV0byB0ZXh0dXJlVmlldyA9IG1fYmFj
a2luZy0+Y3JlYXRlVmlldygqY29udmVydGVkRGVzY3JpcHRvcik7Ci0gICAgYXV0byByZW1vdGVU
ZXh0dXJlVmlldyA9IFJlbW90ZVRleHR1cmVWaWV3OjpjcmVhdGUodGV4dHVyZVZpZXcsIG1fb2Jq
ZWN0UmVnaXN0cnksIG1fb2JqZWN0SGVhcCwgaWRlbnRpZmllcik7Ci0gICAgbV9vYmplY3RIZWFw
LmFkZE9iamVjdChyZW1vdGVUZXh0dXJlVmlldyk7CisgICAgYXV0byByZW1vdGVUZXh0dXJlVmll
dyA9IFJlbW90ZVRleHR1cmVWaWV3OjpjcmVhdGUodGV4dHVyZVZpZXcsIG1fb2JqZWN0SGVhcCwg
bV9zdHJlYW1Db25uZWN0aW9uLmNvcHlSZWYoKSwgaWRlbnRpZmllcik7CisgICAgbV9vYmplY3RI
ZWFwLmFkZE9iamVjdChpZGVudGlmaWVyLCByZW1vdGVUZXh0dXJlVmlldyk7CiB9CiAKIHZvaWQg
UmVtb3RlVGV4dHVyZTo6ZGVzdHJveSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmUuaCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZS5oCmluZGV4IGRmZWNmOWRhZjcw
OTFlODk4MGU5M2ZmMGU2Y2FjMGU2NTBhYTg1Y2UuLjMyYjc2N2EzZTNlNTY2MjQ2M2Y1OGNjZDUy
MTk4ZjE5ODkyMjEwNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZS5oCkBAIC0zNiwyNyArMzYsMzMgQEAgbmFt
ZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNzIFRleHR1cmU7CiB9CiAKK25hbWVzcGFjZSBJUEMg
eworY2xhc3MgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7
CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogY2xhc3MgT2JqZWN0SGVhcDsKLWNsYXNzIE9iamVjdFJl
Z2lzdHJ5Owogc3RydWN0IFRleHR1cmVWaWV3RGVzY3JpcHRvcjsKIH0KIAogY2xhc3MgUmVtb3Rl
VGV4dHVyZSBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVU
ZXh0dXJlPiBjcmVhdGUoUEFMOjpXZWJHUFU6OlRleHR1cmUmIHRleHR1cmUsIFdlYkdQVTo6T2Jq
ZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhl
YXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVRl
eHR1cmU+IGNyZWF0ZShQQUw6OldlYkdQVTo6VGV4dHVyZSYgdGV4dHVyZSwgV2ViR1BVOjpPYmpl
Y3RIZWFwJiBvYmplY3RIZWFwLCBSZWY8SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiYmIHN0
cmVhbUNvbm5lY3Rpb24sIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVRleHR1cmUodGV4dHVyZSwgb2JqZWN0UmVn
aXN0cnksIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgUmVtb3RlVGV4dHVyZSh0ZXh0dXJlLCBvYmplY3RIZWFwLCBXVEZNb3ZlKHN0cmVhbUNv
bm5lY3Rpb24pLCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlVGV4
dHVyZSgpOwogCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKKyAg
ICB2b2lkIHN0b3BMaXN0ZW5pbmdGb3JJUEMoKTsKIAotICAgIFJlbW90ZVRleHR1cmUoUEFMOjpX
ZWJHUFU6OlRleHR1cmUmLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RI
ZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7CisgICAgUEFMOjpXZWJHUFU6OlRleHR1cmUmIGJhY2tp
bmcoKSB7IHJldHVybiBtX2JhY2tpbmc7IH0KKworcHJpdmF0ZToKKyAgICBSZW1vdGVUZXh0dXJl
KFBBTDo6V2ViR1BVOjpUZXh0dXJlJiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgUmVmPElQQzo6U3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbj4mJiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVU
ZXh0dXJlKGNvbnN0IFJlbW90ZVRleHR1cmUmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVUZXh0dXJl
KFJlbW90ZVRleHR1cmUmJikgPSBkZWxldGU7CkBAIC03Miw4ICs3OCw4IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7CiAKICAgICBSZWY8UEFMOjpXZWJHUFU6OlRleHR1
cmU+IG1fYmFja2luZzsKLSAgICBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBtX29iamVjdFJlZ2lz
dHJ5OwogICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFwOworICAgIFJlZjxJUEM6
OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+IG1fc3RyZWFtQ29ubmVjdGlvbjsKICAgICBXZWJHUFVJ
ZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVZpZXcuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlVmlldy5jcHAK
aW5kZXggYmU4NjNkZjVmNjQyYjg0YzEwMDcyNGY4MDdhNjY4YjFmM2FlY2M1MS4uMmM3OWU5OGY5
NjYyZmVhN2U2NDY5ZjM5MGUxYTE2MzU1ZjcxNmNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlVmll
dy5jcHAKQEAgLTI4LDI0ICsyOCwyNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisj
aW5jbHVkZSAiUmVtb3RlVGV4dHVyZVZpZXdNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlN0cmVhbVNl
cnZlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCi0jaW5jbHVk
ZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BV
L1dlYkdQVVRleHR1cmVWaWV3Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZW1vdGVUZXh0
dXJlVmlldzo6UmVtb3RlVGV4dHVyZVZpZXcoUEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3JiB0ZXh0
dXJlVmlldywgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6
T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorUmVt
b3RlVGV4dHVyZVZpZXc6OlJlbW90ZVRleHR1cmVWaWV3KFBBTDo6V2ViR1BVOjpUZXh0dXJlVmll
dyYgdGV4dHVyZVZpZXcsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgUmVmPElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiBzdHJlYW1Db25uZWN0aW9uLCBXZWJHUFVJZGVudGlm
aWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2JhY2tpbmcodGV4dHVyZVZpZXcpCi0gICAgLCBtX29i
amVjdFJlZ2lzdHJ5KG9iamVjdFJlZ2lzdHJ5KQogICAgICwgbV9vYmplY3RIZWFwKG9iamVjdEhl
YXApCisgICAgLCBtX3N0cmVhbUNvbm5lY3Rpb24oV1RGTW92ZShzdHJlYW1Db25uZWN0aW9uKSkK
ICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogewotICAgIG1fb2JqZWN0UmVnaXN0cnku
YWRkT2JqZWN0KG1faWRlbnRpZmllciwgbV9iYWNraW5nKTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rp
b24tPnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXMoKnRoaXMsIE1lc3NhZ2VzOjpSZW1vdGVUZXh0dXJl
Vmlldzo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9
CiAKLVJlbW90ZVRleHR1cmVWaWV3Ojp+UmVtb3RlVGV4dHVyZVZpZXcoKQorUmVtb3RlVGV4dHVy
ZVZpZXc6On5SZW1vdGVUZXh0dXJlVmlldygpID0gZGVmYXVsdDsKKwordm9pZCBSZW1vdGVUZXh0
dXJlVmlldzo6c3RvcExpc3RlbmluZ0ZvcklQQygpCiB7Ci0gICAgbV9vYmplY3RSZWdpc3RyeS5y
ZW1vdmVPYmplY3QobV9pZGVudGlmaWVyKTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0b3BS
ZWNlaXZpbmdNZXNzYWdlcyhNZXNzYWdlczo6UmVtb3RlVGV4dHVyZVZpZXc6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCiB2b2lkIFJlbW90ZVRl
eHR1cmVWaWV3OjpzZXRMYWJlbChTdHJpbmcmJiBsYWJlbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVZpZXcuaCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVZpZXcu
aAppbmRleCA0Njg3YzNiODMzOTlmNDM2NjRkOTIxMmZmM2E4Nzg0NDM5Y2JmNmM3Li4zNzNmYzA5
Mjk1YWQzNTcyOGZhNGJmYzM2MDljMTI3YzEzMjIxYjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmVWaWV3LmgKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlVmll
dy5oCkBAIC0zNiwyNiArMzYsMzIgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNzIFRl
eHR1cmVWaWV3OwogfQogCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFN0cmVhbVNlcnZlckNvbm5l
Y3Rpb247Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIGNs
YXNzIE9iamVjdEhlYXA7Ci1jbGFzcyBPYmplY3RSZWdpc3RyeTsKIH0KIAogY2xhc3MgUmVtb3Rl
VGV4dHVyZVZpZXcgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVt
b3RlVGV4dHVyZVZpZXc+IGNyZWF0ZShQQUw6OldlYkdQVTo6VGV4dHVyZVZpZXcmIHRleHR1cmVW
aWV3LCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmpl
Y3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgc3Rh
dGljIFJlZjxSZW1vdGVUZXh0dXJlVmlldz4gY3JlYXRlKFBBTDo6V2ViR1BVOjpUZXh0dXJlVmll
dyYgdGV4dHVyZVZpZXcsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgUmVmPElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiBzdHJlYW1Db25uZWN0aW9uLCBXZWJHUFVJZGVudGlm
aWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1v
dGVUZXh0dXJlVmlldyh0ZXh0dXJlVmlldywgb2JqZWN0UmVnaXN0cnksIG9iamVjdEhlYXAsIGlk
ZW50aWZpZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlVGV4dHVyZVZp
ZXcodGV4dHVyZVZpZXcsIG9iamVjdEhlYXAsIFdURk1vdmUoc3RyZWFtQ29ubmVjdGlvbiksIGlk
ZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVUZXh0dXJlVmlldygpOwog
Ci1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKKyAgICB2b2lkIHN0
b3BMaXN0ZW5pbmdGb3JJUEMoKTsKIAotICAgIFJlbW90ZVRleHR1cmVWaWV3KFBBTDo6V2ViR1BV
OjpUZXh0dXJlVmlldyYsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmLCBXZWJHUFU6Ok9iamVjdEhl
YXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKKyAgICBQQUw6OldlYkdQVTo6VGV4dHVyZVZpZXcmIGJh
Y2tpbmcoKSB7IHJldHVybiBtX2JhY2tpbmc7IH0KKworcHJpdmF0ZToKKyAgICBSZW1vdGVUZXh0
dXJlVmlldyhQQUw6OldlYkdQVTo6VGV4dHVyZVZpZXcmLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBS
ZWY8SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiYmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAog
ICAgIFJlbW90ZVRleHR1cmVWaWV3KGNvbnN0IFJlbW90ZVRleHR1cmVWaWV3JikgPSBkZWxldGU7
CiAgICAgUmVtb3RlVGV4dHVyZVZpZXcoUmVtb3RlVGV4dHVyZVZpZXcmJikgPSBkZWxldGU7CkBA
IC02Nyw4ICs3Myw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7CiAK
ICAgICBSZWY8UEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3PiBtX2JhY2tpbmc7Ci0gICAgV2ViR1BV
OjpPYmplY3RSZWdpc3RyeSYgbV9vYmplY3RSZWdpc3RyeTsKICAgICBXZWJHUFU6Ok9iamVjdEhl
YXAmIG1fb2JqZWN0SGVhcDsKKyAgICBSZWY8SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiBt
X3N0cmVhbUNvbm5lY3Rpb247CiAgICAgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BV
L1dlYkdQVU9iamVjdEhlYXAuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9XZWJHUFVPYmplY3RIZWFwLmNwcAppbmRleCBkMGEwZWMzMDk0MjgwNTI1NDlkMzIx
MjFkODQ5ZWY0Yzg5ZTBmNWIxLi5mMWM2Y2I2OWFkNzJhMWFhMTMxZTVhNGVhYjcyM2MzYTE3ZWM4
MDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BV
L1dlYkdQVU9iamVjdEhlYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvV2ViR1BVT2JqZWN0SGVhcC5jcHAKQEAgLTYxLDI2OCArNjEsMzA0IEBAIE9i
amVjdEhlYXA6On5PYmplY3RIZWFwKCkKIHsKIH0KIAotdm9pZCBPYmplY3RIZWFwOjphZGRPYmpl
Y3QoUmVtb3RlQWRhcHRlciYgYWRhcHRlcikKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFdl
YkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlQWRhcHRlciYgYWRhcHRlcikKIHsKLSAg
ICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoJmFkYXB0ZXIsIGFkYXB0ZXIpOworICAgIGF1
dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBPYmplY3QgeyBJUEM6OlNjb3Bl
ZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlQWRhcHRlcj4geyBSZWYgeyBhZGFwdGVy
IH0gfSB9KTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwog
fQogCi12b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChSZW1vdGVCaW5kR3JvdXAmIGJpbmRHcm91
cCkKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmll
ciwgUmVtb3RlQmluZEdyb3VwJiBiaW5kR3JvdXApCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29i
amVjdHMuYWRkKCZiaW5kR3JvdXAsIGJpbmRHcm91cCk7CisgICAgYXV0byByZXN1bHQgPSBtX29i
amVjdHMuYWRkKGlkZW50aWZpZXIsIE9iamVjdCB7IElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJl
Y2VpdmVRdWV1ZTxSZW1vdGVCaW5kR3JvdXA+IHsgUmVmIHsgYmluZEdyb3VwIH0gfSB9KTsKICAg
ICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi12b2lkIE9i
amVjdEhlYXA6OmFkZE9iamVjdChSZW1vdGVCaW5kR3JvdXBMYXlvdXQmIGJpbmRHcm91cExheW91
dCkKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmll
ciwgUmVtb3RlQmluZEdyb3VwTGF5b3V0JiBiaW5kR3JvdXBMYXlvdXQpCiB7Ci0gICAgYXV0byBy
ZXN1bHQgPSBtX29iamVjdHMuYWRkKCZiaW5kR3JvdXBMYXlvdXQsIGJpbmRHcm91cExheW91dCk7
CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIE9iamVjdCB7IElQ
Qzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVCaW5kR3JvdXBMYXlvdXQ+
IHsgUmVmIHsgYmluZEdyb3VwTGF5b3V0IH0gfSB9KTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3Vs
dCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi12b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChS
ZW1vdGVCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFdlYkdQVUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgYXV0byBy
ZXN1bHQgPSBtX29iamVjdHMuYWRkKCZidWZmZXIsIGJ1ZmZlcik7CisgICAgYXV0byByZXN1bHQg
PSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIE9iamVjdCB7IElQQzo6U2NvcGVkQWN0aXZlTWVz
c2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVCdWZmZXI+IHsgUmVmIHsgYnVmZmVyIH0gfSB9KTsKICAg
ICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi12b2lkIE9i
amVjdEhlYXA6OmFkZE9iamVjdChSZW1vdGVDb21tYW5kQnVmZmVyJiBjb21tYW5kQnVmZmVyKQor
dm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBS
ZW1vdGVDb21tYW5kQnVmZmVyJiBjb21tYW5kQnVmZmVyKQogewotICAgIGF1dG8gcmVzdWx0ID0g
bV9vYmplY3RzLmFkZCgmY29tbWFuZEJ1ZmZlciwgY29tbWFuZEJ1ZmZlcik7CisgICAgYXV0byBy
ZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIE9iamVjdCB7IElQQzo6U2NvcGVkQWN0
aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVDb21tYW5kQnVmZmVyPiB7IFJlZiB7IGNvbW1h
bmRCdWZmZXIgfSB9IH0pOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdF
bnRyeSk7CiB9CiAKLXZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJlbW90ZUNvbW1hbmRFbmNv
ZGVyJiBjb21tYW5kRW5jb2RlcikKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFdlYkdQVUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlQ29tbWFuZEVuY29kZXImIGNvbW1hbmRFbmNvZGVy
KQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZCgmY29tbWFuZEVuY29kZXIsIGNv
bW1hbmRFbmNvZGVyKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmll
ciwgT2JqZWN0IHsgSVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZUNv
bW1hbmRFbmNvZGVyPiB7IFJlZiB7IGNvbW1hbmRFbmNvZGVyIH0gfSB9KTsKICAgICBBU1NFUlRf
VU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi12b2lkIE9iamVjdEhlYXA6
OmFkZE9iamVjdChSZW1vdGVDb21wdXRlUGFzc0VuY29kZXImIGNvbXB1dGVQYXNzRW5jb2RlcikK
K3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwg
UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyJiBjb21wdXRlUGFzc0VuY29kZXIpCiB7Ci0gICAgYXV0
byByZXN1bHQgPSBtX29iamVjdHMuYWRkKCZjb21wdXRlUGFzc0VuY29kZXIsIGNvbXB1dGVQYXNz
RW5jb2Rlcik7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIE9i
amVjdCB7IElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVDb21wdXRl
UGFzc0VuY29kZXI+IHsgUmVmIHsgY29tcHV0ZVBhc3NFbmNvZGVyIH0gfSB9KTsKICAgICBBU1NF
UlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi12b2lkIE9iamVjdEhl
YXA6OmFkZE9iamVjdChSZW1vdGVDb21wdXRlUGlwZWxpbmUmIGNvbXB1dGVQaXBlbGluZSkKK3Zv
aWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUmVt
b3RlQ29tcHV0ZVBpcGVsaW5lJiBjb21wdXRlUGlwZWxpbmUpCiB7Ci0gICAgYXV0byByZXN1bHQg
PSBtX29iamVjdHMuYWRkKCZjb21wdXRlUGlwZWxpbmUsIGNvbXB1dGVQaXBlbGluZSk7CisgICAg
YXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIE9iamVjdCB7IElQQzo6U2Nv
cGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVDb21wdXRlUGlwZWxpbmU+IHsgUmVm
IHsgY29tcHV0ZVBpcGVsaW5lIH0gfSB9KTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVz
dWx0LmlzTmV3RW50cnkpOwogfQogCi12b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChSZW1vdGVE
ZXZpY2UmIGRldmljZSkKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgUmVtb3RlRGV2aWNlJiBkZXZpY2UpCiB7Ci0gICAgYXV0byByZXN1bHQg
PSBtX29iamVjdHMuYWRkKCZkZXZpY2UsIGRldmljZSk7CisgICAgYXV0byByZXN1bHQgPSBtX29i
amVjdHMuYWRkKGlkZW50aWZpZXIsIE9iamVjdCB7IElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJl
Y2VpdmVRdWV1ZTxSZW1vdGVEZXZpY2U+IHsgUmVmIHsgZGV2aWNlIH0gfSB9KTsKICAgICBBU1NF
UlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi12b2lkIE9iamVjdEhl
YXA6OmFkZE9iamVjdChSZW1vdGVFeHRlcm5hbFRleHR1cmUmIGV4dGVybmFsVGV4dHVyZSkKK3Zv
aWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUmVt
b3RlRXh0ZXJuYWxUZXh0dXJlJiBleHRlcm5hbFRleHR1cmUpCiB7Ci0gICAgYXV0byByZXN1bHQg
PSBtX29iamVjdHMuYWRkKCZleHRlcm5hbFRleHR1cmUsIGV4dGVybmFsVGV4dHVyZSk7CisgICAg
YXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIE9iamVjdCB7IElQQzo6U2Nv
cGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVFeHRlcm5hbFRleHR1cmU+IHsgUmVm
IHsgZXh0ZXJuYWxUZXh0dXJlIH0gfSB9KTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVz
dWx0LmlzTmV3RW50cnkpOwogfQogCi12b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChSZW1vdGVH
UFUmIGdwdSkKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRl
bnRpZmllciwgUmVtb3RlUGlwZWxpbmVMYXlvdXQmIHBpcGVsaW5lTGF5b3V0KQogewotICAgIGF1
dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZCgmZ3B1LCBncHUpOworICAgIGF1dG8gcmVzdWx0ID0g
bV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBPYmplY3QgeyBJUEM6OlNjb3BlZEFjdGl2ZU1lc3Nh
Z2VSZWNlaXZlUXVldWU8UmVtb3RlUGlwZWxpbmVMYXlvdXQ+IHsgUmVmIHsgcGlwZWxpbmVMYXlv
dXQgfSB9IH0pOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7
CiB9CiAKLXZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJlbW90ZVBpcGVsaW5lTGF5b3V0JiBw
aXBlbGluZUxheW91dCkKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgUmVtb3RlUXVlcnlTZXQmIHF1ZXJ5U2V0KQogewotICAgIGF1dG8gcmVz
dWx0ID0gbV9vYmplY3RzLmFkZCgmcGlwZWxpbmVMYXlvdXQsIHBpcGVsaW5lTGF5b3V0KTsKKyAg
ICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgT2JqZWN0IHsgSVBDOjpT
Y29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZVF1ZXJ5U2V0PiB7IFJlZiB7IHF1
ZXJ5U2V0IH0gfSB9KTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50
cnkpOwogfQogCi12b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChSZW1vdGVRdWVyeVNldCYgcXVl
cnlTZXQpCit2b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyIGlkZW50
aWZpZXIsIFJlbW90ZVF1ZXVlJiBxdWV1ZSkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0
cy5hZGQoJnF1ZXJ5U2V0LCBxdWVyeVNldCk7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMu
YWRkKGlkZW50aWZpZXIsIE9iamVjdCB7IElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVR
dWV1ZTxSZW1vdGVRdWV1ZT4geyBSZWYgeyBxdWV1ZSB9IH0gfSk7CiAgICAgQVNTRVJUX1VOVVNF
RChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotdm9pZCBPYmplY3RIZWFwOjphZGRP
YmplY3QoUmVtb3RlUXVldWUmIHF1ZXVlKQordm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoV2Vi
R1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyJiByZW5k
ZXJCdW5kbGVFbmNvZGVyKQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZCgmcXVl
dWUsIHF1ZXVlKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwg
T2JqZWN0IHsgSVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZVJlbmRl
ckJ1bmRsZUVuY29kZXI+IHsgUmVmIHsgcmVuZGVyQnVuZGxlRW5jb2RlciB9IH0gfSk7CiAgICAg
QVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotdm9pZCBPYmpl
Y3RIZWFwOjphZGRPYmplY3QoUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlciYgcmVuZGVyQnVuZGxl
RW5jb2RlcikKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRl
bnRpZmllciwgUmVtb3RlUmVuZGVyQnVuZGxlJiByZW5kZXJCdW5kbGUpCiB7Ci0gICAgYXV0byBy
ZXN1bHQgPSBtX29iamVjdHMuYWRkKCZyZW5kZXJCdW5kbGVFbmNvZGVyLCByZW5kZXJCdW5kbGVF
bmNvZGVyKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgT2Jq
ZWN0IHsgSVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZVJlbmRlckJ1
bmRsZT4geyBSZWYgeyByZW5kZXJCdW5kbGUgfSB9IH0pOwogICAgIEFTU0VSVF9VTlVTRUQocmVz
dWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLXZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0
KFJlbW90ZVJlbmRlckJ1bmRsZSYgcmVuZGVyQnVuZGxlKQordm9pZCBPYmplY3RIZWFwOjphZGRP
YmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rl
ciYgcmVuZGVyUGFzc0VuY29kZXIpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRk
KCZyZW5kZXJCdW5kbGUsIHJlbmRlckJ1bmRsZSk7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVj
dHMuYWRkKGlkZW50aWZpZXIsIE9iamVjdCB7IElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2Vp
dmVRdWV1ZTxSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcj4geyBSZWYgeyByZW5kZXJQYXNzRW5jb2Rl
ciB9IH0gfSk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsK
IH0KIAotdm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIm
IHJlbmRlclBhc3NFbmNvZGVyKQordm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoV2ViR1BVSWRl
bnRpZmllciBpZGVudGlmaWVyLCBSZW1vdGVSZW5kZXJQaXBlbGluZSYgcmVuZGVyUGlwZWxpbmUp
CiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKCZyZW5kZXJQYXNzRW5jb2Rlciwg
cmVuZGVyUGFzc0VuY29kZXIpOworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVu
dGlmaWVyLCBPYmplY3QgeyBJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVt
b3RlUmVuZGVyUGlwZWxpbmU+IHsgUmVmIHsgcmVuZGVyUGlwZWxpbmUgfSB9IH0pOwogICAgIEFT
U0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLXZvaWQgT2JqZWN0
SGVhcDo6YWRkT2JqZWN0KFJlbW90ZVJlbmRlclBpcGVsaW5lJiByZW5kZXJQaXBlbGluZSkKK3Zv
aWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUmVt
b3RlU2FtcGxlciYgc2FtcGxlcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQo
JnJlbmRlclBpcGVsaW5lLCByZW5kZXJQaXBlbGluZSk7CisgICAgYXV0byByZXN1bHQgPSBtX29i
amVjdHMuYWRkKGlkZW50aWZpZXIsIE9iamVjdCB7IElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJl
Y2VpdmVRdWV1ZTxSZW1vdGVTYW1wbGVyPiB7IFJlZiB7IHNhbXBsZXIgfSB9IH0pOwogICAgIEFT
U0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLXZvaWQgT2JqZWN0
SGVhcDo6YWRkT2JqZWN0KFJlbW90ZVNhbXBsZXImIHNhbXBsZXIpCit2b2lkIE9iamVjdEhlYXA6
OmFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlbW90ZVNoYWRlck1vZHVs
ZSYgc2hhZGVyTW9kdWxlKQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZCgmc2Ft
cGxlciwgc2FtcGxlcik7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZp
ZXIsIE9iamVjdCB7IElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVT
aGFkZXJNb2R1bGU+IHsgUmVmIHsgc2hhZGVyTW9kdWxlIH0gfSB9KTsKICAgICBBU1NFUlRfVU5V
U0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi12b2lkIE9iamVjdEhlYXA6OmFk
ZE9iamVjdChSZW1vdGVTaGFkZXJNb2R1bGUmIHNoYWRlck1vZHVsZSkKK3ZvaWQgT2JqZWN0SGVh
cDo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlVGV4dHVyZSYg
dGV4dHVyZSkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoJnNoYWRlck1vZHVs
ZSwgc2hhZGVyTW9kdWxlKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRp
ZmllciwgT2JqZWN0IHsgSVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90
ZVRleHR1cmU+IHsgUmVmIHsgdGV4dHVyZSB9IH0gfSk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotdm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3Qo
UmVtb3RlVGV4dHVyZSYgdGV4dHVyZSkKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFdlYkdQ
VUlkZW50aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlVGV4dHVyZVZpZXcmIHRleHR1cmVWaWV3KQog
ewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZCgmdGV4dHVyZSwgdGV4dHVyZSk7Cisg
ICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIE9iamVjdCB7IElQQzo6
U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVUZXh0dXJlVmlldz4geyBSZWYg
eyB0ZXh0dXJlVmlldyB9IH0gfSk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5p
c05ld0VudHJ5KTsKIH0KIAotdm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoUmVtb3RlVGV4dHVy
ZVZpZXcmIHRleHR1cmVWaWV3KQordm9pZCBPYmplY3RIZWFwOjpyZW1vdmVPYmplY3QoV2ViR1BV
SWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFk
ZCgmdGV4dHVyZVZpZXcsIHRleHR1cmVWaWV3KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwg
cmVzdWx0LmlzTmV3RW50cnkpOwotfQotCi12b2lkIE9iamVjdEhlYXA6OnJlbW92ZU9iamVjdChS
ZW1vdGVBZGFwdGVyJiBhZGFwdGVyKQotewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJl
bW92ZSgmYWRhcHRlcik7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKGlkZW50
aWZpZXIpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwogfQogCi12b2lkIE9i
amVjdEhlYXA6OnJlbW92ZU9iamVjdChSZW1vdGVCaW5kR3JvdXAmIGJpbmRHcm91cCkKK1BBTDo6
V2ViR1BVOjpBZGFwdGVyKiBPYmplY3RIZWFwOjpjb252ZXJ0QWRhcHRlckZyb21CYWNraW5nKFdl
YkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0
cy5yZW1vdmUoJmJpbmRHcm91cCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7
CisgICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlm
IChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8
SVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZUFkYXB0ZXI+PihpdGVy
YXRvci0+dmFsdWUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6
Z2V0PElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVBZGFwdGVyPj4o
aXRlcmF0b3ItPnZhbHVlKS0+YmFja2luZygpOwogfQogCi12b2lkIE9iamVjdEhlYXA6OnJlbW92
ZU9iamVjdChSZW1vdGVCaW5kR3JvdXBMYXlvdXQmIGJpbmRHcm91cExheW91dCkKK1BBTDo6V2Vi
R1BVOjpCaW5kR3JvdXAqIE9iamVjdEhlYXA6OmNvbnZlcnRCaW5kR3JvdXBGcm9tQmFja2luZyhX
ZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVj
dHMucmVtb3ZlKCZiaW5kR3JvdXBMYXlvdXQpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCBy
ZXN1bHQpOworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsK
KyAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVy
bmF0aXZlPElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVCaW5kR3Jv
dXA+PihpdGVyYXRvci0+dmFsdWUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1
cm4gJnN0ZDo6Z2V0PElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVC
aW5kR3JvdXA+PihpdGVyYXRvci0+dmFsdWUpLT5iYWNraW5nKCk7CiB9CiAKLXZvaWQgT2JqZWN0
SGVhcDo6cmVtb3ZlT2JqZWN0KFJlbW90ZUJ1ZmZlciYgYnVmZmVyKQorUEFMOjpXZWJHUFU6OkJp
bmRHcm91cExheW91dCogT2JqZWN0SGVhcDo6Y29udmVydEJpbmRHcm91cExheW91dEZyb21CYWNr
aW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1f
b2JqZWN0cy5yZW1vdmUoJmJ1ZmZlcik7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3Vs
dCk7CisgICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOworICAg
IGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8SVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZUJpbmRHcm91cExh
eW91dD4+KGl0ZXJhdG9yLT52YWx1ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJl
dHVybiAmc3RkOjpnZXQ8SVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90
ZUJpbmRHcm91cExheW91dD4+KGl0ZXJhdG9yLT52YWx1ZSktPmJhY2tpbmcoKTsKIH0KIAotdm9p
ZCBPYmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlQ29tbWFuZEJ1ZmZlciYgY29tbWFuZEJ1
ZmZlcikKK1BBTDo6V2ViR1BVOjpCdWZmZXIqIE9iamVjdEhlYXA6OmNvbnZlcnRCdWZmZXJGcm9t
QmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byByZXN1bHQg
PSBtX29iamVjdHMucmVtb3ZlKCZjb21tYW5kQnVmZmVyKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJl
c3VsdCwgcmVzdWx0KTsKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRp
Zmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3Rl
QnVmZmVyPj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
cmV0dXJuICZzdGQ6OmdldDxJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVt
b3RlQnVmZmVyPj4oaXRlcmF0b3ItPnZhbHVlKS0+YmFja2luZygpOwogfQogCi12b2lkIE9iamVj
dEhlYXA6OnJlbW92ZU9iamVjdChSZW1vdGVDb21tYW5kRW5jb2RlciYgY29tbWFuZEVuY29kZXIp
CitQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZlciogT2JqZWN0SGVhcDo6Y29udmVydENvbW1hbmRC
dWZmZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0
byByZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKCZjb21tYW5kRW5jb2Rlcik7Ci0gICAgQVNTRVJU
X1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5m
aW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwg
IXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8SVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1
ZXVlPFJlbW90ZUNvbW1hbmRCdWZmZXI+PihpdGVyYXRvci0+dmFsdWUpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PElQQzo6U2NvcGVkQWN0aXZlTWVzc2Fn
ZVJlY2VpdmVRdWV1ZTxSZW1vdGVDb21tYW5kQnVmZmVyPj4oaXRlcmF0b3ItPnZhbHVlKS0+YmFj
a2luZygpOwogfQogCi12b2lkIE9iamVjdEhlYXA6OnJlbW92ZU9iamVjdChSZW1vdGVDb21wdXRl
UGFzc0VuY29kZXImIGNvbXB1dGVQYXNzRW5jb2RlcikKK1BBTDo6V2ViR1BVOjpDb21tYW5kRW5j
b2RlciogT2JqZWN0SGVhcDo6Y29udmVydENvbW1hbmRFbmNvZGVyRnJvbUJhY2tpbmcoV2ViR1BV
SWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJl
bW92ZSgmY29tcHV0ZVBhc3NFbmNvZGVyKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVz
dWx0KTsKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7Cisg
ICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlQ29tbWFuZEVu
Y29kZXI+PihpdGVyYXRvci0+dmFsdWUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBy
ZXR1cm4gJnN0ZDo6Z2V0PElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1v
dGVDb21tYW5kRW5jb2Rlcj4+KGl0ZXJhdG9yLT52YWx1ZSktPmJhY2tpbmcoKTsKIH0KIAotdm9p
ZCBPYmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlQ29tcHV0ZVBpcGVsaW5lJiBjb21wdXRl
UGlwZWxpbmUpCitQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyKiBPYmplY3RIZWFwOjpj
b252ZXJ0Q29tcHV0ZVBhc3NFbmNvZGVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVu
dGlmaWVyKQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmY29tcHV0ZVBp
cGVsaW5lKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKyAgICBhdXRvIGl0
ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09
IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxJUEM6OlNjb3BlZEFj
dGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyPj4oaXRlcmF0
b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZzdGQ6Omdl
dDxJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlQ29tcHV0ZVBhc3NF
bmNvZGVyPj4oaXRlcmF0b3ItPnZhbHVlKS0+YmFja2luZygpOwogfQogCi12b2lkIE9iamVjdEhl
YXA6OnJlbW92ZU9iamVjdChSZW1vdGVEZXZpY2UmIGRldmljZSkKK1BBTDo6V2ViR1BVOjpDb21w
dXRlUGlwZWxpbmUqIE9iamVjdEhlYXA6OmNvbnZlcnRDb21wdXRlUGlwZWxpbmVGcm9tQmFja2lu
ZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29i
amVjdHMucmVtb3ZlKCZkZXZpY2UpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQp
OworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKKyAgICBp
ZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZl
PElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVDb21wdXRlUGlwZWxp
bmU+PihpdGVyYXRvci0+dmFsdWUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1
cm4gJnN0ZDo6Z2V0PElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVD
b21wdXRlUGlwZWxpbmU+PihpdGVyYXRvci0+dmFsdWUpLT5iYWNraW5nKCk7CiB9CiAKLXZvaWQg
T2JqZWN0SGVhcDo6cmVtb3ZlT2JqZWN0KFJlbW90ZUV4dGVybmFsVGV4dHVyZSYgZXh0ZXJuYWxU
ZXh0dXJlKQorUEFMOjpXZWJHUFU6OkRldmljZSogT2JqZWN0SGVhcDo6Y29udmVydERldmljZUZy
b21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIHJlc3Vs
dCA9IG1fb2JqZWN0cy5yZW1vdmUoJmV4dGVybmFsVGV4dHVyZSk7Ci0gICAgQVNTRVJUX1VOVVNF
RChyZXN1bHQsIHJlc3VsdCk7CisgICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlk
ZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8SVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJl
bW90ZURldmljZT4+KGl0ZXJhdG9yLT52YWx1ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIHJldHVybiAmc3RkOjpnZXQ8SVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVl
PFJlbW90ZURldmljZT4+KGl0ZXJhdG9yLT52YWx1ZSktPmJhY2tpbmcoKTsKIH0KIAotdm9pZCBP
YmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlR1BVJiBncHUpCitQQUw6OldlYkdQVTo6RXh0
ZXJuYWxUZXh0dXJlKiBPYmplY3RIZWFwOjpjb252ZXJ0RXh0ZXJuYWxUZXh0dXJlRnJvbUJhY2tp
bmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9v
YmplY3RzLnJlbW92ZSgmZ3B1KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsK
KyAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYg
KGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxJ
UEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlRXh0ZXJuYWxUZXh0dXJl
Pj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJu
ICZzdGQ6OmdldDxJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlRXh0
ZXJuYWxUZXh0dXJlPj4oaXRlcmF0b3ItPnZhbHVlKS0+YmFja2luZygpOwogfQogCi12b2lkIE9i
amVjdEhlYXA6OnJlbW92ZU9iamVjdChSZW1vdGVQaXBlbGluZUxheW91dCYgcGlwZWxpbmVMYXlv
dXQpCitQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQqIE9iamVjdEhlYXA6OmNvbnZlcnRQaXBl
bGluZUxheW91dEZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAg
ICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJnBpcGVsaW5lTGF5b3V0KTsKLSAgICBB
U1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmpl
Y3RzLmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQo
KSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNl
aXZlUXVldWU8UmVtb3RlUGlwZWxpbmVMYXlvdXQ+PihpdGVyYXRvci0+dmFsdWUpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PElQQzo6U2NvcGVkQWN0aXZl
TWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVQaXBlbGluZUxheW91dD4+KGl0ZXJhdG9yLT52YWx1
ZSktPmJhY2tpbmcoKTsKIH0KIAotdm9pZCBPYmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3Rl
UXVlcnlTZXQmIHF1ZXJ5U2V0KQorUEFMOjpXZWJHUFU6OlF1ZXJ5U2V0KiBPYmplY3RIZWFwOjpj
b252ZXJ0UXVlcnlTZXRGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7
Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKCZxdWVyeVNldCk7Ci0gICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0
cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkg
fHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8SVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2
ZVF1ZXVlPFJlbW90ZVF1ZXJ5U2V0Pj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgcmV0dXJuICZzdGQ6OmdldDxJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VS
ZWNlaXZlUXVldWU8UmVtb3RlUXVlcnlTZXQ+PihpdGVyYXRvci0+dmFsdWUpLT5iYWNraW5nKCk7
CiB9CiAKLXZvaWQgT2JqZWN0SGVhcDo6cmVtb3ZlT2JqZWN0KFJlbW90ZVF1ZXVlJiBxdWV1ZSkK
K1BBTDo6V2ViR1BVOjpRdWV1ZSogT2JqZWN0SGVhcDo6Y29udmVydFF1ZXVlRnJvbUJhY2tpbmco
V2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmpl
Y3RzLnJlbW92ZSgmcXVldWUpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwor
ICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAo
aXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPElQ
Qzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVRdWV1ZT4+KGl0ZXJhdG9y
LT52YWx1ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAmc3RkOjpnZXQ8
SVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZVF1ZXVlPj4oaXRlcmF0
b3ItPnZhbHVlKS0+YmFja2luZygpOwogfQogCi12b2lkIE9iamVjdEhlYXA6OnJlbW92ZU9iamVj
dChSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyJiByZW5kZXJCdW5kbGVFbmNvZGVyKQorUEFMOjpX
ZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXIqIE9iamVjdEhlYXA6OmNvbnZlcnRSZW5kZXJCdW5k
bGVFbmNvZGVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAg
IGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmcmVuZGVyQnVuZGxlRW5jb2Rlcik7Ci0g
ICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAgYXV0byBpdGVyYXRvciA9IG1f
b2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMu
ZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8SVBDOjpTY29wZWRBY3RpdmVNZXNzYWdl
UmVjZWl2ZVF1ZXVlPFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI+PihpdGVyYXRvci0+dmFsdWUp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PElQQzo6U2Nv
cGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyPj4o
aXRlcmF0b3ItPnZhbHVlKS0+YmFja2luZygpOwogfQogCi12b2lkIE9iamVjdEhlYXA6OnJlbW92
ZU9iamVjdChSZW1vdGVSZW5kZXJCdW5kbGUmIHJlbmRlckJ1bmRsZSkKK1BBTDo6V2ViR1BVOjpS
ZW5kZXJCdW5kbGUqIE9iamVjdEhlYXA6OmNvbnZlcnRSZW5kZXJCdW5kbGVGcm9tQmFja2luZyhX
ZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVj
dHMucmVtb3ZlKCZyZW5kZXJCdW5kbGUpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1
bHQpOworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKKyAg
ICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVSZW5kZXJCdW5k
bGU+PihpdGVyYXRvci0+dmFsdWUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1
cm4gJnN0ZDo6Z2V0PElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVS
ZW5kZXJCdW5kbGU+PihpdGVyYXRvci0+dmFsdWUpLT5iYWNraW5nKCk7CiB9CiAKLXZvaWQgT2Jq
ZWN0SGVhcDo6cmVtb3ZlT2JqZWN0KFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyJiByZW5kZXJQYXNz
RW5jb2RlcikKK1BBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRW5jb2RlciogT2JqZWN0SGVhcDo6Y29u
dmVydFJlbmRlclBhc3NFbmNvZGVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyKQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmcmVuZGVyUGFzc0Vu
Y29kZXIpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworICAgIGF1dG8gaXRl
cmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0g
bV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPElQQzo6U2NvcGVkQWN0
aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcj4+KGl0ZXJhdG9y
LT52YWx1ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAmc3RkOjpnZXQ8
SVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZVJlbmRlclBhc3NFbmNv
ZGVyPj4oaXRlcmF0b3ItPnZhbHVlKS0+YmFja2luZygpOwogfQogCi12b2lkIE9iamVjdEhlYXA6
OnJlbW92ZU9iamVjdChSZW1vdGVSZW5kZXJQaXBlbGluZSYgcmVuZGVyUGlwZWxpbmUpCitQQUw6
OldlYkdQVTo6UmVuZGVyUGlwZWxpbmUqIE9iamVjdEhlYXA6OmNvbnZlcnRSZW5kZXJQaXBlbGlu
ZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIHJl
c3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJnJlbmRlclBpcGVsaW5lKTsKLSAgICBBU1NFUlRfVU5V
U0VEKHJlc3VsdCwgcmVzdWx0KTsKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQo
aWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8
UmVtb3RlUmVuZGVyUGlwZWxpbmU+PihpdGVyYXRvci0+dmFsdWUpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJl
Y2VpdmVRdWV1ZTxSZW1vdGVSZW5kZXJQaXBlbGluZT4+KGl0ZXJhdG9yLT52YWx1ZSktPmJhY2tp
bmcoKTsKIH0KIAotdm9pZCBPYmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlU2FtcGxlciYg
c2FtcGxlcikKK1BBTDo6V2ViR1BVOjpTYW1wbGVyKiBPYmplY3RIZWFwOjpjb252ZXJ0U2FtcGxl
ckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIHJl
c3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJnNhbXBsZXIpOwotICAgIEFTU0VSVF9VTlVTRUQocmVz
dWx0LCByZXN1bHQpOworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlm
aWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVT
YW1wbGVyPj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
cmV0dXJuICZzdGQ6OmdldDxJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVt
b3RlU2FtcGxlcj4+KGl0ZXJhdG9yLT52YWx1ZSktPmJhY2tpbmcoKTsKIH0KIAotdm9pZCBPYmpl
Y3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlU2hhZGVyTW9kdWxlJiBzaGFkZXJNb2R1bGUpCitQ
QUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlKiBPYmplY3RIZWFwOjpjb252ZXJ0U2hhZGVyTW9kdWxl
RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGF1dG8gcmVz
dWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmc2hhZGVyTW9kdWxlKTsKLSAgICBBU1NFUlRfVU5VU0VE
KHJlc3VsdCwgcmVzdWx0KTsKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRl
bnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVt
b3RlU2hhZGVyTW9kdWxlPj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgcmV0dXJuICZzdGQ6OmdldDxJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZl
UXVldWU8UmVtb3RlU2hhZGVyTW9kdWxlPj4oaXRlcmF0b3ItPnZhbHVlKS0+YmFja2luZygpOwog
fQogCi12b2lkIE9iamVjdEhlYXA6OnJlbW92ZU9iamVjdChSZW1vdGVUZXh0dXJlJiB0ZXh0dXJl
KQorUEFMOjpXZWJHUFU6OlRleHR1cmUqIE9iamVjdEhlYXA6OmNvbnZlcnRUZXh0dXJlRnJvbUJh
Y2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGF1dG8gcmVzdWx0ID0g
bV9vYmplY3RzLnJlbW92ZSgmdGV4dHVyZSk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJl
c3VsdCk7CisgICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOwor
ICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJu
YXRpdmU8SVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZVRleHR1cmU+
PihpdGVyYXRvci0+dmFsdWUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4g
JnN0ZDo6Z2V0PElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVUZXh0
dXJlPj4oaXRlcmF0b3ItPnZhbHVlKS0+YmFja2luZygpOwogfQogCi12b2lkIE9iamVjdEhlYXA6
OnJlbW92ZU9iamVjdChSZW1vdGVUZXh0dXJlVmlldyYgdGV4dHVyZVZpZXcpCitQQUw6OldlYkdQ
VTo6VGV4dHVyZVZpZXcqIE9iamVjdEhlYXA6OmNvbnZlcnRUZXh0dXJlVmlld0Zyb21CYWNraW5n
KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2Jq
ZWN0cy5yZW1vdmUoJnRleHR1cmVWaWV3KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVz
dWx0KTsKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7Cisg
ICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlVGV4dHVyZVZp
ZXc+PihpdGVyYXRvci0+dmFsdWUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1
cm4gJnN0ZDo6Z2V0PElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVU
ZXh0dXJlVmlldz4+KGl0ZXJhdG9yLT52YWx1ZSktPmJhY2tpbmcoKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvV2ViR1BVT2JqZWN0SGVhcC5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVPYmplY3RIZWFwLmgKaW5kZXggYTE2Y2QyNjY5
ODEzNzdjYTkxOGU1MTBiNjhmYzg1ZjM4ZTQxOWQ5Mi4uM2UzMzM4MDkyNWZjZWY5ZmYzNTAzODY3
OWU4YzMzNDEwZTUwN2IzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1dlYkdQVS9XZWJHUFVPYmplY3RIZWFwLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVPYmplY3RIZWFwLmgKQEAgLTI3LDEyICsyNywz
OCBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCi0jaW5jbHVkZSAiV2ViR1BVT2JqZWN0
UmVnaXN0cnkuaCIKKyNpbmNsdWRlICJTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlLmgi
CisjaW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUg
IldlYkdQVUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHZh
cmlhbnQ+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0j
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKK2NsYXNz
IEFkYXB0ZXI7CitjbGFzcyBCaW5kR3JvdXA7CitjbGFzcyBCaW5kR3JvdXBMYXlvdXQ7CitjbGFz
cyBCdWZmZXI7CitjbGFzcyBDb21tYW5kQnVmZmVyOworY2xhc3MgQ29tbWFuZEVuY29kZXI7Citj
bGFzcyBDb21wdXRlUGFzc0VuY29kZXI7CitjbGFzcyBDb21wdXRlUGlwZWxpbmU7CitjbGFzcyBE
ZXZpY2U7CitjbGFzcyBFeHRlcm5hbFRleHR1cmU7CitjbGFzcyBHUFU7CitjbGFzcyBQaXBlbGlu
ZUxheW91dDsKK2NsYXNzIFF1ZXJ5U2V0OworY2xhc3MgUXVldWU7CitjbGFzcyBSZW5kZXJCdW5k
bGVFbmNvZGVyOworY2xhc3MgUmVuZGVyQnVuZGxlOworY2xhc3MgUmVuZGVyUGFzc0VuY29kZXI7
CitjbGFzcyBSZW5kZXJQaXBlbGluZTsKK2NsYXNzIFNhbXBsZXI7CitjbGFzcyBTaGFkZXJNb2R1
bGU7CitjbGFzcyBUZXh0dXJlOworY2xhc3MgVGV4dHVyZVZpZXc7Cit9CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogY2xhc3MgUmVtb3RlQWRhcHRlcjsKQEAgLTQ1LDcgKzcxLDYgQEAgY2xhc3MgUmVt
b3RlQ29tcHV0ZVBhc3NFbmNvZGVyOwogY2xhc3MgUmVtb3RlQ29tcHV0ZVBpcGVsaW5lOwogY2xh
c3MgUmVtb3RlRGV2aWNlOwogY2xhc3MgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlOwotY2xhc3MgUmVt
b3RlR1BVOwogY2xhc3MgUmVtb3RlUGlwZWxpbmVMYXlvdXQ7CiBjbGFzcyBSZW1vdGVRdWVyeVNl
dDsKIGNsYXNzIFJlbW90ZVF1ZXVlOwpAQCAtNjEsODYgKzg2LDkwIEBAIGNsYXNzIFJlbW90ZVRl
eHR1cmVWaWV3OwogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCi1jbGFzcyBPYmplY3RI
ZWFwIGZpbmFsIDogcHVibGljIENhbk1ha2VXZWFrUHRyPE9iamVjdEhlYXA+IHsKK2NsYXNzIE9i
amVjdEhlYXAgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxPYmplY3RIZWFwPiwgcHVibGljIFdl
YkdQVTo6Q29udmVydEZyb21CYWNraW5nQ29udGV4dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgT2JqZWN0SGVhcCgpOworICAgIHN0YXRpYyBSZWY8T2JqZWN0
SGVhcD4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE9iamVj
dEhlYXAoKSk7CisgICAgfQorCiAgICAgfk9iamVjdEhlYXAoKTsKIAotICAgIHZvaWQgYWRkT2Jq
ZWN0KFJlbW90ZUFkYXB0ZXImKTsKLSAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVCaW5kR3JvdXAm
KTsKLSAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVCaW5kR3JvdXBMYXlvdXQmKTsKLSAgICB2b2lk
IGFkZE9iamVjdChSZW1vdGVCdWZmZXImKTsKLSAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVDb21t
YW5kQnVmZmVyJik7Ci0gICAgdm9pZCBhZGRPYmplY3QoUmVtb3RlQ29tbWFuZEVuY29kZXImKTsK
LSAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVDb21wdXRlUGFzc0VuY29kZXImKTsKLSAgICB2b2lk
IGFkZE9iamVjdChSZW1vdGVDb21wdXRlUGlwZWxpbmUmKTsKLSAgICB2b2lkIGFkZE9iamVjdChS
ZW1vdGVEZXZpY2UmKTsKLSAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVFeHRlcm5hbFRleHR1cmUm
KTsKLSAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVHUFUmKTsKLSAgICB2b2lkIGFkZE9iamVjdChS
ZW1vdGVQaXBlbGluZUxheW91dCYpOwotICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90ZVF1ZXJ5U2V0
Jik7Ci0gICAgdm9pZCBhZGRPYmplY3QoUmVtb3RlUXVldWUmKTsKLSAgICB2b2lkIGFkZE9iamVj
dChSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyJik7Ci0gICAgdm9pZCBhZGRPYmplY3QoUmVtb3Rl
UmVuZGVyQnVuZGxlJik7Ci0gICAgdm9pZCBhZGRPYmplY3QoUmVtb3RlUmVuZGVyUGFzc0VuY29k
ZXImKTsKLSAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVSZW5kZXJQaXBlbGluZSYpOwotICAgIHZv
aWQgYWRkT2JqZWN0KFJlbW90ZVNhbXBsZXImKTsKLSAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVT
aGFkZXJNb2R1bGUmKTsKLSAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVUZXh0dXJlJik7Ci0gICAg
dm9pZCBhZGRPYmplY3QoUmVtb3RlVGV4dHVyZVZpZXcmKTsKKyAgICB2b2lkIGFkZE9iamVjdChX
ZWJHUFVJZGVudGlmaWVyLCBSZW1vdGVBZGFwdGVyJik7CisgICAgdm9pZCBhZGRPYmplY3QoV2Vi
R1BVSWRlbnRpZmllciwgUmVtb3RlQmluZEdyb3VwJik7CisgICAgdm9pZCBhZGRPYmplY3QoV2Vi
R1BVSWRlbnRpZmllciwgUmVtb3RlQmluZEdyb3VwTGF5b3V0Jik7CisgICAgdm9pZCBhZGRPYmpl
Y3QoV2ViR1BVSWRlbnRpZmllciwgUmVtb3RlQnVmZmVyJik7CisgICAgdm9pZCBhZGRPYmplY3Qo
V2ViR1BVSWRlbnRpZmllciwgUmVtb3RlQ29tbWFuZEJ1ZmZlciYpOworICAgIHZvaWQgYWRkT2Jq
ZWN0KFdlYkdQVUlkZW50aWZpZXIsIFJlbW90ZUNvbW1hbmRFbmNvZGVyJik7CisgICAgdm9pZCBh
ZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyJik7Cisg
ICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUmVtb3RlQ29tcHV0ZVBpcGVsaW5l
Jik7CisgICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUmVtb3RlRGV2aWNlJik7
CisgICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUmVtb3RlRXh0ZXJuYWxUZXh0
dXJlJik7CisgICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUmVtb3RlUGlwZWxp
bmVMYXlvdXQmKTsKKyAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBSZW1vdGVR
dWVyeVNldCYpOworICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIsIFJlbW90ZVF1
ZXVlJik7CisgICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUmVtb3RlUmVuZGVy
QnVuZGxlRW5jb2RlciYpOworICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIsIFJl
bW90ZVJlbmRlckJ1bmRsZSYpOworICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIs
IFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyJik7CisgICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRl
bnRpZmllciwgUmVtb3RlUmVuZGVyUGlwZWxpbmUmKTsKKyAgICB2b2lkIGFkZE9iamVjdChXZWJH
UFVJZGVudGlmaWVyLCBSZW1vdGVTYW1wbGVyJik7CisgICAgdm9pZCBhZGRPYmplY3QoV2ViR1BV
SWRlbnRpZmllciwgUmVtb3RlU2hhZGVyTW9kdWxlJik7CisgICAgdm9pZCBhZGRPYmplY3QoV2Vi
R1BVSWRlbnRpZmllciwgUmVtb3RlVGV4dHVyZSYpOworICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQ
VUlkZW50aWZpZXIsIFJlbW90ZVRleHR1cmVWaWV3Jik7CiAKLSAgICB2b2lkIHJlbW92ZU9iamVj
dChSZW1vdGVBZGFwdGVyJik7Ci0gICAgdm9pZCByZW1vdmVPYmplY3QoUmVtb3RlQmluZEdyb3Vw
Jik7Ci0gICAgdm9pZCByZW1vdmVPYmplY3QoUmVtb3RlQmluZEdyb3VwTGF5b3V0Jik7Ci0gICAg
dm9pZCByZW1vdmVPYmplY3QoUmVtb3RlQnVmZmVyJik7Ci0gICAgdm9pZCByZW1vdmVPYmplY3Qo
UmVtb3RlQ29tbWFuZEJ1ZmZlciYpOwotICAgIHZvaWQgcmVtb3ZlT2JqZWN0KFJlbW90ZUNvbW1h
bmRFbmNvZGVyJik7Ci0gICAgdm9pZCByZW1vdmVPYmplY3QoUmVtb3RlQ29tcHV0ZVBhc3NFbmNv
ZGVyJik7Ci0gICAgdm9pZCByZW1vdmVPYmplY3QoUmVtb3RlQ29tcHV0ZVBpcGVsaW5lJik7Ci0g
ICAgdm9pZCByZW1vdmVPYmplY3QoUmVtb3RlRGV2aWNlJik7Ci0gICAgdm9pZCByZW1vdmVPYmpl
Y3QoUmVtb3RlRXh0ZXJuYWxUZXh0dXJlJik7Ci0gICAgdm9pZCByZW1vdmVPYmplY3QoUmVtb3Rl
R1BVJik7Ci0gICAgdm9pZCByZW1vdmVPYmplY3QoUmVtb3RlUGlwZWxpbmVMYXlvdXQmKTsKLSAg
ICB2b2lkIHJlbW92ZU9iamVjdChSZW1vdGVRdWVyeVNldCYpOwotICAgIHZvaWQgcmVtb3ZlT2Jq
ZWN0KFJlbW90ZVF1ZXVlJik7Ci0gICAgdm9pZCByZW1vdmVPYmplY3QoUmVtb3RlUmVuZGVyQnVu
ZGxlRW5jb2RlciYpOwotICAgIHZvaWQgcmVtb3ZlT2JqZWN0KFJlbW90ZVJlbmRlckJ1bmRsZSYp
OwotICAgIHZvaWQgcmVtb3ZlT2JqZWN0KFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyJik7Ci0gICAg
dm9pZCByZW1vdmVPYmplY3QoUmVtb3RlUmVuZGVyUGlwZWxpbmUmKTsKLSAgICB2b2lkIHJlbW92
ZU9iamVjdChSZW1vdGVTYW1wbGVyJik7Ci0gICAgdm9pZCByZW1vdmVPYmplY3QoUmVtb3RlU2hh
ZGVyTW9kdWxlJik7Ci0gICAgdm9pZCByZW1vdmVPYmplY3QoUmVtb3RlVGV4dHVyZSYpOwotICAg
IHZvaWQgcmVtb3ZlT2JqZWN0KFJlbW90ZVRleHR1cmVWaWV3Jik7CisgICAgdm9pZCByZW1vdmVP
YmplY3QoV2ViR1BVSWRlbnRpZmllcik7CisKKyAgICBQQUw6OldlYkdQVTo6QWRhcHRlciogY29u
dmVydEFkYXB0ZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKKyAgICBQQUw6
OldlYkdQVTo6QmluZEdyb3VwKiBjb252ZXJ0QmluZEdyb3VwRnJvbUJhY2tpbmcoV2ViR1BVSWRl
bnRpZmllcikgZmluYWw7CisgICAgUEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dCogY29udmVy
dEJpbmRHcm91cExheW91dEZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOworICAg
IFBBTDo6V2ViR1BVOjpCdWZmZXIqIGNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhXZWJHUFVJZGVu
dGlmaWVyKSBmaW5hbDsKKyAgICBQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZlciogY29udmVydENv
bW1hbmRCdWZmZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKKyAgICBQQUw6
OldlYkdQVTo6Q29tbWFuZEVuY29kZXIqIGNvbnZlcnRDb21tYW5kRW5jb2RlckZyb21CYWNraW5n
KFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOworICAgIFBBTDo6V2ViR1BVOjpDb21wdXRlUGFzc0Vu
Y29kZXIqIGNvbnZlcnRDb21wdXRlUGFzc0VuY29kZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlm
aWVyKSBmaW5hbDsKKyAgICBQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lKiBjb252ZXJ0Q29t
cHV0ZVBpcGVsaW5lRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7CisgICAgUEFM
OjpXZWJHUFU6OkRldmljZSogY29udmVydERldmljZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZp
ZXIpIGZpbmFsOworICAgIFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1cmUqIGNvbnZlcnRFeHRl
cm5hbFRleHR1cmVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKKyAgICBQQUw6
OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQqIGNvbnZlcnRQaXBlbGluZUxheW91dEZyb21CYWNraW5n
KFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOworICAgIFBBTDo6V2ViR1BVOjpRdWVyeVNldCogY29u
dmVydFF1ZXJ5U2V0RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7CisgICAgUEFM
OjpXZWJHUFU6OlF1ZXVlKiBjb252ZXJ0UXVldWVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVy
KSBmaW5hbDsKKyAgICBQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2RlciogY29udmVydFJl
bmRlckJ1bmRsZUVuY29kZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKKyAg
ICBQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlKiBjb252ZXJ0UmVuZGVyQnVuZGxlRnJvbUJhY2tp
bmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7CisgICAgUEFMOjpXZWJHUFU6OlJlbmRlclBhc3NF
bmNvZGVyKiBjb252ZXJ0UmVuZGVyUGFzc0VuY29kZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlm
aWVyKSBmaW5hbDsKKyAgICBQQUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmUqIGNvbnZlcnRSZW5k
ZXJQaXBlbGluZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOworICAgIFBBTDo6
V2ViR1BVOjpTYW1wbGVyKiBjb252ZXJ0U2FtcGxlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZp
ZXIpIGZpbmFsOworICAgIFBBTDo6V2ViR1BVOjpTaGFkZXJNb2R1bGUqIGNvbnZlcnRTaGFkZXJN
b2R1bGVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKKyAgICBQQUw6OldlYkdQ
VTo6VGV4dHVyZSogY29udmVydFRleHR1cmVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBm
aW5hbDsKKyAgICBQQUw6OldlYkdQVTo6VGV4dHVyZVZpZXcqIGNvbnZlcnRUZXh0dXJlVmlld0Zy
b21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOwogCiBwcml2YXRlOgorICAgIE9iamVj
dEhlYXAoKTsKKwogICAgIHVzaW5nIE9iamVjdCA9IHN0ZDo6dmFyaWFudDwKICAgICAgICAgc3Rk
Ojptb25vc3RhdGUsCi0gICAgICAgIFJlZjxSZW1vdGVBZGFwdGVyPiwKLSAgICAgICAgUmVmPFJl
bW90ZUJpbmRHcm91cD4sCi0gICAgICAgIFJlZjxSZW1vdGVCaW5kR3JvdXBMYXlvdXQ+LAotICAg
ICAgICBSZWY8UmVtb3RlQnVmZmVyPiwKLSAgICAgICAgUmVmPFJlbW90ZUNvbW1hbmRCdWZmZXI+
LAotICAgICAgICBSZWY8UmVtb3RlQ29tbWFuZEVuY29kZXI+LAotICAgICAgICBSZWY8UmVtb3Rl
Q29tcHV0ZVBhc3NFbmNvZGVyPiwKLSAgICAgICAgUmVmPFJlbW90ZUNvbXB1dGVQaXBlbGluZT4s
Ci0gICAgICAgIFJlZjxSZW1vdGVEZXZpY2U+LAotICAgICAgICBSZWY8UmVtb3RlRXh0ZXJuYWxU
ZXh0dXJlPiwKLSAgICAgICAgUmVmPFJlbW90ZUdQVT4sCi0gICAgICAgIFJlZjxSZW1vdGVQaXBl
bGluZUxheW91dD4sCi0gICAgICAgIFJlZjxSZW1vdGVRdWVyeVNldD4sCi0gICAgICAgIFJlZjxS
ZW1vdGVRdWV1ZT4sCi0gICAgICAgIFJlZjxSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyPiwKLSAg
ICAgICAgUmVmPFJlbW90ZVJlbmRlckJ1bmRsZT4sCi0gICAgICAgIFJlZjxSZW1vdGVSZW5kZXJQ
YXNzRW5jb2Rlcj4sCi0gICAgICAgIFJlZjxSZW1vdGVSZW5kZXJQaXBlbGluZT4sCi0gICAgICAg
IFJlZjxSZW1vdGVTYW1wbGVyPiwKLSAgICAgICAgUmVmPFJlbW90ZVNoYWRlck1vZHVsZT4sCi0g
ICAgICAgIFJlZjxSZW1vdGVUZXh0dXJlPiwKLSAgICAgICAgUmVmPFJlbW90ZVRleHR1cmVWaWV3
PgorICAgICAgICBJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlQWRh
cHRlcj4sCisgICAgICAgIElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1v
dGVCaW5kR3JvdXA+LAorICAgICAgICBJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVl
dWU8UmVtb3RlQmluZEdyb3VwTGF5b3V0PiwKKyAgICAgICAgSVBDOjpTY29wZWRBY3RpdmVNZXNz
YWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZUJ1ZmZlcj4sCisgICAgICAgIElQQzo6U2NvcGVkQWN0aXZl
TWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVDb21tYW5kQnVmZmVyPiwKKyAgICAgICAgSVBDOjpT
Y29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZUNvbW1hbmRFbmNvZGVyPiwKKyAg
ICAgICAgSVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZUNvbXB1dGVQ
YXNzRW5jb2Rlcj4sCisgICAgICAgIElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1
ZTxSZW1vdGVDb21wdXRlUGlwZWxpbmU+LAorICAgICAgICBJUEM6OlNjb3BlZEFjdGl2ZU1lc3Nh
Z2VSZWNlaXZlUXVldWU8UmVtb3RlRGV2aWNlPiwKKyAgICAgICAgSVBDOjpTY29wZWRBY3RpdmVN
ZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZUV4dGVybmFsVGV4dHVyZT4sCisgICAgICAgIElQQzo6
U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVQaXBlbGluZUxheW91dD4sCisg
ICAgICAgIElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVRdWVyeVNl
dD4sCisgICAgICAgIElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVR
dWV1ZT4sCisgICAgICAgIElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1v
dGVSZW5kZXJCdW5kbGVFbmNvZGVyPiwKKyAgICAgICAgSVBDOjpTY29wZWRBY3RpdmVNZXNzYWdl
UmVjZWl2ZVF1ZXVlPFJlbW90ZVJlbmRlckJ1bmRsZT4sCisgICAgICAgIElQQzo6U2NvcGVkQWN0
aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcj4sCisgICAgICAg
IElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVSZW5kZXJQaXBlbGlu
ZT4sCisgICAgICAgIElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVT
YW1wbGVyPiwKKyAgICAgICAgSVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJl
bW90ZVNoYWRlck1vZHVsZT4sCisgICAgICAgIElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2Vp
dmVRdWV1ZTxSZW1vdGVUZXh0dXJlPiwKKyAgICAgICAgSVBDOjpTY29wZWRBY3RpdmVNZXNzYWdl
UmVjZWl2ZVF1ZXVlPFJlbW90ZVRleHR1cmVWaWV3PgogICAgID47Ci0gICAgSGFzaE1hcDx2b2lk
KiwgT2JqZWN0PiBtX29iamVjdHM7Ci0KLSAgICBPYmplY3RSZWdpc3RyeSBtX29iamVjdFJlZ2lz
dHJ5OworICAgIEhhc2hNYXA8V2ViR1BVSWRlbnRpZmllciwgT2JqZWN0PiBtX29iamVjdHM7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVPYmplY3RSZWdpc3RyeS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9iamVjdFJl
Z2lzdHJ5LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWIyN2ExYTVmYmU0ZGU0
MGJiYmUyZDU2NWVkMGRjMzM1N2ZlMDVhOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BV
L1dlYkdQVU9iamVjdFJlZ2lzdHJ5LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM4MCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkdQVU9iamVj
dFJlZ2lzdHJ5LmgiCi0KLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0KLSNpbmNsdWRlIDxwYWwv
Z3JhcGhpY3MvV2ViR1BVL1dlYkdQVS5oPgotI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUv
V2ViR1BVQWRhcHRlci5oPgotI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQmlu
ZEdyb3VwLmg+Ci0jaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVCaW5kR3JvdXBM
YXlvdXQuaD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJ1ZmZlci5oPgot
I2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5oPgotI2lu
Y2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29tbWFuZEVuY29kZXIuaD4KLSNpbmNs
dWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5oPgotI2lu
Y2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmg+Ci0jaW5j
bHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVEZXZpY2UuaD4KLSNpbmNsdWRlIDxwYWwv
Z3JhcGhpY3MvV2ViR1BVL1dlYkdQVUV4dGVybmFsVGV4dHVyZS5oPgotI2luY2x1ZGUgPHBhbC9n
cmFwaGljcy9XZWJHUFUvV2ViR1BVUGlwZWxpbmVMYXlvdXQuaD4KLSNpbmNsdWRlIDxwYWwvZ3Jh
cGhpY3MvV2ViR1BVL1dlYkdQVVF1ZXJ5U2V0Lmg+Ci0jaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dl
YkdQVS9XZWJHUFVRdWV1ZS5oPgotI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BV
UmVuZGVyQnVuZGxlLmg+Ci0jaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5k
ZXJCdW5kbGVFbmNvZGVyLmg+Ci0jaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVS
ZW5kZXJQYXNzRW5jb2Rlci5oPgotI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BV
UmVuZGVyUGlwZWxpbmUuaD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVNh
bXBsZXIuaD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVNoYWRlck1vZHVs
ZS5oPgotI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVVGV4dHVyZS5oPgotI2lu
Y2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVVGV4dHVyZVZpZXcuaD4KLQotbmFtZXNw
YWNlIFdlYktpdDo6V2ViR1BVIHsKLQotT2JqZWN0UmVnaXN0cnk6Ok9iamVjdFJlZ2lzdHJ5KCkK
LXsKLX0KLQotT2JqZWN0UmVnaXN0cnk6On5PYmplY3RSZWdpc3RyeSgpCi17Ci19Ci0KLXZvaWQg
T2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBB
TDo6V2ViR1BVOjpBZGFwdGVyJiBhZGFwdGVyKQotewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmpl
Y3RzLmFkZChpZGVudGlmaWVyLCBhZGFwdGVyKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwg
cmVzdWx0LmlzTmV3RW50cnkpOwotfQotCi12b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3Qo
V2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6QmluZEdyb3VwJiBiaW5k
R3JvdXApCi17Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIGJp
bmRHcm91cCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsK
LX0KLQotdm9pZCBPYmplY3RSZWdpc3RyeTo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRl
bnRpZmllciwgUEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dCYgYmluZEdyb3VwTGF5b3V0KQot
ewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBiaW5kR3JvdXBM
YXlvdXQpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7Ci19
Ci0KLXZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyIGlkZW50
aWZpZXIsIFBBTDo6V2ViR1BVOjpCdWZmZXImIGJ1ZmZlcikKLXsKLSAgICBhdXRvIHJlc3VsdCA9
IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgYnVmZmVyKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJl
c3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwotfQotCi12b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRP
YmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6Q29tbWFuZEJ1
ZmZlciYgY29tbWFuZEJ1ZmZlcikKLXsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQo
aWRlbnRpZmllciwgY29tbWFuZEJ1ZmZlcik7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJl
c3VsdC5pc05ld0VudHJ5KTsKLX0KLQotdm9pZCBPYmplY3RSZWdpc3RyeTo6YWRkT2JqZWN0KFdl
YkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyJiBj
b21tYW5kRW5jb2RlcikKLXsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRp
ZmllciwgY29tbWFuZEVuY29kZXIpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQu
aXNOZXdFbnRyeSk7Ci19Ci0KLXZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChXZWJHUFVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpDb21wdXRlUGFzc0VuY29kZXImIGNv
bXB1dGVQYXNzRW5jb2RlcikKLXsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRl
bnRpZmllciwgY29tcHV0ZVBhc3NFbmNvZGVyKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwg
cmVzdWx0LmlzTmV3RW50cnkpOwotfQotCi12b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3Qo
V2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5l
JiBjb21wdXRlUGlwZWxpbmUpCi17Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlk
ZW50aWZpZXIsIGNvbXB1dGVQaXBlbGluZSk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJl
c3VsdC5pc05ld0VudHJ5KTsKLX0KLQotdm9pZCBPYmplY3RSZWdpc3RyeTo6YWRkT2JqZWN0KFdl
YkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OkRldmljZSYgZGV2aWNlKQot
ewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBkZXZpY2UpOwot
ICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7Ci19Ci0KLXZvaWQg
T2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBB
TDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1cmUmIGV4dGVybmFsVGV4dHVyZSkKLXsKLSAgICBhdXRv
IHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgZXh0ZXJuYWxUZXh0dXJlKTsKLSAg
ICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwotfQotCi12b2lkIE9i
amVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBQQUw6
OldlYkdQVTo6R1BVJiBncHUpCi17Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlk
ZW50aWZpZXIsIGdwdSk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0Vu
dHJ5KTsKLX0KLQotdm9pZCBPYmplY3RSZWdpc3RyeTo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OlBpcGVsaW5lTGF5b3V0JiBwaXBlbGluZUxheW91
dCkKLXsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgcGlwZWxp
bmVMYXlvdXQpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7
Ci19Ci0KLXZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpRdWVyeVNldCYgcXVlcnlTZXQpCi17Ci0gICAgYXV0byBy
ZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIHF1ZXJ5U2V0KTsKLSAgICBBU1NFUlRf
VU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwotfQotCi12b2lkIE9iamVjdFJlZ2lz
dHJ5OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6
UXVldWUmIHF1ZXVlKQotewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlm
aWVyLCBxdWV1ZSk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5
KTsKLX0KLQotdm9pZCBPYmplY3RSZWdpc3RyeTo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIg
aWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXImIHJlbmRlckJ1bmRs
ZUVuY29kZXIpCi17Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIs
IHJlbmRlckJ1bmRsZUVuY29kZXIpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQu
aXNOZXdFbnRyeSk7Ci19Ci0KLXZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChXZWJHUFVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGUmIHJlbmRlckJ1
bmRsZSkKLXsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgcmVu
ZGVyQnVuZGxlKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkp
OwotfQotCi12b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXImIHJlbmRlclBhc3NFbmNv
ZGVyKQotewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCByZW5k
ZXJQYXNzRW5jb2Rlcik7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0Vu
dHJ5KTsKLX0KLQotdm9pZCBPYmplY3RSZWdpc3RyeTo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lJiByZW5kZXJQaXBlbGlu
ZSkKLXsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgcmVuZGVy
UGlwZWxpbmUpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7
Ci19Ci0KLXZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpTYW1wbGVyJiBzYW1wbGVyKQotewotICAgIGF1dG8gcmVz
dWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBzYW1wbGVyKTsKLSAgICBBU1NFUlRfVU5V
U0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwotfQotCi12b2lkIE9iamVjdFJlZ2lzdHJ5
OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6U2hh
ZGVyTW9kdWxlJiBzaGFkZXJNb2R1bGUpCi17Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMu
YWRkKGlkZW50aWZpZXIsIHNoYWRlck1vZHVsZSk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQs
IHJlc3VsdC5pc05ld0VudHJ5KTsKLX0KLQotdm9pZCBPYmplY3RSZWdpc3RyeTo6YWRkT2JqZWN0
KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OlRleHR1cmUmIHRleHR1
cmUpCi17Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIHRleHR1
cmUpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7Ci19Ci0K
LXZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlldyYgdGV4dHVyZVZpZXcpCi17Ci0gICAgYXV0byBy
ZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIHRleHR1cmVWaWV3KTsKLSAgICBBU1NF
UlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwotfQotCi12b2lkIE9iamVjdFJl
Z2lzdHJ5OjpyZW1vdmVPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQotewotICAg
IGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZShpZGVudGlmaWVyKTsKLSAgICBBU1NFUlRf
VU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKLX0KLQotUEFMOjpXZWJHUFU6OkFkYXB0ZXIqIE9iamVj
dFJlZ2lzdHJ5Ojpjb252ZXJ0QWRhcHRlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRl
bnRpZmllcikKLXsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmll
cik7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpBZGFwdGVyPj4o
aXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuICZz
dGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpBZGFwdGVyPj4oaXRl
cmF0b3ItPnZhbHVlKS5nZXQoKTsKLX0KLQotUEFMOjpXZWJHUFU6OkJpbmRHcm91cCogT2JqZWN0
UmVnaXN0cnk6OmNvbnZlcnRCaW5kR3JvdXBGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCi17Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZp
ZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6QmluZEdyb3Vw
Pj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJu
ICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpCaW5kR3JvdXA+
PihpdGVyYXRvci0+dmFsdWUpLmdldCgpOwotfQotCi1QQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5
b3V0KiBPYmplY3RSZWdpc3RyeTo6Y29udmVydEJpbmRHcm91cExheW91dEZyb21CYWNraW5nKFdl
YkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKLXsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmpl
Y3RzLmZpbmQoaWRlbnRpZmllcik7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQo
KSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6
V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXQ+PihpdGVyYXRvci0+dmFsdWUpKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8
UEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dD4+KGl0ZXJhdG9yLT52YWx1ZSkuZ2V0KCk7Ci19
Ci0KLVBBTDo6V2ViR1BVOjpCdWZmZXIqIE9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0QnVmZmVyRnJv
bUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQotewotICAgIGF1dG8gaXRlcmF0
b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9v
YmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6cmVmZXJlbmNlX3dy
YXBwZXI8UEFMOjpXZWJHUFU6OkJ1ZmZlcj4+KGl0ZXJhdG9yLT52YWx1ZSkpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIHJldHVybiAmc3RkOjpnZXQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBl
cjxQQUw6OldlYkdQVTo6QnVmZmVyPj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKLX0KLQotUEFM
OjpXZWJHUFU6OkNvbW1hbmRCdWZmZXIqIE9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0Q29tbWFuZEJ1
ZmZlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKLXsKLSAgICBhdXRv
IGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7Ci0gICAgaWYgKGl0ZXJhdG9y
ID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnJlZmVy
ZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpDb21tYW5kQnVmZmVyPj4oaXRlcmF0b3ItPnZhbHVl
KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpDb21tYW5kQnVmZmVyPj4oaXRlcmF0b3ItPnZh
bHVlKS5nZXQoKTsKLX0KLQotUEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyKiBPYmplY3RSZWdp
c3RyeTo6Y29udmVydENvbW1hbmRFbmNvZGVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBp
ZGVudGlmaWVyKQotewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlm
aWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkNvbW1hbmRF
bmNvZGVyPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
cmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpDb21t
YW5kRW5jb2Rlcj4+KGl0ZXJhdG9yLT52YWx1ZSkuZ2V0KCk7Ci19Ci0KLVBBTDo6V2ViR1BVOjpD
b21wdXRlUGFzc0VuY29kZXIqIE9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0Q29tcHV0ZVBhc3NFbmNv
ZGVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQotewotICAgIGF1dG8g
aXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3Ig
PT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6cmVmZXJl
bmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2Rlcj4+KGl0ZXJhdG9yLT52
YWx1ZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiAmc3RkOjpnZXQ8c3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyPj4oaXRl
cmF0b3ItPnZhbHVlKS5nZXQoKTsKLX0KLQotUEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZSog
T2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRDb21wdXRlUGlwZWxpbmVGcm9tQmFja2luZyhXZWJHUFVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCi17Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5m
aW5kKGlkZW50aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwg
IXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQ
VTo6Q29tcHV0ZVBpcGVsaW5lPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgcmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6
V2ViR1BVOjpDb21wdXRlUGlwZWxpbmU+PihpdGVyYXRvci0+dmFsdWUpLmdldCgpOwotfQotCi1Q
QUw6OldlYkdQVTo6RGV2aWNlKiBPYmplY3RSZWdpc3RyeTo6Y29udmVydERldmljZUZyb21CYWNr
aW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKLXsKLSAgICBhdXRvIGl0ZXJhdG9yID0g
bV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0
cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVy
PFBBTDo6V2ViR1BVOjpEZXZpY2U+PihpdGVyYXRvci0+dmFsdWUpKQotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFM
OjpXZWJHUFU6OkRldmljZT4+KGl0ZXJhdG9yLT52YWx1ZSkuZ2V0KCk7Ci19Ci0KLVBBTDo6V2Vi
R1BVOjpFeHRlcm5hbFRleHR1cmUqIE9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0RXh0ZXJuYWxUZXh0
dXJlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQotewotICAgIGF1dG8g
aXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3Ig
PT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6cmVmZXJl
bmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZT4+KGl0ZXJhdG9yLT52YWx1
ZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiAmc3RkOjpnZXQ8c3RkOjpy
ZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlPj4oaXRlcmF0b3It
PnZhbHVlKS5nZXQoKTsKLX0KLQotUEFMOjpXZWJHUFU6OkdQVSogT2JqZWN0UmVnaXN0cnk6OmNv
bnZlcnRHUFVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCi17Ci0gICAg
YXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOwotICAgIGlmIChpdGVy
YXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpy
ZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6R1BVPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5j
ZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpHUFU+PihpdGVyYXRvci0+dmFsdWUpLmdldCgpOwotfQot
Ci1QQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQqIE9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0UGlw
ZWxpbmVMYXlvdXRGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCi17Ci0g
ICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOwotICAgIGlmIChp
dGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQ+PihpdGVyYXRv
ci0+dmFsdWUpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gJnN0ZDo6Z2V0
PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlBpcGVsaW5lTGF5b3V0Pj4oaXRl
cmF0b3ItPnZhbHVlKS5nZXQoKTsKLX0KLQotUEFMOjpXZWJHUFU6OlF1ZXJ5U2V0KiBPYmplY3RS
ZWdpc3RyeTo6Y29udmVydFF1ZXJ5U2V0RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVu
dGlmaWVyKQotewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVy
KTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlF1ZXJ5U2V0Pj4o
aXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuICZz
dGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpRdWVyeVNldD4+KGl0
ZXJhdG9yLT52YWx1ZSkuZ2V0KCk7Ci19Ci0KLVBBTDo6V2ViR1BVOjpRdWV1ZSogT2JqZWN0UmVn
aXN0cnk6OmNvbnZlcnRRdWV1ZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmll
cikKLXsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7Ci0g
ICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpRdWV1ZT4+KGl0ZXJhdG9y
LT52YWx1ZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiAmc3RkOjpnZXQ8
c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UXVldWU+PihpdGVyYXRvci0+dmFs
dWUpLmdldCgpOwotfQotCi1QQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2RlciogT2JqZWN0
UmVnaXN0cnk6OmNvbnZlcnRSZW5kZXJCdW5kbGVFbmNvZGVyRnJvbUJhY2tpbmcoV2ViR1BVSWRl
bnRpZmllciBpZGVudGlmaWVyKQotewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmlu
ZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6
OlJlbmRlckJ1bmRsZUVuY29kZXI+PihpdGVyYXRvci0+dmFsdWUpKQotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFM
OjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXI+PihpdGVyYXRvci0+dmFsdWUpLmdldCgpOwot
fQotCi1QQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlKiBPYmplY3RSZWdpc3RyeTo6Y29udmVydFJl
bmRlckJ1bmRsZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKLXsKLSAg
ICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7Ci0gICAgaWYgKGl0
ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGU+PihpdGVyYXRvci0+
dmFsdWUpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0
ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZT4+KGl0ZXJhdG9y
LT52YWx1ZSkuZ2V0KCk7Ci19Ci0KLVBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRW5jb2RlciogT2Jq
ZWN0UmVnaXN0cnk6OmNvbnZlcnRSZW5kZXJQYXNzRW5jb2RlckZyb21CYWNraW5nKFdlYkdQVUlk
ZW50aWZpZXIgaWRlbnRpZmllcikKLXsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZp
bmQoaWRlbnRpZmllcik7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAh
c3RkOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BV
OjpSZW5kZXJQYXNzRW5jb2Rlcj4+KGl0ZXJhdG9yLT52YWx1ZSkpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIHJldHVybiAmc3RkOjpnZXQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6
OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXI+PihpdGVyYXRvci0+dmFsdWUpLmdldCgpOwotfQot
Ci1QQUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmUqIE9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0UmVu
ZGVyUGlwZWxpbmVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCi17Ci0g
ICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOwotICAgIGlmIChp
dGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmU+PihpdGVyYXRv
ci0+dmFsdWUpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gJnN0ZDo6Z2V0
PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lPj4oaXRl
cmF0b3ItPnZhbHVlKS5nZXQoKTsKLX0KLQotUEFMOjpXZWJHUFU6OlNhbXBsZXIqIE9iamVjdFJl
Z2lzdHJ5Ojpjb252ZXJ0U2FtcGxlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRp
ZmllcikKLXsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7
Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpTYW1wbGVyPj4oaXRl
cmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuICZzdGQ6
OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpTYW1wbGVyPj4oaXRlcmF0
b3ItPnZhbHVlKS5nZXQoKTsKLX0KLQotUEFMOjpXZWJHUFU6OlNoYWRlck1vZHVsZSogT2JqZWN0
UmVnaXN0cnk6OmNvbnZlcnRTaGFkZXJNb2R1bGVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVy
IGlkZW50aWZpZXIpCi17Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50
aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6U2hhZGVy
TW9kdWxlPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
cmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpTaGFk
ZXJNb2R1bGU+PihpdGVyYXRvci0+dmFsdWUpLmdldCgpOwotfQotCi1QQUw6OldlYkdQVTo6VGV4
dHVyZSogT2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRUZXh0dXJlRnJvbUJhY2tpbmcoV2ViR1BVSWRl
bnRpZmllciBpZGVudGlmaWVyKQotewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmlu
ZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6
OlRleHR1cmU+PihpdGVyYXRvci0+dmFsdWUpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICByZXR1cm4gJnN0ZDo6Z2V0PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlRl
eHR1cmU+PihpdGVyYXRvci0+dmFsdWUpLmdldCgpOwotfQotCi1QQUw6OldlYkdQVTo6VGV4dHVy
ZVZpZXcqIE9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0VGV4dHVyZVZpZXdGcm9tQmFja2luZyhXZWJH
UFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCi17Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0
cy5maW5kKGlkZW50aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkg
fHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6Oldl
YkdQVTo6VGV4dHVyZVZpZXc+PihpdGVyYXRvci0+dmFsdWUpKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpX
ZWJHUFU6OlRleHR1cmVWaWV3Pj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKLQotI2VuZGlmIC8vIEhBVkUoR1BVX1BST0NFU1MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQ
VU9iamVjdFJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1dlYkdQVU9iamVjdFJlZ2lzdHJ5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGYzMzc3ODU0N2EzYTRiYTM1NWE3NTIzZDJlY2Q2MjA2NTM3ZTEwOTAuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVPYmplY3RSZWdpc3RyeS5oCisrKyAvZGV2L251bGwKQEAg
LTEsMTQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykKLQotI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQu
aCIKLSNpbmNsdWRlICJXZWJHUFVJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4K
LSNpbmNsdWRlIDx2YXJpYW50PgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0KLW5hbWVzcGFj
ZSBQQUw6OldlYkdQVSB7Ci1jbGFzcyBBZGFwdGVyOwotY2xhc3MgQmluZEdyb3VwOwotY2xhc3Mg
QmluZEdyb3VwTGF5b3V0OwotY2xhc3MgQnVmZmVyOwotY2xhc3MgQ29tbWFuZEJ1ZmZlcjsKLWNs
YXNzIENvbW1hbmRFbmNvZGVyOwotY2xhc3MgQ29tcHV0ZVBhc3NFbmNvZGVyOwotY2xhc3MgQ29t
cHV0ZVBpcGVsaW5lOwotY2xhc3MgRGV2aWNlOwotY2xhc3MgRXh0ZXJuYWxUZXh0dXJlOwotY2xh
c3MgR1BVOwotY2xhc3MgUGlwZWxpbmVMYXlvdXQ7Ci1jbGFzcyBRdWVyeVNldDsKLWNsYXNzIFF1
ZXVlOwotY2xhc3MgUmVuZGVyQnVuZGxlRW5jb2RlcjsKLWNsYXNzIFJlbmRlckJ1bmRsZTsKLWNs
YXNzIFJlbmRlclBhc3NFbmNvZGVyOwotY2xhc3MgUmVuZGVyUGlwZWxpbmU7Ci1jbGFzcyBTYW1w
bGVyOwotY2xhc3MgU2hhZGVyTW9kdWxlOwotY2xhc3MgVGV4dHVyZTsKLWNsYXNzIFRleHR1cmVW
aWV3OwotfQotCi1uYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewotCi1jbGFzcyBPYmplY3RSZWdp
c3RyeSBmaW5hbCA6IHB1YmxpYyBXZWJHUFU6OkNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQgewot
cHVibGljOgotICAgIE9iamVjdFJlZ2lzdHJ5KCk7Ci0gICAgfk9iamVjdFJlZ2lzdHJ5KCk7Ci0K
LSAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6QWRhcHRl
ciYpOwotICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpC
aW5kR3JvdXAmKTsKLSAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6Oldl
YkdQVTo6QmluZEdyb3VwTGF5b3V0Jik7Ci0gICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRp
ZmllciwgUEFMOjpXZWJHUFU6OkJ1ZmZlciYpOwotICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlk
ZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpDb21tYW5kQnVmZmVyJik7Ci0gICAgdm9pZCBhZGRPYmpl
Y3QoV2ViR1BVSWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyJik7Ci0gICAg
dm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNz
RW5jb2RlciYpOwotICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIsIFBBTDo6V2Vi
R1BVOjpDb21wdXRlUGlwZWxpbmUmKTsKLSAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlm
aWVyLCBQQUw6OldlYkdQVTo6RGV2aWNlJik7Ci0gICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRl
bnRpZmllciwgUEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZSYpOwotICAgIHZvaWQgYWRkT2Jq
ZWN0KFdlYkdQVUlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpHUFUmKTsKLSAgICB2b2lkIGFkZE9i
amVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQmKTsKLSAg
ICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6UXVlcnlTZXQm
KTsKLSAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6UXVl
dWUmKTsKLSAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6
UmVuZGVyQnVuZGxlRW5jb2RlciYpOwotICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlkZW50aWZp
ZXIsIFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGUmKTsKLSAgICB2b2lkIGFkZE9iamVjdChXZWJH
UFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXImKTsKLSAgICB2b2lk
IGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmUm
KTsKLSAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6U2Ft
cGxlciYpOwotICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIsIFBBTDo6V2ViR1BV
OjpTaGFkZXJNb2R1bGUmKTsKLSAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQ
QUw6OldlYkdQVTo6VGV4dHVyZSYpOwotICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlkZW50aWZp
ZXIsIFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlldyYpOwotCi0gICAgdm9pZCByZW1vdmVPYmplY3Qo
V2ViR1BVSWRlbnRpZmllcik7Ci0KLSAgICBQQUw6OldlYkdQVTo6QWRhcHRlciogY29udmVydEFk
YXB0ZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKLSAgICBQQUw6OldlYkdQ
VTo6QmluZEdyb3VwKiBjb252ZXJ0QmluZEdyb3VwRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmll
cikgZmluYWw7Ci0gICAgUEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dCogY29udmVydEJpbmRH
cm91cExheW91dEZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOwotICAgIFBBTDo6
V2ViR1BVOjpCdWZmZXIqIGNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVy
KSBmaW5hbDsKLSAgICBQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZlciogY29udmVydENvbW1hbmRC
dWZmZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKLSAgICBQQUw6OldlYkdQ
VTo6Q29tbWFuZEVuY29kZXIqIGNvbnZlcnRDb21tYW5kRW5jb2RlckZyb21CYWNraW5nKFdlYkdQ
VUlkZW50aWZpZXIpIGZpbmFsOwotICAgIFBBTDo6V2ViR1BVOjpDb21wdXRlUGFzc0VuY29kZXIq
IGNvbnZlcnRDb21wdXRlUGFzc0VuY29kZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBm
aW5hbDsKLSAgICBQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lKiBjb252ZXJ0Q29tcHV0ZVBp
cGVsaW5lRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7Ci0gICAgUEFMOjpXZWJH
UFU6OkRldmljZSogY29udmVydERldmljZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZp
bmFsOwotICAgIFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1cmUqIGNvbnZlcnRFeHRlcm5hbFRl
eHR1cmVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKLSAgICBQQUw6OldlYkdQ
VTo6R1BVKiBjb252ZXJ0R1BVRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7Ci0g
ICAgUEFMOjpXZWJHUFU6OlBpcGVsaW5lTGF5b3V0KiBjb252ZXJ0UGlwZWxpbmVMYXlvdXRGcm9t
QmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKLSAgICBQQUw6OldlYkdQVTo6UXVlcnlT
ZXQqIGNvbnZlcnRRdWVyeVNldEZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOwot
ICAgIFBBTDo6V2ViR1BVOjpRdWV1ZSogY29udmVydFF1ZXVlRnJvbUJhY2tpbmcoV2ViR1BVSWRl
bnRpZmllcikgZmluYWw7Ci0gICAgUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXIqIGNv
bnZlcnRSZW5kZXJCdW5kbGVFbmNvZGVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmlu
YWw7Ci0gICAgUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZSogY29udmVydFJlbmRlckJ1bmRsZUZy
b21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOwotICAgIFBBTDo6V2ViR1BVOjpSZW5k
ZXJQYXNzRW5jb2RlciogY29udmVydFJlbmRlclBhc3NFbmNvZGVyRnJvbUJhY2tpbmcoV2ViR1BV
SWRlbnRpZmllcikgZmluYWw7Ci0gICAgUEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lKiBjb252
ZXJ0UmVuZGVyUGlwZWxpbmVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKLSAg
ICBQQUw6OldlYkdQVTo6U2FtcGxlciogY29udmVydFNhbXBsZXJGcm9tQmFja2luZyhXZWJHUFVJ
ZGVudGlmaWVyKSBmaW5hbDsKLSAgICBQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlKiBjb252ZXJ0
U2hhZGVyTW9kdWxlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7Ci0gICAgUEFM
OjpXZWJHUFU6OlRleHR1cmUqIGNvbnZlcnRUZXh0dXJlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRp
ZmllcikgZmluYWw7Ci0gICAgUEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3KiBjb252ZXJ0VGV4dHVy
ZVZpZXdGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKLQotcHJpdmF0ZToKLSAg
ICB1c2luZyBPYmplY3QgPSBzdGQ6OnZhcmlhbnQ8Ci0gICAgICAgIHN0ZDo6bW9ub3N0YXRlLAot
ICAgICAgICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpBZGFwdGVyPiwKLSAg
ICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6QmluZEdyb3VwPiwKLSAg
ICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0
PiwKLSAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6QnVmZmVyPiwK
LSAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZl
cj4sCi0gICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkNvbW1hbmRF
bmNvZGVyPiwKLSAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6Q29t
cHV0ZVBhc3NFbmNvZGVyPiwKLSAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6Oldl
YkdQVTo6Q29tcHV0ZVBpcGVsaW5lPiwKLSAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQ
QUw6OldlYkdQVTo6RGV2aWNlPiwKLSAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6
OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlPiwKLSAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBl
cjxQQUw6OldlYkdQVTo6R1BVPiwKLSAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6
OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQ+LAotICAgICAgICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVy
PFBBTDo6V2ViR1BVOjpRdWVyeVNldD4sCi0gICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8
UEFMOjpXZWJHUFU6OlF1ZXVlPiwKLSAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6
OldlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2Rlcj4sCi0gICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dy
YXBwZXI8UEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZT4sCi0gICAgICAgIHN0ZDo6cmVmZXJlbmNl
X3dyYXBwZXI8UEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyPiwKLSAgICAgICAgc3RkOjpy
ZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmU+LAotICAgICAgICBz
dGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpTYW1wbGVyPiwKLSAgICAgICAgc3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlPiwKLSAgICAgICAg
c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6VGV4dHVyZT4sCi0gICAgICAgIHN0
ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3PgotICAgID47Ci0g
ICAgSGFzaE1hcDxXZWJHUFVJZGVudGlmaWVyLCBPYmplY3Q+IG1fb2JqZWN0czsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCi0KLSNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NF
U1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVk
aW9Tb3VyY2VQcm92aWRlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyUHJveHkuY3BwCmluZGV4IGM5MmQyMTIxZTZmMjlh
N2FkYzA0MTA0YWU3NjY2OTE1MzlmZjRmMWYuLmE1ZjRlNTEzNWZmNzAwMTliZjc2Mjg1MDU2ZmMx
NDRmYzkzZjBlNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyUHJveHkuY3BwCkBAIC0zMyw3
ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZWY8UmVtb3RlQXVkaW9Tb3VyY2VQ
cm92aWRlclByb3h5PiBSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyUHJveHk6OmNyZWF0ZShXZWJD
b3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIgaWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlv
bj4mJiBjb25uZWN0aW9uLCBBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQyYgbG9jYWxQcm92aWRl
cikKK1JlZjxSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyUHJveHk+IFJlbW90ZUF1ZGlvU291cmNl
UHJvdmlkZXJQcm94eTo6Y3JlYXRlKFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciBpZGVu
dGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFdlYkNvcmU6OkF1ZGlv
U291cmNlUHJvdmlkZXJBVkZPYmpDJiBsb2NhbFByb3ZpZGVyKQogewogICAgIGF1dG8gcmVtb3Rl
UHJvdmlkZXIgPSBhZG9wdFJlZigqbmV3IFJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJQcm94eShp
ZGVudGlmaWVyLCBXVEZNb3ZlKGNvbm5lY3Rpb24pKSk7CiAKQEAgLTU1LDkgKzU1LDkgQEAgUmVt
b3RlQXVkaW9Tb3VyY2VQcm92aWRlclByb3h5OjpSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyUHJv
eHkoV2ViQ29yZTo6TWVkaWFQbGEKIAogUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlclByb3h5Ojp+
UmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlclByb3h5KCkgPSBkZWZhdWx0OwogCi1VbmlxdWVSZWY8
Q0FSaW5nQnVmZmVyPiBSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyUHJveHk6OmNyZWF0ZVJpbmdC
dWZmZXIoKQorVW5pcXVlUmVmPFdlYkNvcmU6OkNBUmluZ0J1ZmZlcj4gUmVtb3RlQXVkaW9Tb3Vy
Y2VQcm92aWRlclByb3h5OjpjcmVhdGVSaW5nQnVmZmVyKCkKIHsKLSAgICByZXR1cm4gbWFrZVVu
aXF1ZVJlZjxDQVJpbmdCdWZmZXI+KG1ha2VVbmlxdWVSZWY8U2hhcmVkUmluZ0J1ZmZlclN0b3Jh
Z2U+KFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oU2hhcmVkTWVtb3J5KiBtZW1vcnks
IGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZm9ybWF0LCBzaXplX3QgZnJhbWVDb3Vu
dCkgbXV0YWJsZSB7CisgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8V2ViQ29yZTo6Q0FSaW5nQnVm
ZmVyPihtYWtlVW5pcXVlUmVmPFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlPihbcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH1dKFNoYXJlZE1lbW9yeSogbWVtb3J5LCBjb25zdCBXZWJDb3JlOjpD
QUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGZvcm1hdCwgc2l6ZV90IGZyYW1lQ291bnQpIG11dGFi
bGUgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5zdG9yYWdlQ2hhbmdlZChtZW1vcnksIGZvcm1h
dCwgZnJhbWVDb3VudCk7CiAgICAgfSkpOwogfQpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFJlbW90
ZUF1ZGlvU291cmNlUHJvdmlkZXJQcm94eTo6bmV3QXVkaW9TYW1wbGVzKHVpbnQ2NF90IHN0YXJ0
RnJhbWUsIHVpbnQ2NAogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlQXVk
aW9Tb3VyY2VQcm92aWRlck1hbmFnZXI6OkF1ZGlvU2FtcGxlc0F2YWlsYWJsZSB7IG1faWRlbnRp
Zmllciwgc3RhcnRGcmFtZSwgbnVtYmVyT2ZGcmFtZXMgfSwgMCk7CiB9CiAKLXZvaWQgUmVtb3Rl
QXVkaW9Tb3VyY2VQcm92aWRlclByb3h5OjpzdG9yYWdlQ2hhbmdlZChTaGFyZWRNZW1vcnkqIG1l
bW9yeSwgY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBmb3JtYXQsIHNpemVfdCBmcmFt
ZUNvdW50KQordm9pZCBSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyUHJveHk6OnN0b3JhZ2VDaGFu
Z2VkKFNoYXJlZE1lbW9yeSogbWVtb3J5LCBjb25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24mIGZvcm1hdCwgc2l6ZV90IGZyYW1lQ291bnQpCiB7CiAgICAgU2hhcmVkTWVtb3J5
OjpIYW5kbGUgaGFuZGxlOwogICAgIGlmIChtZW1vcnkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9TY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlLmgK
aW5kZXggZDY1NTBhNGNhNTgzNzMwZWQ5ZjY0OWYwZDJhYWU0MTY5OWYxNjU4My4uODFiMDU5NTg4
MTNiYzUzMDVmZGYzYzI3MDI1MTJkZTc3YTQyNjM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1Njb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUu
aApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHV0aWxp
dHk+CisjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJHUFUvV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaAppbmRleCBh
OTQ2OGY1MjdjNGMxZDExMzJhMGQ4NDNlMmQ0ZmYxMjZiYWZiNmY5Li45OTJmMjdkYTBlNGJhNTE1
Y2ZiZmQ5ODA2Njk0NzcwZDNjOTg4NDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJHUFUvV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgKQEAg
LTI3NCw3ICsyNzQsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQQUw6OldlYkdQVTo6Q29tcHV0
ZVBpcGVsaW5lKiBjb252ZXJ0Q29tcHV0ZVBpcGVsaW5lRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRp
ZmllcikgPSAwOwogICAgIHZpcnR1YWwgUEFMOjpXZWJHUFU6OkRldmljZSogY29udmVydERldmlj
ZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpID0gMDsKICAgICB2aXJ0dWFsIFBBTDo6V2Vi
R1BVOjpFeHRlcm5hbFRleHR1cmUqIGNvbnZlcnRFeHRlcm5hbFRleHR1cmVGcm9tQmFja2luZyhX
ZWJHUFVJZGVudGlmaWVyKSA9IDA7Ci0gICAgdmlydHVhbCBQQUw6OldlYkdQVTo6R1BVKiBjb252
ZXJ0R1BVRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwgUEFM
OjpXZWJHUFU6OlBpcGVsaW5lTGF5b3V0KiBjb252ZXJ0UGlwZWxpbmVMYXlvdXRGcm9tQmFja2lu
ZyhXZWJHUFVJZGVudGlmaWVyKSA9IDA7CiAgICAgdmlydHVhbCBQQUw6OldlYkdQVTo6UXVlcnlT
ZXQqIGNvbnZlcnRRdWVyeVNldEZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpID0gMDsKICAg
ICB2aXJ0dWFsIFBBTDo6V2ViR1BVOjpRdWV1ZSogY29udmVydFF1ZXVlRnJvbUJhY2tpbmcoV2Vi
R1BVSWRlbnRpZmllcikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggZGMyZGJkNTI2ZDViOGFhNGU5MTE5
MDFiNzIwNDY3ZjBlMjNkMzI5NS4uZTEzMzczOGQyMzhiOTBiNWM1ZDZkZTEwMDFlMjM0ZDRiMmE0
NTk5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXMudHh0CkBAIC01Myw3ICs1Myw2IEBAIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZVNoYWRlck1vZHVsZS5jcHAKIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZVRleHR1cmUuY3BwCiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0
dXJlVmlldy5jcHAKIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9iamVjdEhlYXAu
Y3BwCi1HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVPYmplY3RSZWdpc3RyeS5jcHAK
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9IYXJkd2FyZUxpc3RlbmVyUHJveHkuY3BwCiBH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5LmNwcAogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXIuY3BwCkBAIC04NTgsNiArODU3LDcg
QEAgUmVtb3RlQ29tcHV0ZVBpcGVsaW5lTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlRGV2aWNl
TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlRXh0ZXJuYWxUZXh0dXJlTWVzc2FnZVJlY2VpdmVy
LmNwcAogUmVtb3RlR1BVTWVzc2FnZVJlY2VpdmVyLmNwcAorUmVtb3RlR1BVUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwCiBSZW1vdGVQaXBlbGluZUxheW91dE1lc3NhZ2VSZWNlaXZlci5jcHAKIFJl
bW90ZVF1ZXJ5U2V0TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlUXVldWVNZXNzYWdlUmVjZWl2
ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCA2NTJjMmJlM2I4YmYwZDZhY2ZkZTc4ZWIwYzkwMTU1MGI1OWFkMTRmLi44MjY2NTI1
MzdkMGMzMjdmNjkxY2U5ZmMxNGQxNzUwZGJhNTU0Mzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI5MTEsMTMgKzI5MTEsMTEgQEAK
IAkJMUM4RTJBMzIxMjc3ODUyNDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvck1lc3NhZ2VzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkluc3BlY3Rvck1lc3NhZ2VzLmg7IHBh
dGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3Rvck1lc3NhZ2VzLmg7IHNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTFDOEUyREFEMTI3OEM1QjIwMEJDN0JE
MCAvKiBXZWJJbnNwZWN0b3JVSU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdlYkluc3BlY3RvclVJTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQzk4QzAxRDI3NDQ2QTAzMDAyQ0NCNzggLyogUmVtb3RlR1BVLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbW90ZUdQVS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFD
OThDMDFFMjc0NDZBMDMwMDJDQ0I3OCAvKiBXZWJHUFVPYmplY3RSZWdpc3RyeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJHUFVPYmplY3RSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQzk4QzAxRjI3NDQ2QTAzMDAyQ0NCNzggLyogUmVtb3RlUXVlcnlTZXQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVtb3RlUXVlcnlTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUM5OEMwMjAyNzQ0NkEwNDAwMkNDQjc4IC8qIFJlbW90ZVJlbmRlckJ1bmRsZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVSZW5kZXJCdW5kbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUM5OEMwMjEyNzQ0NkEwNDAwMkNDQjc4IC8qIFJlbW90ZVF1ZXVlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbW90ZVF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUM5OEMwMjIyNzQ0NkEwNDAwMkNDQjc4IC8qIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQzk4QzAyMzI3NDQ2QTA1MDAyQ0NCNzggLyogUmVtb3RlU2hhZGVy
TW9kdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVNoYWRlck1vZHVsZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDOThDMDI0Mjc0NDZBMDUwMDJDQ0I3OCAvKiBX
ZWJHUFVPYmplY3RSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVPYmplY3RS
ZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOThDMDI1Mjc0NDZB
MDYwMDJDQ0I3OCAvKiBSZW1vdGVUZXh0dXJlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVRleHR1
cmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5OEMwMjYyNzQ0NkEwNjAwMkND
Qjc4IC8qIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
bW90ZVJlbmRlclBhc3NFbmNvZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUM5OEMwMjcyNzQ0NkEwNjAwMkNDQjc4IC8qIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0zMTcxLDYgKzMxNjksNyBAQAogCQkxQ0JENzUzRDI3NDdBQTMxMDA0RkEw
RkYgLyogV2ViR1BVT2JqZWN0SGVhcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVPYmplY3RIZWFw
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQkY5MDEyMjcxMDE4QjUwMDBDNDU3
RCAvKiBRdWFsaWZpZWRSZXNvdXJjZUhlYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVhbGlmaWVkUmVz
b3VyY2VIZWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQzU0QUZEMjcwRjk2
NTQwMDVCRjhCRSAvKiBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDRDQxMkU3Mjc1MUUwRUMwMENBMkUyMiAvKiBSZW1v
dGVHUFVQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVHUFVQcm94eS5tZXNzYWdlcy5pbjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNGMThGM0UyNkJCNUQ5MDAwNEIxNzIyIC8q
IExvZ0luaXRpYWxpemF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvZ0luaXRpYWxpemF0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUQwNTMwQzkyNThFQUI0NDAw
RTQzNkY3IC8qIGNvbWJpbmUtZmVhdHVyZS1mbGFncy1wbGlzdC5weSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0
aCA9ICJjb21iaW5lLWZlYXR1cmUtZmxhZ3MtcGxpc3QucHkiOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxRDA1MzBEMTI1OTE2MkM4MDBFNDM2RjcgLyogV2ViS2l0LWlvcy5wbGlzdCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxp
c3QueG1sOyBwYXRoID0gIldlYktpdC1pb3MucGxpc3QiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNzQxNiw4ICs3NDE1LDYgQEAKIAkJCQkxQzk4QzA4ODI3NDRCRDk5MDAyQ0NCNzgg
LyogUmVtb3RlVGV4dHVyZVZpZXcubWVzc2FnZXMuaW4gKi8sCiAJCQkJMUNCRDc1M0MyNzQ3QUEz
MTAwNEZBMEZGIC8qIFdlYkdQVU9iamVjdEhlYXAuY3BwICovLAogCQkJCTFDQkQ3NTNEMjc0N0FB
MzEwMDRGQTBGRiAvKiBXZWJHUFVPYmplY3RIZWFwLmggKi8sCi0JCQkJMUM5OEMwMjQyNzQ0NkEw
NTAwMkNDQjc4IC8qIFdlYkdQVU9iamVjdFJlZ2lzdHJ5LmNwcCAqLywKLQkJCQkxQzk4QzAxRTI3
NDQ2QTAzMDAyQ0NCNzggLyogV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCAqLywKIAkJCSk7CiAJCQlw
YXRoID0gV2ViR1BVOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTc0NDcsNiArNzQ0
NCw3IEBACiAJCQkJMUNCNzQ2MjUyNzQzNkVFNjAwRjE5ODc0IC8qIFJlbW90ZUV4dGVybmFsVGV4
dHVyZVByb3h5LmggKi8sCiAJCQkJMUNCNzQ2NjIyNzQzOUExQTAwRjE5ODc0IC8qIFJlbW90ZUdQ
VVByb3h5LmNwcCAqLywKIAkJCQkxQ0I3NDY2MzI3NDM5QTFBMDBGMTk4NzQgLyogUmVtb3RlR1BV
UHJveHkuaCAqLywKKwkJCQkxQ0Q0MTJFNzI3NTFFMEVDMDBDQTJFMjIgLyogUmVtb3RlR1BVUHJv
eHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJMUNCNzQ2MjcyNzQzNkVFNjAwRjE5ODc0IC8qIFJlbW90
ZVBpcGVsaW5lTGF5b3V0UHJveHkuY3BwICovLAogCQkJCTFDQjc0NjJGMjc0MzZFRTgwMEYxOTg3
NCAvKiBSZW1vdGVQaXBlbGluZUxheW91dFByb3h5LmggKi8sCiAJCQkJMUNCNzQ2MzcyNzQzNkVF
OTAwRjE5ODc0IC8qIFJlbW90ZVF1ZXJ5U2V0UHJveHkuY3BwICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvV2ViS2l0
Lnhjc2NoZW1lIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3hjc2hhcmVkZGF0YS94
Y3NjaGVtZXMvV2ViS2l0Lnhjc2NoZW1lCmluZGV4IDYxMDM5YjFjNzE3MzhmMzIzM2RiOGIzNTk4
NDNjNDRjODNlZjljOWYuLjExYmYwMTg1ZGYyOTI3MzhkNGY1NDIzY2ViNzYwOGUyNzk4NDc2MDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai94Y3NoYXJlZGRhdGEv
eGNzY2hlbWVzL1dlYktpdC54Y3NjaGVtZQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9XZWJLaXQueGNzY2hlbWUKQEAgLTMxLDcgKzMx
LDcgQEAKICAgICAgIDwvVGVzdGFibGVzPgogICAgPC9UZXN0QWN0aW9uPgogICAgPExhdW5jaEFj
dGlvbgotICAgICAgYnVpbGRDb25maWd1cmF0aW9uID0gIlJlbGVhc2UiCisgICAgICBidWlsZENv
bmZpZ3VyYXRpb24gPSAiRGVidWciCiAgICAgICBzZWxlY3RlZERlYnVnZ2VySWRlbnRpZmllciA9
ICJYY29kZS5EZWJ1Z2dlckZvdW5kYXRpb24uRGVidWdnZXIuTExEQiIKICAgICAgIHNlbGVjdGVk
TGF1bmNoZXJJZGVudGlmaWVyID0gIlhjb2RlLkRlYnVnZ2VyRm91bmRhdGlvbi5MYXVuY2hlci5M
TERCIgogICAgICAgbGF1bmNoU3R5bGUgPSAiMCIKQEAgLTQwLDYgKzQwLDEwIEBACiAgICAgICBk
ZWJ1Z0RvY3VtZW50VmVyc2lvbmluZyA9ICJZRVMiCiAgICAgICBkZWJ1Z1NlcnZpY2VFeHRlbnNp
b24gPSAiaW50ZXJuYWwiCiAgICAgICBhbGxvd0xvY2F0aW9uU2ltdWxhdGlvbiA9ICJZRVMiPgor
ICAgICAgPFBhdGhSdW5uYWJsZQorICAgICAgICAgcnVubmFibGVEZWJ1Z2dpbmdNb2RlID0gIjAi
CisgICAgICAgICBGaWxlUGF0aCA9ICIvVXNlcnMvbW1heGZpZWxkL0J1aWxkL1Byb2R1Y3RzL0Rl
YnVnL01pbmlCcm93c2VyLmFwcCI+CisgICAgICA8L1BhdGhSdW5uYWJsZT4KICAgIDwvTGF1bmNo
QWN0aW9uPgogICAgPFByb2ZpbGVBY3Rpb24KICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9ICJS
ZWxlYXNlIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlQWRhcHRlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVBZGFwdGVyUHJveHkuaAppbmRleCA5YzNkOTU3MTVm
ZjQxM2RiOWM1Mzk0MjVjN2I1OTZlZmUzNjY3OWNkLi44MDhkZGFhNGIwYWIwOWMwMzI0MDEyM2Qw
MTQ0NWE0NWQxZmIwZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVBZGFwdGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVBZGFwdGVyUHJveHkuaApAQCAt
MzIsMTIgKzMyLDE2IEBACiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVBZGFw
dGVyLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAKK25hbWVzcGFjZSBXZWJLaXQgeworY2xh
c3MgUmVtb3RlR1BVUHJveHk7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKIGNs
YXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwotY2xhc3MgUmVtb3RlR1BVUHJveHk7CiAKIGNs
YXNzIFJlbW90ZUFkYXB0ZXJQcm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6QWRhcHRl
ciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZjxSZW1vdGVBZGFwdGVyUHJveHk+IGNyZWF0ZShTdHJpbmcmJiBuYW1lLCBQQUw6OldlYkdQVTo6
U3VwcG9ydGVkRmVhdHVyZXMmIGZlYXR1cmVzLCBQQUw6OldlYkdQVTo6U3VwcG9ydGVkTGltaXRz
JiBsaW1pdHMsIGJvb2wgaXNGYWxsYmFja0FkYXB0ZXIsIFJlbW90ZUdQVVByb3h5JiBwYXJlbnQs
IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BV
SWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKQEAgLTQ3LDcgKzUxLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgflJlbW90ZUFkYXB0ZXJQcm94eSgpOwogCiAgICAgUmVtb3RlR1BVUHJveHkm
IHBhcmVudCgpIHsgcmV0dXJuIG1fcGFyZW50OyB9Ci0gICAgUmVtb3RlR1BVUHJveHkmIHJvb3Qo
KSB7IHJldHVybiBtX3BhcmVudDsgfQorICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1
cm4gbV9wYXJlbnQtPnJvb3QoKTsgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBEb3du
Y2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJp
bmRHcm91cExheW91dFByb3h5LmgKaW5kZXggZDQ3ZDdlYzcwYjhhNmQxZjliYTE1MDcxODUxYmJl
YzdjMmQ2OWJiZC4uOTQyYmFkZDdkNTFjNjA1ZWQwNjVmYjllZDJhODcyNzNkOGEwMTg1OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlQmluZEdyb3VwTGF5b3V0UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eS5oCkBAIC0zNiw2
ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiBjbGFzcyBDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dDsKIAogY2xhc3MgUmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHkgZmluYWwgOiBw
dWJsaWMgUEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZW1vdGVCaW5kR3JvdXBMYXlvdXRQ
cm94eT4gY3JlYXRlKFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdD
b250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyKQogICAgIHsKQEAgLTQ1LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflJlbW90
ZUJpbmRHcm91cExheW91dFByb3h5KCk7CiAKICAgICBSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50
KCkgeyByZXR1cm4gbV9wYXJlbnQ7IH0KLSAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0
dXJuIG1fcGFyZW50LT5wYXJlbnQoKS5wYXJlbnQoKTsgfQorICAgIFJlbW90ZUdQVVByb3h5JiBy
b290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnJvb3QoKTsgfQogCiBwcml2YXRlOgogICAgIGZyaWVu
ZCBjbGFzcyBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3Vw
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZUJpbmRHcm91cFByb3h5LmgKaW5kZXggOGRjYTEyYjhjNzE2YzIxODhlNmE4Y2U0MGE2ODM0
ZmRmZjkwZjEyYi4uNWZhNTY2MWMyZGNhYmUwMWZmNGIyM2EyODQxM2IyYmY2ZjY1OTA4OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlQmluZEdyb3VwUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBQcm94eS5oCkBAIC0zNiw2ICszNiw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsK
IAogY2xhc3MgUmVtb3RlQmluZEdyb3VwUHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6
OkJpbmRHcm91cCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFJlZjxSZW1vdGVCaW5kR3JvdXBQcm94eT4gY3JlYXRlKFJlbW90ZURldmljZVByb3h5
JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4
dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKQEAgLTQ1LDcgKzQ2LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgflJlbW90ZUJpbmRHcm91cFByb3h5KCk7CiAKICAgICBSZW1v
dGVEZXZpY2VQcm94eSYgcGFyZW50KCkgeyByZXR1cm4gbV9wYXJlbnQ7IH0KLSAgICBSZW1vdGVH
UFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5wYXJlbnQoKS5wYXJlbnQoKTsgfQor
ICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnJvb3QoKTsgfQog
CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250
ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZlclByb3h5LmgKaW5kZXggNDA5MzAwYTU0OGFlMjI2
ZjdmYTE2OWI0MmY4NzM3YzYwZDVmYjAyZC4uN2JhNTZhNzA2YTgwMTg2NWM4NDMyNmMxMGZiMGY0
Yzk0ZTJiODRmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlQnVmZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZmZXJQcm94eS5oCkBAIC0zNyw2ICsz
Nyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiBjbGFzcyBDb252ZXJ0VG9CYWNraW5n
Q29udGV4dDsKIAogY2xhc3MgUmVtb3RlQnVmZmVyUHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpX
ZWJHUFU6OkJ1ZmZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlZjxSZW1vdGVCdWZmZXJQcm94eT4gY3JlYXRlKFJlbW90ZURldmljZVByb3h5
JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4
dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKQEAgLTQ2LDcgKzQ3LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgflJlbW90ZUJ1ZmZlclByb3h5KCk7CiAKICAgICBSZW1vdGVE
ZXZpY2VQcm94eSYgcGFyZW50KCkgeyByZXR1cm4gbV9wYXJlbnQ7IH0KLSAgICBSZW1vdGVHUFVQ
cm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5wYXJlbnQoKS5wYXJlbnQoKTsgfQorICAg
IFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnJvb3QoKTsgfQogCiBw
cml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kQnVmZmVyUHJveHkuaAppbmRleCAzM2Fj
NTM0M2QwNmI4OTkzNDViMjZiYWIwMWVhMTBiZmZmMjgxNjNjLi5lNmEzYjcyOGM4YWQxNTBkOGMy
ZjMwM2EyYWNjZTg2ZjdkMzNmN2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kQnVmZmVyUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5k
QnVmZmVyUHJveHkuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUg
ewogY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90ZUNvbW1hbmRC
dWZmZXJQcm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZlciB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZW1v
dGVDb21tYW5kQnVmZmVyUHJveHk+IGNyZWF0ZShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50LCBD
b252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlk
ZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7CkBAIC00NSw3ICs0Niw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5SZW1vdGVDb21tYW5kQnVmZmVyUHJveHkoKTsKIAogICAgIFJlbW90ZURldmlj
ZVByb3h5JiBwYXJlbnQoKSB7IHJldHVybiBtX3BhcmVudDsgfQotICAgIFJlbW90ZUdQVVByb3h5
JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnBhcmVudCgpLnBhcmVudCgpOyB9CisgICAgUmVt
b3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+cm9vdCgpOyB9CiAKIHByaXZh
dGU6CiAgICAgZnJpZW5kIGNsYXNzIERvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVDb21tYW5kRW5jb2RlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kRW5jb2RlclByb3h5LmgKaW5kZXggODNiNWQw
YmYwOTJmYTM2MGNiN2U0MTA1ZTdiYzk2ZTM3YjViMmExZi4uMTFlNjc4MTU5YTRiNDEyMzY2N2U2
N2QzYmEyMDg1NjhmYzgzNWIwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRF
bmNvZGVyUHJveHkuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUg
ewogY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90ZUNvbW1hbmRF
bmNvZGVyUHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJl
bW90ZUNvbW1hbmRFbmNvZGVyUHJveHk+IGNyZWF0ZShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50
LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQ
VUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7CkBAIC00NSw3ICs0Niw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5SZW1vdGVDb21tYW5kRW5jb2RlclByb3h5KCk7CiAKICAgICBSZW1vdGVE
ZXZpY2VQcm94eSYgcGFyZW50KCkgeyByZXR1cm4gbV9wYXJlbnQ7IH0KLSAgICBSZW1vdGVHUFVQ
cm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5wYXJlbnQoKS5wYXJlbnQoKTsgfQorICAg
IFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnJvb3QoKTsgfQogCiBw
cml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5LmgK
aW5kZXggZDY5ODBiODcyNGNjYmI2NjU1NWJlMTUyZmQxNDg0MmJkZjYyODVmNi4uM2YyZGE3OTdh
OTI5NjVkNzRiZDkwZDU4YWMyZjU4Nzc2ZjU0MGMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVy
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eS5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQ6OldlYkdQVSB7CiBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAog
Y2xhc3MgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpX
ZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2RlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eT4g
Y3JlYXRlKFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2lu
Z0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50
aWZpZXIpCiAgICAgewpAQCAtNDUsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UmVt
b3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHkoKTsKIAogICAgIFJlbW90ZUNvbW1hbmRFbmNvZGVy
UHJveHkmIHBhcmVudCgpIHsgcmV0dXJuIG1fcGFyZW50OyB9Ci0gICAgUmVtb3RlR1BVUHJveHkm
IHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+cGFyZW50KCkucGFyZW50KCkucGFyZW50KCk7IH0K
KyAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5yb290KCk7IH0K
IAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZUNvbXB1dGVQaXBlbGluZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eS5oCmlu
ZGV4IDZiNzNiOWQ2MDRkNTgxMjJiNWU4Nzc3OGRjZjM5NDBiYmU5ZGY0NjEuLjkyOTRiOWUzZDRk
ODNmNzY2OTk1NWIwY2M1MzNlMGU3YTg5NzNiZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQaXBlbGluZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlQ29tcHV0ZVBpcGVsaW5lUHJveHkuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2Vi
S2l0OjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJl
bW90ZUNvbXB1dGVQaXBlbGluZVByb3h5IGZpbmFsIDogcHVibGljIFBBTDo6V2ViR1BVOjpDb21w
dXRlUGlwZWxpbmUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IHN0YXRpYyBSZWY8UmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJveHk+IGNyZWF0ZShSZW1vdGVEZXZp
Y2VQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2lu
Z0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7CkBAIC00NSw3ICs0
Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eSgp
OwogCiAgICAgUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCgpIHsgcmV0dXJuIG1fcGFyZW50OyB9
Ci0gICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+cGFyZW50KCku
cGFyZW50KCk7IH0KKyAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50
LT5yb290KCk7IH0KIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0
VG9CYWNraW5nQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZURldmljZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVEZXZpY2VQcm94eS5oCmluZGV4IDhl
YmUzNWM1ZDkwOWI0ZTU2YTFlY2IyYTI5MzU0NzlkMWVlMjY3N2IuLjgwMThhMGE0NTg2N2UyMTFj
MDg5YzJjNDkzOTRlYTg0MmNhYzU0OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZURldmljZVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRGV2aWNlUHJveHku
aApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogY2xhc3MgQ29u
dmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90ZURldmljZVByb3h5IGZpbmFsIDog
cHVibGljIFBBTDo6V2ViR1BVOjpEZXZpY2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UmVtb3RlRGV2aWNlUHJveHk+IGNyZWF0ZShSZWY8
UEFMOjpXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVzPiYmIGZlYXR1cmVzLCBSZWY8UEFMOjpXZWJH
UFU6OlN1cHBvcnRlZExpbWl0cz4mJiBsaW1pdHMsIFJlbW90ZUFkYXB0ZXJQcm94eSYgcGFyZW50
LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQ
VUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7CkBAIC00Nyw3ICs0OCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5SZW1vdGVEZXZpY2VQcm94eSgpOwogCiAgICAgUmVtb3RlQWRhcHRlclBy
b3h5JiBwYXJlbnQoKSB7IHJldHVybiBtX3BhcmVudDsgfQotICAgIFJlbW90ZUdQVVByb3h5JiBy
b290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnBhcmVudCgpOyB9CisgICAgUmVtb3RlR1BVUHJveHkm
IHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+cm9vdCgpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJp
ZW5kIGNsYXNzIERvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVFeHRlcm5h
bFRleHR1cmVQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHkuaAppbmRleCBmZTRiOGMzOWM2Zjc2MDYx
MjYwOTk1ZTlmMTJkMTgwMzFjZjVkYzZlLi5jY2I5MzI0MTgzMDUwYjY1NWY2NDNkMDViZGMzM2Nm
M2Q5MDg0ODJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4dHVyZVBy
b3h5LmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIGNsYXNz
IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBSZW1vdGVFeHRlcm5hbFRleHR1cmVQ
cm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlbW90ZUV4
dGVybmFsVGV4dHVyZVByb3h5PiBjcmVhdGUoUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCwgQ29u
dmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewpAQCAtNDUsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB+UmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHkoKTsKIAogICAgIFJlbW90ZURldmlj
ZVByb3h5JiBwYXJlbnQoKSB7IHJldHVybiBtX3BhcmVudDsgfQotICAgIFJlbW90ZUdQVVByb3h5
JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnBhcmVudCgpLnBhcmVudCgpOyB9CisgICAgUmVt
b3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+cm9vdCgpOyB9CiAKIHByaXZh
dGU6CiAgICAgZnJpZW5kIGNsYXNzIERvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVHUFVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVHUFVQcm94eS5jcHAKaW5kZXggNjQ5MjI4MzhkOWM2YWVjM2UxYjhiZGUx
MzYyNzcxZjhhZDU3MjZkMy4uNTg5OWY0MGFiNTc2Y2M5ZDY3ZDBjNWM1ODY0NzIyOTNlM2M0Mjg3
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlR1BVUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5LmNwcApAQCAtMjgsNzYgKzI4LDEyNSBAQAog
CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNp
bmNsdWRlICJSZW1vdGVBZGFwdGVyUHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVHUFUuaCIKICNp
bmNsdWRlICJSZW1vdGVHUFVNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZUdQVVByb3h5TWVz
c2FnZXMuaCIKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2lu
Y2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVU3VwcG9ydGVkRmVhdHVyZXMuaD4KICNp
bmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVN1cHBvcnRlZExpbWl0cy5oPgogCi1u
YW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgeworbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0YXRpYyBj
b25zdGV4cHIgc2l6ZV90IGRlZmF1bHRTdHJlYW1TaXplID0gMSA8PCAyMTsKIAotUmVtb3RlR1BV
UHJveHk6OlJlbW90ZUdQVVByb3h5KEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29u
bmVjdGlvbiwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0
LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCitSZW1vdGVHUFVQcm94eTo6UmVtb3RlR1BV
UHJveHkoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBXZWJHUFU6
OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BV
SWRlbnRpZmllciBpZGVudGlmaWVyLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJp
bmdCYWNrZW5kKQogICAgIDogbV9iYWNraW5nKGlkZW50aWZpZXIpCiAgICAgLCBtX2NvbnZlcnRU
b0JhY2tpbmdDb250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgICwgbV9ncHVQcm9j
ZXNzQ29ubmVjdGlvbigmZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCiAgICAgLCBtX3N0cmVhbUNvbm5l
Y3Rpb24oZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLCBkZWZhdWx0U3RyZWFtU2l6
ZSkKIHsKKyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5hZGRDbGllbnQoKnRoaXMpOworICAg
IG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPm1lc3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlR1BVUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
aWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZVJlbW90ZUdQVShpZGVudGlm
aWVyLCByZW5kZXJpbmdCYWNrZW5kLCBtX3N0cmVhbUNvbm5lY3Rpb24uc3RyZWFtQnVmZmVyKCkp
LCAwLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5
bmNSZXBseSk7CisgICAgLy8gVE9ETzogV2UgbXVzdCB3YWl0IHVudGlsIGluaXRpYWxpemVkLCBi
ZWNhdXNlIGF0IHRoZSBtb21lbnQgd2UgY2Fubm90IHJlY2VpdmUgSVBDIG1lc3NhZ2VzCisgICAg
Ly8gZHVyaW5nIHdhaXQgd2hpbGUgaW4gc3luY2hyb25vdXMgc3RyZWFtIHNlbmQuIFNob3VsZCBi
ZSBmaXhlZCBhcyBwYXJ0IG9mIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTcyMTEuCisgICAgd2FpdFVudGlsSW5pdGlhbGl6ZWQoKTsKIH0KIAogUmVtb3RlR1BVUHJv
eHk6On5SZW1vdGVHUFVQcm94eSgpCiB7CiB9CiAKK3ZvaWQgUmVtb3RlR1BVUHJveHk6OmdwdVBy
b2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGNvbm5lY3Rpb24p
Cit7CisgICAgQVNTRVJUKG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pOworICAgIEFTU0VSVCgmY29u
bmVjdGlvbiA9PSBtX2dwdVByb2Nlc3NDb25uZWN0aW9uKTsKKyAgICBhYmFuZG9uR1BVUHJvY2Vz
cygpOworfQorCit2b2lkIFJlbW90ZUdQVVByb3h5OjphYmFuZG9uR1BVUHJvY2VzcygpCit7Cisg
ICAgYXV0byBncHVQcm9jZXNzQ29ubmVjdGlvbiA9IHN0ZDo6ZXhjaGFuZ2UobV9ncHVQcm9jZXNz
Q29ubmVjdGlvbiwgbnVsbHB0cik7CisgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPnJlbW92ZUNs
aWVudCgqdGhpcyk7CisgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPm1lc3NhZ2VSZWNlaXZlck1h
cCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlR1BVUHJveHk6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgbV9iYWNraW5nLnRvVUludDY0KCkpOworICAgIG1fZ3B1UHJvY2Vz
c0Nvbm5lY3Rpb24gPSBudWxscHRyOworICAgIG1fbG9zdCA9IHRydWU7Cit9CisKK3ZvaWQgUmVt
b3RlR1BVUHJveHk6Ondhc0NyZWF0ZWQoYm9vbCBkaWRTdWNjZWVkLCBJUEM6OlNlbWFwaG9yZSYm
IHNlbWFwaG9yZSkKK3sKKyAgICBBU1NFUlQoIW1fZGlkSW5pdGlhbGl6ZSk7CisgICAgbV9zdHJl
YW1Db25uZWN0aW9uLnNldFdha2VVcFNlbWFwaG9yZShXVEZNb3ZlKHNlbWFwaG9yZSkpOworICAg
IG1fZGlkSW5pdGlhbGl6ZSA9IHRydWU7CisgICAgbV9sb3N0ID0gIWRpZFN1Y2NlZWQ7Cit9CisK
K3ZvaWQgUmVtb3RlR1BVUHJveHk6OndhaXRVbnRpbEluaXRpYWxpemVkKCkKK3sKKyAgICBpZiAo
bV9kaWRJbml0aWFsaXplKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGNvbm5lY3Rpb24oKS53
YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6UmVtb3RlR1BVUHJveHk6Oldh
c0NyZWF0ZWQ+KG1fYmFja2luZywgZGVmYXVsdFNlbmRUaW1lb3V0KSkKKyAgICAgICAgcmV0dXJu
OworICAgIG1fbG9zdCA9IHRydWU7Cit9CisKIHZvaWQgUmVtb3RlR1BVUHJveHk6OnJlcXVlc3RB
ZGFwdGVyKGNvbnN0IFBBTDo6V2ViR1BVOjpSZXF1ZXN0QWRhcHRlck9wdGlvbnMmIG9wdGlvbnMs
IFdURjo6RnVuY3Rpb248dm9pZChSZWZQdHI8UEFMOjpXZWJHUFU6OkFkYXB0ZXI+JiYpPiYmIGNh
bGxiYWNrKQogeworICAgIGlmIChtX2xvc3QpIHsKKyAgICAgICAgY2FsbGJhY2sobnVsbHB0cik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBhdXRvIGNvbnZlcnRlZE9wdGlvbnMgPSBt
X2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKG9wdGlvbnMpOwogICAg
IEFTU0VSVChjb252ZXJ0ZWRPcHRpb25zKTsKLSAgICBpZiAoIWNvbnZlcnRlZE9wdGlvbnMpCisg
ICAgaWYgKCFjb252ZXJ0ZWRPcHRpb25zKSB7CisgICAgICAgIGNhbGxiYWNrKG51bGxwdHIpOwog
ICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgYXV0byBpZGVudGlmaWVyID0gV2ViR1BVSWRl
bnRpZmllcjo6Z2VuZXJhdGUoKTsKLSAgICBTdHJpbmcgbmFtZTsKLSAgICBTdXBwb3J0ZWRGZWF0
dXJlcyBzdXBwb3J0ZWRGZWF0dXJlczsKLSAgICBTdXBwb3J0ZWRMaW1pdHMgc3VwcG9ydGVkTGlt
aXRzOwotICAgIGJvb2wgaXNGYWxsYmFja0FkYXB0ZXI7Ci0gICAgYXV0byBzZW5kUmVzdWx0ID0g
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdQVTo6UmVxdWVzdEFkYXB0ZXIoKmNvbnZlcnRlZE9w
dGlvbnMsIGlkZW50aWZpZXIpLCB7IG5hbWUsIHN1cHBvcnRlZEZlYXR1cmVzLCBzdXBwb3J0ZWRM
aW1pdHMsIGlzRmFsbGJhY2tBZGFwdGVyIH0pOwotICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICBz
dGQ6Om9wdGlvbmFsPFJlbW90ZUdQVTo6UmVxdWVzdEFkYXB0ZXJSZXNwb25zZT4gcmVzcG9uc2U7
CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdQVTo6UmVx
dWVzdEFkYXB0ZXIoKmNvbnZlcnRlZE9wdGlvbnMsIGlkZW50aWZpZXIpLCB7IHJlc3BvbnNlIH0p
OworICAgIGlmICghc2VuZFJlc3VsdCB8fCAhcmVzcG9uc2UpIHsKKyAgICAgICAgY2FsbGJhY2so
bnVsbHB0cik7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBhdXRvIHJlc3VsdFN1cHBv
cnRlZEZlYXR1cmVzID0gUEFMOjpXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVzOjpjcmVhdGUoV1RG
TW92ZShzdXBwb3J0ZWRGZWF0dXJlcy5mZWF0dXJlcykpOworICAgIGF1dG8gcmVzdWx0U3VwcG9y
dGVkRmVhdHVyZXMgPSBQQUw6OldlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXM6OmNyZWF0ZShXVEZN
b3ZlKHJlc3BvbnNlLT5mZWF0dXJlcy5mZWF0dXJlcykpOwogICAgIGF1dG8gcmVzdWx0U3VwcG9y
dGVkTGltaXRzID0gUEFMOjpXZWJHUFU6OlN1cHBvcnRlZExpbWl0czo6Y3JlYXRlKAotICAgICAg
ICBzdXBwb3J0ZWRMaW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjFELAotICAgICAgICBzdXBwb3J0
ZWRMaW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjJELAotICAgICAgICBzdXBwb3J0ZWRMaW1pdHMu
bWF4VGV4dHVyZURpbWVuc2lvbjNELAotICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4VGV4dHVy
ZUFycmF5TGF5ZXJzLAotICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4QmluZEdyb3VwcywKLSAg
ICAgICAgc3VwcG9ydGVkTGltaXRzLm1heER5bmFtaWNVbmlmb3JtQnVmZmVyc1BlclBpcGVsaW5l
TGF5b3V0LAotICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4RHluYW1pY1N0b3JhZ2VCdWZmZXJz
UGVyUGlwZWxpbmVMYXlvdXQsCi0gICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhTYW1wbGVkVGV4
dHVyZXNQZXJTaGFkZXJTdGFnZSwKLSAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heFNhbXBsZXJz
UGVyU2hhZGVyU3RhZ2UsCi0gICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhTdG9yYWdlQnVmZmVy
c1BlclNoYWRlclN0YWdlLAotICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4U3RvcmFnZVRleHR1
cmVzUGVyU2hhZGVyU3RhZ2UsCi0gICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhVbmlmb3JtQnVm
ZmVyc1BlclNoYWRlclN0YWdlLAotICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4VW5pZm9ybUJ1
ZmZlckJpbmRpbmdTaXplLAotICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4U3RvcmFnZUJ1ZmZl
ckJpbmRpbmdTaXplLAotICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWluVW5pZm9ybUJ1ZmZlck9m
ZnNldEFsaWdubWVudCwKLSAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1pblN0b3JhZ2VCdWZmZXJP
ZmZzZXRBbGlnbm1lbnQsCi0gICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhWZXJ0ZXhCdWZmZXJz
LAotICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4VmVydGV4QXR0cmlidXRlcywKLSAgICAgICAg
c3VwcG9ydGVkTGltaXRzLm1heFZlcnRleEJ1ZmZlckFycmF5U3RyaWRlLAotICAgICAgICBzdXBw
b3J0ZWRMaW1pdHMubWF4SW50ZXJTdGFnZVNoYWRlckNvbXBvbmVudHMsCi0gICAgICAgIHN1cHBv
cnRlZExpbWl0cy5tYXhDb21wdXRlV29ya2dyb3VwU3RvcmFnZVNpemUsCi0gICAgICAgIHN1cHBv
cnRlZExpbWl0cy5tYXhDb21wdXRlSW52b2NhdGlvbnNQZXJXb3JrZ3JvdXAsCi0gICAgICAgIHN1
cHBvcnRlZExpbWl0cy5tYXhDb21wdXRlV29ya2dyb3VwU2l6ZVgsCi0gICAgICAgIHN1cHBvcnRl
ZExpbWl0cy5tYXhDb21wdXRlV29ya2dyb3VwU2l6ZVksCi0gICAgICAgIHN1cHBvcnRlZExpbWl0
cy5tYXhDb21wdXRlV29ya2dyb3VwU2l6ZVosCi0gICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhD
b21wdXRlV29ya2dyb3Vwc1BlckRpbWVuc2lvbgorICAgICAgICByZXNwb25zZS0+bGltaXRzLm1h
eFRleHR1cmVEaW1lbnNpb24xRCwKKyAgICAgICAgcmVzcG9uc2UtPmxpbWl0cy5tYXhUZXh0dXJl
RGltZW5zaW9uMkQsCisgICAgICAgIHJlc3BvbnNlLT5saW1pdHMubWF4VGV4dHVyZURpbWVuc2lv
bjNELAorICAgICAgICByZXNwb25zZS0+bGltaXRzLm1heFRleHR1cmVBcnJheUxheWVycywKKyAg
ICAgICAgcmVzcG9uc2UtPmxpbWl0cy5tYXhCaW5kR3JvdXBzLAorICAgICAgICByZXNwb25zZS0+
bGltaXRzLm1heER5bmFtaWNVbmlmb3JtQnVmZmVyc1BlclBpcGVsaW5lTGF5b3V0LAorICAgICAg
ICByZXNwb25zZS0+bGltaXRzLm1heER5bmFtaWNTdG9yYWdlQnVmZmVyc1BlclBpcGVsaW5lTGF5
b3V0LAorICAgICAgICByZXNwb25zZS0+bGltaXRzLm1heFNhbXBsZWRUZXh0dXJlc1BlclNoYWRl
clN0YWdlLAorICAgICAgICByZXNwb25zZS0+bGltaXRzLm1heFNhbXBsZXJzUGVyU2hhZGVyU3Rh
Z2UsCisgICAgICAgIHJlc3BvbnNlLT5saW1pdHMubWF4U3RvcmFnZUJ1ZmZlcnNQZXJTaGFkZXJT
dGFnZSwKKyAgICAgICAgcmVzcG9uc2UtPmxpbWl0cy5tYXhTdG9yYWdlVGV4dHVyZXNQZXJTaGFk
ZXJTdGFnZSwKKyAgICAgICAgcmVzcG9uc2UtPmxpbWl0cy5tYXhVbmlmb3JtQnVmZmVyc1BlclNo
YWRlclN0YWdlLAorICAgICAgICByZXNwb25zZS0+bGltaXRzLm1heFVuaWZvcm1CdWZmZXJCaW5k
aW5nU2l6ZSwKKyAgICAgICAgcmVzcG9uc2UtPmxpbWl0cy5tYXhTdG9yYWdlQnVmZmVyQmluZGlu
Z1NpemUsCisgICAgICAgIHJlc3BvbnNlLT5saW1pdHMubWluVW5pZm9ybUJ1ZmZlck9mZnNldEFs
aWdubWVudCwKKyAgICAgICAgcmVzcG9uc2UtPmxpbWl0cy5taW5TdG9yYWdlQnVmZmVyT2Zmc2V0
QWxpZ25tZW50LAorICAgICAgICByZXNwb25zZS0+bGltaXRzLm1heFZlcnRleEJ1ZmZlcnMsCisg
ICAgICAgIHJlc3BvbnNlLT5saW1pdHMubWF4VmVydGV4QXR0cmlidXRlcywKKyAgICAgICAgcmVz
cG9uc2UtPmxpbWl0cy5tYXhWZXJ0ZXhCdWZmZXJBcnJheVN0cmlkZSwKKyAgICAgICAgcmVzcG9u
c2UtPmxpbWl0cy5tYXhJbnRlclN0YWdlU2hhZGVyQ29tcG9uZW50cywKKyAgICAgICAgcmVzcG9u
c2UtPmxpbWl0cy5tYXhDb21wdXRlV29ya2dyb3VwU3RvcmFnZVNpemUsCisgICAgICAgIHJlc3Bv
bnNlLT5saW1pdHMubWF4Q29tcHV0ZUludm9jYXRpb25zUGVyV29ya2dyb3VwLAorICAgICAgICBy
ZXNwb25zZS0+bGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBTaXplWCwKKyAgICAgICAgcmVzcG9u
c2UtPmxpbWl0cy5tYXhDb21wdXRlV29ya2dyb3VwU2l6ZVksCisgICAgICAgIHJlc3BvbnNlLT5s
aW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFNpemVaLAorICAgICAgICByZXNwb25zZS0+bGltaXRz
Lm1heENvbXB1dGVXb3JrZ3JvdXBzUGVyRGltZW5zaW9uCiAgICAgKTsKLSAgICBjYWxsYmFjayhS
ZW1vdGVBZGFwdGVyUHJveHk6OmNyZWF0ZShXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKHJlc3VsdFN1
cHBvcnRlZEZlYXR1cmVzKSwgV1RGTW92ZShyZXN1bHRTdXBwb3J0ZWRMaW1pdHMpLCBpc0ZhbGxi
YWNrQWRhcHRlciwgKnRoaXMsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQsIGlkZW50aWZpZXIp
KTsKKyAgICBjYWxsYmFjayhXZWJHUFU6OlJlbW90ZUFkYXB0ZXJQcm94eTo6Y3JlYXRlKFdURk1v
dmUocmVzcG9uc2UtPm5hbWUpLCBXVEZNb3ZlKHJlc3VsdFN1cHBvcnRlZEZlYXR1cmVzKSwgV1RG
TW92ZShyZXN1bHRTdXBwb3J0ZWRMaW1pdHMpLCByZXNwb25zZS0+aXNGYWxsYmFja0FkYXB0ZXIs
ICp0aGlzLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBpZGVudGlmaWVyKSk7CiB9CiAKLX0g
Ly8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2Vu
ZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFVQcm94eS5oCmluZGV4
IDBmZmVhMzhjZjhjNmZiYTc4OGFhOTBlY2JhYmRhM2YyMDU2MDQ4OTAuLmIwMDY4NDM4MTIyMzUz
M2UzN2NkNmE5Y2JlMGVlNTJiYTczMjE1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVUHJveHkuaApA
QCAtMjcsNiArMjcsOCBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAi
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJSZW5kZXJpbmdCYWNrZW5kSWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgIlN0cmVhbUNsaWVudENvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJX
ZWJHUFVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFUu
aD4KQEAgLTM2LDE1ICszOCwxOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIEdQVVByb2Nl
c3NDb25uZWN0aW9uOwogfQogCi1uYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgeworbmFtZXNwYWNl
IFdlYktpdCB7CiAKK25hbWVzcGFjZSBXZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFja2luZ0Nv
bnRleHQ7CitjbGFzcyBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OworfQogCi1jbGFz
cyBSZW1vdGVHUFVQcm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6R1BVIHsKK2NsYXNz
IFJlbW90ZUdQVVByb3h5IGZpbmFsIDogcHVibGljIFBBTDo6V2ViR1BVOjpHUFUsIHByaXZhdGUg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVu
dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxSZW1vdGVHUFVQcm94eT4gY3JlYXRlKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNz
Q29ubmVjdGlvbiwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250
ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxSZW1vdGVH
UFVQcm94eT4gY3JlYXRlKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlv
biwgV2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRl
eHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIgcmVuZGVyaW5nQmFja2VuZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFJlbW90ZUdQVVByb3h5KGdwdVByb2Nlc3NDb25uZWN0aW9uLCBjb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCwgaWRlbnRpZmllcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVH
UFVQcm94eShncHVQcm9jZXNzQ29ubmVjdGlvbiwgY29udmVydFRvQmFja2luZ0NvbnRleHQsIGlk
ZW50aWZpZXIsIHJlbmRlcmluZ0JhY2tlbmQpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1v
dGVHUFVQcm94eSgpOwpAQCAtNTQsMTUgKzYwLDI2IEBAIHB1YmxpYzoKICAgICBJUEM6OlN0cmVh
bUNsaWVudENvbm5lY3Rpb24mIHN0cmVhbUNsaWVudENvbm5lY3Rpb24oKSB7IHJldHVybiBtX3N0
cmVhbUNvbm5lY3Rpb247IH0KIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgRG93bmNhc3RD
b252ZXJ0VG9CYWNraW5nQ29udGV4dDsKKyAgICBmcmllbmQgY2xhc3MgV2ViR1BVOjpEb3duY2Fz
dENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCi0gICAgUmVtb3RlR1BVUHJveHkoR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24mLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYsIFdlYkdQVUlkZW50aWZpZXIp
OworICAgIFJlbW90ZUdQVVByb3h5KEdQVVByb2Nlc3NDb25uZWN0aW9uJiwgV2ViR1BVOjpDb252
ZXJ0VG9CYWNraW5nQ29udGV4dCYsIFdlYkdQVUlkZW50aWZpZXIsIFJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZUdQVVByb3h5KGNvbnN0IFJlbW90ZUdQVVByb3h5Jikg
PSBkZWxldGU7CiAgICAgUmVtb3RlR1BVUHJveHkoUmVtb3RlR1BVUHJveHkmJikgPSBkZWxldGU7
CiAgICAgUmVtb3RlR1BVUHJveHkmIG9wZXJhdG9yPShjb25zdCBSZW1vdGVHUFVQcm94eSYpID0g
ZGVsZXRlOwogICAgIFJlbW90ZUdQVVByb3h5JiBvcGVyYXRvcj0oUmVtb3RlR1BVUHJveHkmJikg
PSBkZWxldGU7CiAKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisKKyAg
ICAvLyBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Q2xpZW50CisgICAgdm9pZCBncHVQcm9jZXNzQ29u
bmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJikgZmluYWw7CisKKyAgICAvLyBN
ZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KKyAgICB2b2lkIHdhc0NyZWF0ZWQoYm9vbCBkaWRTdWNj
ZWVkLCBJUEM6OlNlbWFwaG9yZSYmKTsKKworICAgIHZvaWQgd2FpdFVudGlsSW5pdGlhbGl6ZWQo
KTsKKwogICAgIFdlYkdQVUlkZW50aWZpZXIgYmFja2luZygpIGNvbnN0IHsgcmV0dXJuIG1fYmFj
a2luZzsgfQogICAgIAogICAgIHN0YXRpYyBpbmxpbmUgY29uc3RleHByIFNlY29uZHMgZGVmYXVs
dFNlbmRUaW1lb3V0ID0gMzBfczsKQEAgLTc2LDE2ICs5MywyMiBAQCBwcml2YXRlOgogICAgIHsK
ICAgICAgICAgcmV0dXJuIHJvb3QoKS5zdHJlYW1DbGllbnRDb25uZWN0aW9uKCkuc2VuZFN5bmMo
V1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGJhY2tpbmcoKSwgZGVmYXVsdFNlbmRU
aW1lb3V0KTsKICAgICB9CisgICAgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpOyB9CiAKICAgICB2
b2lkIHJlcXVlc3RBZGFwdGVyKGNvbnN0IFBBTDo6V2ViR1BVOjpSZXF1ZXN0QWRhcHRlck9wdGlv
bnMmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoUmVmUHRyPFBBTDo6V2ViR1BVOjpBZGFwdGVyPiYmKT4m
JikgZmluYWw7CiAKKyAgICB2b2lkIGFiYW5kb25HUFVQcm9jZXNzKCk7CisKICAgICBEZXF1ZTxX
VEY6OkZ1bmN0aW9uPHZvaWQoUmVmUHRyPFBBTDo6V2ViR1BVOjpBZGFwdGVyPiYmKT4+IG1fY2Fs
bGJhY2tzOwogCiAgICAgV2ViR1BVSWRlbnRpZmllciBtX2JhY2tpbmc7Ci0gICAgUmVmPENvbnZl
cnRUb0JhY2tpbmdDb250ZXh0PiBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0OworICAgIFJlZjxX
ZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0PiBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0
OworICAgIEdQVVByb2Nlc3NDb25uZWN0aW9uKiBtX2dwdVByb2Nlc3NDb25uZWN0aW9uOworICAg
IGJvb2wgbV9kaWRJbml0aWFsaXplIHsgZmFsc2UgfTsKKyAgICBib29sIG1fbG9zdCB7IGZhbHNl
IH07CiAgICAgSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uIG1fc3RyZWFtQ29ubmVjdGlvbjsK
IH07CiAKLX0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKIAogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5Lm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlR1BVUHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDAzNWU5NTVlMDZmN2ZlMWY2ZjI4
Y2JjZDJjYTlmNDUxOGFiOGJiNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5Lm1lc3NhZ2VzLmluCkBA
IC0wLDAgKzEsMjkgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisj
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworbWVzc2FnZXMgLT4gUmVtb3RlR1BVUHJveHkgTm90
UmVmQ291bnRlZCB7CisgICAgdm9pZCBXYXNDcmVhdGVkKGJvb2wgZGlkU3VjY2VlZCwgSVBDOjpT
ZW1hcGhvcmUgc3RyZWFtV2FrZVVwU2VtYXBob3JlKQorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVBpcGVs
aW5lTGF5b3V0UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHkuaAppbmRleCAwYzlkMzQ3ZTgxYjYyODZj
M2Q3NzRhY2JiMzYzZTIxNzcxYmJiYmU0Li5jNDUyMjVhNTVhZTVmYmI2M2QxMjJhMGFhMWZhOGY3
ZjM4ZmE4OWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVQaXBlbGluZUxheW91dFByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94
eS5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiBjbGFzcyBD
b252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94
eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UmVtb3RlUGlwZWxp
bmVMYXlvdXRQcm94eT4gY3JlYXRlKFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQsIENvbnZlcnRU
b0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyKQogICAgIHsKQEAgLTQ1LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgflJlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHkoKTsKIAogICAgIFJlbW90ZURldmljZVByb3h5
JiBwYXJlbnQoKSB7IHJldHVybiBtX3BhcmVudDsgfQotICAgIFJlbW90ZUdQVVByb3h5JiByb290
KCkgeyByZXR1cm4gbV9wYXJlbnQtPnBhcmVudCgpLnBhcmVudCgpOyB9CisgICAgUmVtb3RlR1BV
UHJveHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+cm9vdCgpOyB9CiAKIHByaXZhdGU6CiAg
ICAgZnJpZW5kIGNsYXNzIERvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVR
dWVyeVNldFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVRdWVyeVNldFByb3h5LmgKaW5kZXggZDhjNmNhNzE2YWYzOTE3MTllZmRjZmVl
MGM0MDdlNjNiOWU4ZTRkMy4uMTE3YThhMzlkN2ZjMjk1ZGNjM2JlZWQwNjhlZTM4YzQwNjlkODM1
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlUXVlcnlTZXRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0UHJveHkuaApAQCAtMzYsNiArMzYsNyBA
QCBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRl
eHQ7CiAKIGNsYXNzIFJlbW90ZVF1ZXJ5U2V0UHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJH
UFU6OlF1ZXJ5U2V0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUmVmPFJlbW90ZVF1ZXJ5U2V0UHJveHk+IGNyZWF0ZShSZW1vdGVEZXZpY2VQcm94
eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRl
eHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7CkBAIC00NSw3ICs0Niw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SZW1vdGVRdWVyeVNldFByb3h5KCk7CiAKICAgICBSZW1v
dGVEZXZpY2VQcm94eSYgcGFyZW50KCkgeyByZXR1cm4gbV9wYXJlbnQ7IH0KLSAgICBSZW1vdGVH
UFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5wYXJlbnQoKS5wYXJlbnQoKTsgfQor
ICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnJvb3QoKTsgfQog
CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250
ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlUXVldWVQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlUXVldWVQcm94eS5oCmluZGV4IGQ4MjMyNGRlMTUyMGNhNGNl
MjE0YTVkYmM3NzY3YzY1MTExOWE4ZWEuLjVlYTIxMDNjMWZkYjlhMmU1MjcwMzVkZDE2YzQ2ZDQ0
ZTJkN2RlYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZVF1ZXVlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWV1ZVByb3h5LmgKQEAgLTM3LDYgKzM3LDcg
QEAgbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250
ZXh0OwogCiBjbGFzcyBSZW1vdGVRdWV1ZVByb3h5IGZpbmFsIDogcHVibGljIFBBTDo6V2ViR1BV
OjpRdWV1ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZjxSZW1vdGVRdWV1ZVByb3h5PiBjcmVhdGUoUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVu
dCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJH
UFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewpAQCAtNDYsNyArNDcsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB+UmVtb3RlUXVldWVQcm94eSgpOwogCiAgICAgUmVtb3RlRGV2aWNlUHJv
eHkmIHBhcmVudCgpIHsgcmV0dXJuIG1fcGFyZW50OyB9Ci0gICAgUmVtb3RlR1BVUHJveHkmIHJv
b3QoKSB7IHJldHVybiBtX3BhcmVudC0+cGFyZW50KCkucGFyZW50KCk7IH0KKyAgICBSZW1vdGVH
UFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5yb290KCk7IH0KIAogcHJpdmF0ZToK
ICAgICBmcmllbmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5LmgKaW5kZXgg
MTAwNDVhZTJlYmYyOWU0MWVlOGRlZWI5MjQ4NGFkMTQxMzg3YTEyMy4uYzFjNmMzOWYzZWQxYmYz
MzkyMTkxYWZmNGQyZTg3NDU3MDBhZGViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5LmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNl
IFdlYktpdDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFz
cyBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJH
UFU6OlJlbmRlckJ1bmRsZUVuY29kZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5PiBj
cmVhdGUoUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQm
IGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAg
ICAgewpAQCAtNDUsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UmVtb3RlUmVuZGVy
QnVuZGxlRW5jb2RlclByb3h5KCk7CiAKICAgICBSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50KCkg
eyByZXR1cm4gbV9wYXJlbnQ7IH0KLSAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJu
IG1fcGFyZW50LT5wYXJlbnQoKS5wYXJlbnQoKTsgfQorICAgIFJlbW90ZUdQVVByb3h5JiByb290
KCkgeyByZXR1cm4gbV9wYXJlbnQtPnJvb3QoKTsgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBj
bGFzcyBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxl
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZVJlbmRlckJ1bmRsZVByb3h5LmgKaW5kZXggN2MwZGM1ZWU5ZjRmZDJkNTRjMTdjMWQyNTcx
MDA3N2VlYmFkYmQxNy4uY2U3YTcwNzg5NmE5ODA0YTA3NTA4ZjZiODQyMmE2ZDA0ZTgzMmJjNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlUmVuZGVyQnVuZGxlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVQcm94eS5oCkBAIC0zNiw2ICsz
Niw3IEBAIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiBjbGFzcyBDb252ZXJ0VG9CYWNraW5n
Q29udGV4dDsKIAogY2xhc3MgUmVtb3RlUmVuZGVyQnVuZGxlUHJveHkgZmluYWwgOiBwdWJsaWMg
UEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZW1vdGVSZW5kZXJCdW5kbGVQcm94eT4gY3JlYXRl
KFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252
ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsK
QEAgLTQ1LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflJlbW90ZVJlbmRlckJ1bmRs
ZVByb3h5KCk7CiAKICAgICBSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50KCkgeyByZXR1cm4gbV9w
YXJlbnQ7IH0KLSAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5w
YXJlbnQoKS5wYXJlbnQoKTsgfQorICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4g
bV9wYXJlbnQtPnJvb3QoKTsgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBEb3duY2Fz
dENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVu
ZGVyUGFzc0VuY29kZXJQcm94eS5oCmluZGV4IDc0Mjc5ZDE5NmE3NDg3MzU4ODczMGNlMThkMTFl
MWVlZmY3ZTJmZmUuLmU1ZjY5M2Q4YzhlYmY2ZTkwNWQ5MTQyZTBkM2ViZTczNGMxODRjMzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5LmgKQEAg
LTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRU
b0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5IGZp
bmFsIDogcHVibGljIFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRW5jb2RlciB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZW1vdGVSZW5kZXJQ
YXNzRW5jb2RlclByb3h5PiBjcmVhdGUoUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eSYgcGFyZW50
LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQ
VUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7CkBAIC00NSw3ICs0Niw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5SZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5KCk7CiAKICAgICBSZW1v
dGVDb21tYW5kRW5jb2RlclByb3h5JiBwYXJlbnQoKSB7IHJldHVybiBtX3BhcmVudDsgfQotICAg
IFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnBhcmVudCgpLnBhcmVu
dCgpLnBhcmVudCgpOyB9CisgICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiBtX3Bh
cmVudC0+cm9vdCgpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIERvd25jYXN0Q29u
dmVydFRvQmFja2luZ0NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBl
bGluZVByb3h5LmgKaW5kZXggMDNjZDRjYzY5NGY1ZjlkYTNhYjIwM2UwNjdiNzA2ZjAxZjQxMjA5
YS4uMjNlMDZjZTg4Y2MxZDZmNTVjOGZjMGFmMTRmOTA0N2NhYjZkM2RiYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVy
UGlwZWxpbmVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZVJlbmRlclBpcGVsaW5lUHJveHkuaApAQCAtMzYsNiArMzYsNyBAQCBu
YW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7
CiAKIGNsYXNzIFJlbW90ZVJlbmRlclBpcGVsaW5lUHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpX
ZWJHUFU6OlJlbmRlclBpcGVsaW5lIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlclBpcGVsaW5lUHJveHk+IGNyZWF0ZShS
ZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVy
dFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7CkBA
IC00NSw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SZW1vdGVSZW5kZXJQaXBlbGlu
ZVByb3h5KCk7CiAKICAgICBSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50KCkgeyByZXR1cm4gbV9w
YXJlbnQ7IH0KLSAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5w
YXJlbnQoKS5wYXJlbnQoKTsgfQorICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4g
bV9wYXJlbnQtPnJvb3QoKTsgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBEb3duY2Fz
dENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2FtcGxlclByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTYW1wbGVyUHJveHku
aAppbmRleCAxYjcxYzAxODNhOWFjMjllOTlmOTFkMDJlZTBhOWQ2NTFjYzcxOTJmLi5hMGZlNGE2
NGUxYTliMDg2OTYyNjgwODY2MTk0YTYzMGYxZjA4NjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTYW1wbGVyUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVT
YW1wbGVyUHJveHkuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUg
ewogY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90ZVNhbXBsZXJQ
cm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6U2FtcGxlciB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZW1vdGVTYW1wbGVyUHJv
eHk+IGNyZWF0ZShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmll
cikKICAgICB7CkBAIC00NSw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SZW1vdGVT
YW1wbGVyUHJveHkoKTsKIAogICAgIFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQoKSB7IHJldHVy
biBtX3BhcmVudDsgfQotICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJl
bnQtPnBhcmVudCgpLnBhcmVudCgpOyB9CisgICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJl
dHVybiBtX3BhcmVudC0+cm9vdCgpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIERv
d25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGVQcm94eS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2hh
ZGVyTW9kdWxlUHJveHkuaAppbmRleCBmNjFhZDk1NGJjZTM3MWNhYTljMDJjZTllZmI3ODMxMzYx
MTBmY2EwLi4zYzJhMDg0NDQyMmY0NjQ4MmZlOWJkYWFmYmJmZGFkMjk0ZmNlZTJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVT
aGFkZXJNb2R1bGVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZVNoYWRlck1vZHVsZVByb3h5LmgKQEAgLTM2LDYgKzM2LDcgQEAg
bmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0
OwogCiBjbGFzcyBSZW1vdGVTaGFkZXJNb2R1bGVQcm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6Oldl
YkdQVTo6U2hhZGVyTW9kdWxlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmPFJlbW90ZVNoYWRlck1vZHVsZVByb3h5PiBjcmVhdGUoUmVtb3Rl
RGV2aWNlUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewpAQCAtNDUs
NyArNDYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UmVtb3RlU2hhZGVyTW9kdWxlUHJveHko
KTsKIAogICAgIFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQoKSB7IHJldHVybiBtX3BhcmVudDsg
fQotICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnBhcmVudCgp
LnBhcmVudCgpOyB9CisgICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVu
dC0+cm9vdCgpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIERvd25jYXN0Q29udmVy
dFRvQmFja2luZ0NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmVQcm94eS5oCmluZGV4
IDk0N2ZlYjJhOWU2ZjYzZDExNDYwNGU3NTBmZjJmOGI1ZDNiYmUwN2QuLjZlOTAxMDNiZTY2NWRh
MjNiY2I2MGE3ZTVhMzc3MTU0NjNjMzdhYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmVQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmVQ
cm94eS5oCkBAIC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiBjbGFz
cyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUmVtb3RlVGV4dHVyZVByb3h5IGZp
bmFsIDogcHVibGljIFBBTDo6V2ViR1BVOjpUZXh0dXJlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlbW90ZVRleHR1cmVQcm94eT4gY3Jl
YXRlKFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBj
b252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAg
IHsKQEAgLTQ5LDcgKzUwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflJlbW90ZVRleHR1cmVQ
cm94eSgpOwogCiAgICAgUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCgpIHsgcmV0dXJuIG1fcGFy
ZW50OyB9Ci0gICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+cGFy
ZW50KCkucGFyZW50KCk7IH0KKyAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1f
cGFyZW50LT5yb290KCk7IH0KIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRG93bmNhc3RD
b252ZXJ0VG9CYWNraW5nQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmVWaWV3UHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmVWaWV3
UHJveHkuaAppbmRleCA1N2MxYzk4ZDVjNWZkODYxNmQzMTQyZjNkMjdlZDZiYTQyNDU2NzZkLi40
OWZjZmZhNzg4MGM0NDJmZjBmNTg2OGQ3YzcwMjFjYjcwN2VlZDNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlVmll
d1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlVGV4dHVyZVZpZXdQcm94eS5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBX
ZWJLaXQ6OldlYkdQVSB7CiBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3Mg
UmVtb3RlVGV4dHVyZVZpZXdQcm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6VGV4dHVy
ZVZpZXcgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRp
YyBSZWY8UmVtb3RlVGV4dHVyZVZpZXdQcm94eT4gY3JlYXRlKFJlbW90ZVRleHR1cmVQcm94eSYg
cGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQs
IFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7CkBAIC00NSw3ICs0Niw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5SZW1vdGVUZXh0dXJlVmlld1Byb3h5KCk7CiAKICAgICBSZW1v
dGVUZXh0dXJlUHJveHkmIHBhcmVudCgpIHsgcmV0dXJuIG1fcGFyZW50OyB9Ci0gICAgUmVtb3Rl
R1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+cGFyZW50KCkucGFyZW50KCkucGFy
ZW50KCk7IH0KKyAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5y
b290KCk7IH0KIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9C
YWNraW5nQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvV2ViR1BVL1dlYkdQVURvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVURvd25j
YXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQuaAppbmRleCA0NDcxZDBlZjA3NDhiNjQ1ZWViZDRl
OTUwZjVjZjUwMDA1MzY2OTVkLi4xNDMzYWNlNzFlMDJiNjU5NDBhNjg4MjMwMDVlZDNhNGE5M2I1
MTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dl
YkdQVS9XZWJHUFVEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvV2ViR1BVRG93bmNhc3RDb252
ZXJ0VG9CYWNraW5nQ29udGV4dC5oCkBAIC0zMiw3ICszMiwxMyBAQAogbmFtZXNwYWNlIFdlYktp
dDo6V2ViR1BVIHsKIAogY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dCBmaW5h
bCA6IHB1YmxpYyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CisgICAgc3RhdGljIFJlZjxEb3duY2FzdENvbnZlcnRUb0JhY2tp
bmdDb250ZXh0PiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dCgpKTsKKyAgICB9CisKICAgICB2aXJ0dWFs
IH5Eb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0KCkgPSBkZWZhdWx0OwogCiAgICAgV2Vi
R1BVSWRlbnRpZmllciBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpBZGFwdGVy
JikgZmluYWw7CkBAIC01Nyw2ICs2Myw5IEBAIHB1YmxpYzoKICAgICBXZWJHUFVJZGVudGlmaWVy
IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlNoYWRlck1vZHVsZSYpIGZpbmFs
OwogICAgIFdlYkdQVUlkZW50aWZpZXIgY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQ
VTo6VGV4dHVyZSYpIGZpbmFsOwogICAgIFdlYkdQVUlkZW50aWZpZXIgY29udmVydFRvQmFja2lu
Zyhjb25zdCBQQUw6OldlYkdQVTo6VGV4dHVyZVZpZXcmKSBmaW5hbDsKKworcHJpdmF0ZToKKyAg
ICBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0KCkgPSBkZWZhdWx0OwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggNDM2
YTVhNTIwMzVhMDY1NzU4OWMwZTkwYjA4NDJjNDMzNjU4MWUzZC4uNzRmMTJiYTEyZjViNmVmOWI5
NmRhYzlmNzYzNTI0ZjgyNjU5YjAxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTQwLDYg
KzQwLDcgQEAKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRl
ICJQYWdlQmFubmVyLmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlldy5oIgorI2luY2x1ZGUgIlJlbW90
ZUdQVVByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgiCiAj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyQ29weS5oIgogI2luY2x1ZGUgIlVzZXJEYXRhLmgiCkBAIC01
MCw2ICs1MSw3IEBACiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJGcmFtZUxv
YWRlckNsaWVudC5oIgogI2luY2x1ZGUgIldlYkZ1bGxTY3JlZW5NYW5hZ2VyLmgiCisjaW5jbHVk
ZSAiV2ViR1BVRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIldl
YkhpdFRlc3RSZXN1bHREYXRhLmgiCiAjaW5jbHVkZSAiV2ViSW1hZ2UuaCIKICNpbmNsdWRlICJX
ZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oIgpAQCAtOTEsNiArOTMsMTAgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+
CiAKKyNpZiBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKKyNpbXBvcnQgPHBhbC9ncmFwaGlj
cy9XZWJHUFUvSW1wbC9XZWJHUFVJbXBsLmg+CisjZW5kaWYKKwogI2lmIEVOQUJMRShBUFBMRV9Q
QVlfQU1TX1VJKQogI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGVQYXlBTVNVSVJlcXVlc3QuaD4KICNl
bmRpZgpAQCAtOTQ4LDYgKzk1NCwxOSBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IFdlYkNo
cm9tZUNsaWVudDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpYwogCiAjZW5k
aWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQogCitSZWZQdHI8UEFMOjpXZWJHUFU6OkdQVT4gV2Vi
Q2hyb21lQ2xpZW50OjpjcmVhdGVHUFVGb3JXZWJHUFUoKSBjb25zdAoreworI2lmIEhBVkUoV0VC
R1BVX0lNUExFTUVOVEFUSU9OKQorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyAgICByZXR1cm4g
UmVtb3RlR1BVUHJveHk6OmNyZWF0ZShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQ
cm9jZXNzQ29ubmVjdGlvbigpLCBXZWJHUFU6OkRvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRl
eHQ6OmNyZWF0ZSgpLCBXZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBtX3BhZ2UuZW5zdXJl
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCkuZW5zdXJlQmFja2VuZENyZWF0ZWQoKSk7Cisj
ZWxzZQorICAgIHJldHVybiBQQUw6OldlYkdQVTo6R1BVSW1wbDo6Y3JlYXRlKCk7CisjZW5kaWYK
KyNlbHNlCisgICAgcmV0dXJuIG51bGxwdHI7CisjZW5kaWYKK30KKwogdm9pZCBXZWJDaHJvbWVD
bGllbnQ6OmF0dGFjaFJvb3RHcmFwaGljc0xheWVyKEZyYW1lJiwgR3JhcGhpY3NMYXllciogbGF5
ZXIpCiB7CiAgICAgaWYgKGxheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDJmZTMyOTAzNDM0
N2NlZDI4ZjgxMDU3ZGEzZmVjMjMzMDdhZTcwODQuLjlhZWNjNGMyNzM5NjI0NWFlOTIyMDJmMGQ0
NTkzNDczMTc2NmZlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTI1Miw2ICsyNTIsNyBAQCBw
cml2YXRlOgogI2VuZGlmCiAjZW5kaWYKIAorICAgIFJlZlB0cjxQQUw6OldlYkdQVTo6R1BVPiBj
cmVhdGVHUFVGb3JXZWJHUFUoKSBjb25zdCBmaW5hbDsKIAogICAgIENvbXBvc2l0aW5nVHJpZ2dl
ckZsYWdzIGFsbG93ZWRDb21wb3NpdGluZ1RyaWdnZXJzKCkgY29uc3QgZmluYWwKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Db25maWd1cmF0aW9ucy9XZWJLaXRM
ZWdhY3kueGNjb25maWcgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Db25maWd1cmF0aW9ucy9X
ZWJLaXRMZWdhY3kueGNjb25maWcKaW5kZXggZmI1NWRhNzc2ZTBmODIyNmRhOWZjMzI2NjIzMDli
NDY3MzU3YWM5Ny4uZjc4NDk2NjUxZDBlYjkzYmMwZDNlM2UzZWE1Zjk3OTg3ZTRmNzA0NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ29uZmlndXJhdGlvbnMvV2ViS2l0TGVn
YWN5LnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NvbmZpZ3VyYXRpb25z
L1dlYktpdExlZ2FjeS54Y2NvbmZpZwpAQCAtNTgsNyArNTgsNyBAQCBHQ0NfUFJFUFJPQ0VTU09S
X0RFRklOSVRJT05TID0gJChERUJVR19ERUZJTkVTKSBCVUlMRElOR19XRUJLSVQgRlJBTUVXT1JL
X05BTUU9VwogV0VCS0lUQURESVRJT05TX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvdXNyL2xvY2FsL2luY2x1ZGUvV2ViS2l0QWRkaXRpb25zICQoU0RLUk9PVCkv
dXNyL2xvY2FsL2luY2x1ZGUvV2ViS2l0QWRkaXRpb25zOwogTElCV0VCUlRDX0hFQURFUl9TRUFS
Q0hfUEFUSFMgPSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvdXNyL2xvY2FsL2luY2x1ZGUvd2VicnRj
ICQoU0RLUk9PVCkvdXNyL2xvY2FsL2luY2x1ZGUvd2VicnRjOwogCi1IRUFERVJfU0VBUkNIX1BB
VEhTID0gIiQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9Gb3J3YXJkaW5nSGVhZGVycyIg
IiQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXRMZWdhY3kiICIkKEJV
SUxUX1BST0RVQ1RTX0RJUikvdXNyL2xvY2FsL2luY2x1ZGUiICQoV0VCS0lUQURESVRJT05TX0hF
QURFUl9TRUFSQ0hfUEFUSFMpICQoTElCV0VCUlRDX0hFQURFUl9TRUFSQ0hfUEFUSFMpICQoSEVB
REVSX1NFQVJDSF9QQVRIUykgJChTUkNST09UKTsKK0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiJChX
RUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0ZvcndhcmRpbmdIZWFkZXJzIiAiJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdExlZ2FjeSIgIiQoQlVJTFRfUFJPRFVD
VFNfRElSKS91c3IvbG9jYWwvaW5jbHVkZSIgIiQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9j
YWwvaW5jbHVkZS9wYWwvZ3JhcGhpY3MvV2ViR1BVIiAkKFdFQktJVEFERElUSU9OU19IRUFERVJf
U0VBUkNIX1BBVEhTKSAkKExJQldFQlJUQ19IRUFERVJfU0VBUkNIX1BBVEhTKSAkKEhFQURFUl9T
RUFSQ0hfUEFUSFMpICQoU1JDUk9PVCk7CiBJTkZPUExJU1RfRklMRSA9IG1hYy9JbmZvLnBsaXN0
OwogSU5TVEFMTF9QQVRIID0gJChJTlNUQUxMX1BBVEhfQ09DT0FfVE9VQ0hfJChXS19JU19DT0NP
QV9UT1VDSCkpOwogSU5TVEFMTF9QQVRIX0NPQ09BX1RPVUNIX1lFUyA9ICQoV0tfQUxURVJOQVRF
X1dFQktJVF9TREtfUEFUSCkkKFNZU1RFTV9MSUJSQVJZX0RJUikvUHJpdmF0ZUZyYW1ld29ya3M7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oCmluZGV4IGEzNjVkOGQ4NjRhMjA2OWU0ZmE4MjIxZmE4ODM5MjQ2M2Jl
MDY2NjkuLjQ0OTEzMDY0NDc0ZDEzYzJiOTM5YmI4NDBhMTQ5ZmM2NzUyYWY5YzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oCkBAIC0yNTUsNiArMjU1LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGNoYW5nZVVu
aXZlcnNhbEFjY2Vzc1pvb21Gb2N1cyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYpIGZpbmFsOwogI2VuZGlmCiAKKyAgICBSZWZQdHI8UEFMOjpXZWJHUFU6
OkdQVT4gY3JlYXRlR1BVRm9yV2ViR1BVKCkgY29uc3QgZmluYWw7CisKICNpZiBFTkFCTEUoVklE
RU9fUFJFU0VOVEFUSU9OX01PREUpCiAgICAgYm9vbCBtX21vY2tWaWRlb1ByZXNlbnRhdGlvbk1v
ZGVFbmFibGVkIHsgZmFsc2UgfTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCmluZGV4IGExNzUx
YjAyOTg0Zjc3ZTdhN2M2ZDU1YjU5NGZmYjg4MDAwOThmYWYuLjBkNGI0ODk5MDAyOTQ4NTkwMWEw
YTNlYTVlODI0NThmZDUyZTczZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KQEAgLTkzLDYgKzkzLDEw
IEBACiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAorI2lmIEhBVkUoV0VCR1BVX0lNUExFTUVOVEFUSU9OKQorI2ltcG9ydCA8cGFsL2dyYXBo
aWNzL1dlYkdQVS9JbXBsL1dlYkdQVUltcGwuaD4KKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkgJiYgRU5BQkxFKEdFT0xPQ0FUSU9OKQogI2ltcG9ydCA8V2ViQ29yZS9HZW9sb2Nh
dGlvbi5oPgogI2VuZGlmCkBAIC0xMTUzLDMgKzExNTcsMTIgQEAgdm9pZCBXZWJDaHJvbWVDbGll
bnQ6OmNoYW5nZVVuaXZlcnNhbEFjY2Vzc1pvb21Gb2N1cyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiB2aWUKICAgICBXZWJDb3JlOjpjaGFuZ2VVbml2ZXJzYWxBY2Nlc3Nab29tRm9jdXModmlld1Jl
Y3QsIHNlbGVjdGlvblJlY3QpOwogfQogI2VuZGlmCisKK1JlZlB0cjxQQUw6OldlYkdQVTo6R1BV
PiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUdQVUZvcldlYkdQVSgpIGNvbnN0Cit7CisjaWYgSEFW
RShXRUJHUFVfSU1QTEVNRU5UQVRJT04pCisgICAgcmV0dXJuIFBBTDo6V2ViR1BVOjpHUFVJbXBs
OjpjcmVhdGUoKTsKKyNlbHNlCisgICAgcmV0dXJuIG51bGxwdHI7CisjZW5kaWYKK30KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8t
Y3Jhc2gtZXhwZWN0ZWQudHh0CmluZGV4IDU5YTY1MTNhNWFhODNhY2E5Y2RkZjg3NzU1NTVkNmNi
ZGNiM2U0ZDUuLjUyYjI4ZTU1NDUwZDAyZTI3YmM5OTAyNmI1MmEzNmQ2NjkyM2I3YTggMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVk
LW5vLWNyYXNoLWV4cGVjdGVkLnR4dApAQCAtMTAsNiArMTAsNyBAQCBuYXZpZ2F0b3IuY29udGFj
dHMgaXMgT0sKIG5hdmlnYXRvci5jb29raWVFbmFibGVkIGlzIE9LCiBuYXZpZ2F0b3IuY3JlZGVu
dGlhbHMgaXMgT0sKIG5hdmlnYXRvci5nZXRTdG9yYWdlVXBkYXRlcygpIGlzIE9LCituYXZpZ2F0
b3IuZ3B1IGlzIE9LCiBuYXZpZ2F0b3IuamF2YUVuYWJsZWQoKSBpcyBPSwogbmF2aWdhdG9yLmxh
bmd1YWdlIGlzIE9LCiBuYXZpZ2F0b3IubGFuZ3VhZ2VzIGlzIE9LCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1j
cmFzaC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2Zhc3QvZG9t
L25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQKaW5kZXggZjI4YThjMGUy
ODk0MWVhZTZlMWE1NGQxMDZhNDljMjlmOTEwOThiZC4uZDRjNGY5ZjRlYTI4ZTRkMGVmMGVjNWY3
NWQ2ZWZkY2NhNjk3OTI3YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
MS9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVk
LW5vLWNyYXNoLWV4cGVjdGVkLnR4dApAQCAtNSw2ICs1LDcgQEAgbmF2aWdhdG9yLmFwcE5hbWUg
aXMgT0sKIG5hdmlnYXRvci5hcHBWZXJzaW9uIGlzIE9LCiBuYXZpZ2F0b3IuY29va2llRW5hYmxl
ZCBpcyBPSwogbmF2aWdhdG9yLmdldFN0b3JhZ2VVcGRhdGVzKCkgaXMgT0sKK25hdmlnYXRvci5n
cHUgaXMgT0sKIG5hdmlnYXRvci5qYXZhRW5hYmxlZCgpIGlzIE9LCiBuYXZpZ2F0b3IubGFuZ3Vh
Z2UgaXMgT0sKIG5hdmlnYXRvci5sYW5ndWFnZXMgaXMgT0sKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azIvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNo
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvZmFzdC9kb20vbmF2
aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dAppbmRleCBkY2ZhMjc1NzIyOWU5
MjYyZDdiM2RhZjc2M2NjNGI3NGE1MWVmNjI1Li5kMzQ0NzliZjY5ODlkNTg4ZjE0NWE3Y2MyYmFk
Y2U3NWQzYzFlM2NjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL2Zh
c3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8t
Y3Jhc2gtZXhwZWN0ZWQudHh0CkBAIC05LDYgKzksNyBAQCBuYXZpZ2F0b3IuY29udGFjdHMgaXMg
T0sKIG5hdmlnYXRvci5jb29raWVFbmFibGVkIGlzIE9LCiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMg
aXMgT0sKIG5hdmlnYXRvci5nZXRTdG9yYWdlVXBkYXRlcygpIGlzIE9LCituYXZpZ2F0b3IuZ3B1
IGlzIE9LCiBuYXZpZ2F0b3IuaXNMb2dnZWRJbigpIGlzIE9LCiBuYXZpZ2F0b3IuamF2YUVuYWJs
ZWQoKSBpcyBPSwogbmF2aWdhdG9yLmxhbmd1YWdlIGlzIE9LCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2RvbS9uYXZpZ2F0b3It
ZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0CmluZGV4IGRhYjU1NWRiZmI5NDIyM2VjNjdj
ODk4YzE3ZjM2NjQwZmM2MjUzYjMuLjQwYmU1NDE2ODk4OGEyNWFiOTI0OWI3OWY3ZGUxOGNhOTUy
MTAwODMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2RvbS9uYXZp
Z2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQu
dHh0CkBAIC05LDYgKzksNyBAQCBuYXZpZ2F0b3IuY29udGFjdHMgaXMgT0sKIG5hdmlnYXRvci5j
b29raWVFbmFibGVkIGlzIE9LCiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMgaXMgT0sKIG5hdmlnYXRv
ci5nZXRTdG9yYWdlVXBkYXRlcygpIGlzIE9LCituYXZpZ2F0b3IuZ3B1IGlzIE9LCiBuYXZpZ2F0
b3IuamF2YUVuYWJsZWQoKSBpcyBPSwogbmF2aWdhdG9yLmxhbmd1YWdlIGlzIE9LCiBuYXZpZ2F0
b3IubGFuZ3VhZ2VzIGlzIE9LCg==
</data>
<flag name="commit-queue"
          id="470394"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>