<?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>226569</bug_id>
          
          <creation_ts>2021-06-03 00:56:36 -0700</creation_ts>
          <short_desc>Rename InlineFlowBox to LegacyInlineFlowBox</short_desc>
          <delta_ts>2021-06-03 06:41:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>annulen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1766301</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-06-03 00:56:36 -0700</bug_when>
    <thetext>more legacy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766313</commentid>
    <comment_count>1</comment_count>
      <attachid>430449</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-06-03 01:25:55 -0700</bug_when>
    <thetext>Created attachment 430449
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766370</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-03 06:40:02 -0700</bug_when>
    <thetext>Committed r278405 (238430@main): &lt;https://commits.webkit.org/238430@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 430449.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766371</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-03 06:41:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/78812330&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430449</attachid>
            <date>2021-06-03 01:25:55 -0700</date>
            <delta_ts>2021-06-03 06:40:05 -0700</delta_ts>
            <desc>patch</desc>
            <filename>legacy-inline-flow-box-rename.patch</filename>
            <type>text/plain</type>
            <size>147686</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxNDY4OWExYjEyMzAuLmNiMWYwOTlkMDY2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIzMyBAQAorMjAyMS0wNi0wMyAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVuYW1lIElubGluZUZsb3dCb3ggdG8gTGVnYWN5SW5saW5lRmxvd0Jv
eAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NTY5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW9yZSBs
ZWdhY3kgbGluZSBsYXlvdXQgbmFtaW5nLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAg
ICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OmNvbGxlY3RGbG93Qm94U3VidHJlZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OmNvbGxlY3RJbmxpbmVCb3hlcyk6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ1F1aXJrcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdRdWlya3M6OmlubGluZUxldmVsQm94QWZm
ZWN0c0xpbmVCb3ggY29uc3QpOgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJ
bnRlZ3JhdGlvbklubGluZUNvbnRlbnRCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dEludGVncmF0aW9uOjpJbmxpbmVDb250ZW50QnVpbGRlcjo6Y29tcHV0ZUxpbmVMZXZlbFZp
c3VhbEFkanVzdG1lbnRzRm9yUnVucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJ
bnRlZ3JhdGlvbjo6SW5saW5lQ29udGVudEJ1aWxkZXI6OmNyZWF0ZURpc3BsYXlMaW5lcyBjb25z
dCk6CisgICAgICAgICogcmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkVsbGlwc2lzQm94OjpFbGxpcHNpc0JveCk6CisgICAgICAgICogcmVuZGVyaW5nL0VsbGlw
c2lzQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUVsZW1lbnRCb3guY3BwOgorICAg
ICAgICAqIHJlbmRlcmluZy9JbmxpbmVFbGVtZW50Qm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVFbGVtZW50Qm94OjpJbmxpbmVFbGVtZW50Qm94KToKKyAgICAgICAgKiByZW5kZXJpbmcv
TGVnYWN5SW5saW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZUJveDo6
ZGlydHlMaW5lQm94ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lQm94OjpuZXh0
TGVhZk9uTGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVCb3g6OnBy
ZXZpb3VzTGVhZk9uTGluZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL0xlZ2FjeUlubGlu
ZUJveC5oOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lQm94OjpwYXJlbnQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lQm94OjpzZXRQYXJlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lQm94OjpMZWdhY3lJbmxpbmVCb3gpOgorICAgICAgICAq
IHJlbmRlcmluZy9MZWdhY3lJbmxpbmVGbG93Qm94LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6Okxl
Z2FjeUlubGluZUZsb3dCb3g6On5MZWdhY3lJbmxpbmVGbG93Qm94KToKKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2FjeUlubGluZUZsb3dCb3g6OnNldEhhc0JhZENoaWxkTGlzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMZWdhY3lJbmxpbmVGbG93Qm94OjpnZXRGbG93U3BhY2luZ0xvZ2ljYWxXaWR0aCk6
CisgICAgICAgIChXZWJDb3JlOjpzZXRIYXNUZXh0RGVzY2VuZGFudHNPbkFuY2VzdG9ycyk6Cisg
ICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVGbG93Qm94OjphZGRUb0xpbmUpOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0JveDo6cmVtb3ZlQ2hpbGQpOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0JveDo6ZGVsZXRlTGluZSk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lJbmxpbmVGbG93Qm94OjpyZW1vdmVMaW5lQm94RnJvbVJlbmRlck9iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVGbG93Qm94OjpleHRyYWN0TGluZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVGbG93Qm94OjpleHRyYWN0TGluZUJveEZyb21S
ZW5kZXJPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0JveDo6YXR0
YWNoTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVGbG93Qm94OjphdHRhY2hM
aW5lQm94VG9SZW5kZXJPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lRmxv
d0JveDo6YWRqdXN0UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6aXNMYXN0Q2hpbGRGb3JS
ZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjppc0FuY2VzdG9yQW5kV2l0aGluQmxvY2spOgor
ICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0JveDo6ZGV0ZXJtaW5lU3BhY2luZ0Zv
ckZsb3dCb3hlcyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVGbG93Qm94OjpwbGFj
ZUJveGVzSW5JbmxpbmVEaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5l
Rmxvd0JveDo6cGxhY2VCb3hSYW5nZUluSW5saW5lRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2FjeUlubGluZUZsb3dCb3g6OnJlcXVpcmVzSWRlb2dyYXBoaWNCYXNlbGluZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjp2ZXJ0aWNhbEFsaWduQXBwbGllcyk6CisgICAgICAgIChX
ZWJDb3JlOjpMZWdhY3lJbmxpbmVGbG93Qm94OjphZGp1c3RNYXhBc2NlbnRBbmREZXNjZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZUZsb3dCb3g6OmNvbXB1dGVMb2dpY2FsQm94
SGVpZ2h0cyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVGbG93Qm94OjpwbGFjZUJv
eGVzSW5CbG9ja0RpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVGbG93
Qm94OjptYXhMb2dpY2FsQm90dG9tRm9yVGV4dERlY29yYXRpb25MaW5lIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZUZsb3dCb3g6Om1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVj
b3JhdGlvbkxpbmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0Jv
eDo6ZmxpcExpbmVzSW5CbG9ja0RpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJ
bmxpbmVGbG93Qm94OjphZGRCb3hTaGFkb3dWaXN1YWxPdmVyZmxvdyk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lJbmxpbmVGbG93Qm94OjphZGRCb3JkZXJPdXRzZXRWaXN1YWxPdmVyZmxvdyk6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVGbG93Qm94OjphZGRUZXh0Qm94VmlzdWFs
T3ZlcmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0JveDo6YWRkT3V0
bGluZVZpc3VhbE92ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZUZsb3dC
b3g6OmFkZFJlcGxhY2VkQ2hpbGRPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJ
bmxpbmVGbG93Qm94Ojpjb21wdXRlT3ZlcmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
SW5saW5lRmxvd0JveDo6c2V0TGF5b3V0T3ZlcmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6TGVn
YWN5SW5saW5lRmxvd0JveDo6c2V0VmlzdWFsT3ZlcmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5SW5saW5lRmxvd0JveDo6c2V0T3ZlcmZsb3dGcm9tTG9naWNhbFJlY3RzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZUZsb3dCb3g6Om5vZGVBdFBvaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeUlubGluZUZsb3dCb3g6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeUlubGluZUZsb3dCb3g6OnBhaW50RmlsbExheWVycyk6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lJbmxpbmVGbG93Qm94Ojpib3hTaGFkb3dDYW5CZUFwcGxpZWRUb0JhY2tncm91bmQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0JveDo6cGFpbnRGaWxs
TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0JveDo6cGFpbnRCb3hT
aGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0JveDo6Y29uc3RyYWlu
VG9MaW5lVG9wQW5kQm90dG9tSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y2xp
cFJlY3RGb3JOaW5lUGllY2VJbWFnZVN0cmlwKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlu
bGluZUZsb3dCb3g6OnBhaW50Qm94RGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6TGVn
YWN5SW5saW5lRmxvd0JveDo6cGFpbnRNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlu
bGluZUZsb3dCb3g6OmZpcnN0TGVhZkRlc2NlbmRhbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGVnYWN5SW5saW5lRmxvd0JveDo6bGFzdExlYWZEZXNjZW5kYW50IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZUZsb3dCb3g6OnNlbGVjdGlvblN0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZUZsb3dCb3g6OmNhbkFjY29tbW9kYXRlRWxsaXBzaXMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0JveDo6cGxhY2VFbGxp
cHNpc0JveCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVGbG93Qm94OjpjbGVhclRy
dW5jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0JveDo6Y29tcHV0
ZU92ZXJBbm5vdGF0aW9uQWRqdXN0bWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdh
Y3lJbmxpbmVGbG93Qm94Ojpjb21wdXRlVW5kZXJBbm5vdGF0aW9uQWRqdXN0bWVudCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVGbG93Qm94Ojpjb2xsZWN0TGVhZkJveGVz
SW5Mb2dpY2FsT3JkZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lRmxv
d0JveDo6Y29tcHV0ZVJlcGxhY2VkQW5kVGV4dExpbmVUb3BBbmRCb3R0b20gY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0JveDo6Ym94TmFtZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVGbG93Qm94OjpvdXRwdXRMaW5lVHJlZUFuZE1hcmsg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0JveDo6Y2hlY2tDb25z
aXN0ZW5jeSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL0xlZ2FjeUlubGluZUZsb3dCb3gu
aDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94Lmgu
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVGbG93Qm94OjpMZWdhY3lJbmxpbmVGbG93
Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZUZsb3dCb3g6OnJlbmRlcmVyIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZUZsb3dCb3g6OmxpbmVTdHlsZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVGbG93Qm94OjpwcmV2TGluZUJv
eCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVGbG93Qm94OjpuZXh0TGlu
ZUJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVGbG93Qm94OjpzZXRO
ZXh0TGluZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVGbG93Qm94OjpzZXRQ
cmV2aW91c0xpbmVCb3gpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0JveDo6
Zmlyc3RDaGlsZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVGbG93Qm94
OjpsYXN0Q2hpbGQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0Jv
eDo6bWFyZ2luQm9yZGVyUGFkZGluZ0xvZ2ljYWxMZWZ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2FjeUlubGluZUZsb3dCb3g6Om1hcmdpbkJvcmRlclBhZGRpbmdMb2dpY2FsUmlnaHQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0JveDo6bWFyZ2luTG9n
aWNhbExlZnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0JveDo6
bWFyZ2luTG9naWNhbFJpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGlu
ZUZsb3dCb3g6OmJvcmRlckxvZ2ljYWxMZWZ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxl
Z2FjeUlubGluZUZsb3dCb3g6OmJvcmRlckxvZ2ljYWxSaWdodCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMZWdhY3lJbmxpbmVGbG93Qm94OjpwYWRkaW5nTG9naWNhbExlZnQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0JveDo6cGFkZGluZ0xvZ2ljYWxSaWdo
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVGbG93Qm94OjppbmNsdWRl
TG9naWNhbExlZnRFZGdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZUZs
b3dCb3g6OmluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeUlubGluZUZsb3dCb3g6OnNldEVkZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eUlubGluZUZsb3dCb3g6OmJlZ2luUGxhY2luZ0JveFJhbmdlc0luSW5saW5lRGlyZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZUZsb3dCb3g6OmVuZFBsYWNpbmdCb3hSYW5n
ZXNJbklubGluZURpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVGbG93
Qm94OjpoYXNUZXh0Q2hpbGRyZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5s
aW5lRmxvd0JveDo6aGFzVGV4dERlc2NlbmRhbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeUlubGluZUZsb3dCb3g6Omhhc0hhcmRMaW5lYnJlYWsgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0JveDo6c2V0SGFzVGV4dENoaWxkcmVuKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZUZsb3dCb3g6OnNldEhhc1RleHREZXNjZW5kYW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVGbG93Qm94OjpsYXlvdXRPdmVyZmxvd1Jl
Y3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0JveDo6bG9naWNh
bFRvcExheW91dE92ZXJmbG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGlu
ZUZsb3dCb3g6OmxvZ2ljYWxCb3R0b21MYXlvdXRPdmVyZmxvdyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMZWdhY3lJbmxpbmVGbG93Qm94Ojpsb2dpY2FsTGF5b3V0T3ZlcmZsb3dSZWN0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZUZsb3dCb3g6OnZpc3VhbE92ZXJm
bG93UmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVGbG93Qm94Ojps
b2dpY2FsTGVmdFZpc3VhbE92ZXJmbG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eUlubGluZUZsb3dCb3g6OmxvZ2ljYWxSaWdodFZpc3VhbE92ZXJmbG93IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZUZsb3dCb3g6OmxvZ2ljYWxUb3BWaXN1YWxPdmVyZmxv
dyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVGbG93Qm94Ojpsb2dpY2Fs
Qm90dG9tVmlzdWFsT3ZlcmZsb3cgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5s
aW5lRmxvd0JveDo6bG9naWNhbFZpc3VhbE92ZXJmbG93UmVjdCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMZWdhY3lJbmxpbmVGbG93Qm94OjpmcmFtZVJlY3RJbmNsdWRpbmdMaW5lSGVpZ2h0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZUZsb3dCb3g6OmxvZ2ljYWxG
cmFtZVJlY3RJbmNsdWRpbmdMaW5lSGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxl
Z2FjeUlubGluZUZsb3dCb3g6OmRlc2NlbmRhbnRzSGF2ZVNhbWVMaW5lSGVpZ2h0QW5kQmFzZWxp
bmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0JveDo6Y2xlYXJE
ZXNjZW5kYW50c0hhdmVTYW1lTGluZUhlaWdodEFuZEJhc2VsaW5lKToKKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2FjeUlubGluZUZsb3dCb3g6OmNoZWNrQ29uc2lzdGVuY3kgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0JveDo6c2V0SGFzQmFkQ2hpbGRMaXN0KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvTGVnYWN5TGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpwYXJlbnRJc0NvbnN0cnVjdGVkT3JIYXZlTmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdh
Y3lMaW5lTGF5b3V0OjpjcmVhdGVMaW5lQm94ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
TGluZUxheW91dDo6Y29uc3RydWN0TGluZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lMaW5l
TGF5b3V0Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25zRm9yU2VnbWVudCk6CisgICAg
ICAgICogcmVuZGVyaW5nL0xlZ2FjeUxpbmVMYXlvdXQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
TGVnYWN5Um9vdElubGluZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lSb290SW5s
aW5lQm94OjpMZWdhY3lSb290SW5saW5lQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJv
b3RJbmxpbmVCb3g6OmNsZWFyVHJ1bmNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lS
b290SW5saW5lQm94OjpsaW5lQ2FuQWNjb21tb2RhdGVFbGxpcHNpcyk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lSb290SW5saW5lQm94OjpwbGFjZUVsbGlwc2lzQm94KToKKyAgICAgICAgKFdl
YkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6Okxl
Z2FjeVJvb3RJbmxpbmVCb3g6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eVJvb3RJbmxpbmVCb3g6OmFkanVzdFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eVJvb3RJbmxpbmVCb3g6OmluY2x1ZGVGb250Rm9yQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6OmluY2x1ZGVHbHlwaHNGb3JCb3ggY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5Um9vdElubGluZUJveDo6aW5jbHVkZUluaXRpYWxMZXR0ZXJG
b3JCb3ggY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9MZWdhY3lSb290SW5saW5lQm94Lmg6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lSb290SW5saW5lQm94Ojpsb2dpY2FsVG9wVmlzdWFs
T3ZlcmZsb3cgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Um9vdElubGluZUJveDo6
bG9naWNhbEJvdHRvbVZpc3VhbE92ZXJmbG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxl
Z2FjeVJvb3RJbmxpbmVCb3g6OmxvZ2ljYWxUb3BMYXlvdXRPdmVyZmxvdyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMZWdhY3lSb290SW5saW5lQm94Ojpsb2dpY2FsQm90dG9tTGF5b3V0T3Zl
cmZsb3cgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjppbmxpbmVCbG9ja0Jhc2VsaW5lIGNv
bnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveDo6Y29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yUG9zaXRpb25lZCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbnRhaW5pbmdCbG9ja0xvZ2lj
YWxIZWlnaHRGb3JQb3NpdGlvbmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJv
eDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhVc2luZyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoUmVwbGFjZWQg
Y29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6Z2V0QmFja2dyb3VuZFJvdW5k
ZWRSZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0Ojpi
YWNrZ3JvdW5kUm91bmRlZFJlY3RBZGp1c3RlZEZvckJsZWVkQXZvaWRhbmNlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludE1hc2tGb3JUZXh0Rmls
bEJveCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxs
TGF5ZXJFeHRlbmRlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6
Ym94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kIGNvbnN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVySW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmJveFNoYWRvd1No
b3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckltYWdlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmdlbmVyYXRlTGluZUJveFJlY3RzIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6Z2VuZXJhdGVDdWxsZWRMaW5lQm94UmVj
dHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpsaW5lc0JvdW5kaW5n
Qm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6bGluZXNWaXN1YWxP
dmVyZmxvd0JvdW5kaW5nQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGlu
ZTo6bGluZXNWaXN1YWxPdmVyZmxvd0JvdW5kaW5nQm94SW5GcmFnbWVudCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmRpcnR5TGluZUJveGVzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlcklubGluZTo6Y3JlYXRlSW5saW5lRmxvd0JveCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJJbmxpbmU6OmNyZWF0ZUFuZEFwcGVuZElubGluZUZsb3dCb3gpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpwYWludE91dGxpbmUpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJJbmxpbmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6Zmly
c3RMaW5lQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6bGFzdExp
bmVCb3ggY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaW5lQm94TGlzdDo6YXBwZW5kTGluZUJveCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaW5lQm94TGlzdDo6ZGVsZXRlTGluZUJveFRyZWUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGluZUJveExpc3Q6OmV4dHJhY3RMaW5lQm94KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxpbmVCb3hMaXN0OjphdHRhY2hMaW5lQm94KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxpbmVCb3hMaXN0OjpyZW1vdmVMaW5lQm94KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxpbmVCb3hMaXN0OjpkZWxldGVMaW5lQm94ZXMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGluZUJveExpc3Q6OmRpcnR5TGluZUJveGVzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxpbmVCb3hMaXN0OjpsaW5lSW50ZXJzZWN0c0RpcnR5UmVjdCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaW5lQm94TGlzdDo6cGFpbnQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGluZUJveExpc3Q6OmhpdFRlc3QgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGluZUJveExpc3Q6OmNoZWNrQ29uc2lzdGVuY3kgY29uc3QpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5oOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGluZUJveExpc3Q6OmZpcnN0TGluZUJveCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMaW5lQm94TGlzdDo6bGFzdExpbmVCb3ggY29uc3QpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJPdmVyZmxvdy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJs
ZUNlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDZWxsOjpib3hTaGFkb3dT
aG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJUYWJsZUNlbGwuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZUVEN1ZTo6aW5pdGlhbGl6ZUxheW91dFBhcmFtZXRl
cnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVlRUQ3VlOjpzaG91bGRTd2l0Y2hEaXJlY3Rp
b24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVlRUQ3VlOjpyZXBvc2l0aW9uQ3Vl
U25hcFRvTGluZXNTZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVlRUQ3VlOjpyZXBvc2l0
aW9uR2VuZXJpY0N1ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZUVEN1ZS5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNWR0lubGluZTo6Y3JlYXRlSW5saW5lRmxvd0JveCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdJbmxpbmU6OmFic29sdXRlUXVhZHMgY29uc3QpOgorICAgICAgICAqIHJl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9T
VkdJbmxpbmVGbG93Qm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0
Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRSZW5kZXJlckRlZmluaW5pbmdUZXh0RGVj
b3JhdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1Jvb3RJbmxpbmVCb3g6OmxheW91dENoYXJhY3RlcnNJblRl
eHRCb3hlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSb290SW5saW5lQm94OjpsYXlvdXRDaGls
ZEJveGVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1RleHRRdWVyeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpmbG93Qm94Rm9yUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFF1ZXJ5Ojpj
b2xsZWN0VGV4dEJveGVzSW5GbG93Qm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Rl
eHRRdWVyeS5oOgorCiAyMDIxLTA2LTAyICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgTWFrZSBFbmRUcmFuc3BhcmFuY3lMYXllciBhIHBvdGVudGlhbCBuby1vcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UKaW5kZXggNTU0Mjc0ZTdmODg1Li41Y2E1MDg0NWU1YzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZQpAQCAtMTUyNywxMSArMTUyNywxMSBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1F
V09SS19IRUFERVJTCiAgICAgcmVuZGVyaW5nL0hpdFRlc3RSZXF1ZXN0LmgKICAgICByZW5kZXJp
bmcvSGl0VGVzdFJlc3VsdC5oCiAgICAgcmVuZGVyaW5nL0lubGluZUVsZW1lbnRCb3guaAotICAg
IHJlbmRlcmluZy9JbmxpbmVGbG93Qm94LmgKICAgICByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5o
CiAgICAgcmVuZGVyaW5nL0xheWVyQW5jZXN0b3JDbGlwcGluZ1N0YWNrLmgKICAgICByZW5kZXJp
bmcvTGF5ZXJGcmFnbWVudC5oCiAgICAgcmVuZGVyaW5nL0xlZ2FjeUlubGluZUJveC5oCisgICAg
cmVuZGVyaW5nL0xlZ2FjeUlubGluZUZsb3dCb3guaAogICAgIHJlbmRlcmluZy9MZWdhY3lMaW5l
TGF5b3V0LmgKICAgICByZW5kZXJpbmcvTGVnYWN5Um9vdElubGluZUJveC5oCiAgICAgcmVuZGVy
aW5nL01hcmtlZFRleHQuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA3MmIxMTUyNDBmYjQuLmE0Y2UxNTQz
M2MwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTIyNTUsNyArMjI1NSw2IEBAIHJlbmRlcmluZy9IaXRU
ZXN0UmVzdWx0LmNwcAogcmVuZGVyaW5nL0hpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZS5jcHAKIHJl
bmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcAogcmVuZGVyaW5nL0lubGluZUVsZW1l
bnRCb3guY3BwCi1yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKIHJlbmRlcmluZy9JbmxpbmVJ
dGVyYXRvci5jcHAKIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAogcmVuZGVyaW5nL0xheWVy
QW5jZXN0b3JDbGlwcGluZ1N0YWNrLmNwcApAQCAtMjI2Myw2ICsyMjYyLDcgQEAgcmVuZGVyaW5n
L0xheWVyT3ZlcmxhcE1hcC5jcHAKIHJlbmRlcmluZy9MYXlvdXREaXNhbGxvd2VkU2NvcGUuY3Bw
CiByZW5kZXJpbmcvTGF5b3V0UmVwYWludGVyLmNwcAogcmVuZGVyaW5nL0xlZ2FjeUlubGluZUJv
eC5jcHAKK3JlbmRlcmluZy9MZWdhY3lJbmxpbmVGbG93Qm94LmNwcAogcmVuZGVyaW5nL0xlZ2Fj
eUxpbmVMYXlvdXQuY3BwCiByZW5kZXJpbmcvTGVnYWN5Um9vdElubGluZUJveC5jcHAKIHJlbmRl
cmluZy9NYXJrZWRUZXh0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDYzZWVkZjljN2Y1ZC4uNmMwODNlZmZkN2U4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0zNTc0LDcgKzM1NzQsNyBAQAogCQlBOENGRjA0RjBBMTU0RjA5MDAwQTQyMzQgLyogRml4ZWRU
YWJsZUxheW91dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQThDRkYwNEEwQTE1NEYwOTAwMEE0MjM0IC8qIEZpeGVkVGFibGVMYXlvdXQuaCAqLzsgfTsK
IAkJQThDRkYwNTEwQTE1NEYwOTAwMEE0MjM0IC8qIFRhYmxlTGF5b3V0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOENGRjA0QzBBMTU0RjA5MDAwQTQy
MzQgLyogVGFibGVMYXlvdXQuaCAqLzsgfTsKIAkJQThDRkY1RTEwQTE1NUEwNTAwMEE0MjM0IC8q
IExlZ2FjeVJvb3RJbmxpbmVCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE4Q0ZGNURBMEExNTVBMDUwMDBBNDIzNCAvKiBMZWdhY3lSb290SW5saW5l
Qm94LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJ
QThDRkY1RTMwQTE1NUEwNTAwMEE0MjM0IC8qIElubGluZUZsb3dCb3guaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4Q0ZGNURDMEExNTVBMDUwMDBBNDIz
NCAvKiBJbmxpbmVGbG93Qm94LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJQThDRkY1RTMwQTE1NUEwNTAwMEE0MjM0IC8qIExlZ2FjeUlubGluZUZs
b3dCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4
Q0ZGNURDMEExNTVBMDUwMDBBNDIzNCAvKiBMZWdhY3lJbmxpbmVGbG93Qm94LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQThDRkY1RTUwQTE1NUEw
NTAwMEE0MjM0IC8qIExlZ2FjeUlubGluZUJveC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQThDRkY1REUwQTE1NUEwNTAwMEE0MjM0IC8qIExlZ2FjeUlu
bGluZUJveC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUE4Q0ZGNkJFMEExNTYxMTgwMDBBNDIzNCAvKiBFbGxpcHNpc0JveC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDRkY2QkQwQTE1NjExODAwMEE0
MjM0IC8qIEVsbGlwc2lzQm94LmggKi87IH07CiAJCUE4Q0ZGN0EzMEExNTY5NzgwMDBBNDIzNCAv
KiBIVE1MUXVvdGVFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBOENGRjc5OTBBMTU2OTc4MDAwQTQyMzQgLyogSFRNTFF1b3RlRWxlbWVudC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMzE2
Miw4ICsxMzE2Miw4IEBACiAJCUE4Q0ZGMDRCMEExNTRGMDkwMDBBNDIzNCAvKiBBdXRvVGFibGVM
YXlvdXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1dG9UYWJs
ZUxheW91dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4Q0ZGMDRDMEExNTRG
MDkwMDBBNDIzNCAvKiBUYWJsZUxheW91dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVGFibGVMYXlvdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThDRkY1
REEwQTE1NUEwNTAwMEE0MjM0IC8qIExlZ2FjeVJvb3RJbmxpbmVCb3guaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExlZ2FjeVJvb3RJbmxpbmVCb3guaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQThDRkY1REMwQTE1NUEwNTAwMEE0MjM0IC8qIElubGluZUZsb3dC
b3guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElubGluZUZsb3dCb3guaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThDRkY1REQwQTE1NUEwNTAwMEE0MjM0IC8q
IElubGluZUZsb3dCb3guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IElubGluZUZsb3dCb3guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBOENGRjVE
QzBBMTU1QTA1MDAwQTQyMzQgLyogTGVnYWN5SW5saW5lRmxvd0JveC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTGVnYWN5SW5saW5lRmxvd0JveC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBOENGRjVERDBBMTU1QTA1MDAwQTQyMzQgLyogTGVnYWN5SW5saW5l
Rmxvd0JveC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGVnYWN5
SW5saW5lRmxvd0JveC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4Q0ZGNURF
MEExNTVBMDUwMDBBNDIzNCAvKiBMZWdhY3lJbmxpbmVCb3guaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IExlZ2FjeUlubGluZUJveC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBOENGRjVERjBBMTU1QTA1MDAwQTQyMzQgLyogTGVnYWN5SW5saW5lQm94LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMZWdhY3lJbmxpbmVCb3guY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOENGRjVFMDBBMTU1QTA1MDAwQTQyMzQg
LyogTGVnYWN5Um9vdElubGluZUJveC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTGVnYWN5Um9vdElubGluZUJveC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0zMDE5NCw4ICszMDE5NCw2IEBACiAJCQkJQThDRkY1REUwQTE1NUEwNTAwMEE0MjM0
IC8qIExlZ2FjeUlubGluZUJveC5oICovLAogCQkJCUI1N0NCNTJDMTgyQTNFRUQwMDc5QTY0NyAv
KiBJbmxpbmVFbGVtZW50Qm94LmNwcCAqLywKIAkJCQlCNTdDQjUyQjE4MkEzN0Y2MDA3OUE2NDcg
LyogSW5saW5lRWxlbWVudEJveC5oICovLAotCQkJCUE4Q0ZGNUREMEExNTVBMDUwMDBBNDIzNCAv
KiBJbmxpbmVGbG93Qm94LmNwcCAqLywKLQkJCQlBOENGRjVEQzBBMTU1QTA1MDAwQTQyMzQgLyog
SW5saW5lRmxvd0JveC5oICovLAogCQkJCTkzMEM5MERDMTlDRjk2NTMwMEQ2QzIxQSAvKiBJbmxp
bmVJdGVyYXRvci5jcHAgKi8sCiAJCQkJQkNFNzg5MTUxMTIwRDYwODAwNjBFQ0U1IC8qIElubGlu
ZUl0ZXJhdG9yLmggKi8sCiAJCQkJQkNFQTQ4MUEwOTdEOTMwMjAwOTRDOUU0IC8qIElubGluZVRl
eHRCb3guY3BwICovLApAQCAtMzAyMDksNiArMzAyMDcsOCBAQAogCQkJCTlCRDFGNjgwMUYwNDYy
QjgwMDFDOUNERCAvKiBMYXlvdXREaXNhbGxvd2VkU2NvcGUuaCAqLywKIAkJCQlBMTIwQUNBMTEz
Rjk5ODQ2MDBGRTRBQzcgLyogTGF5b3V0UmVwYWludGVyLmNwcCAqLywKIAkJCQlBMTIwQUNBMDEz
Rjk5ODM3MDBGRTRBQzcgLyogTGF5b3V0UmVwYWludGVyLmggKi8sCisJCQkJQThDRkY1REQwQTE1
NUEwNTAwMEE0MjM0IC8qIExlZ2FjeUlubGluZUZsb3dCb3guY3BwICovLAorCQkJCUE4Q0ZGNURD
MEExNTVBMDUwMDBBNDIzNCAvKiBMZWdhY3lJbmxpbmVGbG93Qm94LmggKi8sCiAJCQkJQkNFQTQ4
MTMwOTdEOTMwMjAwOTRDOUU0IC8qIExlZ2FjeUxpbmVMYXlvdXQuY3BwICovLAogCQkJCUU0QTFB
Qzc4MjJGQUZENTAwMDE3Qjc1QiAvKiBMZWdhY3lMaW5lTGF5b3V0LmggKi8sCiAJCQkJQThDRkY1
RTAwQTE1NUEwNTAwMEE0MjM0IC8qIExlZ2FjeVJvb3RJbmxpbmVCb3guY3BwICovLApAQCAtMzMx
NDgsNyArMzMxNDgsNyBAQAogCQkJCUUzMDU5MjY0MUUyN0EzQUQwMEQ1N0M5OCAvKiBJbmxpbmVD
bGFzc2ljU2NyaXB0LmggaW4gSGVhZGVycyAqLywKIAkJCQk2RkUxOTgxNzIxNzgzOTdDMDA0NDZG
MDggLyogSW5saW5lQ29udGVudEJyZWFrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUI1N0NCNTJF
MTgyQTNFRkMwMDc5QTY0NyAvKiBJbmxpbmVFbGVtZW50Qm94LmggaW4gSGVhZGVycyAqLywKLQkJ
CQlBOENGRjVFMzBBMTU1QTA1MDAwQTQyMzQgLyogSW5saW5lRmxvd0JveC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQThDRkY1RTMwQTE1NUEwNTAwMEE0MjM0IC8qIExlZ2FjeUlubGluZUZsb3dCb3gu
aCBpbiBIZWFkZXJzICovLAogCQkJCTZGN0NBM0NBMjA4QzJCMkUwMDJGMjlBQiAvKiBJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDdDNEQ1N0QyNjUwOEJDQjAw
QzdBQjFGIC8qIElubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NkZFNjM2RTgyNjQ3OTYyOTAwRjA5NTFFIC8qIElubGluZUZvcm1hdHRpbmdRdWlya3MuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcAppbmRleCBlNzdk
YzA5NGZiYTQuLjczODNlNDFiZDJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L1ZlcmlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlv
bi5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgc3RhdGljIGJvb2wgY2hlY2tGb3JNYXRjaGluZ1RleHRS
dW5zKGNvbnN0IExpbmVSdW4mIGxpbmVSdW4sIGNvbnN0IFdlYkNvcmU6OklubGkKICAgICAgICAg
JiYgKGlubGluZVRleHRCb3guaXNMaW5lQnJlYWsoKSB8fCAoaW5saW5lVGV4dEJveC5zdGFydCgp
ID09IGxpbmVSdW4udGV4dCgpLT5zdGFydCgpICYmIGlubGluZVRleHRCb3guZW5kKCkgPT0gbGlu
ZVJ1bi50ZXh0KCktPmVuZCgpKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGNvbGxlY3RGbG93Qm94U3Vi
dHJlZShjb25zdCBJbmxpbmVGbG93Qm94JiBmbG93Ym94LCBWZWN0b3I8V2ViQ29yZTo6TGVnYWN5
SW5saW5lQm94Kj4mIGlubGluZUJveGVzKQorc3RhdGljIHZvaWQgY29sbGVjdEZsb3dCb3hTdWJ0
cmVlKGNvbnN0IExlZ2FjeUlubGluZUZsb3dCb3gmIGZsb3dib3gsIFZlY3RvcjxXZWJDb3JlOjpM
ZWdhY3lJbmxpbmVCb3gqPiYgaW5saW5lQm94ZXMpCiB7CiAgICAgYXV0byogaW5saW5lQm94ID0g
Zmxvd2JveC5maXJzdExlYWZEZXNjZW5kYW50KCk7CiAgICAgYXV0byogbGFzdExlYWZEZXNjZW5k
YW50ID0gZmxvd2JveC5sYXN0TGVhZkRlc2NlbmRhbnQoKTsKQEAgLTEwNiwxMSArMTA2LDExIEBA
IHN0YXRpYyB2b2lkIGNvbGxlY3RJbmxpbmVCb3hlcyhjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIHJv
b3QsIFZlY3RvcjxXZWJDb3JlOjpMZWdhCiB7CiAgICAgZm9yIChhdXRvKiByb290TGluZSA9IHJv
b3QuZmlyc3RSb290Qm94KCk7IHJvb3RMaW5lOyByb290TGluZSA9IHJvb3RMaW5lLT5uZXh0Um9v
dEJveCgpKSB7CiAgICAgICAgIGZvciAoYXV0byogaW5saW5lQm94ID0gcm9vdExpbmUtPmZpcnN0
Q2hpbGQoKTsgaW5saW5lQm94OyBpbmxpbmVCb3ggPSBpbmxpbmVCb3gtPm5leHRPbkxpbmUoKSkg
ewotICAgICAgICAgICAgaWYgKCFpczxJbmxpbmVGbG93Qm94PihpbmxpbmVCb3gpKSB7CisgICAg
ICAgICAgICBpZiAoIWlzPExlZ2FjeUlubGluZUZsb3dCb3g+KGlubGluZUJveCkpIHsKICAgICAg
ICAgICAgICAgICBpbmxpbmVCb3hlcy5hcHBlbmQoaW5saW5lQm94KTsKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNvbGxlY3RGbG93Qm94U3Vi
dHJlZShkb3duY2FzdDxJbmxpbmVGbG93Qm94PigqaW5saW5lQm94KSwgaW5saW5lQm94ZXMpOwor
ICAgICAgICAgICAgY29sbGVjdEZsb3dCb3hTdWJ0cmVlKGRvd25jYXN0PExlZ2FjeUlubGluZUZs
b3dCb3g+KCppbmxpbmVCb3gpLCBpbmxpbmVCb3hlcyk7CiAgICAgICAgIH0KICAgICB9CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVGb3JtYXR0aW5nUXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdRdWlya3MuY3BwCmluZGV4IGYz
MDBiMjdiZDhiNC4uNTY3ZDI2MTJkNGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nUXVpcmtzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVGb3JtYXR0aW5nUXVpcmtzLmNwcApAQCAtODEsNyArODEsNyBAQCBib29sIElubGluZUZvcm1h
dHRpbmdRdWlya3M6OmlubGluZUxldmVsQm94QWZmZWN0c0xpbmVCb3goY29uc3QgTGluZUJveDo6
SW5saW5lTAogICAgICAgICAgICAgLy8gV2UgZG8gbm90IGNyZWF0ZSBtYXJrZXJzIGZvciBsaXN0
IGl0ZW1zIHdoZW4gdGhlIGxpc3Qtc3R5bGUtdHlwZSBpcyBub25lLCB3aGlsZSBvdGhlciBicm93
c2VycyBkby4KICAgICAgICAgICAgIC8vIFRoZSBzaWRlIGVmZmVjdCBvZiBoYXZpbmcgbm8gbWFy
a2VyIGlzIHRoYXQgaW4gcXVpcmtzIG1vZGUgd2UgaGF2ZSB0byBzcGVjaWZpY2FsbHkgY2hlY2sg
Zm9yIGxpc3QtaXRlbQogICAgICAgICAgICAgLy8gYW5kIG1ha2Ugc3VyZSBpdCBpcyB0cmVhdGVk
IGFzIGlmIGl0IGhhZCBjb250ZW50IGFuZCBzdHJldGNoZWQgdGhlIGxpbmUuCi0gICAgICAgICAg
ICAvLyBzZWUgSW5saW5lRmxvd0JveCBjJ3Rvci4KKyAgICAgICAgICAgIC8vIHNlZSBMZWdhY3lJ
bmxpbmVGbG93Qm94IGMndG9yLgogICAgICAgICAgICAgcmV0dXJuIGlubGluZUxldmVsQm94Lmxh
eW91dEJveCgpLnN0eWxlKCkuaXNPcmlnaW5hbERpc3BsYXlMaXN0SXRlbVR5cGUoKTsKICAgICAg
ICAgfQogICAgICAgICAvLyBOb24tcm9vdCBpbmxpbmUgYm94ZXMgKGUuZy4gPHNwYW4+KS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3Jh
dGlvbklubGluZUNvbnRlbnRCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRl
Z3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnRCdWlsZGVyLmNwcAppbmRleCAw
Mzg0YzljZjc3NGEuLjJiMTFiZWZiOWI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudEJ1aWxkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlv
bklubGluZUNvbnRlbnRCdWlsZGVyLmNwcApAQCAtMTgyLDcgKzE4Miw3IEBAIElubGluZUNvbnRl
bnRCdWlsZGVyOjpMaW5lTGV2ZWxWaXN1YWxBZGp1c3RtZW50c0ZvclJ1bnNMaXN0IElubGluZUNv
bnRlbnRCdWlsZGVyCiAgICAgTGluZUxldmVsVmlzdWFsQWRqdXN0bWVudHNGb3JSdW5zTGlzdCBs
aW5lTGV2ZWxWaXN1YWxBZGp1c3RtZW50c0ZvclJ1bnMobGluZXMuc2l6ZSgpKTsKICAgICBmb3Ig
KHNpemVfdCBsaW5lSW5kZXggPSAwOyBsaW5lSW5kZXggPCBsaW5lcy5zaXplKCk7ICsrbGluZUlu
ZGV4KSB7CiAgICAgICAgIGF1dG8gbGluZU5lZWRzTGVnYWN5SW50ZWdyYWxWZXJ0aWNhbFBvc2l0
aW9uID0gWyZdIHsKLSAgICAgICAgICAgIC8vIElubGluZVRyZWUgcm91bmRzIHkgcG9zaXRpb24g
dG8gaW50ZWdyYWwgdmFsdWUgZm9yIGNlcnRhaW4gY29udGVudCAoc2VlIElubGluZUZsb3dCb3g6
OnBsYWNlQm94ZXNJbkJsb2NrRGlyZWN0aW9uKS4KKyAgICAgICAgICAgIC8vIElubGluZVRyZWUg
cm91bmRzIHkgcG9zaXRpb24gdG8gaW50ZWdyYWwgdmFsdWUgZm9yIGNlcnRhaW4gY29udGVudCAo
c2VlIExlZ2FjeUlubGluZUZsb3dCb3g6OnBsYWNlQm94ZXNJbkJsb2NrRGlyZWN0aW9uKS4KICAg
ICAgICAgICAgIGF1dG8mIG5vblJvb3RJbmxpbmVMZXZlbEJveExpc3QgPSBpbmxpbmVGb3JtYXR0
aW5nU3RhdGUubGluZUJveGVzKClbbGluZUluZGV4XS5ub25Sb290SW5saW5lTGV2ZWxCb3hlcygp
OwogICAgICAgICAgICAgaWYgKG5vblJvb3RJbmxpbmVMZXZlbEJveExpc3QuaXNFbXB0eSgpKSB7
CiAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0ZXh0IGNvbnRlbnQgb25seSB3aXRoIHJvb3Qg
aW5saW5lIGJveC4KQEAgLTMzMyw3ICszMzMsNyBAQCB2b2lkIElubGluZUNvbnRlbnRCdWlsZGVy
OjpjcmVhdGVEaXNwbGF5TGluZXMoY29uc3QgTGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nU3RhdAog
ICAgICAgICAgICAgaWYgKCFsYXlvdXRCb3guaXNSZXBsYWNlZEJveCgpKQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICAvLyBTaW1pbGFyIHRvIElubGluZUZsb3dCb3g6
OmFkZFJlcGxhY2VkQ2hpbGRPdmVyZmxvdy4KKyAgICAgICAgICAgIC8vIFNpbWlsYXIgdG8gTGVn
YWN5SW5saW5lRmxvd0JveDo6YWRkUmVwbGFjZWRDaGlsZE92ZXJmbG93LgogICAgICAgICAgICAg
YXV0byYgYm94ID0gZG93bmNhc3Q8UmVuZGVyQm94PihtX2JveFRyZWUucmVuZGVyZXJGb3JMYXlv
dXRCb3gobGF5b3V0Qm94KSk7CiAgICAgICAgICAgICBpZiAoIWJveC5oYXNTZWxmUGFpbnRpbmdM
YXllcigpKSB7CiAgICAgICAgICAgICAgICAgYXV0byBjaGlsZElua092ZXJmbG93ID0gYm94Lmxv
Z2ljYWxWaXN1YWxPdmVyZmxvd1JlY3RGb3JQcm9wYWdhdGlvbigmYm94LnBhcmVudCgpLT5zdHls
ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwCmluZGV4IGJjOTlj
ZmJhZDcwMS4uNmEyYTg1MzNjZjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRWxsaXBzaXNCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNp
c0JveC5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEX0lNUEwoRWxsaXBzaXNCb3gpOwogCi1FbGxpcHNpc0JveDo6RWxsaXBz
aXNCb3goUmVuZGVyQmxvY2tGbG93JiByZW5kZXJlciwgY29uc3QgQXRvbVN0cmluZyYgZWxsaXBz
aXNTdHIsIElubGluZUZsb3dCb3gqIHBhcmVudCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQg
eSwgYm9vbCBmaXJzdExpbmUsIGJvb2wgaXNIb3Jpem9udGFsLCBMZWdhY3lJbmxpbmVCb3gqIG1h
cmt1cEJveCkKK0VsbGlwc2lzQm94OjpFbGxpcHNpc0JveChSZW5kZXJCbG9ja0Zsb3cmIHJlbmRl
cmVyLCBjb25zdCBBdG9tU3RyaW5nJiBlbGxpcHNpc1N0ciwgTGVnYWN5SW5saW5lRmxvd0JveCog
cGFyZW50LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCB5LCBib29sIGZpcnN0TGluZSwgYm9v
bCBpc0hvcml6b250YWwsIExlZ2FjeUlubGluZUJveCogbWFya3VwQm94KQogICAgIDogSW5saW5l
RWxlbWVudEJveChyZW5kZXJlciwgRmxvYXRQb2ludCgwLCB5KSwgd2lkdGgsIGZpcnN0TGluZSwg
dHJ1ZSwgZmFsc2UsIGZhbHNlLCBpc0hvcml6b250YWwsIDAsIDAsIHBhcmVudCkKICAgICAsIG1f
c2hvdWxkUGFpbnRNYXJrdXBCb3gobWFya3VwQm94KQogICAgICwgbV9oZWlnaHQoaGVpZ2h0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guaAppbmRleCA0NjE5NmUyZDY2YTAuLjU1
NDgzOGUwNGFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lz
Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmgKQEAgLTMw
LDcgKzMwLDcgQEAgY2xhc3MgSGl0VGVzdFJlc3VsdDsKIGNsYXNzIEVsbGlwc2lzQm94IGZpbmFs
IDogcHVibGljIElubGluZUVsZW1lbnRCb3ggewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQo
RWxsaXBzaXNCb3gpOwogcHVibGljOgotICAgIEVsbGlwc2lzQm94KFJlbmRlckJsb2NrRmxvdyYs
IGNvbnN0IEF0b21TdHJpbmcmIGVsbGlwc2lzU3RyLCBJbmxpbmVGbG93Qm94KiBwYXJlbnQsIGlu
dCB3aWR0aCwgaW50IGhlaWdodCwgaW50IHksIGJvb2wgZmlyc3RMaW5lLCBib29sIGlzSG9yaXpv
bnRhbCwgTGVnYWN5SW5saW5lQm94KiBtYXJrdXBCb3gpOworICAgIEVsbGlwc2lzQm94KFJlbmRl
ckJsb2NrRmxvdyYsIGNvbnN0IEF0b21TdHJpbmcmIGVsbGlwc2lzU3RyLCBMZWdhY3lJbmxpbmVG
bG93Qm94KiBwYXJlbnQsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IHksIGJvb2wgZmlyc3RM
aW5lLCBib29sIGlzSG9yaXpvbnRhbCwgTGVnYWN5SW5saW5lQm94KiBtYXJrdXBCb3gpOwogICAg
IHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBMYXlvdXRVbml0IGxp
bmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkgb3ZlcnJpZGU7CiAgICAgYm9vbCBub2RlQXRQ
b2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0
TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVs
YXRlZE9mZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20sIEhp
dFRlc3RBY3Rpb24pIGZpbmFsOwogICAgIHZvaWQgc2V0U2VsZWN0aW9uU3RhdGUoUmVuZGVyT2Jq
ZWN0OjpIaWdobGlnaHRTdGF0ZSBzKSB7IG1fc2VsZWN0aW9uU3RhdGUgPSBzOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRWxlbWVudEJveC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRWxlbWVudEJveC5jcHAKaW5kZXggZjdjYjg1OWVk
NTAxLi5mOWY1ZTY4MDNjODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9J
bmxpbmVFbGVtZW50Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
RWxlbWVudEJveC5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJJbmxpbmVFbGVtZW50Qm94LmgiCiAKLSNpbmNsdWRlICJJbmxpbmVGbG93Qm94Lmgi
CisjaW5jbHVkZSAiTGVnYWN5SW5saW5lRmxvd0JveC5oIgogI2luY2x1ZGUgIlBhaW50SW5mby5o
IgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94LmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRWxlbWVudEJveC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUVsZW1lbnRCb3guaAppbmRleCBhZWEwNWQ5ODdj
MmMuLjgxMGI5NzEyNzY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lu
bGluZUVsZW1lbnRCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRWxl
bWVudEJveC5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAg
SW5saW5lRWxlbWVudEJveChSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBGbG9hdFBvaW50IHRvcExl
ZnQsIGZsb2F0IGxvZ2ljYWxXaWR0aCwgYm9vbCBmaXJzdExpbmUsIGJvb2wgY29uc3RydWN0ZWQs
IGJvb2wgZGlydHksIGJvb2wgZXh0cmFjdGVkLCBib29sIGlzSG9yaXpvbnRhbCwgTGVnYWN5SW5s
aW5lQm94KiBuZXh0LCBMZWdhY3lJbmxpbmVCb3gqIHByZXYsIElubGluZUZsb3dCb3gqIHBhcmVu
dCkKKyAgICBJbmxpbmVFbGVtZW50Qm94KFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIEZsb2F0UG9p
bnQgdG9wTGVmdCwgZmxvYXQgbG9naWNhbFdpZHRoLCBib29sIGZpcnN0TGluZSwgYm9vbCBjb25z
dHJ1Y3RlZCwgYm9vbCBkaXJ0eSwgYm9vbCBleHRyYWN0ZWQsIGJvb2wgaXNIb3Jpem9udGFsLCBM
ZWdhY3lJbmxpbmVCb3gqIG5leHQsIExlZ2FjeUlubGluZUJveCogcHJldiwgTGVnYWN5SW5saW5l
Rmxvd0JveCogcGFyZW50KQogICAgICAgICA6IExlZ2FjeUlubGluZUJveChyZW5kZXJlciwgdG9w
TGVmdCwgbG9naWNhbFdpZHRoLCBmaXJzdExpbmUsIGNvbnN0cnVjdGVkLCBkaXJ0eSwgZXh0cmFj
dGVkLCBpc0hvcml6b250YWwsIG5leHQsIHByZXYsIHBhcmVudCkKICAgICB7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUJveC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lQm94LmNwcAppbmRleCA3Yjc0ZTgw
YjkyNTIuLmQ1NzUxMDk0ZmZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0xlZ2FjeUlubGluZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2Fj
eUlubGluZUJveC5jcHAKQEAgLTIzLDcgKzIzLDcgQEAKICNpbmNsdWRlICJGb250TWV0cmljcy5o
IgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgotI2luY2x1
ZGUgIklubGluZUZsb3dCb3guaCIKKyNpbmNsdWRlICJMZWdhY3lJbmxpbmVGbG93Qm94LmgiCiAj
aW5jbHVkZSAiTGVnYWN5Um9vdElubGluZUJveC5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrRmxv
dy5oIgogI2luY2x1ZGUgIlJlbmRlckxpbmVCcmVhay5oIgpAQCAtMTY5LDcgKzE2OSw3IEBAIGlu
dCBMZWdhY3lJbmxpbmVCb3g6OmNhcmV0TWF4T2Zmc2V0KCkgY29uc3QKIHZvaWQgTGVnYWN5SW5s
aW5lQm94OjpkaXJ0eUxpbmVCb3hlcygpCiB7CiAgICAgbWFya0RpcnR5KCk7Ci0gICAgZm9yIChJ
bmxpbmVGbG93Qm94KiBjdXJyID0gcGFyZW50KCk7IGN1cnIgJiYgIWN1cnItPmlzRGlydHkoKTsg
Y3VyciA9IGN1cnItPnBhcmVudCgpKQorICAgIGZvciAoYXV0byogY3VyciA9IHBhcmVudCgpOyBj
dXJyICYmICFjdXJyLT5pc0RpcnR5KCk7IGN1cnIgPSBjdXJyLT5wYXJlbnQoKSkKICAgICAgICAg
Y3Vyci0+bWFya0RpcnR5KCk7CiB9CiAKQEAgLTIyNiw3ICsyMjYsNyBAQCBMZWdhY3lJbmxpbmVC
b3gqIExlZ2FjeUlubGluZUJveDo6bmV4dExlYWZPbkxpbmUoKSBjb25zdAogewogICAgIExlZ2Fj
eUlubGluZUJveCogbGVhZiA9IG51bGxwdHI7CiAgICAgZm9yIChhdXRvKiBib3ggPSBuZXh0T25M
aW5lKCk7IGJveCAmJiAhbGVhZjsgYm94ID0gYm94LT5uZXh0T25MaW5lKCkpCi0gICAgICAgIGxl
YWYgPSBib3gtPmlzTGVhZigpID8gYm94IDogZG93bmNhc3Q8SW5saW5lRmxvd0JveD4oKmJveCku
Zmlyc3RMZWFmRGVzY2VuZGFudCgpOworICAgICAgICBsZWFmID0gYm94LT5pc0xlYWYoKSA/IGJv
eCA6IGRvd25jYXN0PExlZ2FjeUlubGluZUZsb3dCb3g+KCpib3gpLmZpcnN0TGVhZkRlc2NlbmRh
bnQoKTsKICAgICBpZiAoIWxlYWYgJiYgcGFyZW50KCkpCiAgICAgICAgIGxlYWYgPSBwYXJlbnQo
KS0+bmV4dExlYWZPbkxpbmUoKTsKICAgICByZXR1cm4gbGVhZjsKQEAgLTIzNiw3ICsyMzYsNyBA
QCBMZWdhY3lJbmxpbmVCb3gqIExlZ2FjeUlubGluZUJveDo6cHJldmlvdXNMZWFmT25MaW5lKCkg
Y29uc3QKIHsKICAgICBMZWdhY3lJbmxpbmVCb3gqIGxlYWYgPSBudWxscHRyOwogICAgIGZvciAo
YXV0byogYm94ID0gcHJldmlvdXNPbkxpbmUoKTsgYm94ICYmICFsZWFmOyBib3ggPSBib3gtPnBy
ZXZpb3VzT25MaW5lKCkpCi0gICAgICAgIGxlYWYgPSBib3gtPmlzTGVhZigpID8gYm94IDogZG93
bmNhc3Q8SW5saW5lRmxvd0JveD4oKmJveCkubGFzdExlYWZEZXNjZW5kYW50KCk7CisgICAgICAg
IGxlYWYgPSBib3gtPmlzTGVhZigpID8gYm94IDogZG93bmNhc3Q8TGVnYWN5SW5saW5lRmxvd0Jv
eD4oKmJveCkubGFzdExlYWZEZXNjZW5kYW50KCk7CiAgICAgaWYgKCFsZWFmICYmIHBhcmVudCgp
KQogICAgICAgICBsZWFmID0gcGFyZW50KCktPnByZXZpb3VzTGVhZk9uTGluZSgpOwogICAgIHJl
dHVybiBsZWFmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlu
bGluZUJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUJveC5oCmlu
ZGV4IDk0ZWNlMzExYTYwYi4uOWRmZTU0ZDY2MDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0xlZ2FjeUlubGluZUJveC5oCkBAIC0xMzgsMTMgKzEzOCwxMyBAQCBwdWJsaWM6CiAgICAg
Ly8gRklYTUU6IEhpZGUgdGhpcyBvbmNlIGFsbCBjYWxsZXJzIGFyZSB1c2luZyB0aWdodGVyIHR5
cGVzLgogICAgIFJlbmRlck9iamVjdCYgcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiAqbV9yZW5k
ZXJlcjsgfQogCi0gICAgSW5saW5lRmxvd0JveCogcGFyZW50KCkgY29uc3QKKyAgICBMZWdhY3lJ
bmxpbmVGbG93Qm94KiBwYXJlbnQoKSBjb25zdAogICAgIHsKICAgICAgICAgYXNzZXJ0Tm90RGVs
ZXRlZCgpOwogICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighbV9oYXNC
YWRQYXJlbnQpOwogICAgICAgICByZXR1cm4gbV9wYXJlbnQ7CiAgICAgfQotICAgIHZvaWQgc2V0
UGFyZW50KElubGluZUZsb3dCb3gqIHBhcikgeyBtX3BhcmVudCA9IHBhcjsgfQorICAgIHZvaWQg
c2V0UGFyZW50KExlZ2FjeUlubGluZUZsb3dCb3gqIHBhcikgeyBtX3BhcmVudCA9IHBhcjsgfQog
CiAgICAgY29uc3QgTGVnYWN5Um9vdElubGluZUJveCYgcm9vdCgpIGNvbnN0OwogICAgIExlZ2Fj
eVJvb3RJbmxpbmVCb3gmIHJvb3QoKTsKQEAgLTI4OCw3ICsyODgsNyBAQCBwcml2YXRlOgogICAg
IExlZ2FjeUlubGluZUJveCogbV9uZXh0T25MaW5lIHsgbnVsbHB0ciB9OyAvLyBUaGUgbmV4dCBl
bGVtZW50IG9uIHRoZSBzYW1lIGxpbmUgYXMgdXMuCiAgICAgTGVnYWN5SW5saW5lQm94KiBtX3By
ZXZpb3VzT25MaW5lIHsgbnVsbHB0ciB9OyAvLyBUaGUgcHJldmlvdXMgZWxlbWVudCBvbiB0aGUg
c2FtZSBsaW5lIGFzIHVzLgogCi0gICAgSW5saW5lRmxvd0JveCogbV9wYXJlbnQgeyBudWxscHRy
IH07IC8vIFRoZSBib3ggdGhhdCBjb250YWlucyB1cy4KKyAgICBMZWdhY3lJbmxpbmVGbG93Qm94
KiBtX3BhcmVudCB7IG51bGxwdHIgfTsgLy8gVGhlIGJveCB0aGF0IGNvbnRhaW5zIHVzLgogCiAg
ICAgV2Vha1B0cjxSZW5kZXJPYmplY3Q+IG1fcmVuZGVyZXI7CiAKQEAgLTM4MSw3ICszODEsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgewogICAgIH0KIAotICAgIExlZ2FjeUlubGluZUJveChSZW5kZXJP
YmplY3QmIHJlbmRlcmVyLCBGbG9hdFBvaW50IHRvcExlZnQsIGZsb2F0IGxvZ2ljYWxXaWR0aCwg
Ym9vbCBmaXJzdExpbmUsIGJvb2wgY29uc3RydWN0ZWQsIGJvb2wgZGlydHksIGJvb2wgZXh0cmFj
dGVkLCBib29sIGlzSG9yaXpvbnRhbCwgTGVnYWN5SW5saW5lQm94KiBuZXh0LCBMZWdhY3lJbmxp
bmVCb3gqIHByZXZpb3VzLCBJbmxpbmVGbG93Qm94KiBwYXJlbnQpCisgICAgTGVnYWN5SW5saW5l
Qm94KFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIEZsb2F0UG9pbnQgdG9wTGVmdCwgZmxvYXQgbG9n
aWNhbFdpZHRoLCBib29sIGZpcnN0TGluZSwgYm9vbCBjb25zdHJ1Y3RlZCwgYm9vbCBkaXJ0eSwg
Ym9vbCBleHRyYWN0ZWQsIGJvb2wgaXNIb3Jpem9udGFsLCBMZWdhY3lJbmxpbmVCb3gqIG5leHQs
IExlZ2FjeUlubGluZUJveCogcHJldmlvdXMsIExlZ2FjeUlubGluZUZsb3dCb3gqIHBhcmVudCkK
ICAgICAgICAgOiBtX25leHRPbkxpbmUobmV4dCkKICAgICAgICAgLCBtX3ByZXZpb3VzT25MaW5l
KHByZXZpb3VzKQogICAgICAgICAsIG1fcGFyZW50KHBhcmVudCkKQEAgLTQwNSw3ICs0MDUsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBmb3JjZVJpZ2h0RXhwYW5zaW9uKCkgY29uc3QgeyByZXR1
cm4gbV9iaXRmaWVsZHMuZm9yY2VSaWdodEV4cGFuc2lvbigpOyB9CiAgICAgYm9vbCBmb3JjZUxl
ZnRFeHBhbnNpb24oKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5mb3JjZUxlZnRFeHBhbnNp
b24oKTsgfQogICAgIAotICAgIC8vIEZvciBJbmxpbmVGbG93Qm94IGFuZCBJbmxpbmVUZXh0Qm94
CisgICAgLy8gRm9yIExlZ2FjeUlubGluZUZsb3dCb3ggYW5kIElubGluZVRleHRCb3gKICAgICBi
b29sIGV4dHJhY3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmV4dHJhY3RlZCgpOyB9
CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Jbmxp
bmVGbG93Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVGbG93
Qm94LmNwcApzaW1pbGFyaXR5IGluZGV4IDg3JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKcmVuYW1lIHRvIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9MZWdhY3lJbmxpbmVGbG93Qm94LmNwcAppbmRleCA0YjZjZTVkYjYyYmYuLjIyOWE4ZDZj
M2QyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVGbG93Qm94LmNw
cApAQCAtMTgsMTUgKzE4LDE1IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIklubGluZUZsb3dCb3guaCIKKyNpbmNsdWRlICJMZWdhY3lJbmxpbmVGbG93Qm94LmgiCiAK
ICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJFbGxpcHNpc0JveC5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgogI2luY2x1
ZGUgIkhpdFRlc3RSZXN1bHQuaCIKKyNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVk
ZSAiTGVnYWN5Um9vdElubGluZUJveC5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAjaW5j
bHVkZSAiUmVuZGVySW5saW5lLmgiCkBAIC00NiwyMyArNDYsMjMgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1XVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW5saW5lRmxvd0JveCk7CitX
VEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTGVnYWN5SW5saW5lRmxvd0JveCk7CiAKLXN0cnVj
dCBTYW1lU2l6ZUFzSW5saW5lRmxvd0JveCA6IHB1YmxpYyBMZWdhY3lJbmxpbmVCb3ggeworc3Ry
dWN0IFNhbWVTaXplQXNMZWdhY3lJbmxpbmVGbG93Qm94IDogcHVibGljIExlZ2FjeUlubGluZUJv
eCB7CiAgICAgdWludDMyX3QgYml0ZmllbGRzIDogMjM7CiAgICAgdm9pZCogcG9pbnRlcnNbNV07
CiB9OwogCi1DT01QSUxFX0FTU0VSVChzaXplb2YoSW5saW5lRmxvd0JveCkgPT0gc2l6ZW9mKFNh
bWVTaXplQXNJbmxpbmVGbG93Qm94KSwgSW5saW5lRmxvd0JveF9zaG91bGRfc3RheV9zbWFsbCk7
CitDT01QSUxFX0FTU0VSVChzaXplb2YoTGVnYWN5SW5saW5lRmxvd0JveCkgPT0gc2l6ZW9mKFNh
bWVTaXplQXNMZWdhY3lJbmxpbmVGbG93Qm94KSwgTGVnYWN5SW5saW5lRmxvd0JveF9zaG91bGRf
c3RheV9zbWFsbCk7CiAKICNpZiAhQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT05fRElT
QUJMRUQKIAotSW5saW5lRmxvd0JveDo6fklubGluZUZsb3dCb3goKQorTGVnYWN5SW5saW5lRmxv
d0JveDo6fkxlZ2FjeUlubGluZUZsb3dCb3goKQogewogICAgIHNldEhhc0JhZENoaWxkTGlzdCgp
OwogfQogCi12b2lkIElubGluZUZsb3dCb3g6OnNldEhhc0JhZENoaWxkTGlzdCgpCit2b2lkIExl
Z2FjeUlubGluZUZsb3dCb3g6OnNldEhhc0JhZENoaWxkTGlzdCgpCiB7CiAgICAgYXNzZXJ0Tm90
RGVsZXRlZCgpOwogICAgIGlmIChtX2hhc0JhZENoaWxkTGlzdCkKQEAgLTc0LDE3ICs3NCwxNyBA
QCB2b2lkIElubGluZUZsb3dCb3g6OnNldEhhc0JhZENoaWxkTGlzdCgpCiAKICNlbmRpZgogCi1M
YXlvdXRVbml0IElubGluZUZsb3dCb3g6OmdldEZsb3dTcGFjaW5nTG9naWNhbFdpZHRoKCkKK0xh
eW91dFVuaXQgTGVnYWN5SW5saW5lRmxvd0JveDo6Z2V0Rmxvd1NwYWNpbmdMb2dpY2FsV2lkdGgo
KQogewogICAgIExheW91dFVuaXQgdG90YWxXaWR0aCA9IG1hcmdpbkJvcmRlclBhZGRpbmdMb2dp
Y2FsTGVmdCgpICsgbWFyZ2luQm9yZGVyUGFkZGluZ0xvZ2ljYWxSaWdodCgpOwogICAgIGZvciAo
YXV0byogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0T25M
aW5lKCkpIHsKLSAgICAgICAgaWYgKGlzPElubGluZUZsb3dCb3g+KCpjaGlsZCkpCi0gICAgICAg
ICAgICB0b3RhbFdpZHRoICs9IGRvd25jYXN0PElubGluZUZsb3dCb3g+KCpjaGlsZCkuZ2V0Rmxv
d1NwYWNpbmdMb2dpY2FsV2lkdGgoKTsKKyAgICAgICAgaWYgKGlzPExlZ2FjeUlubGluZUZsb3dC
b3g+KCpjaGlsZCkpCisgICAgICAgICAgICB0b3RhbFdpZHRoICs9IGRvd25jYXN0PExlZ2FjeUlu
bGluZUZsb3dCb3g+KCpjaGlsZCkuZ2V0Rmxvd1NwYWNpbmdMb2dpY2FsV2lkdGgoKTsKICAgICB9
CiAgICAgcmV0dXJuIHRvdGFsV2lkdGg7CiB9CiAKLXN0YXRpYyB2b2lkIHNldEhhc1RleHREZXNj
ZW5kYW50c09uQW5jZXN0b3JzKElubGluZUZsb3dCb3gqIGJveCkKK3N0YXRpYyB2b2lkIHNldEhh
c1RleHREZXNjZW5kYW50c09uQW5jZXN0b3JzKExlZ2FjeUlubGluZUZsb3dCb3gqIGJveCkKIHsK
ICAgICB3aGlsZSAoYm94ICYmICFib3gtPmhhc1RleHREZXNjZW5kYW50cygpKSB7CiAgICAgICAg
IGJveC0+c2V0SGFzVGV4dERlc2NlbmRhbnRzKCk7CkBAIC05Miw3ICs5Miw3IEBAIHN0YXRpYyB2
b2lkIHNldEhhc1RleHREZXNjZW5kYW50c09uQW5jZXN0b3JzKElubGluZUZsb3dCb3gqIGJveCkK
ICAgICB9CiB9CiAKLXZvaWQgSW5saW5lRmxvd0JveDo6YWRkVG9MaW5lKExlZ2FjeUlubGluZUJv
eCogY2hpbGQpIAordm9pZCBMZWdhY3lJbmxpbmVGbG93Qm94OjphZGRUb0xpbmUoTGVnYWN5SW5s
aW5lQm94KiBjaGlsZCkgCiB7CiAgICAgQVNTRVJUKCFjaGlsZC0+cGFyZW50KCkpOwogICAgIEFT
U0VSVCghY2hpbGQtPm5leHRPbkxpbmUoKSk7CkBAIC0xMTQsOCArMTE0LDggQEAgdm9pZCBJbmxp
bmVGbG93Qm94OjphZGRUb0xpbmUoTGVnYWN5SW5saW5lQm94KiBjaGlsZCkKICAgICAgICAgaWYg
KGNoaWxkLT5yZW5kZXJlcigpLnBhcmVudCgpID09ICZyZW5kZXJlcigpKQogICAgICAgICAgICAg
bV9oYXNUZXh0Q2hpbGRyZW4gPSB0cnVlOwogICAgICAgICBzZXRIYXNUZXh0RGVzY2VuZGFudHNP
bkFuY2VzdG9ycyh0aGlzKTsKLSAgICB9IGVsc2UgaWYgKGlzPElubGluZUZsb3dCb3g+KCpjaGls
ZCkpIHsKLSAgICAgICAgaWYgKGRvd25jYXN0PElubGluZUZsb3dCb3g+KCpjaGlsZCkuaGFzVGV4
dERlc2NlbmRhbnRzKCkpCisgICAgfSBlbHNlIGlmIChpczxMZWdhY3lJbmxpbmVGbG93Qm94Pigq
Y2hpbGQpKSB7CisgICAgICAgIGlmIChkb3duY2FzdDxMZWdhY3lJbmxpbmVGbG93Qm94PigqY2hp
bGQpLmhhc1RleHREZXNjZW5kYW50cygpKQogICAgICAgICAgICAgc2V0SGFzVGV4dERlc2NlbmRh
bnRzT25BbmNlc3RvcnModGhpcyk7CiAgICAgfQogICAgIGlmIChkZXNjZW5kYW50c0hhdmVTYW1l
TGluZUhlaWdodEFuZEJhc2VsaW5lKCkgJiYgIWNoaWxkLT5yZW5kZXJlcigpLmlzT3V0T2ZGbG93
UG9zaXRpb25lZCgpKSB7CkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBJbmxpbmVGbG93Qm94Ojph
ZGRUb0xpbmUoTGVnYWN5SW5saW5lQm94KiBjaGlsZCkKICAgICAgICAgICAgICAgICBzaG91bGRD
bGVhckRlc2NlbmRhbnRzSGF2ZVNhbWVMaW5lSGVpZ2h0QW5kQmFzZWxpbmUgPSBjaGlsZElzSGFy
ZExpbmVicmVhazsKICAgICAgICAgICAgICAgICBtX2hhc0hhcmRMaW5lYnJlYWsgPSBtX2hhc0hh
cmRMaW5lYnJlYWsgfHwgY2hpbGRJc0hhcmRMaW5lYnJlYWs7CiAgICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgIGF1dG8mIGNoaWxkRmxvd0JveCA9IGRvd25jYXN0PElubGluZUZs
b3dCb3g+KCpjaGlsZCk7CisgICAgICAgICAgICAgICAgYXV0byYgY2hpbGRGbG93Qm94ID0gZG93
bmNhc3Q8TGVnYWN5SW5saW5lRmxvd0JveD4oKmNoaWxkKTsKICAgICAgICAgICAgICAgICAvLyBD
aGVjayB0aGUgY2hpbGQncyBiaXQsIGFuZCB0aGVuIGFsc28gY2hlY2sgZm9yIGRpZmZlcmVuY2Vz
IGluIGZvbnQsIGxpbmUtaGVpZ2h0LCB2ZXJ0aWNhbC1hbGlnbgogICAgICAgICAgICAgICAgIGlm
ICghY2hpbGRGbG93Qm94LmRlc2NlbmRhbnRzSGF2ZVNhbWVMaW5lSGVpZ2h0QW5kQmFzZWxpbmUo
KQogICAgICAgICAgICAgICAgICAgICB8fCAhcGFyZW50U3R5bGUuZm9udENhc2NhZGUoKS5mb250
TWV0cmljcygpLmhhc0lkZW50aWNhbEFzY2VudERlc2NlbnRBbmRMaW5lR2FwKGNoaWxkU3R5bGUu
Zm9udENhc2NhZGUoKS5mb250TWV0cmljcygpKQpAQCAtMTgxLDE0ICsxODEsMTQgQEAgdm9pZCBJ
bmxpbmVGbG93Qm94OjphZGRUb0xpbmUoTGVnYWN5SW5saW5lQm94KiBjaGlsZCkKICAgICAgICAg
aWYgKGxpbmVTdHlsZSgpLmhhc091dGxpbmVJblZpc3VhbE92ZXJmbG93KCkpCiAgICAgICAgICAg
ICBjbGVhcktub3duVG9IYXZlTm9PdmVyZmxvdygpOwogICAgICAgICAKLSAgICAgICAgaWYgKGtu
b3duVG9IYXZlTm9PdmVyZmxvdygpICYmIGlzPElubGluZUZsb3dCb3g+KCpjaGlsZCkgJiYgIWRv
d25jYXN0PElubGluZUZsb3dCb3g+KCpjaGlsZCkua25vd25Ub0hhdmVOb092ZXJmbG93KCkpCisg
ICAgICAgIGlmIChrbm93blRvSGF2ZU5vT3ZlcmZsb3coKSAmJiBpczxMZWdhY3lJbmxpbmVGbG93
Qm94PigqY2hpbGQpICYmICFkb3duY2FzdDxMZWdhY3lJbmxpbmVGbG93Qm94PigqY2hpbGQpLmtu
b3duVG9IYXZlTm9PdmVyZmxvdygpKQogICAgICAgICAgICAgY2xlYXJLbm93blRvSGF2ZU5vT3Zl
cmZsb3coKTsKICAgICB9CiAKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiB9CiAKLXZvaWQgSW5s
aW5lRmxvd0JveDo6cmVtb3ZlQ2hpbGQoTGVnYWN5SW5saW5lQm94KiBjaGlsZCkKK3ZvaWQgTGVn
YWN5SW5saW5lRmxvd0JveDo6cmVtb3ZlQ2hpbGQoTGVnYWN5SW5saW5lQm94KiBjaGlsZCkKIHsK
ICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIElubGlu
ZUZsb3dCb3g6OnJlbW92ZUNoaWxkKExlZ2FjeUlubGluZUJveCogY2hpbGQpCiAgICAgY2hlY2tD
b25zaXN0ZW5jeSgpOwogfQogCi12b2lkIElubGluZUZsb3dCb3g6OmRlbGV0ZUxpbmUoKQordm9p
ZCBMZWdhY3lJbmxpbmVGbG93Qm94OjpkZWxldGVMaW5lKCkKIHsKICAgICBMZWdhY3lJbmxpbmVC
b3gqIGNoaWxkID0gZmlyc3RDaGlsZCgpOwogICAgIExlZ2FjeUlubGluZUJveCogbmV4dCA9IG51
bGxwdHI7CkBAIC0yMzMsMTIgKzIzMywxMiBAQCB2b2lkIElubGluZUZsb3dCb3g6OmRlbGV0ZUxp
bmUoKQogICAgIGRlbGV0ZSB0aGlzOwogfQogCi12b2lkIElubGluZUZsb3dCb3g6OnJlbW92ZUxp
bmVCb3hGcm9tUmVuZGVyT2JqZWN0KCkKK3ZvaWQgTGVnYWN5SW5saW5lRmxvd0JveDo6cmVtb3Zl
TGluZUJveEZyb21SZW5kZXJPYmplY3QoKQogewogICAgIGRvd25jYXN0PFJlbmRlcklubGluZT4o
cmVuZGVyZXIoKSkubGluZUJveGVzKCkucmVtb3ZlTGluZUJveCh0aGlzKTsKIH0KIAotdm9pZCBJ
bmxpbmVGbG93Qm94OjpleHRyYWN0TGluZSgpCit2b2lkIExlZ2FjeUlubGluZUZsb3dCb3g6OmV4
dHJhY3RMaW5lKCkKIHsKICAgICBpZiAoIWV4dHJhY3RlZCgpKQogICAgICAgICBleHRyYWN0TGlu
ZUJveEZyb21SZW5kZXJPYmplY3QoKTsKQEAgLTI0NiwxMiArMjQ2LDEyIEBAIHZvaWQgSW5saW5l
Rmxvd0JveDo6ZXh0cmFjdExpbmUoKQogICAgICAgICBjaGlsZC0+ZXh0cmFjdExpbmUoKTsKIH0K
IAotdm9pZCBJbmxpbmVGbG93Qm94OjpleHRyYWN0TGluZUJveEZyb21SZW5kZXJPYmplY3QoKQor
dm9pZCBMZWdhY3lJbmxpbmVGbG93Qm94OjpleHRyYWN0TGluZUJveEZyb21SZW5kZXJPYmplY3Qo
KQogewogICAgIGRvd25jYXN0PFJlbmRlcklubGluZT4ocmVuZGVyZXIoKSkubGluZUJveGVzKCku
ZXh0cmFjdExpbmVCb3godGhpcyk7CiB9CiAKLXZvaWQgSW5saW5lRmxvd0JveDo6YXR0YWNoTGlu
ZSgpCit2b2lkIExlZ2FjeUlubGluZUZsb3dCb3g6OmF0dGFjaExpbmUoKQogewogICAgIGlmIChl
eHRyYWN0ZWQoKSkKICAgICAgICAgYXR0YWNoTGluZUJveFRvUmVuZGVyT2JqZWN0KCk7CkBAIC0y
NTksMTIgKzI1OSwxMiBAQCB2b2lkIElubGluZUZsb3dCb3g6OmF0dGFjaExpbmUoKQogICAgICAg
ICBjaGlsZC0+YXR0YWNoTGluZSgpOwogfQogCi12b2lkIElubGluZUZsb3dCb3g6OmF0dGFjaExp
bmVCb3hUb1JlbmRlck9iamVjdCgpCit2b2lkIExlZ2FjeUlubGluZUZsb3dCb3g6OmF0dGFjaExp
bmVCb3hUb1JlbmRlck9iamVjdCgpCiB7CiAgICAgZG93bmNhc3Q8UmVuZGVySW5saW5lPihyZW5k
ZXJlcigpKS5saW5lQm94ZXMoKS5hdHRhY2hMaW5lQm94KHRoaXMpOwogfQogCi12b2lkIElubGlu
ZUZsb3dCb3g6OmFkanVzdFBvc2l0aW9uKGZsb2F0IGR4LCBmbG9hdCBkeSkKK3ZvaWQgTGVnYWN5
SW5saW5lRmxvd0JveDo6YWRqdXN0UG9zaXRpb24oZmxvYXQgZHgsIGZsb2F0IGR5KQogewogICAg
IExlZ2FjeUlubGluZUJveDo6YWRqdXN0UG9zaXRpb24oZHgsIGR5KTsKICAgICBmb3IgKGF1dG8q
IGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dE9uTGluZSgp
KQpAQCAtMjg4LDcgKzI4OCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0xhc3RDaGlsZEZvclJl
bmRlcmVyKGNvbnN0IFJlbmRlckVsZW1lbnQmIGFuY2VzdG9yLCBjb25zdCBSCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChwYXJlbnQgPT0gJmFuY2VzdG9yKQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAKKwogICAgICAgICBjdXJyID0gcGFyZW50
OwogICAgICAgICBwYXJlbnQgPSBjdXJyLT5wYXJlbnQoKTsKICAgICB9CkBAIC0zMDcsOSArMzA3
LDkgQEAgc3RhdGljIGJvb2wgaXNBbmNlc3RvckFuZFdpdGhpbkJsb2NrKGNvbnN0IFJlbmRlcklu
bGluZSYgYW5jZXN0b3IsIGNvbnN0IFJlbmRlck8KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZv
aWQgSW5saW5lRmxvd0JveDo6ZGV0ZXJtaW5lU3BhY2luZ0ZvckZsb3dCb3hlcyhib29sIGxhc3RM
aW5lLCBib29sIGlzTG9naWNhbGx5TGFzdFJ1bldyYXBwZWQsIFJlbmRlck9iamVjdCogbG9naWNh
bGx5TGFzdFJ1blJlbmRlcmVyKQordm9pZCBMZWdhY3lJbmxpbmVGbG93Qm94OjpkZXRlcm1pbmVT
cGFjaW5nRm9yRmxvd0JveGVzKGJvb2wgbGFzdExpbmUsIGJvb2wgaXNMb2dpY2FsbHlMYXN0UnVu
V3JhcHBlZCwgUmVuZGVyT2JqZWN0KiBsb2dpY2FsbHlMYXN0UnVuUmVuZGVyZXIpCiB7Ci0gICAg
Ly8gQWxsIGJveGVzIHN0YXJ0IG9mZiBvcGVuLiAgVGhleSB3aWxsIG5vdCBhcHBseSBhbnkgbWFy
Z2lucy9ib3JkZXIvcGFkZGluZyBvbgorICAgIC8vIEFsbCBib3hlcyBzdGFydCBvZmYgb3Blbi4g
VGhleSB3aWxsIG5vdCBhcHBseSBhbnkgbWFyZ2lucy9ib3JkZXIvcGFkZGluZyBvbgogICAgIC8v
IGFueSBzaWRlLgogICAgIGJvb2wgaW5jbHVkZUxlZnRFZGdlID0gZmFsc2U7CiAgICAgYm9vbCBp
bmNsdWRlUmlnaHRFZGdlID0gZmFsc2U7CkBAIC0zMjAsNyArMzIwLDcgQEAgdm9pZCBJbmxpbmVG
bG93Qm94OjpkZXRlcm1pbmVTcGFjaW5nRm9yRmxvd0JveGVzKGJvb2wgbGFzdExpbmUsIGJvb2wg
aXNMb2dpY2FsbHkKIAogICAgICAgICBib29sIGx0ciA9IHJlbmRlcmVyKCkuc3R5bGUoKS5pc0xl
ZnRUb1JpZ2h0RGlyZWN0aW9uKCk7CiAKLSAgICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGFsbCBp
bml0aWFsIGxpbmVzIGFyZSB1bmNvbnN0cnVjdGVkLiAgSWYgc28sIHRoZW4KKyAgICAgICAgLy8g
Q2hlY2sgdG8gc2VlIGlmIGFsbCBpbml0aWFsIGxpbmVzIGFyZSB1bmNvbnN0cnVjdGVkLiBJZiBz
bywgdGhlbgogICAgICAgICAvLyB3ZSBrbm93IHRoZSBpbmxpbmUgYmVnYW4gb24gdGhpcyBsaW5l
ICh1bmxlc3Mgd2UgYXJlIGEgY29udGludWF0aW9uKS4KICAgICAgICAgY29uc3QgYXV0byYgbGlu
ZUJveExpc3QgPSBpbmxpbmVGbG93LmxpbmVCb3hlcygpOwogICAgICAgICBpZiAoIWxpbmVCb3hM
aXN0LmZpcnN0TGluZUJveCgpLT5pc0NvbnN0cnVjdGVkKCkgJiYgIWlubGluZUZsb3cuaXNDb250
aW51YXRpb24oKSkgewpAQCAtMzY0LDEyICszNjQsMTIgQEAgdm9pZCBJbmxpbmVGbG93Qm94Ojpk
ZXRlcm1pbmVTcGFjaW5nRm9yRmxvd0JveGVzKGJvb2wgbGFzdExpbmUsIGJvb2wgaXNMb2dpY2Fs
bHkKIAogICAgIC8vIFJlY3VyIGludG8gb3VyIGNoaWxkcmVuLgogICAgIGZvciAoYXV0byogY2hp
bGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0T25MaW5lKCkpIHsK
LSAgICAgICAgaWYgKGlzPElubGluZUZsb3dCb3g+KCpjaGlsZCkpCi0gICAgICAgICAgICBkb3du
Y2FzdDxJbmxpbmVGbG93Qm94PigqY2hpbGQpLmRldGVybWluZVNwYWNpbmdGb3JGbG93Qm94ZXMo
bGFzdExpbmUsIGlzTG9naWNhbGx5TGFzdFJ1bldyYXBwZWQsIGxvZ2ljYWxseUxhc3RSdW5SZW5k
ZXJlcik7CisgICAgICAgIGlmIChpczxMZWdhY3lJbmxpbmVGbG93Qm94PigqY2hpbGQpKQorICAg
ICAgICAgICAgZG93bmNhc3Q8TGVnYWN5SW5saW5lRmxvd0JveD4oKmNoaWxkKS5kZXRlcm1pbmVT
cGFjaW5nRm9yRmxvd0JveGVzKGxhc3RMaW5lLCBpc0xvZ2ljYWxseUxhc3RSdW5XcmFwcGVkLCBs
b2dpY2FsbHlMYXN0UnVuUmVuZGVyZXIpOwogICAgIH0KIH0KIAotZmxvYXQgSW5saW5lRmxvd0Jv
eDo6cGxhY2VCb3hlc0luSW5saW5lRGlyZWN0aW9uKGZsb2F0IGxvZ2ljYWxMZWZ0LCBib29sJiBu
ZWVkc1dvcmRTcGFjaW5nKQorZmxvYXQgTGVnYWN5SW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc0lu
SW5saW5lRGlyZWN0aW9uKGZsb2F0IGxvZ2ljYWxMZWZ0LCBib29sJiBuZWVkc1dvcmRTcGFjaW5n
KQogewogICAgIC8vIFNldCBvdXIgeCBwb3NpdGlvbi4KICAgICBiZWdpblBsYWNpbmdCb3hSYW5n
ZXNJbklubGluZURpcmVjdGlvbihsb2dpY2FsTGVmdCk7CkBAIC0zODcsNyArMzg3LDcgQEAgZmxv
YXQgSW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc0luSW5saW5lRGlyZWN0aW9uKGZsb2F0IGxvZ2lj
YWxMZWZ0LCBib29sJiBuZWVkc1cKICAgICByZXR1cm4gbG9naWNhbExlZnQ7CiB9CiAKLWZsb2F0
IElubGluZUZsb3dCb3g6OnBsYWNlQm94UmFuZ2VJbklubGluZURpcmVjdGlvbihMZWdhY3lJbmxp
bmVCb3gqIGZpcnN0Q2hpbGQsIExlZ2FjeUlubGluZUJveCogbGFzdENoaWxkLCBmbG9hdCYgbG9n
aWNhbExlZnQsIGZsb2F0JiBtaW5Mb2dpY2FsTGVmdCwgZmxvYXQmIG1heExvZ2ljYWxSaWdodCwg
Ym9vbCYgbmVlZHNXb3JkU3BhY2luZykKK2Zsb2F0IExlZ2FjeUlubGluZUZsb3dCb3g6OnBsYWNl
Qm94UmFuZ2VJbklubGluZURpcmVjdGlvbihMZWdhY3lJbmxpbmVCb3gqIGZpcnN0Q2hpbGQsIExl
Z2FjeUlubGluZUJveCogbGFzdENoaWxkLCBmbG9hdCYgbG9naWNhbExlZnQsIGZsb2F0JiBtaW5M
b2dpY2FsTGVmdCwgZmxvYXQmIG1heExvZ2ljYWxSaWdodCwgYm9vbCYgbmVlZHNXb3JkU3BhY2lu
ZykKIHsKICAgICBmbG9hdCB0b3RhbEV4cGFuc2lvbiA9IDA7CiAgICAgZm9yIChhdXRvKiBjaGls
ZCA9IGZpcnN0Q2hpbGQ7IGNoaWxkICYmIGNoaWxkICE9IGxhc3RDaGlsZDsgY2hpbGQgPSBjaGls
ZC0+bmV4dE9uTGluZSgpKSB7CkBAIC00MTIsMTMgKzQxMiwxMyBAQCBmbG9hdCBJbmxpbmVGbG93
Qm94OjpwbGFjZUJveFJhbmdlSW5JbmxpbmVEaXJlY3Rpb24oTGVnYWN5SW5saW5lQm94KiBmaXJz
dENoaWxkLAogICAgICAgICAgICAgICAgICAgICBjaGlsZC0+c2V0TG9naWNhbExlZnQobG9naWNh
bExlZnQpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgLy8gT3Vy
IG9mZnNldCB0aGF0IHdlIGNhY2hlIG5lZWRzIHRvIGJlIGZyb20gdGhlIGVkZ2Ugb2YgdGhlIHJp
Z2h0IGJvcmRlciBib3ggYW5kCi0gICAgICAgICAgICAgICAgICAgIC8vIG5vdCB0aGUgbGVmdCBi
b3JkZXIgYm94LiAgV2UgaGF2ZSB0byBzdWJ0cmFjdCB8eHwgZnJvbSB0aGUgd2lkdGggb2YgdGhl
IGJsb2NrCisgICAgICAgICAgICAgICAgICAgIC8vIG5vdCB0aGUgbGVmdCBib3JkZXIgYm94LiBX
ZSBoYXZlIHRvIHN1YnRyYWN0IHx4fCBmcm9tIHRoZSB3aWR0aCBvZiB0aGUgYmxvY2sKICAgICAg
ICAgICAgICAgICAgICAgLy8gKHdoaWNoIGNhbiBiZSBvYnRhaW5lZCBmcm9tIHRoZSByb290IGxp
bmUgYm94KS4KICAgICAgICAgICAgICAgICAgICAgY2hpbGQtPnNldExvZ2ljYWxMZWZ0KHJvb3Qo
KS5ibG9ja0Zsb3coKS5sb2dpY2FsV2lkdGgoKSAtIGxvZ2ljYWxMZWZ0KTsKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsgLy8gVGhlIHBvc2l0aW9uZWQgb2JqZWN0IGhhcyBubyBlZmZlY3Qgb24g
dGhlIHdpZHRoLgogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGlzPFJlbmRlcklubGlu
ZT4oY2hpbGQtPnJlbmRlcmVyKCkpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byYgZmxvdyA9IGRv
d25jYXN0PElubGluZUZsb3dCb3g+KCpjaGlsZCk7CisgICAgICAgICAgICAgICAgYXV0byYgZmxv
dyA9IGRvd25jYXN0PExlZ2FjeUlubGluZUZsb3dCb3g+KCpjaGlsZCk7CiAgICAgICAgICAgICAg
ICAgbG9naWNhbExlZnQgKz0gZmxvdy5tYXJnaW5Mb2dpY2FsTGVmdCgpOwogICAgICAgICAgICAg
ICAgIGlmIChrbm93blRvSGF2ZU5vT3ZlcmZsb3coKSkKICAgICAgICAgICAgICAgICAgICAgbWlu
TG9naWNhbExlZnQgPSBzdGQ6Om1pbihsb2dpY2FsTGVmdCwgbWluTG9naWNhbExlZnQpOwpAQCAt
NDUwLDcgKzQ1MCw3IEBAIGZsb2F0IElubGluZUZsb3dCb3g6OnBsYWNlQm94UmFuZ2VJbklubGlu
ZURpcmVjdGlvbihMZWdhY3lJbmxpbmVCb3gqIGZpcnN0Q2hpbGQsCiAgICAgcmV0dXJuIGxvZ2lj
YWxMZWZ0OwogfQogCi1ib29sIElubGluZUZsb3dCb3g6OnJlcXVpcmVzSWRlb2dyYXBoaWNCYXNl
bGluZShjb25zdCBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCYgdGV4dEJveERhdGFN
YXApIGNvbnN0Citib29sIExlZ2FjeUlubGluZUZsb3dCb3g6OnJlcXVpcmVzSWRlb2dyYXBoaWNC
YXNlbGluZShjb25zdCBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCYgdGV4dEJveERh
dGFNYXApIGNvbnN0CiB7CiAgICAgaWYgKGlzSG9yaXpvbnRhbCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC00NjQsOCArNDY0LDggQEAgYm9vbCBJbmxpbmVGbG93Qm94OjpyZXF1aXJlc0lk
ZW9ncmFwaGljQmFzZWxpbmUoY29uc3QgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm8KICAgICAg
ICAgaWYgKGNoaWxkLT5yZW5kZXJlcigpLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQogICAgICAg
ICAgICAgY29udGludWU7IC8vIFBvc2l0aW9uZWQgcGxhY2Vob2xkZXJzIGRvbid0IGFmZmVjdCBj
YWxjdWxhdGlvbnMuCiAgICAgICAgIAotICAgICAgICBpZiAoaXM8SW5saW5lRmxvd0JveD4oKmNo
aWxkKSkgewotICAgICAgICAgICAgaWYgKGRvd25jYXN0PElubGluZUZsb3dCb3g+KCpjaGlsZCku
cmVxdWlyZXNJZGVvZ3JhcGhpY0Jhc2VsaW5lKHRleHRCb3hEYXRhTWFwKSkKKyAgICAgICAgaWYg
KGlzPExlZ2FjeUlubGluZUZsb3dCb3g+KCpjaGlsZCkpIHsKKyAgICAgICAgICAgIGlmIChkb3du
Y2FzdDxMZWdhY3lJbmxpbmVGbG93Qm94PigqY2hpbGQpLnJlcXVpcmVzSWRlb2dyYXBoaWNCYXNl
bGluZSh0ZXh0Qm94RGF0YU1hcCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoY2hpbGQtPmxpbmVTdHlsZSgpLmZvbnRDYXNj
YWRlKCkucHJpbWFyeUZvbnQoKS5oYXNWZXJ0aWNhbEdseXBocygpKQpAQCAtNDk5LDcgKzQ5OSw3
IEBAIHN0YXRpYyBib29sIHZlcnRpY2FsQWxpZ25BcHBsaWVzKGNvbnN0IFJlbmRlck9iamVjdCYg
cmVuZGVyZXIpCiAgICAgcmV0dXJuIChwYXJlbnRSZW5kZXJlci5pc0lubGluZSgpICYmIHBhcmVu
dFJlbmRlcmVyLnN0eWxlKCkuZGlzcGxheSgpICE9IERpc3BsYXlUeXBlOjpJbmxpbmVCbG9jaykg
fHwgcGFyZW50UmVuZGVyZXIuaXNUYWJsZUNlbGwoKTsKIH0KIAotdm9pZCBJbmxpbmVGbG93Qm94
OjphZGp1c3RNYXhBc2NlbnRBbmREZXNjZW50KExheW91dFVuaXQmIG1heEFzY2VudCwgTGF5b3V0
VW5pdCYgbWF4RGVzY2VudCwgTGF5b3V0VW5pdCBtYXhQb3NpdGlvblRvcCwgTGF5b3V0VW5pdCBt
YXhQb3NpdGlvbkJvdHRvbSkKK3ZvaWQgTGVnYWN5SW5saW5lRmxvd0JveDo6YWRqdXN0TWF4QXNj
ZW50QW5kRGVzY2VudChMYXlvdXRVbml0JiBtYXhBc2NlbnQsIExheW91dFVuaXQmIG1heERlc2Nl
bnQsIExheW91dFVuaXQgbWF4UG9zaXRpb25Ub3AsIExheW91dFVuaXQgbWF4UG9zaXRpb25Cb3R0
b20pCiB7CiAgICAgZm9yIChhdXRvKiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxk
ID0gY2hpbGQtPm5leHRPbkxpbmUoKSkgewogICAgICAgICAvLyBUaGUgY29tcHV0ZWQgbGluZWhl
aWdodCBuZWVkcyB0byBiZSBleHRlbmRlZCBmb3IgdGhlCkBAIC01MTIsOCArNTEyLDcgQEAgdm9p
ZCBJbmxpbmVGbG93Qm94OjphZGp1c3RNYXhBc2NlbnRBbmREZXNjZW50KExheW91dFVuaXQmIG1h
eEFzY2VudCwgTGF5b3V0VW5pdCYKICAgICAgICAgICAgIGlmIChjaGlsZC0+dmVydGljYWxBbGln
bigpID09IFZlcnRpY2FsQWxpZ246OlRvcCkgewogICAgICAgICAgICAgICAgIGlmIChtYXhBc2Nl
bnQgKyBtYXhEZXNjZW50IDwgbGluZUhlaWdodCkKICAgICAgICAgICAgICAgICAgICAgbWF4RGVz
Y2VudCA9IGxpbmVIZWlnaHQgLSBtYXhBc2NlbnQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaWYgKG1heEFz
Y2VudCArIG1heERlc2NlbnQgPCBsaW5lSGVpZ2h0KQogICAgICAgICAgICAgICAgICAgICBtYXhB
c2NlbnQgPSBsaW5lSGVpZ2h0IC0gbWF4RGVzY2VudDsKICAgICAgICAgICAgIH0KQEAgLTUyMiwx
MiArNTIxLDEyIEBAIHZvaWQgSW5saW5lRmxvd0JveDo6YWRqdXN0TWF4QXNjZW50QW5kRGVzY2Vu
dChMYXlvdXRVbml0JiBtYXhBc2NlbnQsIExheW91dFVuaXQmCiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoaXM8SW5saW5lRmxvd0JveD4oKmNoaWxkKSkK
LSAgICAgICAgICAgIGRvd25jYXN0PElubGluZUZsb3dCb3g+KCpjaGlsZCkuYWRqdXN0TWF4QXNj
ZW50QW5kRGVzY2VudChtYXhBc2NlbnQsIG1heERlc2NlbnQsIG1heFBvc2l0aW9uVG9wLCBtYXhQ
b3NpdGlvbkJvdHRvbSk7CisgICAgICAgIGlmIChpczxMZWdhY3lJbmxpbmVGbG93Qm94PigqY2hp
bGQpKQorICAgICAgICAgICAgZG93bmNhc3Q8TGVnYWN5SW5saW5lRmxvd0JveD4oKmNoaWxkKS5h
ZGp1c3RNYXhBc2NlbnRBbmREZXNjZW50KG1heEFzY2VudCwgbWF4RGVzY2VudCwgbWF4UG9zaXRp
b25Ub3AsIG1heFBvc2l0aW9uQm90dG9tKTsKICAgICB9CiB9CiAKLXZvaWQgSW5saW5lRmxvd0Jv
eDo6Y29tcHV0ZUxvZ2ljYWxCb3hIZWlnaHRzKExlZ2FjeVJvb3RJbmxpbmVCb3gmIHJvb3RCb3gs
IExheW91dFVuaXQmIG1heFBvc2l0aW9uVG9wLCBMYXlvdXRVbml0JiBtYXhQb3NpdGlvbkJvdHRv
bSwKK3ZvaWQgTGVnYWN5SW5saW5lRmxvd0JveDo6Y29tcHV0ZUxvZ2ljYWxCb3hIZWlnaHRzKExl
Z2FjeVJvb3RJbmxpbmVCb3gmIHJvb3RCb3gsIExheW91dFVuaXQmIG1heFBvc2l0aW9uVG9wLCBM
YXlvdXRVbml0JiBtYXhQb3NpdGlvbkJvdHRvbSwKICAgICBMYXlvdXRVbml0JiBtYXhBc2NlbnQs
IExheW91dFVuaXQmIG1heERlc2NlbnQsIGJvb2wmIHNldE1heEFzY2VudCwgYm9vbCYgc2V0TWF4
RGVzY2VudCwKICAgICBib29sIHN0cmljdE1vZGUsIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0Zv
bnRzTWFwJiB0ZXh0Qm94RGF0YU1hcCwKICAgICBGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBW
ZXJ0aWNhbFBvc2l0aW9uQ2FjaGUmIHZlcnRpY2FsUG9zaXRpb25DYWNoZSkKQEAgLTU3NiwxMyAr
NTc1LDEzIEBAIHZvaWQgSW5saW5lRmxvd0JveDo6Y29tcHV0ZUxvZ2ljYWxCb3hIZWlnaHRzKExl
Z2FjeVJvb3RJbmxpbmVCb3gmIHJvb3RCb3gsIExheW91CiAgICAgICAgIGlmIChjaGlsZC0+cmVu
ZGVyZXIoKS5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOyAv
LyBQb3NpdGlvbmVkIHBsYWNlaG9sZGVycyBkb24ndCBhZmZlY3QgY2FsY3VsYXRpb25zLgogICAg
ICAgICAKLSAgICAgICAgSW5saW5lRmxvd0JveCogaW5saW5lRmxvd0JveCA9IGlzPElubGluZUZs
b3dCb3g+KCpjaGlsZCkgPyBkb3duY2FzdDxJbmxpbmVGbG93Qm94PihjaGlsZCkgOiBudWxscHRy
OworICAgICAgICBMZWdhY3lJbmxpbmVGbG93Qm94KiBpbmxpbmVGbG93Qm94ID0gaXM8TGVnYWN5
SW5saW5lRmxvd0JveD4oKmNoaWxkKSA/IGRvd25jYXN0PExlZ2FjeUlubGluZUZsb3dCb3g+KGNo
aWxkKSA6IG51bGxwdHI7CiAgICAgICAgIAogICAgICAgICBib29sIGFmZmVjdHNBc2NlbnQgPSBm
YWxzZTsKICAgICAgICAgYm9vbCBhZmZlY3RzRGVzY2VudCA9IGZhbHNlOwogICAgICAgICAKICAg
ICAgICAgLy8gVGhlIHZlcnRpY2FsUG9zaXRpb25Gb3JCb3ggZnVuY3Rpb24gcmV0dXJucyB0aGUg
ZGlzdGFuY2UgYmV0d2VlbiB0aGUgY2hpbGQgYm94J3MgYmFzZWxpbmUKLSAgICAgICAgLy8gYW5k
IHRoZSByb290IGJveCdzIGJhc2VsaW5lLiAgVGhlIHZhbHVlIGlzIG5lZ2F0aXZlIGlmIHRoZSBj
aGlsZCBib3gncyBiYXNlbGluZSBpcyBhYm92ZSB0aGUKKyAgICAgICAgLy8gYW5kIHRoZSByb290
IGJveCdzIGJhc2VsaW5lLiBUaGUgdmFsdWUgaXMgbmVnYXRpdmUgaWYgdGhlIGNoaWxkIGJveCdz
IGJhc2VsaW5lIGlzIGFib3ZlIHRoZQogICAgICAgICAvLyByb290IGJveCdzIGJhc2VsaW5lLCBh
bmQgaXQgaXMgcG9zaXRpdmUgaWYgdGhlIGNoaWxkIGJveCdzIGJhc2VsaW5lIGlzIGJlbG93IHRo
ZSByb290IGJveCdzIGJhc2VsaW5lLgogICAgICAgICBjaGlsZC0+c2V0TG9naWNhbFRvcChyb290
Qm94LnZlcnRpY2FsUG9zaXRpb25Gb3JCb3goY2hpbGQsIHZlcnRpY2FsUG9zaXRpb25DYWNoZSkp
OwogICAgICAgICAKQEAgLTYwMywxMCArNjAyLDEwIEBAIHZvaWQgSW5saW5lRmxvd0JveDo6Y29t
cHV0ZUxvZ2ljYWxCb3hIZWlnaHRzKExlZ2FjeVJvb3RJbmxpbmVCb3gmIHJvb3RCb3gsIExheW91
CiAgICAgICAgICAgICB8fCAoaW5saW5lRmxvd0JveC0+ZGVzY2VuZGFudHNIYXZlU2FtZUxpbmVI
ZWlnaHRBbmRCYXNlbGluZSgpICYmIGlubGluZUZsb3dCb3gtPmhhc1RleHREZXNjZW5kYW50cygp
KQogICAgICAgICAgICAgfHwgaW5saW5lRmxvd0JveC0+cmVuZGVyZXIoKS5oYXNJbmxpbmVEaXJl
Y3Rpb25Cb3JkZXJzT3JQYWRkaW5nKCkKICAgICAgICAgICAgIHx8IGlubGluZUZsb3dCb3gtPmhh
c0hhcmRMaW5lYnJlYWsoKSkgewotICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHRoZXNlIHZhbHVl
cyBjYW4gYmUgbmVnYXRpdmUuICBFdmVuIHRob3VnaCB3ZSBvbmx5IGFmZmVjdCB0aGUgbWF4QXNj
ZW50IGFuZCBtYXhEZXNjZW50IHZhbHVlcworICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHRoZXNl
IHZhbHVlcyBjYW4gYmUgbmVnYXRpdmUuIEV2ZW4gdGhvdWdoIHdlIG9ubHkgYWZmZWN0IHRoZSBt
YXhBc2NlbnQgYW5kIG1heERlc2NlbnQgdmFsdWVzCiAgICAgICAgICAgICAvLyBpZiBvdXIgYm94
IChleGNsdWRpbmcgbGluZS1oZWlnaHQpIHdhcyBhYm92ZSAoZm9yIGFzY2VudCkgb3IgYmVsb3cg
KGZvciBkZXNjZW50KSB0aGUgcm9vdCBiYXNlbGluZSwgb25jZSB5b3UgZmFjdG9yIGluIGxpbmUt
aGVpZ2h0Ci0gICAgICAgICAgICAvLyB0aGUgZmluYWwgYm94IGNhbiBlbmQgdXAgYmVpbmcgZnVs
bHkgYWJvdmUgb3IgZnVsbHkgYmVsb3cgdGhlIHJvb3QgYm94J3MgYmFzZWxpbmUhICBUaGlzIGlz
IG9rLCBidXQgd2hhdCBpdAotICAgICAgICAgICAgLy8gbWVhbnMgaXMgdGhhdCBhc2NlbnQgYW5k
IGRlc2NlbnQgKGluY2x1ZGluZyBsZWFkaW5nKSwgY2FuIGVuZCB1cCBiZWluZyBuZWdhdGl2ZS4g
IFRoZSBzZXRNYXhBc2NlbnQgYW5kCisgICAgICAgICAgICAvLyB0aGUgZmluYWwgYm94IGNhbiBl
bmQgdXAgYmVpbmcgZnVsbHkgYWJvdmUgb3IgZnVsbHkgYmVsb3cgdGhlIHJvb3QgYm94J3MgYmFz
ZWxpbmUhIFRoaXMgaXMgb2ssIGJ1dCB3aGF0IGl0CisgICAgICAgICAgICAvLyBtZWFucyBpcyB0
aGF0IGFzY2VudCBhbmQgZGVzY2VudCAoaW5jbHVkaW5nIGxlYWRpbmcpLCBjYW4gZW5kIHVwIGJl
aW5nIG5lZ2F0aXZlLiBUaGUgc2V0TWF4QXNjZW50IGFuZAogICAgICAgICAgICAgLy8gc2V0TWF4
RGVzY2VudCBib29sZWFucyBhcmUgdXNlZCB0byBlbnN1cmUgdGhhdCB3ZSdyZSB3aWxsaW5nIHRv
IGluaXRpYWxseSBzZXQgbWF4QXNjZW50L0Rlc2NlbnQgdG8gbmVnYXRpdmUKICAgICAgICAgICAg
IC8vIHZhbHVlcy4KICAgICAgICAgICAgIGFzY2VudCAtPSBmbG9vcmYoY2hpbGQtPmxvZ2ljYWxU
b3AoKSk7CkBAIC02NDcsNyArNjQ2LDcgQEAgdm9pZCBJbmxpbmVGbG93Qm94Ojpjb21wdXRlTG9n
aWNhbEJveEhlaWdodHMoTGVnYWN5Um9vdElubGluZUJveCYgcm9vdEJveCwgTGF5b3UKICAgICB9
CiB9CiAKLXZvaWQgSW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc0luQmxvY2tEaXJlY3Rpb24oTGF5
b3V0VW5pdCB0b3AsIExheW91dFVuaXQgbWF4SGVpZ2h0LCBpbnQgbWF4QXNjZW50LCBib29sIHN0
cmljdE1vZGUsIExheW91dFVuaXQmIGxpbmVUb3AsIExheW91dFVuaXQmIGxpbmVCb3R0b20sIGJv
b2wmIHNldExpbmVUb3AsCit2b2lkIExlZ2FjeUlubGluZUZsb3dCb3g6OnBsYWNlQm94ZXNJbkJs
b2NrRGlyZWN0aW9uKExheW91dFVuaXQgdG9wLCBMYXlvdXRVbml0IG1heEhlaWdodCwgaW50IG1h
eEFzY2VudCwgYm9vbCBzdHJpY3RNb2RlLCBMYXlvdXRVbml0JiBsaW5lVG9wLCBMYXlvdXRVbml0
JiBsaW5lQm90dG9tLCBib29sJiBzZXRMaW5lVG9wLAogICAgIExheW91dFVuaXQmIGxpbmVUb3BJ
bmNsdWRpbmdNYXJnaW5zLCBMYXlvdXRVbml0JiBsaW5lQm90dG9tSW5jbHVkaW5nTWFyZ2lucywg
Ym9vbCYgaGFzQW5ub3RhdGlvbnNCZWZvcmUsIGJvb2wmIGhhc0Fubm90YXRpb25zQWZ0ZXIsIEZv
bnRCYXNlbGluZSBiYXNlbGluZVR5cGUpCiB7CiAgICAgYm9vbCBpc1Jvb3RCb3ggPSBpc1Jvb3RJ
bmxpbmVCb3goKTsKQEAgLTY3NCw3ICs2NzMsNyBAQCB2b2lkIElubGluZUZsb3dCb3g6OnBsYWNl
Qm94ZXNJbkJsb2NrRGlyZWN0aW9uKExheW91dFVuaXQgdG9wLCBMYXlvdXRVbml0IG1heEhlaQog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBJbmxpbmVGbG93Qm94
KiBpbmxpbmVGbG93Qm94ID0gaXM8SW5saW5lRmxvd0JveD4oKmNoaWxkKSA/IGRvd25jYXN0PElu
bGluZUZsb3dCb3g+KGNoaWxkKSA6IG51bGxwdHI7CisgICAgICAgIExlZ2FjeUlubGluZUZsb3dC
b3gqIGlubGluZUZsb3dCb3ggPSBpczxMZWdhY3lJbmxpbmVGbG93Qm94PigqY2hpbGQpID8gZG93
bmNhc3Q8TGVnYWN5SW5saW5lRmxvd0JveD4oY2hpbGQpIDogbnVsbHB0cjsKICAgICAgICAgYm9v
bCBjaGlsZEFmZmVjdHNUb3BCb3R0b21Qb3MgPSB0cnVlOwogCiAgICAgICAgIGlmIChjaGlsZC0+
dmVydGljYWxBbGlnbigpID09IFZlcnRpY2FsQWxpZ246OlRvcCAmJiB2ZXJ0aWNhbEFsaWduQXBw
bGllcyhjaGlsZC0+cmVuZGVyZXIoKSkpCkBAIC02OTUsMTEgKzY5NCwxMSBAQCB2b2lkIElubGlu
ZUZsb3dCb3g6OnBsYWNlQm94ZXNJbkJsb2NrRGlyZWN0aW9uKExheW91dFVuaXQgdG9wLCBMYXlv
dXRVbml0IG1heEhlaQogICAgICAgICBMYXlvdXRVbml0IGJveEhlaWdodEluY2x1ZGluZ01hcmdp
bnMgPSBib3hIZWlnaHQ7CiAKICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIGNoaWxkTGluZVN0
eWxlID0gY2hpbGQtPmxpbmVTdHlsZSgpOwotICAgICAgICBpZiAoY2hpbGQtPmJlaGF2ZXNMaWtl
VGV4dCgpIHx8IGlzPElubGluZUZsb3dCb3g+KCpjaGlsZCkpIHsKKyAgICAgICAgaWYgKGNoaWxk
LT5iZWhhdmVzTGlrZVRleHQoKSB8fCBpczxMZWdhY3lJbmxpbmVGbG93Qm94PigqY2hpbGQpKSB7
CiAgICAgICAgICAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MgPSBjaGlsZExpbmVT
dHlsZS5mb250TWV0cmljcygpOwogICAgICAgICAgICAgbmV3TG9naWNhbFRvcCArPSBjaGlsZC0+
YmFzZWxpbmVQb3NpdGlvbihiYXNlbGluZVR5cGUpIC0gZm9udE1ldHJpY3MuYXNjZW50KGJhc2Vs
aW5lVHlwZSk7Ci0gICAgICAgICAgICBpZiAoaXM8SW5saW5lRmxvd0JveD4oKmNoaWxkKSkgewot
ICAgICAgICAgICAgICAgIFJlbmRlckJveE1vZGVsT2JqZWN0JiBib3hPYmplY3QgPSBkb3duY2Fz
dDxJbmxpbmVGbG93Qm94PigqY2hpbGQpLnJlbmRlcmVyKCk7CisgICAgICAgICAgICBpZiAoaXM8
TGVnYWN5SW5saW5lRmxvd0JveD4oKmNoaWxkKSkgeworICAgICAgICAgICAgICAgIFJlbmRlckJv
eE1vZGVsT2JqZWN0JiBib3hPYmplY3QgPSBkb3duY2FzdDxMZWdhY3lJbmxpbmVGbG93Qm94Pigq
Y2hpbGQpLnJlbmRlcmVyKCk7CiAgICAgICAgICAgICAgICAgbmV3TG9naWNhbFRvcCAtPSBjaGls
ZExpbmVTdHlsZS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpCiAgICAgICAgICAgICAgICAgICAg
ID8gYm94T2JqZWN0LmJvcmRlclRvcCgpICsgYm94T2JqZWN0LnBhZGRpbmdUb3AoKQogICAgICAg
ICAgICAgICAgICAgICA6IGJveE9iamVjdC5ib3JkZXJSaWdodCgpICsgYm94T2JqZWN0LnBhZGRp
bmdSaWdodCgpOwpAQCAtNzU4LDkgKzc1NywxMCBAQCB2b2lkIElubGluZUZsb3dCb3g6OnBsYWNl
Qm94ZXNJbkJsb2NrRGlyZWN0aW9uKExheW91dFVuaXQgdG9wLCBMYXlvdXRVbml0IG1heEhlaQog
CiAgICAgICAgIC8vIEFkanVzdCBib3hlcyB0byB1c2UgdGhlaXIgcmVhbCBib3ggeS9oZWlnaHQg
YW5kIG5vdCB0aGUgbG9naWNhbCBoZWlnaHQgKGFzIGRpY3RhdGVkIGJ5CiAgICAgICAgIC8vIGxp
bmUtaGVpZ2h0KS4KLSAgICAgICAgaWYgKGlubGluZUZsb3dCb3gpCisgICAgICAgIGlmIChpbmxp
bmVGbG93Qm94KSB7CiAgICAgICAgICAgICBpbmxpbmVGbG93Qm94LT5wbGFjZUJveGVzSW5CbG9j
a0RpcmVjdGlvbih0b3AsIG1heEhlaWdodCwgbWF4QXNjZW50LCBzdHJpY3RNb2RlLCBsaW5lVG9w
LCBsaW5lQm90dG9tLCBzZXRMaW5lVG9wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGluZVRvcEluY2x1ZGluZ01hcmdpbnMsIGxpbmVCb3R0
b21JbmNsdWRpbmdNYXJnaW5zLCBoYXNBbm5vdGF0aW9uc0JlZm9yZSwgaGFzQW5ub3RhdGlvbnNB
ZnRlciwgYmFzZWxpbmVUeXBlKTsKKyAgICAgICAgICAgICAgICBsaW5lVG9wSW5jbHVkaW5nTWFy
Z2lucywgbGluZUJvdHRvbUluY2x1ZGluZ01hcmdpbnMsIGhhc0Fubm90YXRpb25zQmVmb3JlLCBo
YXNBbm5vdGF0aW9uc0FmdGVyLCBiYXNlbGluZVR5cGUpOworICAgICAgICB9CiAgICAgfQogCiAg
ICAgaWYgKGlzUm9vdEJveCkgewpAQCAtNzgyLDcgKzc4Miw3IEBAIHZvaWQgSW5saW5lRmxvd0Jv
eDo6cGxhY2VCb3hlc0luQmxvY2tEaXJlY3Rpb24oTGF5b3V0VW5pdCB0b3AsIExheW91dFVuaXQg
bWF4SGVpCiAgICAgfQogfQogCi12b2lkIElubGluZUZsb3dCb3g6Om1heExvZ2ljYWxCb3R0b21G
b3JUZXh0RGVjb3JhdGlvbkxpbmUoZmxvYXQmIG1heExvZ2ljYWxCb3R0b20sIGNvbnN0IFJlbmRl
ckVsZW1lbnQqIGRlY29yYXRpb25SZW5kZXJlciwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiB0
ZXh0RGVjb3JhdGlvbikgY29uc3QKK3ZvaWQgTGVnYWN5SW5saW5lRmxvd0JveDo6bWF4TG9naWNh
bEJvdHRvbUZvclRleHREZWNvcmF0aW9uTGluZShmbG9hdCYgbWF4TG9naWNhbEJvdHRvbSwgY29u
c3QgUmVuZGVyRWxlbWVudCogZGVjb3JhdGlvblJlbmRlcmVyLCBPcHRpb25TZXQ8VGV4dERlY29y
YXRpb24+IHRleHREZWNvcmF0aW9uKSBjb25zdAogewogICAgIGZvciAoYXV0byogY2hpbGQgPSBm
aXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0T25MaW5lKCkpIHsKICAgICAg
ICAgaWYgKGNoaWxkLT5yZW5kZXJlcigpLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQpAQCAtNzk0
LDggKzc5NCw4IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6bWF4TG9naWNhbEJvdHRvbUZvclRleHRE
ZWNvcmF0aW9uTGluZShmbG9hdCYgbWF4TG9naWNhbEJvdHRvCiAgICAgICAgIGlmIChkZWNvcmF0
aW9uUmVuZGVyZXIgJiYgZGVjb3JhdGlvblJlbmRlcmVyLT5pc1JlbmRlcklubGluZSgpICYmICFp
c0FuY2VzdG9yQW5kV2l0aGluQmxvY2soZG93bmNhc3Q8UmVuZGVySW5saW5lPigqZGVjb3JhdGlv
blJlbmRlcmVyKSwgJmNoaWxkLT5yZW5kZXJlcigpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAKLSAgICAgICAgaWYgKGlzPElubGluZUZsb3dCb3g+KCpjaGlsZCkpCi0gICAgICAg
ICAgICBkb3duY2FzdDxJbmxpbmVGbG93Qm94PigqY2hpbGQpLm1heExvZ2ljYWxCb3R0b21Gb3JU
ZXh0RGVjb3JhdGlvbkxpbmUobWF4TG9naWNhbEJvdHRvbSwgZGVjb3JhdGlvblJlbmRlcmVyLCB0
ZXh0RGVjb3JhdGlvbik7CisgICAgICAgIGlmIChpczxMZWdhY3lJbmxpbmVGbG93Qm94PigqY2hp
bGQpKQorICAgICAgICAgICAgZG93bmNhc3Q8TGVnYWN5SW5saW5lRmxvd0JveD4oKmNoaWxkKS5t
YXhMb2dpY2FsQm90dG9tRm9yVGV4dERlY29yYXRpb25MaW5lKG1heExvZ2ljYWxCb3R0b20sIGRl
Y29yYXRpb25SZW5kZXJlciwgdGV4dERlY29yYXRpb24pOwogICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgIGlmIChjaGlsZC0+aXNJbmxpbmVUZXh0Qm94KCkgfHwgY2hpbGQtPmxpbmVTdHlsZSgp
LnRleHREZWNvcmF0aW9uU2tpcCgpLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBtYXhMb2dp
Y2FsQm90dG9tID0gc3RkOjptYXg8ZmxvYXQ+KG1heExvZ2ljYWxCb3R0b20sIGNoaWxkLT5sb2dp
Y2FsQm90dG9tKCkpOwpAQCAtODAzLDcgKzgwMyw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6bWF4
TG9naWNhbEJvdHRvbUZvclRleHREZWNvcmF0aW9uTGluZShmbG9hdCYgbWF4TG9naWNhbEJvdHRv
CiAgICAgfQogfQogCi12b2lkIElubGluZUZsb3dCb3g6Om1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVj
b3JhdGlvbkxpbmUoZmxvYXQmIG1pbkxvZ2ljYWxUb3AsIGNvbnN0IFJlbmRlckVsZW1lbnQqIGRl
Y29yYXRpb25SZW5kZXJlciwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiB0ZXh0RGVjb3JhdGlv
bikgY29uc3QKK3ZvaWQgTGVnYWN5SW5saW5lRmxvd0JveDo6bWluTG9naWNhbFRvcEZvclRleHRE
ZWNvcmF0aW9uTGluZShmbG9hdCYgbWluTG9naWNhbFRvcCwgY29uc3QgUmVuZGVyRWxlbWVudCog
ZGVjb3JhdGlvblJlbmRlcmVyLCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IHRleHREZWNvcmF0
aW9uKSBjb25zdAogewogICAgIGZvciAoYXV0byogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxk
OyBjaGlsZCA9IGNoaWxkLT5uZXh0T25MaW5lKCkpIHsKICAgICAgICAgaWYgKGNoaWxkLT5yZW5k
ZXJlcigpLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQpAQCAtODE1LDggKzgxNSw4IEBAIHZvaWQg
SW5saW5lRmxvd0JveDo6bWluTG9naWNhbFRvcEZvclRleHREZWNvcmF0aW9uTGluZShmbG9hdCYg
bWluTG9naWNhbFRvcCwgY29uCiAgICAgICAgIGlmIChkZWNvcmF0aW9uUmVuZGVyZXIgJiYgZGVj
b3JhdGlvblJlbmRlcmVyLT5pc1JlbmRlcklubGluZSgpICYmICFpc0FuY2VzdG9yQW5kV2l0aGlu
QmxvY2soZG93bmNhc3Q8UmVuZGVySW5saW5lPigqZGVjb3JhdGlvblJlbmRlcmVyKSwgJmNoaWxk
LT5yZW5kZXJlcigpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKLSAgICAgICAg
aWYgKGlzPElubGluZUZsb3dCb3g+KCpjaGlsZCkpCi0gICAgICAgICAgICBkb3duY2FzdDxJbmxp
bmVGbG93Qm94PigqY2hpbGQpLm1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVjb3JhdGlvbkxpbmUobWlu
TG9naWNhbFRvcCwgZGVjb3JhdGlvblJlbmRlcmVyLCB0ZXh0RGVjb3JhdGlvbik7CisgICAgICAg
IGlmIChpczxMZWdhY3lJbmxpbmVGbG93Qm94PigqY2hpbGQpKQorICAgICAgICAgICAgZG93bmNh
c3Q8TGVnYWN5SW5saW5lRmxvd0JveD4oKmNoaWxkKS5taW5Mb2dpY2FsVG9wRm9yVGV4dERlY29y
YXRpb25MaW5lKG1pbkxvZ2ljYWxUb3AsIGRlY29yYXRpb25SZW5kZXJlciwgdGV4dERlY29yYXRp
b24pOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGlmIChjaGlsZC0+aXNJbmxpbmVUZXh0
Qm94KCkgfHwgY2hpbGQtPmxpbmVTdHlsZSgpLnRleHREZWNvcmF0aW9uU2tpcCgpLmlzRW1wdHko
KSkKICAgICAgICAgICAgICAgICBtaW5Mb2dpY2FsVG9wID0gc3RkOjptaW48ZmxvYXQ+KG1pbkxv
Z2ljYWxUb3AsIGNoaWxkLT5sb2dpY2FsVG9wKCkpOwpAQCAtODI0LDcgKzgyNCw3IEBAIHZvaWQg
SW5saW5lRmxvd0JveDo6bWluTG9naWNhbFRvcEZvclRleHREZWNvcmF0aW9uTGluZShmbG9hdCYg
bWluTG9naWNhbFRvcCwgY29uCiAgICAgfQogfQogCi12b2lkIElubGluZUZsb3dCb3g6OmZsaXBM
aW5lc0luQmxvY2tEaXJlY3Rpb24oTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVC
b3R0b20pCit2b2lkIExlZ2FjeUlubGluZUZsb3dCb3g6OmZsaXBMaW5lc0luQmxvY2tEaXJlY3Rp
b24oTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20pCiB7CiAgICAgLy8g
RmxpcCB0aGUgYm94IG9uIHRoZSBsaW5lIHN1Y2ggdGhhdCB0aGUgdG9wIGlzIG5vdyByZWxhdGl2
ZSB0byB0aGUgbGluZUJvdHRvbSBpbnN0ZWFkIG9mIHRoZSBsaW5lVG9wLgogICAgIHNldExvZ2lj
YWxUb3AobGluZUJvdHRvbSAtIChsb2dpY2FsVG9wKCkgLSBsaW5lVG9wKSAtIGxvZ2ljYWxIZWln
aHQoKSk7CkBAIC04MzMsMTQgKzgzMywxNCBAQCB2b2lkIElubGluZUZsb3dCb3g6OmZsaXBMaW5l
c0luQmxvY2tEaXJlY3Rpb24oTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbgogICAg
ICAgICBpZiAoY2hpbGQtPnJlbmRlcmVyKCkuaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCiAgICAg
ICAgICAgICBjb250aW51ZTsgLy8gUG9zaXRpb25lZCBwbGFjZWhvbGRlcnMgYXJlbid0IGFmZmVj
dGVkIGhlcmUuCiAgICAgICAgIAotICAgICAgICBpZiAoaXM8SW5saW5lRmxvd0JveD4oKmNoaWxk
KSkKLSAgICAgICAgICAgIGRvd25jYXN0PElubGluZUZsb3dCb3g+KCpjaGlsZCkuZmxpcExpbmVz
SW5CbG9ja0RpcmVjdGlvbihsaW5lVG9wLCBsaW5lQm90dG9tKTsKKyAgICAgICAgaWYgKGlzPExl
Z2FjeUlubGluZUZsb3dCb3g+KCpjaGlsZCkpCisgICAgICAgICAgICBkb3duY2FzdDxMZWdhY3lJ
bmxpbmVGbG93Qm94PigqY2hpbGQpLmZsaXBMaW5lc0luQmxvY2tEaXJlY3Rpb24obGluZVRvcCwg
bGluZUJvdHRvbSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNoaWxkLT5zZXRMb2dpY2Fs
VG9wKGxpbmVCb3R0b20gLSAoY2hpbGQtPmxvZ2ljYWxUb3AoKSAtIGxpbmVUb3ApIC0gY2hpbGQt
PmxvZ2ljYWxIZWlnaHQoKSk7CiAgICAgfQogfQogCi1pbmxpbmUgdm9pZCBJbmxpbmVGbG93Qm94
OjphZGRCb3hTaGFkb3dWaXN1YWxPdmVyZmxvdyhMYXlvdXRSZWN0JiBsb2dpY2FsVmlzdWFsT3Zl
cmZsb3cpCitpbmxpbmUgdm9pZCBMZWdhY3lJbmxpbmVGbG93Qm94OjphZGRCb3hTaGFkb3dWaXN1
YWxPdmVyZmxvdyhMYXlvdXRSZWN0JiBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cpCiB7CiAgICAgLy8g
Ym94LXNoYWRvdyBvbiByb290IGxpbmUgYm94ZXMgaXMgYXBwbHlpbmcgdG8gdGhlIGJsb2NrIGFu
ZCBub3QgdG8gdGhlIGxpbmVzLgogICAgIGlmICghcGFyZW50KCkpCkBAIC04NjksMTEgKzg2OSwx
MCBAQCBpbmxpbmUgdm9pZCBJbmxpbmVGbG93Qm94OjphZGRCb3hTaGFkb3dWaXN1YWxPdmVyZmxv
dyhMYXlvdXRSZWN0JiBsb2dpY2FsVmlzdWFsTwogICAgIExheW91dFVuaXQgbG9naWNhbExlZnRW
aXN1YWxPdmVyZmxvdyA9IHN0ZDo6bWluKExheW91dFVuaXQobG9naWNhbExlZnQoKSArIGJveFNo
YWRvd0xvZ2ljYWxMZWZ0KSwgbG9naWNhbFZpc3VhbE92ZXJmbG93LngoKSk7CiAgICAgTGF5b3V0
VW5pdCBsb2dpY2FsUmlnaHRWaXN1YWxPdmVyZmxvdyA9IHN0ZDo6bWF4KExheW91dFVuaXQobG9n
aWNhbFJpZ2h0KCkgKyBib3hTaGFkb3dMb2dpY2FsUmlnaHQpLCBsb2dpY2FsVmlzdWFsT3ZlcmZs
b3cubWF4WCgpKTsKICAgICAKLSAgICBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cgPSBMYXlvdXRSZWN0
KGxvZ2ljYWxMZWZ0VmlzdWFsT3ZlcmZsb3csIGxvZ2ljYWxUb3BWaXN1YWxPdmVyZmxvdywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxSaWdodFZpc3VhbE92
ZXJmbG93IC0gbG9naWNhbExlZnRWaXN1YWxPdmVyZmxvdywgbG9naWNhbEJvdHRvbVZpc3VhbE92
ZXJmbG93IC0gbG9naWNhbFRvcFZpc3VhbE92ZXJmbG93KTsKKyAgICBsb2dpY2FsVmlzdWFsT3Zl
cmZsb3cgPSBMYXlvdXRSZWN0KGxvZ2ljYWxMZWZ0VmlzdWFsT3ZlcmZsb3csIGxvZ2ljYWxUb3BW
aXN1YWxPdmVyZmxvdywgbG9naWNhbFJpZ2h0VmlzdWFsT3ZlcmZsb3cgLSBsb2dpY2FsTGVmdFZp
c3VhbE92ZXJmbG93LCBsb2dpY2FsQm90dG9tVmlzdWFsT3ZlcmZsb3cgLSBsb2dpY2FsVG9wVmlz
dWFsT3ZlcmZsb3cpOwogfQogCi1pbmxpbmUgdm9pZCBJbmxpbmVGbG93Qm94OjphZGRCb3JkZXJP
dXRzZXRWaXN1YWxPdmVyZmxvdyhMYXlvdXRSZWN0JiBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cpCitp
bmxpbmUgdm9pZCBMZWdhY3lJbmxpbmVGbG93Qm94OjphZGRCb3JkZXJPdXRzZXRWaXN1YWxPdmVy
ZmxvdyhMYXlvdXRSZWN0JiBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cpCiB7CiAgICAgLy8gYm9yZGVy
LWltYWdlLW91dHNldCBvbiByb290IGxpbmUgYm94ZXMgaXMgYXBwbHlpbmcgdG8gdGhlIGJsb2Nr
IGFuZCBub3QgdG8gdGhlIGxpbmVzLgogICAgIGlmICghcGFyZW50KCkpCkBAIC05MDQsMTEgKzkw
MywxMCBAQCBpbmxpbmUgdm9pZCBJbmxpbmVGbG93Qm94OjphZGRCb3JkZXJPdXRzZXRWaXN1YWxP
dmVyZmxvdyhMYXlvdXRSZWN0JiBsb2dpY2FsVmlzdQogICAgIExheW91dFVuaXQgbG9naWNhbExl
ZnRWaXN1YWxPdmVyZmxvdyA9IHN0ZDo6bWluKExheW91dFVuaXQobG9naWNhbExlZnQoKSAtIG91
dHNldExvZ2ljYWxMZWZ0KSwgbG9naWNhbFZpc3VhbE92ZXJmbG93LngoKSk7CiAgICAgTGF5b3V0
VW5pdCBsb2dpY2FsUmlnaHRWaXN1YWxPdmVyZmxvdyA9IHN0ZDo6bWF4KExheW91dFVuaXQobG9n
aWNhbFJpZ2h0KCkgKyBvdXRzZXRMb2dpY2FsUmlnaHQpLCBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cu
bWF4WCgpKTsKICAgICAKLSAgICBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cgPSBMYXlvdXRSZWN0KGxv
Z2ljYWxMZWZ0VmlzdWFsT3ZlcmZsb3csIGxvZ2ljYWxUb3BWaXN1YWxPdmVyZmxvdywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxSaWdodFZpc3VhbE92ZXJm
bG93IC0gbG9naWNhbExlZnRWaXN1YWxPdmVyZmxvdywgbG9naWNhbEJvdHRvbVZpc3VhbE92ZXJm
bG93IC0gbG9naWNhbFRvcFZpc3VhbE92ZXJmbG93KTsKKyAgICBsb2dpY2FsVmlzdWFsT3ZlcmZs
b3cgPSBMYXlvdXRSZWN0KGxvZ2ljYWxMZWZ0VmlzdWFsT3ZlcmZsb3csIGxvZ2ljYWxUb3BWaXN1
YWxPdmVyZmxvdywgbG9naWNhbFJpZ2h0VmlzdWFsT3ZlcmZsb3cgLSBsb2dpY2FsTGVmdFZpc3Vh
bE92ZXJmbG93LCBsb2dpY2FsQm90dG9tVmlzdWFsT3ZlcmZsb3cgLSBsb2dpY2FsVG9wVmlzdWFs
T3ZlcmZsb3cpOwogfQogCi1pbmxpbmUgdm9pZCBJbmxpbmVGbG93Qm94OjphZGRUZXh0Qm94Vmlz
dWFsT3ZlcmZsb3coSW5saW5lVGV4dEJveCYgdGV4dEJveCwgR2x5cGhPdmVyZmxvd0FuZEZhbGxi
YWNrRm9udHNNYXAmIHRleHRCb3hEYXRhTWFwLCBMYXlvdXRSZWN0JiBsb2dpY2FsVmlzdWFsT3Zl
cmZsb3cpCitpbmxpbmUgdm9pZCBMZWdhY3lJbmxpbmVGbG93Qm94OjphZGRUZXh0Qm94VmlzdWFs
T3ZlcmZsb3coSW5saW5lVGV4dEJveCYgdGV4dEJveCwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNr
Rm9udHNNYXAmIHRleHRCb3hEYXRhTWFwLCBMYXlvdXRSZWN0JiBsb2dpY2FsVmlzdWFsT3ZlcmZs
b3cpCiB7CiAgICAgaWYgKHRleHRCb3gua25vd25Ub0hhdmVOb092ZXJmbG93KCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTk0OSwxMSArOTQ3LDExIEBAIGlubGluZSB2b2lkIElubGluZUZsb3dCb3g6
OmFkZFRleHRCb3hWaXN1YWxPdmVyZmxvdyhJbmxpbmVUZXh0Qm94JiB0ZXh0Qm94LCBHbHlwCiAg
ICAgCiAgICAgTGF5b3V0VW5pdCBjaGlsZE92ZXJmbG93TG9naWNhbFRvcCA9IHN0ZDo6bWluPExh
eW91dFVuaXQ+KHRleHRTaGFkb3dMb2dpY2FsVG9wICsgdG9wR2x5cGhPdmVyZmxvdywgdG9wR2x5
cGhPdmVyZmxvdyk7CiAgICAgTGF5b3V0VW5pdCBjaGlsZE92ZXJmbG93TG9naWNhbEJvdHRvbSA9
IHN0ZDo6bWF4PExheW91dFVuaXQ+KHRleHRTaGFkb3dMb2dpY2FsQm90dG9tICsgYm90dG9tR2x5
cGhPdmVyZmxvdywgYm90dG9tR2x5cGhPdmVyZmxvdyk7Ci0gICAKKwogICAgIExheW91dFVuaXQg
dGV4dFNoYWRvd0xvZ2ljYWxMZWZ0OwogICAgIExheW91dFVuaXQgdGV4dFNoYWRvd0xvZ2ljYWxS
aWdodDsKICAgICBsaW5lU3R5bGUuZ2V0VGV4dFNoYWRvd0lubGluZURpcmVjdGlvbkV4dGVudCh0
ZXh0U2hhZG93TG9naWNhbExlZnQsIHRleHRTaGFkb3dMb2dpY2FsUmlnaHQpOwotICAgCisKICAg
ICBMYXlvdXRVbml0IGNoaWxkT3ZlcmZsb3dMb2dpY2FsTGVmdCA9IHN0ZDo6bWluPExheW91dFVu
aXQ+KHRleHRTaGFkb3dMb2dpY2FsTGVmdCArIGxlZnRHbHlwaE92ZXJmbG93LCBsZWZ0R2x5cGhP
dmVyZmxvdyk7CiAgICAgTGF5b3V0VW5pdCBjaGlsZE92ZXJmbG93TG9naWNhbFJpZ2h0ID0gc3Rk
OjptYXg8TGF5b3V0VW5pdD4odGV4dFNoYWRvd0xvZ2ljYWxSaWdodCArIHJpZ2h0R2x5cGhPdmVy
ZmxvdywgcmlnaHRHbHlwaE92ZXJmbG93KTsKIApAQCAtOTYyLDE3ICs5NjAsMTYgQEAgaW5saW5l
IHZvaWQgSW5saW5lRmxvd0JveDo6YWRkVGV4dEJveFZpc3VhbE92ZXJmbG93KElubGluZVRleHRC
b3gmIHRleHRCb3gsIEdseXAKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0VmlzdWFsT3ZlcmZs
b3cgPSBzdGQ6Om1pbihMYXlvdXRVbml0KHRleHRCb3gubG9naWNhbExlZnQoKSArIGNoaWxkT3Zl
cmZsb3dMb2dpY2FsTGVmdCksIGxvZ2ljYWxWaXN1YWxPdmVyZmxvdy54KCkpOwogICAgIExheW91
dFVuaXQgbG9naWNhbFJpZ2h0VmlzdWFsT3ZlcmZsb3cgPSBzdGQ6Om1heChMYXlvdXRVbml0KHRl
eHRCb3gubG9naWNhbFJpZ2h0KCkgKyBjaGlsZE92ZXJmbG93TG9naWNhbFJpZ2h0KSwgbG9naWNh
bFZpc3VhbE92ZXJmbG93Lm1heFgoKSk7CiAgICAgCi0gICAgbG9naWNhbFZpc3VhbE92ZXJmbG93
ID0gTGF5b3V0UmVjdChsb2dpY2FsTGVmdFZpc3VhbE92ZXJmbG93LCBsb2dpY2FsVG9wVmlzdWFs
T3ZlcmZsb3csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dpY2Fs
UmlnaHRWaXN1YWxPdmVyZmxvdyAtIGxvZ2ljYWxMZWZ0VmlzdWFsT3ZlcmZsb3csIGxvZ2ljYWxC
b3R0b21WaXN1YWxPdmVyZmxvdyAtIGxvZ2ljYWxUb3BWaXN1YWxPdmVyZmxvdyk7CisgICAgbG9n
aWNhbFZpc3VhbE92ZXJmbG93ID0gTGF5b3V0UmVjdChsb2dpY2FsTGVmdFZpc3VhbE92ZXJmbG93
LCBsb2dpY2FsVG9wVmlzdWFsT3ZlcmZsb3csIGxvZ2ljYWxSaWdodFZpc3VhbE92ZXJmbG93IC0g
bG9naWNhbExlZnRWaXN1YWxPdmVyZmxvdywgbG9naWNhbEJvdHRvbVZpc3VhbE92ZXJmbG93IC0g
bG9naWNhbFRvcFZpc3VhbE92ZXJmbG93KTsKIAogICAgIGF1dG8gZG9jdW1lbnRNYXJrZXJCb3Vu
ZHMgPSB0ZXh0Qm94LmNhbGN1bGF0ZVVuaW9uT2ZBbGxEb2N1bWVudE1hcmtlckJvdW5kcygpOwog
ICAgIGRvY3VtZW50TWFya2VyQm91bmRzLm1vdmUodGV4dEJveC5sb2dpY2FsTGVmdCgpLCB0ZXh0
Qm94LmxvZ2ljYWxUb3AoKSk7CiAgICAgbG9naWNhbFZpc3VhbE92ZXJmbG93ID0gdW5pb25SZWN0
KGxvZ2ljYWxWaXN1YWxPdmVyZmxvdywgTGF5b3V0UmVjdChkb2N1bWVudE1hcmtlckJvdW5kcykp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKICAgICB0ZXh0Qm94LnNl
dExvZ2ljYWxPdmVyZmxvd1JlY3QobG9naWNhbFZpc3VhbE92ZXJmbG93KTsKIH0KIAotaW5saW5l
IHZvaWQgSW5saW5lRmxvd0JveDo6YWRkT3V0bGluZVZpc3VhbE92ZXJmbG93KExheW91dFJlY3Qm
IGxvZ2ljYWxWaXN1YWxPdmVyZmxvdykKK2lubGluZSB2b2lkIExlZ2FjeUlubGluZUZsb3dCb3g6
OmFkZE91dGxpbmVWaXN1YWxPdmVyZmxvdyhMYXlvdXRSZWN0JiBsb2dpY2FsVmlzdWFsT3ZlcmZs
b3cpCiB7CiAgICAgY29uc3QgYXV0byYgbGluZVN0eWxlID0gdGhpcy0+bGluZVN0eWxlKCk7CiAg
ICAgaWYgKCFsaW5lU3R5bGUuaGFzT3V0bGluZUluVmlzdWFsT3ZlcmZsb3coKSkKQEAgLTk4Niwx
MSArOTgzLDExIEBAIGlubGluZSB2b2lkIElubGluZUZsb3dCb3g6OmFkZE91dGxpbmVWaXN1YWxP
dmVyZmxvdyhMYXlvdXRSZWN0JiBsb2dpY2FsVmlzdWFsT3ZlCiAgICAgICAgIGxvZ2ljYWxSaWdo
dFZpc3VhbE92ZXJmbG93IC0gbG9naWNhbExlZnRWaXN1YWxPdmVyZmxvdywgbG9naWNhbEJvdHRv
bVZpc3VhbE92ZXJmbG93IC0gbG9naWNhbFRvcFZpc3VhbE92ZXJmbG93KTsKIH0KIAotaW5saW5l
IHZvaWQgSW5saW5lRmxvd0JveDo6YWRkUmVwbGFjZWRDaGlsZE92ZXJmbG93KGNvbnN0IExlZ2Fj
eUlubGluZUJveCogaW5saW5lQm94LCBMYXlvdXRSZWN0JiBsb2dpY2FsTGF5b3V0T3ZlcmZsb3cs
IExheW91dFJlY3QmIGxvZ2ljYWxWaXN1YWxPdmVyZmxvdykKK2lubGluZSB2b2lkIExlZ2FjeUlu
bGluZUZsb3dCb3g6OmFkZFJlcGxhY2VkQ2hpbGRPdmVyZmxvdyhjb25zdCBMZWdhY3lJbmxpbmVC
b3gqIGlubGluZUJveCwgTGF5b3V0UmVjdCYgbG9naWNhbExheW91dE92ZXJmbG93LCBMYXlvdXRS
ZWN0JiBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cpCiB7CiAgICAgY29uc3QgUmVuZGVyQm94JiBib3gg
PSBkb3duY2FzdDxSZW5kZXJCb3g+KGlubGluZUJveC0+cmVuZGVyZXIoKSk7CiAgICAgCi0gICAg
Ly8gVmlzdWFsIG92ZXJmbG93IG9ubHkgcHJvcGFnYXRlcyBpZiB0aGUgYm94IGRvZXNuJ3QgaGF2
ZSBhIHNlbGYtcGFpbnRpbmcgbGF5ZXIuICBUaGlzIHJlY3RhbmdsZSBkb2VzIG5vdCBpbmNsdWRl
CisgICAgLy8gVmlzdWFsIG92ZXJmbG93IG9ubHkgcHJvcGFnYXRlcyBpZiB0aGUgYm94IGRvZXNu
J3QgaGF2ZSBhIHNlbGYtcGFpbnRpbmcgbGF5ZXIuIFRoaXMgcmVjdGFuZ2xlIGRvZXMgbm90IGlu
Y2x1ZGUKICAgICAvLyB0cmFuc2Zvcm1zIG9yIHJlbGF0aXZlIHBvc2l0aW9uaW5nIChzaW5jZSB0
aG9zZSBvYmplY3RzIGFsd2F5cyBoYXZlIHNlbGYtcGFpbnRpbmcgbGF5ZXJzKSwgYnV0IGl0IGRv
ZXMgbmVlZCB0byBiZSBhZGp1c3RlZAogICAgIC8vIGZvciB3cml0aW5nLW1vZGUgZGlmZmVyZW5j
ZXMuCiAgICAgaWYgKCFib3guaGFzU2VsZlBhaW50aW5nTGF5ZXIoKSkgewpAQCAtMTAwMCwxNCAr
OTk3LDE0IEBAIGlubGluZSB2b2lkIElubGluZUZsb3dCb3g6OmFkZFJlcGxhY2VkQ2hpbGRPdmVy
Zmxvdyhjb25zdCBMZWdhY3lJbmxpbmVCb3gqIGlubGluCiAgICAgfQogCiAgICAgLy8gTGF5b3V0
IG92ZXJmbG93IGludGVybmFsIHRvIHRoZSBjaGlsZCBib3ggb25seSBwcm9wYWdhdGVzIGlmIHRo
ZSBjaGlsZCBib3ggZG9lc24ndCBoYXZlIG92ZXJmbG93IGNsaXAgc2V0LgotICAgIC8vIE90aGVy
d2lzZSB0aGUgY2hpbGQgYm9yZGVyIGJveCBwcm9wYWdhdGVzIGFzIGxheW91dCBvdmVyZmxvdy4g
IFRoaXMgcmVjdGFuZ2xlIG11c3QgaW5jbHVkZSB0cmFuc2Zvcm1zIGFuZCByZWxhdGl2ZSBwb3Np
dGlvbmluZworICAgIC8vIE90aGVyd2lzZSB0aGUgY2hpbGQgYm9yZGVyIGJveCBwcm9wYWdhdGVz
IGFzIGxheW91dCBvdmVyZmxvdy4gVGhpcyByZWN0YW5nbGUgbXVzdCBpbmNsdWRlIHRyYW5zZm9y
bXMgYW5kIHJlbGF0aXZlIHBvc2l0aW9uaW5nCiAgICAgLy8gYW5kIGJlIGFkanVzdGVkIGZvciB3
cml0aW5nLW1vZGUgZGlmZmVyZW5jZXMuCiAgICAgTGF5b3V0UmVjdCBjaGlsZExvZ2ljYWxMYXlv
dXRPdmVyZmxvdyA9IGJveC5sb2dpY2FsTGF5b3V0T3ZlcmZsb3dSZWN0Rm9yUHJvcGFnYXRpb24o
JnJlbmRlcmVyKCkuc3R5bGUoKSk7CiAgICAgY2hpbGRMb2dpY2FsTGF5b3V0T3ZlcmZsb3cubW92
ZShpbmxpbmVCb3gtPmxvZ2ljYWxMZWZ0KCksIGlubGluZUJveC0+bG9naWNhbFRvcCgpKTsKICAg
ICBsb2dpY2FsTGF5b3V0T3ZlcmZsb3cudW5pdGUoY2hpbGRMb2dpY2FsTGF5b3V0T3ZlcmZsb3cp
OwogfQogCi12b2lkIElubGluZUZsb3dCb3g6OmNvbXB1dGVPdmVyZmxvdyhMYXlvdXRVbml0IGxp
bmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9u
dHNNYXAmIHRleHRCb3hEYXRhTWFwKQordm9pZCBMZWdhY3lJbmxpbmVGbG93Qm94Ojpjb21wdXRl
T3ZlcmZsb3coTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20sIEdseXBo
T3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwJiB0ZXh0Qm94RGF0YU1hcCkKIHsKICAgICAvLyBJ
ZiB3ZSBrbm93IHdlIGhhdmUgbm8gb3ZlcmZsb3csIHdlIGNhbiBqdXN0IGJhaWwuCiAgICAgaWYg
KGtub3duVG9IYXZlTm9PdmVyZmxvdygpKQpAQCAtMTAxNiwxMiArMTAxMywxMiBAQCB2b2lkIElu
bGluZUZsb3dCb3g6OmNvbXB1dGVPdmVyZmxvdyhMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVu
aXQgbGluZUJvdHRvbSwgRwogICAgIGlmIChtX292ZXJmbG93KQogICAgICAgICBtX292ZXJmbG93
ID0gbnVsbHB0cjsKIAotICAgIC8vIFZpc3VhbCBvdmVyZmxvdyBqdXN0IGluY2x1ZGVzIG92ZXJm
bG93IGZvciBzdHVmZiB3ZSBuZWVkIHRvIHJlcGFpbnQgb3Vyc2VsdmVzLiAgU2VsZi1wYWludGlu
ZyBsYXllcnMgYXJlIGlnbm9yZWQuCisgICAgLy8gVmlzdWFsIG92ZXJmbG93IGp1c3QgaW5jbHVk
ZXMgb3ZlcmZsb3cgZm9yIHN0dWZmIHdlIG5lZWQgdG8gcmVwYWludCBvdXJzZWx2ZXMuIFNlbGYt
cGFpbnRpbmcgbGF5ZXJzIGFyZSBpZ25vcmVkLgogICAgIC8vIExheW91dCBvdmVyZmxvdyBpcyB1
c2VkIHRvIGRldGVybWluZSBzY3JvbGxpbmcgZXh0ZW50LCBzbyBpdCBzdGlsbCBpbmNsdWRlcyBj
aGlsZCBsYXllcnMgYW5kIGFsc28gZmFjdG9ycyBpbgogICAgIC8vIHRyYW5zZm9ybXMsIHJlbGF0
aXZlIHBvc2l0aW9uaW5nLCBldGMuCiAgICAgTGF5b3V0UmVjdCBsb2dpY2FsTGF5b3V0T3ZlcmZs
b3coZW5jbG9zaW5nTGF5b3V0UmVjdChsb2dpY2FsRnJhbWVSZWN0SW5jbHVkaW5nTGluZUhlaWdo
dChsaW5lVG9wLCBsaW5lQm90dG9tKSkpOwogICAgIExheW91dFJlY3QgbG9naWNhbFZpc3VhbE92
ZXJmbG93KGxvZ2ljYWxMYXlvdXRPdmVyZmxvdyk7Ci0gIAorCiAgICAgYWRkQm94U2hhZG93Vmlz
dWFsT3ZlcmZsb3cobG9naWNhbFZpc3VhbE92ZXJmbG93KTsKICAgICBhZGRPdXRsaW5lVmlzdWFs
T3ZlcmZsb3cobG9naWNhbFZpc3VhbE92ZXJmbG93KTsKICAgICBhZGRCb3JkZXJPdXRzZXRWaXN1
YWxPdmVyZmxvdyhsb2dpY2FsVmlzdWFsT3ZlcmZsb3cpOwpAQCAtMTAzOCw3ICsxMDM1LDcgQEAg
dm9pZCBJbmxpbmVGbG93Qm94Ojpjb21wdXRlT3ZlcmZsb3coTGF5b3V0VW5pdCBsaW5lVG9wLCBM
YXlvdXRVbml0IGxpbmVCb3R0b20sIEcKICAgICAgICAgICAgIGFkZFRleHRCb3hWaXN1YWxPdmVy
Zmxvdyh0ZXh0Qm94LCB0ZXh0Qm94RGF0YU1hcCwgdGV4dEJveE92ZXJmbG93KTsKICAgICAgICAg
ICAgIGxvZ2ljYWxWaXN1YWxPdmVyZmxvdy51bml0ZSh0ZXh0Qm94T3ZlcmZsb3cpOwogICAgICAg
ICB9IGVsc2UgaWYgKGlzPFJlbmRlcklubGluZT4oY2hpbGQtPnJlbmRlcmVyKCkpKSB7Ci0gICAg
ICAgICAgICBhdXRvJiBmbG93ID0gZG93bmNhc3Q8SW5saW5lRmxvd0JveD4oKmNoaWxkKTsKKyAg
ICAgICAgICAgIGF1dG8mIGZsb3cgPSBkb3duY2FzdDxMZWdhY3lJbmxpbmVGbG93Qm94PigqY2hp
bGQpOwogICAgICAgICAgICAgZmxvdy5jb21wdXRlT3ZlcmZsb3cobGluZVRvcCwgbGluZUJvdHRv
bSwgdGV4dEJveERhdGFNYXApOwogICAgICAgICAgICAgaWYgKCFmbG93LnJlbmRlcmVyKCkuaGFz
U2VsZlBhaW50aW5nTGF5ZXIoKSkKICAgICAgICAgICAgICAgICBsb2dpY2FsVmlzdWFsT3ZlcmZs
b3cudW5pdGUoZmxvdy5sb2dpY2FsVmlzdWFsT3ZlcmZsb3dSZWN0KGxpbmVUb3AsIGxpbmVCb3R0
b20pKTsKQEAgLTEwNTIsNyArMTA0OSw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6Y29tcHV0ZU92
ZXJmbG93KExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tLCBHCiAgICAg
c2V0T3ZlcmZsb3dGcm9tTG9naWNhbFJlY3RzKGxvZ2ljYWxMYXlvdXRPdmVyZmxvdywgbG9naWNh
bFZpc3VhbE92ZXJmbG93LCBsaW5lVG9wLCBsaW5lQm90dG9tKTsKIH0KIAotdm9pZCBJbmxpbmVG
bG93Qm94OjpzZXRMYXlvdXRPdmVyZmxvdyhjb25zdCBMYXlvdXRSZWN0JiByZWN0LCBMYXlvdXRV
bml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkKK3ZvaWQgTGVnYWN5SW5saW5lRmxv
d0JveDo6c2V0TGF5b3V0T3ZlcmZsb3coY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgTGF5b3V0VW5p
dCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20pCiB7CiAgICAgTGF5b3V0UmVjdCBmcmFt
ZUJveCA9IGVuY2xvc2luZ0xheW91dFJlY3QoZnJhbWVSZWN0SW5jbHVkaW5nTGluZUhlaWdodChs
aW5lVG9wLCBsaW5lQm90dG9tKSk7CiAgICAgaWYgKGZyYW1lQm94LmNvbnRhaW5zKHJlY3QpIHx8
IHJlY3QuaXNFbXB0eSgpKQpAQCAtMTA2NCwxOSArMTA2MSwxOSBAQCB2b2lkIElubGluZUZsb3dC
b3g6OnNldExheW91dE92ZXJmbG93KGNvbnN0IExheW91dFJlY3QmIHJlY3QsIExheW91dFVuaXQg
bGluZVRvcAogICAgIG1fb3ZlcmZsb3ctPnNldExheW91dE92ZXJmbG93KHJlY3QpOwogfQogCi12
b2lkIElubGluZUZsb3dCb3g6OnNldFZpc3VhbE92ZXJmbG93KGNvbnN0IExheW91dFJlY3QmIHJl
Y3QsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKQordm9pZCBMZWdh
Y3lJbmxpbmVGbG93Qm94OjpzZXRWaXN1YWxPdmVyZmxvdyhjb25zdCBMYXlvdXRSZWN0JiByZWN0
LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkKIHsKICAgICBMYXlv
dXRSZWN0IGZyYW1lQm94ID0gZW5jbG9zaW5nTGF5b3V0UmVjdChmcmFtZVJlY3RJbmNsdWRpbmdM
aW5lSGVpZ2h0KGxpbmVUb3AsIGxpbmVCb3R0b20pKTsKICAgICBpZiAoZnJhbWVCb3guY29udGFp
bnMocmVjdCkgfHwgcmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisK
ICAgICBpZiAoIW1fb3ZlcmZsb3cpCiAgICAgICAgIG1fb3ZlcmZsb3cgPSBhZG9wdFJlZihuZXcg
UmVuZGVyT3ZlcmZsb3coZnJhbWVCb3gsIGZyYW1lQm94KSk7Ci0gICAgCisKICAgICBtX292ZXJm
bG93LT5zZXRWaXN1YWxPdmVyZmxvdyhyZWN0KTsKIH0KIAotdm9pZCBJbmxpbmVGbG93Qm94Ojpz
ZXRPdmVyZmxvd0Zyb21Mb2dpY2FsUmVjdHMoY29uc3QgTGF5b3V0UmVjdCYgbG9naWNhbExheW91
dE92ZXJmbG93LCBjb25zdCBMYXlvdXRSZWN0JiBsb2dpY2FsVmlzdWFsT3ZlcmZsb3csIExheW91
dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKQordm9pZCBMZWdhY3lJbmxpbmVG
bG93Qm94OjpzZXRPdmVyZmxvd0Zyb21Mb2dpY2FsUmVjdHMoY29uc3QgTGF5b3V0UmVjdCYgbG9n
aWNhbExheW91dE92ZXJmbG93LCBjb25zdCBMYXlvdXRSZWN0JiBsb2dpY2FsVmlzdWFsT3ZlcmZs
b3csIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKQogewogICAgIExh
eW91dFJlY3QgbGF5b3V0T3ZlcmZsb3coaXNIb3Jpem9udGFsKCkgPyBsb2dpY2FsTGF5b3V0T3Zl
cmZsb3cgOiBsb2dpY2FsTGF5b3V0T3ZlcmZsb3cudHJhbnNwb3NlZFJlY3QoKSk7CiAgICAgc2V0
TGF5b3V0T3ZlcmZsb3cobGF5b3V0T3ZlcmZsb3csIGxpbmVUb3AsIGxpbmVCb3R0b20pOwpAQCAt
MTA4NSw3ICsxMDgyLDcgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpzZXRPdmVyZmxvd0Zyb21Mb2dp
Y2FsUmVjdHMoY29uc3QgTGF5b3V0UmVjdCYgbG9naWNhbExheW91dE8KICAgICBzZXRWaXN1YWxP
dmVyZmxvdyh2aXN1YWxPdmVyZmxvdywgbGluZVRvcCwgbGluZUJvdHRvbSk7CiB9CiAKLWJvb2wg
SW5saW5lRmxvd0JveDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3Qs
IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbklu
Q29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIExheW91dFVu
aXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tLCBIaXRUZXN0QWN0aW9uIGhpdFRlc3RB
Y3Rpb24pCitib29sIExlZ2FjeUlubGluZUZsb3dCb3g6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRl
c3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGNvbnN0IEhpdFRlc3RM
b2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxh
dGVkT2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSwgSGl0
VGVzdEFjdGlvbiBoaXRUZXN0QWN0aW9uKQogewogICAgIGlmIChoaXRUZXN0QWN0aW9uICE9IEhp
dFRlc3RGb3JlZ3JvdW5kKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMTc5LDcgKzExNzYs
NyBAQCBib29sIElubGluZUZsb3dCb3g6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0
JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9p
ZCBJbmxpbmVGbG93Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJv
dHRvbSkKK3ZvaWQgTGVnYWN5SW5saW5lRmxvd0JveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBM
YXlvdXRVbml0IGxpbmVCb3R0b20pCiB7CiAgICAgaWYgKHBhaW50SW5mby5waGFzZSAhPSBQYWlu
dFBoYXNlOjpGb3JlZ3JvdW5kICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlOjpTZWxl
Y3Rpb24gJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6Ok91dGxpbmUgJiYgcGFpbnRJ
bmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OlNlbGZPdXRsaW5lICYmIHBhaW50SW5mby5waGFzZSAh
PSBQYWludFBoYXNlOjpDaGlsZE91dGxpbmVzICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBo
YXNlOjpUZXh0Q2xpcCAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6TWFzayAmJiBw
YWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZTo6RXZlbnRSZWdpb24pCiAgICAgICAgIHJldHVy
bjsKQEAgLTEyMDAsNyArMTE5Nyw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnQoUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwKIAogICAgICAg
ICAgICAgICAgIFJlbmRlckJsb2NrKiBjb250YWluaW5nQmxvY2sgPSBudWxscHRyOwogICAgICAg
ICAgICAgICAgIGJvb2wgY29udGFpbmluZ0Jsb2NrUGFpbnRzQ29udGludWF0aW9uT3V0bGluZSA9
IGlubGluZUZsb3cuY29udGludWF0aW9uKCkgfHwgaW5saW5lRmxvdy5pc0NvbnRpbnVhdGlvbigp
OwotICAgICAgICAgICAgICAgIGlmIChjb250YWluaW5nQmxvY2tQYWludHNDb250aW51YXRpb25P
dXRsaW5lKSB7ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoY29udGFpbmluZ0Jsb2Nr
UGFpbnRzQ29udGludWF0aW9uT3V0bGluZSkgewogICAgICAgICAgICAgICAgICAgICAvLyBGSVhN
RTogU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDY5MC4gV2Ug
Y3VycmVudGx5IGRvbid0IHJlY29ubmVjdCBpbmxpbmUgY29udGludWF0aW9ucwogICAgICAgICAg
ICAgICAgICAgICAvLyBhZnRlciBhIGNoaWxkIHJlbW92YWwuIEFzIGEgcmVzdWx0LCB0aG9zZSBt
ZXJnZWQgaW5saW5lcyBkbyBub3QgZ2V0IHNlcGVyYXRlZCBhbmQgaGVuY2Ugbm90IGdldCBlbmNs
b3NlZCBieQogICAgICAgICAgICAgICAgICAgICAvLyBhbm9ueW1vdXMgYmxvY2tzLiBJbiB0aGlz
IGNhc2UsIGl0IGlzIGJldHRlciB0byBiYWlsIG91dCBhbmQgcGFpbnQgaXQgb3Vyc2VsZi4KQEAg
LTEyNTAsNyArMTI0Nyw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnQoUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwKICAgICB9CiB9CiAKLXZv
aWQgSW5saW5lRmxvd0JveDo6cGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IEZpbGxMYXllciYgZmlsbExheWVyLCBjb25z
dCBMYXlvdXRSZWN0JiByZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3ZvaWQgTGVnYWN5SW5s
aW5lRmxvd0JveDo6cGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBDb2xvciYgY29sb3IsIGNvbnN0IEZpbGxMYXllciYgZmlsbExheWVyLCBjb25zdCBMYXlv
dXRSZWN0JiByZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKICAgICBWZWN0b3I8Y29uc3Qg
RmlsbExheWVyKiwgOD4gbGF5ZXJzOwogICAgIGZvciAoYXV0byogbGF5ZXIgPSAmZmlsbExheWVy
OyBsYXllcjsgbGF5ZXIgPSBsYXllci0+bmV4dCgpKQpAQCAtMTI2MCw3ICsxMjU3LDcgQEAgdm9p
ZCBJbmxpbmVGbG93Qm94OjpwYWludEZpbGxMYXllcnMoY29uc3QgUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IENvbG9yJiBjb2wKICAgICAgICAgcGFpbnRGaWxsTGF5ZXIocGFpbnRJbmZvLCBj
b2xvciwgKmxheWVyLCByZWN0LCBvcCk7CiB9CiAKLWJvb2wgSW5saW5lRmxvd0JveDo6Ym94U2hh
ZG93Q2FuQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKGNvbnN0IEZpbGxMYXllciYgbGFzdEJhY2tncm91
bmRMYXllcikgY29uc3QKK2Jvb2wgTGVnYWN5SW5saW5lRmxvd0JveDo6Ym94U2hhZG93Q2FuQmVB
cHBsaWVkVG9CYWNrZ3JvdW5kKGNvbnN0IEZpbGxMYXllciYgbGFzdEJhY2tncm91bmRMYXllcikg
Y29uc3QKIHsKICAgICAvLyBUaGUgY2hlY2tzIGhlcmUgbWF0Y2ggaG93IHBhaW50RmlsbExheWVy
KCkgZGVjaWRlcyB3aGV0aGVyIHRvIGNsaXAgKGlmIGl0IGRvZXMsIHRoZSBzaGFkb3cKICAgICAv
LyB3b3VsZCBiZSBjbGlwcGVkIG91dCwgc28gaXQgaGFzIHRvIGJlIGRyYXduIHNlcGFyYXRlbHkp
LgpAQCAtMTI2OSw3ICsxMjY2LDcgQEAgYm9vbCBJbmxpbmVGbG93Qm94Ojpib3hTaGFkb3dDYW5C
ZUFwcGxpZWRUb0JhY2tncm91bmQoY29uc3QgRmlsbExheWVyJiBsYXN0QmFja2cKICAgICByZXR1
cm4gKCFoYXNGaWxsSW1hZ2UgJiYgIXJlbmRlcmVyKCkuc3R5bGUoKS5oYXNCb3JkZXJSYWRpdXMo
KSkgfHwgKCFwcmV2TGluZUJveCgpICYmICFuZXh0TGluZUJveCgpKSB8fCAhcGFyZW50KCk7CiB9
CiAKLXZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRGaWxsTGF5ZXIoY29uc3QgUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgRmlsbExheWVyJiBmaWxsTGF5ZXIs
IGNvbnN0IExheW91dFJlY3QmIHJlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQordm9pZCBMZWdh
Y3lJbmxpbmVGbG93Qm94OjpwYWludEZpbGxMYXllcihjb25zdCBQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBGaWxsTGF5ZXImIGZpbGxMYXllciwgY29uc3Qg
TGF5b3V0UmVjdCYgcmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCiB7CiAgICAgYXV0byogaW1h
Z2UgPSBmaWxsTGF5ZXIuaW1hZ2UoKTsKICAgICBib29sIGhhc0ZpbGxJbWFnZSA9IGltYWdlICYm
IGltYWdlLT5jYW5SZW5kZXIoJnJlbmRlcmVyKCksIHJlbmRlcmVyKCkuc3R5bGUoKS5lZmZlY3Rp
dmVab29tKCkpOwpAQCAtMTI4NiwyMiArMTI4MywyMiBAQCB2b2lkIElubGluZUZsb3dCb3g6OnBh
aW50RmlsbExheWVyKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBDb2xvciYgY29s
bwogICAgICAgICAvLyBXZSBoYXZlIGEgZmlsbCBpbWFnZSB0aGF0IHNwYW5zIG11bHRpcGxlIGxp
bmVzLgogICAgICAgICAvLyBXZSBuZWVkIHRvIGFkanVzdCB0eCBhbmQgdHkgYnkgdGhlIHdpZHRo
IG9mIGFsbCBwcmV2aW91cyBsaW5lcy4KICAgICAgICAgLy8gVGhpbmsgb2YgYmFja2dyb3VuZCBw
YWludGluZyBvbiBpbmxpbmVzIGFzIHRob3VnaCB5b3UgaGFkIG9uZSBsb25nIGxpbmUsIGEgc2lu
Z2xlIGNvbnRpbnVvdXMKLSAgICAgICAgLy8gc3RyaXAuICBFdmVuIHRob3VnaCB0aGF0IHN0cmlw
IGhhcyBiZWVuIGJyb2tlbiB1cCBhY3Jvc3MgbXVsdGlwbGUgbGluZXMsIHlvdSBzdGlsbCBwYWlu
dCBpdAotICAgICAgICAvLyBhcyB0aG91Z2ggeW91IGhhZCBvbmUgc2luZ2xlIGxpbmUuICBUaGlz
IG1lYW5zIGVhY2ggbGluZSBoYXMgdG8gcGljayB1cCB0aGUgYmFja2dyb3VuZCB3aGVyZQorICAg
ICAgICAvLyBzdHJpcC4gRXZlbiB0aG91Z2ggdGhhdCBzdHJpcCBoYXMgYmVlbiBicm9rZW4gdXAg
YWNyb3NzIG11bHRpcGxlIGxpbmVzLCB5b3Ugc3RpbGwgcGFpbnQgaXQKKyAgICAgICAgLy8gYXMg
dGhvdWdoIHlvdSBoYWQgb25lIHNpbmdsZSBsaW5lLiBUaGlzIG1lYW5zIGVhY2ggbGluZSBoYXMg
dG8gcGljayB1cCB0aGUgYmFja2dyb3VuZCB3aGVyZQogICAgICAgICAvLyB0aGUgcHJldmlvdXMg
bGluZSBsZWZ0IG9mZi4KICAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsT2Zmc2V0T25MaW5lOwog
ICAgICAgICBMYXlvdXRVbml0IHRvdGFsTG9naWNhbFdpZHRoOwogICAgICAgICBpZiAocmVuZGVy
ZXIoKS5zdHlsZSgpLmRpcmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OkxUUikgewotICAgICAg
ICAgICAgZm9yIChJbmxpbmVGbG93Qm94KiBjdXJyID0gcHJldkxpbmVCb3goKTsgY3VycjsgY3Vy
ciA9IGN1cnItPnByZXZMaW5lQm94KCkpCisgICAgICAgICAgICBmb3IgKGF1dG8qIGN1cnIgPSBw
cmV2TGluZUJveCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+cHJldkxpbmVCb3goKSkKICAgICAgICAg
ICAgICAgICBsb2dpY2FsT2Zmc2V0T25MaW5lICs9IGN1cnItPmxvZ2ljYWxXaWR0aCgpOwogICAg
ICAgICAgICAgdG90YWxMb2dpY2FsV2lkdGggPSBsb2dpY2FsT2Zmc2V0T25MaW5lOwotICAgICAg
ICAgICAgZm9yIChJbmxpbmVGbG93Qm94KiBjdXJyID0gdGhpczsgY3VycjsgY3VyciA9IGN1cnIt
Pm5leHRMaW5lQm94KCkpCisgICAgICAgICAgICBmb3IgKGF1dG8qIGN1cnIgPSB0aGlzOyBjdXJy
OyBjdXJyID0gY3Vyci0+bmV4dExpbmVCb3goKSkKICAgICAgICAgICAgICAgICB0b3RhbExvZ2lj
YWxXaWR0aCArPSBjdXJyLT5sb2dpY2FsV2lkdGgoKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIGZvciAoSW5saW5lRmxvd0JveCogY3VyciA9IG5leHRMaW5lQm94KCk7IGN1cnI7IGN1
cnIgPSBjdXJyLT5uZXh0TGluZUJveCgpKQorICAgICAgICAgICAgZm9yIChhdXRvKiBjdXJyID0g
bmV4dExpbmVCb3goKTsgY3VycjsgY3VyciA9IGN1cnItPm5leHRMaW5lQm94KCkpCiAgICAgICAg
ICAgICAgICAgbG9naWNhbE9mZnNldE9uTGluZSArPSBjdXJyLT5sb2dpY2FsV2lkdGgoKTsKICAg
ICAgICAgICAgIHRvdGFsTG9naWNhbFdpZHRoID0gbG9naWNhbE9mZnNldE9uTGluZTsKLSAgICAg
ICAgICAgIGZvciAoSW5saW5lRmxvd0JveCogY3VyciA9IHRoaXM7IGN1cnI7IGN1cnIgPSBjdXJy
LT5wcmV2TGluZUJveCgpKQorICAgICAgICAgICAgZm9yIChhdXRvKiBjdXJyID0gdGhpczsgY3Vy
cjsgY3VyciA9IGN1cnItPnByZXZMaW5lQm94KCkpCiAgICAgICAgICAgICAgICAgdG90YWxMb2dp
Y2FsV2lkdGggKz0gY3Vyci0+bG9naWNhbFdpZHRoKCk7CiAgICAgICAgIH0KICAgICAgICAgTGF5
b3V0VW5pdCBzdHJpcFggPSByZWN0LngoKSAtIChpc0hvcml6b250YWwoKSA/IGxvZ2ljYWxPZmZz
ZXRPbkxpbmUgOiAwX2x1KTsKQEAgLTEzMTUsNyArMTMxMiw3IEBAIHZvaWQgSW5saW5lRmxvd0Jv
eDo6cGFpbnRGaWxsTGF5ZXIoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IENvbG9y
JiBjb2xvCiAgICAgfQogfQogCi12b2lkIElubGluZUZsb3dCb3g6OnBhaW50Qm94U2hhZG93KGNv
bnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBTaGFkb3dTdHls
ZSBzaGFkb3dTdHlsZSwgY29uc3QgTGF5b3V0UmVjdCYgcGFpbnRSZWN0KQordm9pZCBMZWdhY3lJ
bmxpbmVGbG93Qm94OjpwYWludEJveFNoYWRvdyhjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0
IFJlbmRlclN0eWxlJiBzdHlsZSwgU2hhZG93U3R5bGUgc2hhZG93U3R5bGUsIGNvbnN0IExheW91
dFJlY3QmIHBhaW50UmVjdCkKIHsKICAgICBpZiAoKCFwcmV2TGluZUJveCgpICYmICFuZXh0TGlu
ZUJveCgpKSB8fCAhcGFyZW50KCkpCiAgICAgICAgIHJlbmRlcmVyKCkucGFpbnRCb3hTaGFkb3co
aW5mbywgcGFpbnRSZWN0LCBzdHlsZSwgc2hhZG93U3R5bGUpOwpAQCAtMTMyNiw3ICsxMzIzLDcg
QEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludEJveFNoYWRvdyhjb25zdCBQYWludEluZm8mIGlu
Zm8sIGNvbnN0IFJlbmRlclN0eWxlJiBzdHkKICAgICB9CiB9CiAKLXZvaWQgSW5saW5lRmxvd0Jv
eDo6Y29uc3RyYWluVG9MaW5lVG9wQW5kQm90dG9tSWZOZWVkZWQoTGF5b3V0UmVjdCYgcmVjdCkg
Y29uc3QKK3ZvaWQgTGVnYWN5SW5saW5lRmxvd0JveDo6Y29uc3RyYWluVG9MaW5lVG9wQW5kQm90
dG9tSWZOZWVkZWQoTGF5b3V0UmVjdCYgcmVjdCkgY29uc3QKIHsKICAgICBib29sIG5vUXVpcmtz
TW9kZSA9IHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5pbk5vUXVpcmtzTW9kZSgpOwogICAgIGlmICgh
bm9RdWlya3NNb2RlICYmICFoYXNUZXh0Q2hpbGRyZW4oKSAmJiAhKGRlc2NlbmRhbnRzSGF2ZVNh
bWVMaW5lSGVpZ2h0QW5kQmFzZWxpbmUoKSAmJiBoYXNUZXh0RGVzY2VuZGFudHMoKSkpIHsKQEAg
LTEzNDYsNyArMTM0Myw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6Y29uc3RyYWluVG9MaW5lVG9w
QW5kQm90dG9tSWZOZWVkZWQoTGF5b3V0UmVjdCYgcmVjdCkgY29uc3QKICAgICB9CiB9CiAKLXN0
YXRpYyBMYXlvdXRSZWN0IGNsaXBSZWN0Rm9yTmluZVBpZWNlSW1hZ2VTdHJpcChJbmxpbmVGbG93
Qm94KiBib3gsIGNvbnN0IE5pbmVQaWVjZUltYWdlJiBpbWFnZSwgY29uc3QgTGF5b3V0UmVjdCYg
cGFpbnRSZWN0KQorc3RhdGljIExheW91dFJlY3QgY2xpcFJlY3RGb3JOaW5lUGllY2VJbWFnZVN0
cmlwKExlZ2FjeUlubGluZUZsb3dCb3gqIGJveCwgY29uc3QgTmluZVBpZWNlSW1hZ2UmIGltYWdl
LCBjb25zdCBMYXlvdXRSZWN0JiBwYWludFJlY3QpCiB7CiAgICAgTGF5b3V0UmVjdCBjbGlwUmVj
dChwYWludFJlY3QpOwogICAgIGF1dG8mIHN0eWxlID0gYm94LT5yZW5kZXJlcigpLnN0eWxlKCk7
CkBAIC0xMzczLDcgKzEzNzAsNyBAQCBzdGF0aWMgTGF5b3V0UmVjdCBjbGlwUmVjdEZvck5pbmVQ
aWVjZUltYWdlU3RyaXAoSW5saW5lRmxvd0JveCogYm94LCBjb25zdCBOaW5lUAogICAgIHJldHVy
biBjbGlwUmVjdDsKIH0KIAotdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludEJveERlY29yYXRpb25z
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCit2
b2lkIExlZ2FjeUlubGluZUZsb3dCb3g6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIHsKICAgICBpZiAoIXBh
aW50SW5mby5zaG91bGRQYWludFdpdGhpblJvb3QocmVuZGVyZXIoKSkgfHwgcmVuZGVyZXIoKS5z
dHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlIHx8IHBhaW50SW5mby5w
aGFzZSAhPSBQYWludFBoYXNlOjpGb3JlZ3JvdW5kKQogICAgICAgICByZXR1cm47CkBAIC0xNDMy
LDEwICsxNDI5LDEwIEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmCiAgICAgICAgIC8vIEZJWE1F
OiBXaGF0IHRoZSBoZWNrIGRvIHdlIGRvIHdpdGggUlRMIGhlcmU/IFRoZSBtYXRoIHdlJ3JlIHVz
aW5nIGlzIG9idmlvdXNseSBub3QgcmlnaHQsCiAgICAgICAgIC8vIGJ1dCBpdCBpc24ndCBldmVu
IGNsZWFyIGhvdyB0aGlzIHNob3VsZCB3b3JrIGF0IGFsbC4KICAgICAgICAgTGF5b3V0VW5pdCBs
b2dpY2FsT2Zmc2V0T25MaW5lOwotICAgICAgICBmb3IgKElubGluZUZsb3dCb3gqIGN1cnIgPSBw
cmV2TGluZUJveCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+cHJldkxpbmVCb3goKSkKKyAgICAgICAg
Zm9yIChhdXRvKiBjdXJyID0gcHJldkxpbmVCb3goKTsgY3VycjsgY3VyciA9IGN1cnItPnByZXZM
aW5lQm94KCkpCiAgICAgICAgICAgICBsb2dpY2FsT2Zmc2V0T25MaW5lICs9IGN1cnItPmxvZ2lj
YWxXaWR0aCgpOwogICAgICAgICBMYXlvdXRVbml0IHRvdGFsTG9naWNhbFdpZHRoID0gbG9naWNh
bE9mZnNldE9uTGluZTsKLSAgICAgICAgZm9yIChJbmxpbmVGbG93Qm94KiBjdXJyID0gdGhpczsg
Y3VycjsgY3VyciA9IGN1cnItPm5leHRMaW5lQm94KCkpCisgICAgICAgIGZvciAoYXV0byogY3Vy
ciA9IHRoaXM7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0TGluZUJveCgpKQogICAgICAgICAgICAg
dG90YWxMb2dpY2FsV2lkdGggKz0gY3Vyci0+bG9naWNhbFdpZHRoKCk7CiAgICAgICAgIExheW91
dFVuaXQgc3RyaXBYID0gYWRqdXN0ZWRQYWludG9mZnNldC54KCkgLSAoaXNIb3Jpem9udGFsKCkg
PyBsb2dpY2FsT2Zmc2V0T25MaW5lIDogMF9sdSk7CiAgICAgICAgIExheW91dFVuaXQgc3RyaXBZ
ID0gYWRqdXN0ZWRQYWludG9mZnNldC55KCkgLSAoaXNIb3Jpem9udGFsKCkgPyAwX2x1IDogbG9n
aWNhbE9mZnNldE9uTGluZSk7CkBAIC0xNDQ5LDcgKzE0NDYsNyBAQCB2b2lkIElubGluZUZsb3dC
b3g6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvaW50JgogICAgIH0KIH0KIAotdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludE1hc2soUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKK3ZvaWQgTGVn
YWN5SW5saW5lRmxvd0JveDo6cGFpbnRNYXNrKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7CiAgICAgaWYgKCFwYWludEluZm8uc2hvdWxkUGFp
bnRXaXRoaW5Sb290KHJlbmRlcmVyKCkpIHx8IHJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5
KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSB8fCBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFz
ZTo6TWFzaykKICAgICAgICAgcmV0dXJuOwpAQCAtMTQ5MiwxOCArMTQ4OSwxOCBAQCB2b2lkIElu
bGluZUZsb3dCb3g6OnBhaW50TWFzayhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2ZmcwogICAgICAgICByZXR1cm47IC8vIERvbid0IHBhaW50IGFueXRoaW5n
IHdoaWxlIHdlIHdhaXQgZm9yIHRoZSBpbWFnZSB0byBsb2FkLgogICAgIH0KIAotICAgIC8vIFRo
ZSBzaW1wbGUgY2FzZSBpcyB3aGVyZSB3ZSBhcmUgdGhlIG9ubHkgYm94IGZvciB0aGlzIG9iamVj
dC4gIEluIHRob3NlCisgICAgLy8gVGhlIHNpbXBsZSBjYXNlIGlzIHdoZXJlIHdlIGFyZSB0aGUg
b25seSBib3ggZm9yIHRoaXMgb2JqZWN0LiBJbiB0aG9zZQogICAgIC8vIGNhc2VzIG9ubHkgYSBz
aW5nbGUgY2FsbCB0byBkcmF3IGlzIHJlcXVpcmVkLgotICAgIGlmICghcHJldkxpbmVCb3goKSAm
JiAhbmV4dExpbmVCb3goKSkgeworICAgIGlmICghcHJldkxpbmVCb3goKSAmJiAhbmV4dExpbmVC
b3goKSkKICAgICAgICAgcmVuZGVyZXIoKS5wYWludE5pbmVQaWVjZUltYWdlKHBhaW50SW5mby5j
b250ZXh0KCksIExheW91dFJlY3QoYWRqdXN0ZWRQYWludE9mZnNldCwgZnJhbWVSZWN0LnNpemUo
KSksIHJlbmRlcmVyKCkuc3R5bGUoKSwgbWFza05pbmVQaWVjZUltYWdlLCBjb21wb3NpdGVPcCk7
Ci0gICAgfSBlbHNlIHsKKyAgICBlbHNlIHsKICAgICAgICAgLy8gV2UgaGF2ZSBhIG1hc2sgaW1h
Z2UgdGhhdCBzcGFucyBtdWx0aXBsZSBsaW5lcy4KICAgICAgICAgLy8gV2UgbmVlZCB0byBhZGp1
c3QgX3R4IGFuZCBfdHkgYnkgdGhlIHdpZHRoIG9mIGFsbCBwcmV2aW91cyBsaW5lcy4KICAgICAg
ICAgTGF5b3V0VW5pdCBsb2dpY2FsT2Zmc2V0T25MaW5lOwotICAgICAgICBmb3IgKElubGluZUZs
b3dCb3gqIGN1cnIgPSBwcmV2TGluZUJveCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+cHJldkxpbmVC
b3goKSkKKyAgICAgICAgZm9yIChhdXRvKiBjdXJyID0gcHJldkxpbmVCb3goKTsgY3VycjsgY3Vy
ciA9IGN1cnItPnByZXZMaW5lQm94KCkpCiAgICAgICAgICAgICBsb2dpY2FsT2Zmc2V0T25MaW5l
ICs9IGN1cnItPmxvZ2ljYWxXaWR0aCgpOwogICAgICAgICBMYXlvdXRVbml0IHRvdGFsTG9naWNh
bFdpZHRoID0gbG9naWNhbE9mZnNldE9uTGluZTsKLSAgICAgICAgZm9yIChJbmxpbmVGbG93Qm94
KiBjdXJyID0gdGhpczsgY3VycjsgY3VyciA9IGN1cnItPm5leHRMaW5lQm94KCkpCisgICAgICAg
IGZvciAoYXV0byogY3VyciA9IHRoaXM7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0TGluZUJveCgp
KQogICAgICAgICAgICAgdG90YWxMb2dpY2FsV2lkdGggKz0gY3Vyci0+bG9naWNhbFdpZHRoKCk7
CiAgICAgICAgIExheW91dFVuaXQgc3RyaXBYID0gYWRqdXN0ZWRQYWludE9mZnNldC54KCkgLSAo
aXNIb3Jpem9udGFsKCkgPyBsb2dpY2FsT2Zmc2V0T25MaW5lIDogMF9sdSk7CiAgICAgICAgIExh
eW91dFVuaXQgc3RyaXBZID0gYWRqdXN0ZWRQYWludE9mZnNldC55KCkgLSAoaXNIb3Jpem9udGFs
KCkgPyAwX2x1IDogbG9naWNhbE9mZnNldE9uTGluZSk7CkBAIC0xNTIwLDI4ICsxNTE3LDI4IEBA
IHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRNYXNrKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZW5k
VHJhbnNwYXJlbmN5TGF5ZXIoKTsKIH0KIAotTGVnYWN5SW5saW5lQm94KiBJbmxpbmVGbG93Qm94
OjpmaXJzdExlYWZEZXNjZW5kYW50KCkgY29uc3QKK0xlZ2FjeUlubGluZUJveCogTGVnYWN5SW5s
aW5lRmxvd0JveDo6Zmlyc3RMZWFmRGVzY2VuZGFudCgpIGNvbnN0CiB7CiAgICAgTGVnYWN5SW5s
aW5lQm94KiBsZWFmID0gbnVsbHB0cjsKICAgICBmb3IgKGF1dG8qIGNoaWxkID0gZmlyc3RDaGls
ZCgpOyBjaGlsZCAmJiAhbGVhZjsgY2hpbGQgPSBjaGlsZC0+bmV4dE9uTGluZSgpKQotICAgICAg
ICBsZWFmID0gY2hpbGQtPmlzTGVhZigpID8gY2hpbGQgOiBkb3duY2FzdDxJbmxpbmVGbG93Qm94
PigqY2hpbGQpLmZpcnN0TGVhZkRlc2NlbmRhbnQoKTsKKyAgICAgICAgbGVhZiA9IGNoaWxkLT5p
c0xlYWYoKSA/IGNoaWxkIDogZG93bmNhc3Q8TGVnYWN5SW5saW5lRmxvd0JveD4oKmNoaWxkKS5m
aXJzdExlYWZEZXNjZW5kYW50KCk7CiAgICAgcmV0dXJuIGxlYWY7CiB9CiAKLUxlZ2FjeUlubGlu
ZUJveCogSW5saW5lRmxvd0JveDo6bGFzdExlYWZEZXNjZW5kYW50KCkgY29uc3QKK0xlZ2FjeUlu
bGluZUJveCogTGVnYWN5SW5saW5lRmxvd0JveDo6bGFzdExlYWZEZXNjZW5kYW50KCkgY29uc3QK
IHsKICAgICBMZWdhY3lJbmxpbmVCb3gqIGxlYWYgPSBudWxscHRyOwogICAgIGZvciAoYXV0byog
Y2hpbGQgPSBsYXN0Q2hpbGQoKTsgY2hpbGQgJiYgIWxlYWY7IGNoaWxkID0gY2hpbGQtPnByZXZp
b3VzT25MaW5lKCkpCi0gICAgICAgIGxlYWYgPSBjaGlsZC0+aXNMZWFmKCkgPyBjaGlsZCA6IGRv
d25jYXN0PElubGluZUZsb3dCb3g+KCpjaGlsZCkubGFzdExlYWZEZXNjZW5kYW50KCk7CisgICAg
ICAgIGxlYWYgPSBjaGlsZC0+aXNMZWFmKCkgPyBjaGlsZCA6IGRvd25jYXN0PExlZ2FjeUlubGlu
ZUZsb3dCb3g+KCpjaGlsZCkubGFzdExlYWZEZXNjZW5kYW50KCk7CiAgICAgcmV0dXJuIGxlYWY7
CiB9CiAKLVJlbmRlck9iamVjdDo6SGlnaGxpZ2h0U3RhdGUgSW5saW5lRmxvd0JveDo6c2VsZWN0
aW9uU3RhdGUoKQorUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZSBMZWdhY3lJbmxpbmVGbG93
Qm94OjpzZWxlY3Rpb25TdGF0ZSgpCiB7CiAgICAgcmV0dXJuIFJlbmRlck9iamVjdDo6SGlnaGxp
Z2h0U3RhdGU6Ok5vbmU7CiB9CiAKLWJvb2wgSW5saW5lRmxvd0JveDo6Y2FuQWNjb21tb2RhdGVF
bGxpcHNpcyhib29sIGx0ciwgaW50IGJsb2NrRWRnZSwgaW50IGVsbGlwc2lzV2lkdGgpIGNvbnN0
Citib29sIExlZ2FjeUlubGluZUZsb3dCb3g6OmNhbkFjY29tbW9kYXRlRWxsaXBzaXMoYm9vbCBs
dHIsIGludCBibG9ja0VkZ2UsIGludCBlbGxpcHNpc1dpZHRoKSBjb25zdAogewogICAgIGZvciAo
YXV0byogYm94ID0gZmlyc3RDaGlsZCgpOyBib3g7IGJveCA9IGJveC0+bmV4dE9uTGluZSgpKSB7
CiAgICAgICAgIGlmICghYm94LT5jYW5BY2NvbW1vZGF0ZUVsbGlwc2lzKGx0ciwgYmxvY2tFZGdl
LCBlbGxpcHNpc1dpZHRoKSkKQEAgLTE1NTAsMTEgKzE1NDcsMTEgQEAgYm9vbCBJbmxpbmVGbG93
Qm94OjpjYW5BY2NvbW1vZGF0ZUVsbGlwc2lzKGJvb2wgbHRyLCBpbnQgYmxvY2tFZGdlLCBpbnQg
ZWxsaXBzaXMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotZmxvYXQgSW5saW5lRmxvd0JveDo6cGxh
Y2VFbGxpcHNpc0JveChib29sIGx0ciwgZmxvYXQgYmxvY2tMZWZ0RWRnZSwgZmxvYXQgYmxvY2tS
aWdodEVkZ2UsIGZsb2F0IGVsbGlwc2lzV2lkdGgsIGZsb2F0ICZ0cnVuY2F0ZWRXaWR0aCwgYm9v
bCYgZm91bmRCb3gpCitmbG9hdCBMZWdhY3lJbmxpbmVGbG93Qm94OjpwbGFjZUVsbGlwc2lzQm94
KGJvb2wgbHRyLCBmbG9hdCBibG9ja0xlZnRFZGdlLCBmbG9hdCBibG9ja1JpZ2h0RWRnZSwgZmxv
YXQgZWxsaXBzaXNXaWR0aCwgZmxvYXQgJnRydW5jYXRlZFdpZHRoLCBib29sJiBmb3VuZEJveCkK
IHsKICAgICBmbG9hdCByZXN1bHQgPSAtMTsKICAgICAvLyBXZSBpdGVyYXRlIG92ZXIgYWxsIGNo
aWxkcmVuLCB0aGUgZm91bmRCb3ggdmFyaWFibGUgdGVsbHMgdXMgd2hlbiB3ZSd2ZSBmb3VuZCB0
aGUKLSAgICAvLyBib3ggY29udGFpbmluZyB0aGUgZWxsaXBzaXMuICBBbGwgYm94ZXMgYWZ0ZXIg
dGhhdCBvbmUgaW4gdGhlIGZsb3cgYXJlIGhpZGRlbi4KKyAgICAvLyBib3ggY29udGFpbmluZyB0
aGUgZWxsaXBzaXMuIEFsbCBib3hlcyBhZnRlciB0aGF0IG9uZSBpbiB0aGUgZmxvdyBhcmUgaGlk
ZGVuLgogICAgIC8vIElmIG91ciBmbG93IGlzIGx0ciB0aGVuIGl0ZXJhdGUgb3ZlciB0aGUgYm94
ZXMgZnJvbSBsZWZ0IHRvIHJpZ2h0LCBvdGhlcndpc2UgaXRlcmF0ZQogICAgIC8vIGZyb20gcmln
aHQgdG8gbGVmdC4gVmFyeWluZyB0aGUgb3JkZXIgYWxsb3dzIHVzIHRvIGNvcnJlY3RseSBoaWRl
IHRoZSBib3hlcyBmb2xsb3dpbmcgdGhlIGVsbGlwc2lzLgogICAgIExlZ2FjeUlubGluZUJveCog
Ym94ID0gbHRyID8gZmlyc3RDaGlsZCgpIDogbGFzdENoaWxkKCk7CkBAIC0xNTcxLDggKzE1Njgs
NyBAQCBmbG9hdCBJbmxpbmVGbG93Qm94OjpwbGFjZUVsbGlwc2lzQm94KGJvb2wgbHRyLCBmbG9h
dCBibG9ja0xlZnRFZGdlLCBmbG9hdCBibG9jawogICAgICAgICBpZiAobHRyKSB7CiAgICAgICAg
ICAgICB2aXNpYmxlTGVmdEVkZ2UgKz0gYm94LT5sb2dpY2FsV2lkdGgoKTsKICAgICAgICAgICAg
IGJveCA9IGJveC0+bmV4dE9uTGluZSgpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgeworICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgdmlzaWJsZVJpZ2h0RWRnZSAtPSBib3gtPmxvZ2lj
YWxXaWR0aCgpOwogICAgICAgICAgICAgYm94ID0gYm94LT5wcmV2aW91c09uTGluZSgpOwogICAg
ICAgICB9CkBAIC0xNTgwLDIxICsxNTc2LDIxIEBAIGZsb2F0IElubGluZUZsb3dCb3g6OnBsYWNl
RWxsaXBzaXNCb3goYm9vbCBsdHIsIGZsb2F0IGJsb2NrTGVmdEVkZ2UsIGZsb2F0IGJsb2NrCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBJbmxpbmVGbG93Qm94OjpjbGVhclRydW5jYXRp
b24oKQordm9pZCBMZWdhY3lJbmxpbmVGbG93Qm94OjpjbGVhclRydW5jYXRpb24oKQogewogICAg
IGZvciAoYXV0byogYm94ID0gZmlyc3RDaGlsZCgpOyBib3g7IGJveCA9IGJveC0+bmV4dE9uTGlu
ZSgpKQogICAgICAgICBib3gtPmNsZWFyVHJ1bmNhdGlvbigpOwogfQogCi1MYXlvdXRVbml0IElu
bGluZUZsb3dCb3g6OmNvbXB1dGVPdmVyQW5ub3RhdGlvbkFkanVzdG1lbnQoTGF5b3V0VW5pdCBh
bGxvd2VkUG9zaXRpb24pIGNvbnN0CitMYXlvdXRVbml0IExlZ2FjeUlubGluZUZsb3dCb3g6OmNv
bXB1dGVPdmVyQW5ub3RhdGlvbkFkanVzdG1lbnQoTGF5b3V0VW5pdCBhbGxvd2VkUG9zaXRpb24p
IGNvbnN0CiB7CiAgICAgTGF5b3V0VW5pdCByZXN1bHQ7CiAgICAgZm9yIChhdXRvKiBjaGlsZCA9
IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRPbkxpbmUoKSkgewogICAg
ICAgICBpZiAoY2hpbGQtPnJlbmRlcmVyKCkuaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCiAgICAg
ICAgICAgICBjb250aW51ZTsgLy8gUG9zaXRpb25lZCBwbGFjZWhvbGRlcnMgZG9uJ3QgYWZmZWN0
IGNhbGN1bGF0aW9ucy4KICAgICAgICAgCi0gICAgICAgIGlmIChpczxJbmxpbmVGbG93Qm94Pigq
Y2hpbGQpKQotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYXgocmVzdWx0LCBkb3duY2FzdDxJ
bmxpbmVGbG93Qm94PigqY2hpbGQpLmNvbXB1dGVPdmVyQW5ub3RhdGlvbkFkanVzdG1lbnQoYWxs
b3dlZFBvc2l0aW9uKSk7CisgICAgICAgIGlmIChpczxMZWdhY3lJbmxpbmVGbG93Qm94PigqY2hp
bGQpKQorICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYXgocmVzdWx0LCBkb3duY2FzdDxMZWdh
Y3lJbmxpbmVGbG93Qm94PigqY2hpbGQpLmNvbXB1dGVPdmVyQW5ub3RhdGlvbkFkanVzdG1lbnQo
YWxsb3dlZFBvc2l0aW9uKSk7CiAgICAgICAgIAogICAgICAgICBpZiAoY2hpbGQtPnJlbmRlcmVy
KCkuaXNSZXBsYWNlZCgpICYmIGlzPFJlbmRlclJ1YnlSdW4+KGNoaWxkLT5yZW5kZXJlcigpKSAm
JiBjaGlsZC0+cmVuZGVyZXIoKS5zdHlsZSgpLnJ1YnlQb3NpdGlvbigpID09IFJ1YnlQb3NpdGlv
bjo6QmVmb3JlKSB7CiAgICAgICAgICAgICBhdXRvJiBydWJ5UnVuID0gZG93bmNhc3Q8UmVuZGVy
UnVieVJ1bj4oY2hpbGQtPnJlbmRlcmVyKCkpOwpAQCAtMTYzNCwxNSArMTYzMCwxNSBAQCBMYXlv
dXRVbml0IElubGluZUZsb3dCb3g6OmNvbXB1dGVPdmVyQW5ub3RhdGlvbkFkanVzdG1lbnQoTGF5
b3V0VW5pdCBhbGxvd2VkUG9zaQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUxheW91dFVuaXQg
SW5saW5lRmxvd0JveDo6Y29tcHV0ZVVuZGVyQW5ub3RhdGlvbkFkanVzdG1lbnQoTGF5b3V0VW5p
dCBhbGxvd2VkUG9zaXRpb24pIGNvbnN0CitMYXlvdXRVbml0IExlZ2FjeUlubGluZUZsb3dCb3g6
OmNvbXB1dGVVbmRlckFubm90YXRpb25BZGp1c3RtZW50KExheW91dFVuaXQgYWxsb3dlZFBvc2l0
aW9uKSBjb25zdAogewogICAgIExheW91dFVuaXQgcmVzdWx0OwogICAgIGZvciAoYXV0byogY2hp
bGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0T25MaW5lKCkpIHsK
ICAgICAgICAgaWYgKGNoaWxkLT5yZW5kZXJlcigpLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQog
ICAgICAgICAgICAgY29udGludWU7IC8vIFBvc2l0aW9uZWQgcGxhY2Vob2xkZXJzIGRvbid0IGFm
ZmVjdCBjYWxjdWxhdGlvbnMuCiAKLSAgICAgICAgaWYgKGlzPElubGluZUZsb3dCb3g+KCpjaGls
ZCkpCi0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1heChyZXN1bHQsIGRvd25jYXN0PElubGlu
ZUZsb3dCb3g+KCpjaGlsZCkuY29tcHV0ZVVuZGVyQW5ub3RhdGlvbkFkanVzdG1lbnQoYWxsb3dl
ZFBvc2l0aW9uKSk7CisgICAgICAgIGlmIChpczxMZWdhY3lJbmxpbmVGbG93Qm94PigqY2hpbGQp
KQorICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYXgocmVzdWx0LCBkb3duY2FzdDxMZWdhY3lJ
bmxpbmVGbG93Qm94PigqY2hpbGQpLmNvbXB1dGVVbmRlckFubm90YXRpb25BZGp1c3RtZW50KGFs
bG93ZWRQb3NpdGlvbikpOwogCiAgICAgICAgIGlmIChjaGlsZC0+cmVuZGVyZXIoKS5pc1JlcGxh
Y2VkKCkgJiYgaXM8UmVuZGVyUnVieVJ1bj4oY2hpbGQtPnJlbmRlcmVyKCkpICYmIGNoaWxkLT5y
ZW5kZXJlcigpLnN0eWxlKCkucnVieVBvc2l0aW9uKCkgPT0gUnVieVBvc2l0aW9uOjpBZnRlcikg
ewogICAgICAgICAgICAgYXV0byYgcnVieVJ1biA9IGRvd25jYXN0PFJlbmRlclJ1YnlSdW4+KGNo
aWxkLT5yZW5kZXJlcigpKTsKQEAgLTE2ODIsNyArMTY3OCw3IEBAIExheW91dFVuaXQgSW5saW5l
Rmxvd0JveDo6Y29tcHV0ZVVuZGVyQW5ub3RhdGlvbkFkanVzdG1lbnQoTGF5b3V0VW5pdCBhbGxv
d2VkUG9zCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBJbmxpbmVGbG93Qm94Ojpjb2xs
ZWN0TGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIoVmVjdG9yPExlZ2FjeUlubGluZUJveCo+JiBsZWFm
Qm94ZXNJbkxvZ2ljYWxPcmRlciwgQ3VzdG9tSW5saW5lQm94UmFuZ2VSZXZlcnNlIGN1c3RvbVJl
dmVyc2VJbXBsZW1lbnRhdGlvbiwgdm9pZCogdXNlckRhdGEpIGNvbnN0Cit2b2lkIExlZ2FjeUlu
bGluZUZsb3dCb3g6OmNvbGxlY3RMZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcihWZWN0b3I8TGVnYWN5
SW5saW5lQm94Kj4mIGxlYWZCb3hlc0luTG9naWNhbE9yZGVyLCBDdXN0b21JbmxpbmVCb3hSYW5n
ZVJldmVyc2UgY3VzdG9tUmV2ZXJzZUltcGxlbWVudGF0aW9uLCB2b2lkKiB1c2VyRGF0YSkgY29u
c3QKIHsKICAgICBMZWdhY3lJbmxpbmVCb3gqIGxlYWYgPSBmaXJzdExlYWZEZXNjZW5kYW50KCk7
CiAKQEAgLTE3MzUsMTEgKzE3MzEsMTEgQEAgdm9pZCBJbmxpbmVGbG93Qm94Ojpjb2xsZWN0TGVh
ZkJveGVzSW5Mb2dpY2FsT3JkZXIoVmVjdG9yPExlZ2FjeUlubGluZUJveCo+JiBsZWEKICAgICB9
CiB9CiAKLXZvaWQgSW5saW5lRmxvd0JveDo6Y29tcHV0ZVJlcGxhY2VkQW5kVGV4dExpbmVUb3BB
bmRCb3R0b20oTGF5b3V0VW5pdCYgbGluZVRvcCwgTGF5b3V0VW5pdCYgbGluZUJvdHRvbSkgY29u
c3QKK3ZvaWQgTGVnYWN5SW5saW5lRmxvd0JveDo6Y29tcHV0ZVJlcGxhY2VkQW5kVGV4dExpbmVU
b3BBbmRCb3R0b20oTGF5b3V0VW5pdCYgbGluZVRvcCwgTGF5b3V0VW5pdCYgbGluZUJvdHRvbSkg
Y29uc3QKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8qIGJveCA9IGZpcnN0Q2hpbGQoKTsgYm94OyBi
b3ggPSBib3gtPm5leHRPbkxpbmUoKSkgewotICAgICAgICBpZiAoaXM8SW5saW5lRmxvd0JveD4o
KmJveCkpCi0gICAgICAgICAgICBkb3duY2FzdDxJbmxpbmVGbG93Qm94PigqYm94KS5jb21wdXRl
UmVwbGFjZWRBbmRUZXh0TGluZVRvcEFuZEJvdHRvbShsaW5lVG9wLCBsaW5lQm90dG9tKTsKKyAg
ICAgICAgaWYgKGlzPExlZ2FjeUlubGluZUZsb3dCb3g+KCpib3gpKQorICAgICAgICAgICAgZG93
bmNhc3Q8TGVnYWN5SW5saW5lRmxvd0JveD4oKmJveCkuY29tcHV0ZVJlcGxhY2VkQW5kVGV4dExp
bmVUb3BBbmRCb3R0b20obGluZVRvcCwgbGluZUJvdHRvbSk7CiAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgaWYgKGJveC0+bG9naWNhbFRvcCgpIDwgbGluZVRvcCkKICAgICAgICAgICAgICAg
ICBsaW5lVG9wID0gYm94LT5sb2dpY2FsVG9wKCk7CkBAIC0xNzUxLDEyICsxNzQ3LDEyIEBAIHZv
aWQgSW5saW5lRmxvd0JveDo6Y29tcHV0ZVJlcGxhY2VkQW5kVGV4dExpbmVUb3BBbmRCb3R0b20o
TGF5b3V0VW5pdCYgbGluZVRvcCwKIAogI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykKIAotY29u
c3QgY2hhciogSW5saW5lRmxvd0JveDo6Ym94TmFtZSgpIGNvbnN0Citjb25zdCBjaGFyKiBMZWdh
Y3lJbmxpbmVGbG93Qm94Ojpib3hOYW1lKCkgY29uc3QKIHsKICAgICByZXR1cm4gIklubGluZUZs
b3dCb3giOwogfQogCi12b2lkIElubGluZUZsb3dCb3g6Om91dHB1dExpbmVUcmVlQW5kTWFyayhX
VEY6OlRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgTGVnYWN5SW5saW5lQm94KiBtYXJrZWRCb3gs
IGludCBkZXB0aCkgY29uc3QKK3ZvaWQgTGVnYWN5SW5saW5lRmxvd0JveDo6b3V0cHV0TGluZVRy
ZWVBbmRNYXJrKFdURjo6VGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBMZWdhY3lJbmxpbmVCb3gq
IG1hcmtlZEJveCwgaW50IGRlcHRoKSBjb25zdAogewogICAgIExlZ2FjeUlubGluZUJveDo6b3V0
cHV0TGluZVRyZWVBbmRNYXJrKHN0cmVhbSwgbWFya2VkQm94LCBkZXB0aCk7CiAgICAgZm9yIChj
b25zdCBMZWdhY3lJbmxpbmVCb3gqIGJveCA9IGZpcnN0Q2hpbGQoKTsgYm94OyBib3ggPSBib3gt
Pm5leHRPbkxpbmUoKSkKQEAgLTE3NjcsNyArMTc2Myw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6
b3V0cHV0TGluZVRyZWVBbmRNYXJrKFdURjo6VGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBMZWdh
Y3lJCiAKICNpZm5kZWYgTkRFQlVHCiAKLXZvaWQgSW5saW5lRmxvd0JveDo6Y2hlY2tDb25zaXN0
ZW5jeSgpIGNvbnN0Cit2b2lkIExlZ2FjeUlubGluZUZsb3dCb3g6OmNoZWNrQ29uc2lzdGVuY3ko
KSBjb25zdAogewogICAgIGFzc2VydE5vdERlbGV0ZWQoKTsKICAgICBBU1NFUlRfV0lUSF9TRUNV
UklUWV9JTVBMSUNBVElPTighbV9oYXNCYWRDaGlsZExpc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9MZWdhY3lJbmxpbmVGbG93Qm94LmgKc2ltaWxhcml0eSBpbmRleCA5MSUKcmVuYW1lIGZy
b20gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaApyZW5hbWUgdG8gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUZsb3dCb3guaAppbmRleCBlNzFhN2Zj
Zjg4ZTguLmI3YTNiNWFjZTk5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZUZsb3dCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5s
aW5lRmxvd0JveC5oCkBAIC0zNywxMCArMzcsMTAgQEAgc3RydWN0IEdseXBoT3ZlcmZsb3c7CiAK
IHR5cGVkZWYgSGFzaE1hcDxjb25zdCBJbmxpbmVUZXh0Qm94Kiwgc3RkOjpwYWlyPFZlY3Rvcjxj
b25zdCBGb250Kj4sIEdseXBoT3ZlcmZsb3c+PiBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250
c01hcDsKIAotY2xhc3MgSW5saW5lRmxvd0JveCA6IHB1YmxpYyBMZWdhY3lJbmxpbmVCb3ggewot
ICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSW5saW5lRmxvd0JveCk7CitjbGFzcyBMZWdhY3lJ
bmxpbmVGbG93Qm94IDogcHVibGljIExlZ2FjeUlubGluZUJveCB7CisgICAgV1RGX01BS0VfSVNP
X0FMTE9DQVRFRChMZWdhY3lJbmxpbmVGbG93Qm94KTsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBJ
bmxpbmVGbG93Qm94KFJlbmRlckJveE1vZGVsT2JqZWN0JiByZW5kZXJlcikKKyAgICBleHBsaWNp
dCBMZWdhY3lJbmxpbmVGbG93Qm94KFJlbmRlckJveE1vZGVsT2JqZWN0JiByZW5kZXJlcikKICAg
ICAgICAgOiBMZWdhY3lJbmxpbmVCb3gocmVuZGVyZXIpCiAgICAgICAgICwgbV9pbmNsdWRlTG9n
aWNhbExlZnRFZGdlKGZhbHNlKQogICAgICAgICAsIG1faW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2Uo
ZmFsc2UpCkBAIC01OCwxNyArNTgsMTcgQEAgcHVibGljOgogICAgICAgICAsIG1fcHJldkxpbmVC
b3gobnVsbHB0cikKICAgICAgICAgLCBtX25leHRMaW5lQm94KG51bGxwdHIpCiAgICAgewotICAg
ICAgICAvLyBJbnRlcm5ldCBFeHBsb3JlciBhbmQgRmlyZWZveCBhbHdheXMgY3JlYXRlIGEgbWFy
a2VyIGZvciBsaXN0IGl0ZW1zLCBldmVuIHdoZW4gdGhlIGxpc3Qtc3R5bGUtdHlwZSBpcyBub25l
LiAgV2UgZG8gbm90IG1ha2UgYSBtYXJrZXIKLSAgICAgICAgLy8gaW4gdGhlIGxpc3Qtc3R5bGUt
dHlwZTogbm9uZSBjYXNlLCBzaW5jZSBpdCBpcyB3YXN0ZWZ1bCB0byBkbyBzby4gIEhvd2V2ZXIs
IGluIG9yZGVyIHRvIG1hdGNoIG90aGVyIGJyb3dzZXJzIHdlIGhhdmUgdG8gcHJldGVuZCBsaWtl
Ci0gICAgICAgIC8vIGFuIGludmlzaWJsZSBtYXJrZXIgZXhpc3RzLiAgVGhlIHNpZGUgZWZmZWN0
IG9mIGhhdmluZyBhbiBpbnZpc2libGUgbWFya2VyIGlzIHRoYXQgdGhlIHF1aXJrcyBtb2RlIGJl
aGF2aW9yIG9mIHNocmlua2luZyBsaW5lcyB3aXRoIG5vCi0gICAgICAgIC8vIHRleHQgY2hpbGRy
ZW4gbXVzdCBub3QgYXBwbHkuICBUaGlzIGNoYW5nZSBhbHNvIG1lYW5zIHRoYXQgZ2FwcyB3aWxs
IGV4aXN0IGJldHdlZW4gaW1hZ2UgYnVsbGV0IGxpc3QgaXRlbXMuICBFdmVuIHdoZW4gdGhlIGxp
c3QgYnVsbGV0CisgICAgICAgIC8vIEludGVybmV0IEV4cGxvcmVyIGFuZCBGaXJlZm94IGFsd2F5
cyBjcmVhdGUgYSBtYXJrZXIgZm9yIGxpc3QgaXRlbXMsIGV2ZW4gd2hlbiB0aGUgbGlzdC1zdHls
ZS10eXBlIGlzIG5vbmUuIFdlIGRvIG5vdCBtYWtlIGEgbWFya2VyCisgICAgICAgIC8vIGluIHRo
ZSBsaXN0LXN0eWxlLXR5cGU6IG5vbmUgY2FzZSwgc2luY2UgaXQgaXMgd2FzdGVmdWwgdG8gZG8g
c28uIEhvd2V2ZXIsIGluIG9yZGVyIHRvIG1hdGNoIG90aGVyIGJyb3dzZXJzIHdlIGhhdmUgdG8g
cHJldGVuZCBsaWtlCisgICAgICAgIC8vIGFuIGludmlzaWJsZSBtYXJrZXIgZXhpc3RzLiBUaGUg
c2lkZSBlZmZlY3Qgb2YgaGF2aW5nIGFuIGludmlzaWJsZSBtYXJrZXIgaXMgdGhhdCB0aGUgcXVp
cmtzIG1vZGUgYmVoYXZpb3Igb2Ygc2hyaW5raW5nIGxpbmVzIHdpdGggbm8KKyAgICAgICAgLy8g
dGV4dCBjaGlsZHJlbiBtdXN0IG5vdCBhcHBseS4gVGhpcyBjaGFuZ2UgYWxzbyBtZWFucyB0aGF0
IGdhcHMgd2lsbCBleGlzdCBiZXR3ZWVuIGltYWdlIGJ1bGxldCBsaXN0IGl0ZW1zLiBFdmVuIHdo
ZW4gdGhlIGxpc3QgYnVsbGV0CiAgICAgICAgIC8vIGlzIGFuIGltYWdlLCB0aGUgbGluZSBpcyBz
dGlsbCBjb25zaWRlcmVkIHRvIGJlIGltbXVuZSBmcm9tIHRoZSBxdWlyay4KICAgICAgICAgbV9o
YXNUZXh0Q2hpbGRyZW4gPSByZW5kZXJlci5zdHlsZSgpLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlw
ZTo6TGlzdEl0ZW07CiAgICAgICAgIG1faGFzVGV4dERlc2NlbmRhbnRzID0gbV9oYXNUZXh0Q2hp
bGRyZW47CiAgICAgfQogCiAjaWYgIUFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OX0RJ
U0FCTEVECi0gICAgdmlydHVhbCB+SW5saW5lRmxvd0JveCgpOworICAgIHZpcnR1YWwgfkxlZ2Fj
eUlubGluZUZsb3dCb3goKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQpA
QCAtNzksMTAgKzc5LDEwIEBAIHB1YmxpYzoKICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCYgcmVu
ZGVyZXIoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxSZW5kZXJCb3hNb2RlbE9iamVjdD4oTGVn
YWN5SW5saW5lQm94OjpyZW5kZXJlcigpKTsgfQogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBsaW5l
U3R5bGUoKSBjb25zdCB7IHJldHVybiBpc0ZpcnN0TGluZSgpID8gcmVuZGVyZXIoKS5maXJzdExp
bmVTdHlsZSgpIDogcmVuZGVyZXIoKS5zdHlsZSgpOyB9CiAKLSAgICBJbmxpbmVGbG93Qm94KiBw
cmV2TGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJldkxpbmVCb3g7IH0KLSAgICBJbmxpbmVG
bG93Qm94KiBuZXh0TGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dExpbmVCb3g7IH0KLSAg
ICB2b2lkIHNldE5leHRMaW5lQm94KElubGluZUZsb3dCb3gqIG4pIHsgbV9uZXh0TGluZUJveCA9
IG47IH0KLSAgICB2b2lkIHNldFByZXZpb3VzTGluZUJveChJbmxpbmVGbG93Qm94KiBwKSB7IG1f
cHJldkxpbmVCb3ggPSBwOyB9CisgICAgTGVnYWN5SW5saW5lRmxvd0JveCogcHJldkxpbmVCb3go
KSBjb25zdCB7IHJldHVybiBtX3ByZXZMaW5lQm94OyB9CisgICAgTGVnYWN5SW5saW5lRmxvd0Jv
eCogbmV4dExpbmVCb3goKSBjb25zdCB7IHJldHVybiBtX25leHRMaW5lQm94OyB9CisgICAgdm9p
ZCBzZXROZXh0TGluZUJveChMZWdhY3lJbmxpbmVGbG93Qm94KiBuKSB7IG1fbmV4dExpbmVCb3gg
PSBuOyB9CisgICAgdm9pZCBzZXRQcmV2aW91c0xpbmVCb3goTGVnYWN5SW5saW5lRmxvd0JveCog
cCkgeyBtX3ByZXZMaW5lQm94ID0gcDsgfQogCiAgICAgTGVnYWN5SW5saW5lQm94KiBmaXJzdENo
aWxkKCkgY29uc3QgeyBjaGVja0NvbnNpc3RlbmN5KCk7IHJldHVybiBtX2ZpcnN0Q2hpbGQ7IH0K
ICAgICBMZWdhY3lJbmxpbmVCb3gqIGxhc3RDaGlsZCgpIGNvbnN0IHsgY2hlY2tDb25zaXN0ZW5j
eSgpOyByZXR1cm4gbV9sYXN0Q2hpbGQ7IH0KQEAgLTIxNiw5ICsyMTYsOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRIYXNCYWRDaGls
ZExpc3QoKTsKIAotICAgIC8vIExpbmUgdmlzdWFsIGFuZCBsYXlvdXQgb3ZlcmZsb3cgYXJlIGlu
IHRoZSBjb29yZGluYXRlIHNwYWNlIG9mIHRoZSBibG9jay4gIFRoaXMgbWVhbnMgdGhhdCB0aGV5
IGFyZW4ndCBwdXJlbHkgcGh5c2ljYWwgZGlyZWN0aW9ucy4KKyAgICAvLyBMaW5lIHZpc3VhbCBh
bmQgbGF5b3V0IG92ZXJmbG93IGFyZSBpbiB0aGUgY29vcmRpbmF0ZSBzcGFjZSBvZiB0aGUgYmxv
Y2suIFRoaXMgbWVhbnMgdGhhdCB0aGV5IGFyZW4ndCBwdXJlbHkgcGh5c2ljYWwgZGlyZWN0aW9u
cy4KICAgICAvLyBGb3IgaG9yaXpvbnRhbC10YiBhbmQgdmVydGljYWwtbHIgdGhleSB3aWxsIG1h
dGNoIHBoeXNpY2FsIGRpcmVjdGlvbnMsIGJ1dCBmb3IgaG9yaXpvbnRhbC1idCBhbmQgdmVydGlj
YWwtcmwsIHRoZSB0b3AvYm90dG9tIGFuZCBsZWZ0L3JpZ2h0Ci0gICAgLy8gcmVzcGVjdGl2ZWx5
IGFyZSBmbGlwcGVkIHdoZW4gY29tcGFyZWQgdG8gdGhlaXIgcGh5c2ljYWwgY291bnRlcnBhcnRz
LiAgRm9yIGV4YW1wbGUgbWluWCBpcyBvbiB0aGUgbGVmdCBpbiB2ZXJ0aWNhbC1sciwgYnV0IGl0
IGlzIG9uIHRoZSByaWdodCBpbiB2ZXJ0aWNhbC1ybC4KKyAgICAvLyByZXNwZWN0aXZlbHkgYXJl
IGZsaXBwZWQgd2hlbiBjb21wYXJlZCB0byB0aGVpciBwaHlzaWNhbCBjb3VudGVycGFydHMuIEZv
ciBleGFtcGxlIG1pblggaXMgb24gdGhlIGxlZnQgaW4gdmVydGljYWwtbHIsIGJ1dCBpdCBpcyBv
biB0aGUgcmlnaHQgaW4gdmVydGljYWwtcmwuCiAgICAgTGF5b3V0UmVjdCBsYXlvdXRPdmVyZmxv
d1JlY3QoTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20pIGNvbnN0CiAg
ICAgewogICAgICAgICByZXR1cm4gbV9vdmVyZmxvdyA/IG1fb3ZlcmZsb3ctPmxheW91dE92ZXJm
bG93UmVjdCgpIDogZW5jbG9zaW5nTGF5b3V0UmVjdChmcmFtZVJlY3RJbmNsdWRpbmdMaW5lSGVp
Z2h0KGxpbmVUb3AsIGxpbmVCb3R0b20pKTsKQEAgLTM0NiwxMyArMzQ2LDEzIEBAIHByb3RlY3Rl
ZDoKICAgICBMZWdhY3lJbmxpbmVCb3gqIG1fZmlyc3RDaGlsZDsKICAgICBMZWdhY3lJbmxpbmVC
b3gqIG1fbGFzdENoaWxkOwogICAgIAotICAgIElubGluZUZsb3dCb3gqIG1fcHJldkxpbmVCb3g7
IC8vIFRoZSBwcmV2aW91cyBib3ggdGhhdCBhbHNvIHVzZXMgb3VyIFJlbmRlck9iamVjdAotICAg
IElubGluZUZsb3dCb3gqIG1fbmV4dExpbmVCb3g7IC8vIFRoZSBuZXh0IGJveCB0aGF0IGFsc28g
dXNlcyBvdXIgUmVuZGVyT2JqZWN0CisgICAgTGVnYWN5SW5saW5lRmxvd0JveCogbV9wcmV2TGlu
ZUJveDsgLy8gVGhlIHByZXZpb3VzIGJveCB0aGF0IGFsc28gdXNlcyBvdXIgUmVuZGVyT2JqZWN0
CisgICAgTGVnYWN5SW5saW5lRmxvd0JveCogbV9uZXh0TGluZUJveDsgLy8gVGhlIG5leHQgYm94
IHRoYXQgYWxzbyB1c2VzIG91ciBSZW5kZXJPYmplY3QKIH07CiAKICNpZmRlZiBOREVCVUcKIAot
aW5saW5lIHZvaWQgSW5saW5lRmxvd0JveDo6Y2hlY2tDb25zaXN0ZW5jeSgpIGNvbnN0Citpbmxp
bmUgdm9pZCBMZWdhY3lJbmxpbmVGbG93Qm94OjpjaGVja0NvbnNpc3RlbmN5KCkgY29uc3QKIHsK
IH0KIApAQCAtMzYwLDcgKzM2MCw3IEBAIGlubGluZSB2b2lkIElubGluZUZsb3dCb3g6OmNoZWNr
Q29uc2lzdGVuY3koKSBjb25zdAogCiAjaWYgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJ
T05fRElTQUJMRUQKIAotaW5saW5lIHZvaWQgSW5saW5lRmxvd0JveDo6c2V0SGFzQmFkQ2hpbGRM
aXN0KCkKK2lubGluZSB2b2lkIExlZ2FjeUlubGluZUZsb3dCb3g6OnNldEhhc0JhZENoaWxkTGlz
dCgpCiB7CiB9CiAKQEAgLTM2OCw5ICszNjgsOSBAQCBpbmxpbmUgdm9pZCBJbmxpbmVGbG93Qm94
OjpzZXRIYXNCYWRDaGlsZExpc3QoKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLVNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfSU5MSU5FX0JPWChJbmxpbmVGbG93Qm94LCBpc0lubGluZUZsb3dC
b3goKSkKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfSU5MSU5FX0JPWChMZWdhY3lJbmxpbmVGbG93
Qm94LCBpc0lubGluZUZsb3dCb3goKSkKIAogI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykKIC8v
IE91dHNpZGUgdGhlIFdlYkNvcmUgbmFtZXNwYWNlIGZvciBlYXNlIG9mIGludm9jYXRpb24gZnJv
bSB0aGUgZGVidWdnZXIuCi12b2lkIHNob3dUcmVlKGNvbnN0IFdlYkNvcmU6OklubGluZUZsb3dC
b3gqKTsKK3ZvaWQgc2hvd1RyZWUoY29uc3QgV2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0JveCop
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5TGlu
ZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5TGluZUxheW91dC5j
cHAKaW5kZXggYTZjNGM0ZjAyZTA3Li5jYTU4YWE5ZDg4YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvTGVnYWN5TGluZUxheW91dC5jcHAKQEAgLTE5NSw3ICsxOTUsNyBAQCBzdGF0
aWMgaW5saW5lIHZvaWQgZGlydHlMaW5lQm94ZXNGb3JSZW5kZXJlcihSZW5kZXJPYmplY3QmIHJl
bmRlcmVyLCBib29sIGZ1bGxMYQogICAgICAgICBkb3duY2FzdDxSZW5kZXJJbmxpbmU+KHJlbmRl
cmVyKS5kaXJ0eUxpbmVCb3hlcyhmdWxsTGF5b3V0KTsKIH0KIAotc3RhdGljIGJvb2wgcGFyZW50
SXNDb25zdHJ1Y3RlZE9ySGF2ZU5leHQoSW5saW5lRmxvd0JveCogcGFyZW50Qm94KQorc3RhdGlj
IGJvb2wgcGFyZW50SXNDb25zdHJ1Y3RlZE9ySGF2ZU5leHQoTGVnYWN5SW5saW5lRmxvd0JveCog
cGFyZW50Qm94KQogewogICAgIGRvIHsKICAgICAgICAgaWYgKHBhcmVudEJveC0+aXNDb25zdHJ1
Y3RlZCgpIHx8IHBhcmVudEJveC0+bmV4dE9uTGluZSgpKQpAQCAtMjA1LDEzICsyMDUsMTMgQEAg
c3RhdGljIGJvb2wgcGFyZW50SXNDb25zdHJ1Y3RlZE9ySGF2ZU5leHQoSW5saW5lRmxvd0JveCog
cGFyZW50Qm94KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotSW5saW5lRmxvd0JveCogTGVnYWN5
TGluZUxheW91dDo6Y3JlYXRlTGluZUJveGVzKFJlbmRlck9iamVjdCogb2JqLCBjb25zdCBMaW5l
SW5mbyYgbGluZUluZm8sIExlZ2FjeUlubGluZUJveCogY2hpbGRCb3gpCitMZWdhY3lJbmxpbmVG
bG93Qm94KiBMZWdhY3lMaW5lTGF5b3V0OjpjcmVhdGVMaW5lQm94ZXMoUmVuZGVyT2JqZWN0KiBv
YmosIGNvbnN0IExpbmVJbmZvJiBsaW5lSW5mbywgTGVnYWN5SW5saW5lQm94KiBjaGlsZEJveCkK
IHsKICAgICAvLyBTZWUgaWYgd2UgaGF2ZSBhbiB1bmNvbnN0cnVjdGVkIGxpbmUgYm94IGZvciB0
aGlzIG9iamVjdCB0aGF0IGlzIGFsc28KICAgICAvLyB0aGUgbGFzdCBpdGVtIG9uIHRoZSBsaW5l
LgogICAgIHVuc2lnbmVkIGxpbmVEZXB0aCA9IDE7Ci0gICAgSW5saW5lRmxvd0JveCogcGFyZW50
Qm94ID0gbnVsbHB0cjsKLSAgICBJbmxpbmVGbG93Qm94KiByZXN1bHQgPSBudWxscHRyOworICAg
IExlZ2FjeUlubGluZUZsb3dCb3gqIHBhcmVudEJveCA9IG51bGxwdHI7CisgICAgTGVnYWN5SW5s
aW5lRmxvd0JveCogcmVzdWx0ID0gbnVsbHB0cjsKICAgICBib29sIGhhc0RlZmF1bHRMaW5lQm94
Q29udGFpbiA9IHN0eWxlKCkubGluZUJveENvbnRhaW4oKSA9PSBSZW5kZXJTdHlsZTo6aW5pdGlh
bExpbmVCb3hDb250YWluKCk7CiAgICAgZG8gewogICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRI
X1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGlzPFJlbmRlcklubGluZT4oKm9iaikgfHwgb2JqID09ICZt
X2Zsb3cpOwpAQCAtMjMzLDcgKzIzMyw3IEBAIElubGluZUZsb3dCb3gqIExlZ2FjeUxpbmVMYXlv
dXQ6OmNyZWF0ZUxpbmVCb3hlcyhSZW5kZXJPYmplY3QqIG9iaiwgY29uc3QgTGluZUluCiAgICAg
ICAgICAgICAvLyBXZSBuZWVkIHRvIG1ha2UgYSBuZXcgYm94IGZvciB0aGlzIHJlbmRlciBvYmpl
Y3QuIE9uY2UKICAgICAgICAgICAgIC8vIG1hZGUsIHdlIG5lZWQgdG8gcGxhY2UgaXQgYXQgdGhl
IGVuZCBvZiB0aGUgY3VycmVudCBsaW5lLgogICAgICAgICAgICAgTGVnYWN5SW5saW5lQm94KiBu
ZXdCb3ggPSBjcmVhdGVJbmxpbmVCb3hGb3JSZW5kZXJlcihvYmopOwotICAgICAgICAgICAgcGFy
ZW50Qm94ID0gZG93bmNhc3Q8SW5saW5lRmxvd0JveD4obmV3Qm94KTsKKyAgICAgICAgICAgIHBh
cmVudEJveCA9IGRvd25jYXN0PExlZ2FjeUlubGluZUZsb3dCb3g+KG5ld0JveCk7CiAgICAgICAg
ICAgICBwYXJlbnRCb3gtPnNldElzRmlyc3RMaW5lKGxpbmVJbmZvLmlzRmlyc3RMaW5lKCkpOwog
ICAgICAgICAgICAgcGFyZW50Qm94LT5zZXRJc0hvcml6b250YWwobV9mbG93LmlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlKCkpOwogICAgICAgICAgICAgaWYgKCFoYXNEZWZhdWx0TGluZUJveENvbnRh
aW4pCkBAIC0yOTQsNyArMjk0LDcgQEAgTGVnYWN5Um9vdElubGluZUJveCogTGVnYWN5TGluZUxh
eW91dDo6Y29uc3RydWN0TGluZShCaWRpUnVuTGlzdDxCaWRpUnVuPiYgYmlkaVIKIHsKICAgICBB
U1NFUlQoYmlkaVJ1bnMuZmlyc3RSdW4oKSk7CiAKLSAgICBJbmxpbmVGbG93Qm94KiBwYXJlbnRC
b3ggPSAwOworICAgIExlZ2FjeUlubGluZUZsb3dCb3gqIHBhcmVudEJveCA9IDA7CiAgICAgaW50
IHJ1bkNvdW50ID0gYmlkaVJ1bnMucnVuQ291bnQoKSAtIGxpbmVJbmZvLnJ1bnNGcm9tTGVhZGlu
Z1doaXRlc3BhY2UoKTsKICAgICAKICAgICBmb3IgKEJpZGlSdW4qIHIgPSBiaWRpUnVucy5maXJz
dFJ1bigpOyByOyByID0gci0+bmV4dCgpKSB7CkBAIC04NjEsMTMgKzg2MSwxMyBAQCBCaWRpUnVu
KiBMZWdhY3lMaW5lTGF5b3V0Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25zRm9yU2Vn
bWVudChMZWdhY3lSb290SQogICAgICAgICBWZWN0b3I8TGVnYWN5SW5saW5lQm94Kj4gcXVldWU7
CiAgICAgICAgIHF1ZXVlLmFwcGVuZChsaW5lQm94KTsKICAgICAgICAgLy8gMS4gVmlzaXQgZWFj
aCBpbmxpbmUgYm94IGluIGEgcHJlb3JkZXIgZmFzaGlvbgotICAgICAgICAvLyAyLiBBY2N1bXVs
YXRlIHRoZSBzcGFjaW5nIHdoZW4gd2UgZmluZCBhbiBJbmxpbmVGbG93Qm94IChpbmxpbmUgY29u
dGFpbmVyIGUuZy4gc3BhbikKKyAgICAgICAgLy8gMi4gQWNjdW11bGF0ZSB0aGUgc3BhY2luZyB3
aGVuIHdlIGZpbmQgYW4gTGVnYWN5SW5saW5lRmxvd0JveCAoaW5saW5lIGNvbnRhaW5lciBlLmcu
IHNwYW4pCiAgICAgICAgIC8vIDMuIEFkZCB0aGUgSW5saW5lVGV4dEJveGVzIHRvIHRoZSBoYXNo
bWFwCiAgICAgICAgIHdoaWxlICghcXVldWUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICB3aGls
ZSAodHJ1ZSkgewogICAgICAgICAgICAgICAgIGF1dG8qIGlubGluZUJveCA9IHF1ZXVlLmxhc3Qo
KTsKLSAgICAgICAgICAgICAgICBpZiAoaXM8SW5saW5lRmxvd0JveD4oaW5saW5lQm94KSkgewot
ICAgICAgICAgICAgICAgICAgICBhdXRvJiBpbmxpbmVGbG93Qm94ID0gZG93bmNhc3Q8SW5saW5l
Rmxvd0JveD4oKmlubGluZUJveCk7CisgICAgICAgICAgICAgICAgaWYgKGlzPExlZ2FjeUlubGlu
ZUZsb3dCb3g+KGlubGluZUJveCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byYgaW5saW5l
Rmxvd0JveCA9IGRvd25jYXN0PExlZ2FjeUlubGluZUZsb3dCb3g+KCppbmxpbmVCb3gpOwogICAg
ICAgICAgICAgICAgICAgICB0b3RhbFNwYWNpbmdXaWR0aCArPSBpbmxpbmVGbG93Qm94Lm1hcmdp
bkJvcmRlclBhZGRpbmdMb2dpY2FsTGVmdCgpOwogICAgICAgICAgICAgICAgICAgICBpZiAoYXV0
byogY2hpbGQgPSBpbmxpbmVGbG93Qm94LmZpcnN0Q2hpbGQoKSkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgcXVldWUuYXBwZW5kKGNoaWxkKTsKQEAgLTg4MSw4ICs4ODEsOCBAQCBCaWRpUnVu
KiBMZWdhY3lMaW5lTGF5b3V0Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25zRm9yU2Vn
bWVudChMZWdhY3lSb290SQogICAgICAgICAgICAgfQogICAgICAgICAgICAgd2hpbGUgKCFxdWV1
ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBhdXRvJiBpbmxpbmVCb3ggPSAqcXVldWUu
dGFrZUxhc3QoKTsKLSAgICAgICAgICAgICAgICBpZiAoaXM8SW5saW5lRmxvd0JveD4oaW5saW5l
Qm94KSkKLSAgICAgICAgICAgICAgICAgICAgdG90YWxTcGFjaW5nV2lkdGggKz0gZG93bmNhc3Q8
SW5saW5lRmxvd0JveD4oaW5saW5lQm94KS5tYXJnaW5Cb3JkZXJQYWRkaW5nTG9naWNhbFJpZ2h0
KCk7CisgICAgICAgICAgICAgICAgaWYgKGlzPExlZ2FjeUlubGluZUZsb3dCb3g+KGlubGluZUJv
eCkpCisgICAgICAgICAgICAgICAgICAgIHRvdGFsU3BhY2luZ1dpZHRoICs9IGRvd25jYXN0PExl
Z2FjeUlubGluZUZsb3dCb3g+KGlubGluZUJveCkubWFyZ2luQm9yZGVyUGFkZGluZ0xvZ2ljYWxS
aWdodCgpOwogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBuZXh0U2libGluZyA9IGlubGluZUJv
eC5uZXh0T25MaW5lKCkpIHsKICAgICAgICAgICAgICAgICAgICAgcXVldWUuYXBwZW5kKG5leHRT
aWJsaW5nKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5TGluZUxheW91dC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0xlZ2FjeUxpbmVMYXlvdXQuaAppbmRleCBkMjA2NjI3YjRjNTAuLjY2MjIwODg3MmY1
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUxpbmVMYXlvdXQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5TGluZUxheW91dC5oCkBAIC0y
NSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiSW5saW5lRmxvd0JveC5o
IgorI2luY2x1ZGUgIkxlZ2FjeUlubGluZUZsb3dCb3guaCIKICNpbmNsdWRlICJMaW5lV2lkdGgu
aCIKICNpbmNsdWRlICJSZW5kZXJMaW5lQm94TGlzdC5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxl
Q29uc3RhbnRzLmgiCkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVf
cHRyPExlZ2FjeVJvb3RJbmxpbmVCb3g+IGNyZWF0ZVJvb3RJbmxpbmVCb3goKTsKICAgICBMZWdh
Y3lSb290SW5saW5lQm94KiBjcmVhdGVBbmRBcHBlbmRSb290SW5saW5lQm94KCk7CiAgICAgTGVn
YWN5SW5saW5lQm94KiBjcmVhdGVJbmxpbmVCb3hGb3JSZW5kZXJlcihSZW5kZXJPYmplY3QqLCBi
b29sIGlzT25seVJ1biA9IGZhbHNlKTsKLSAgICBJbmxpbmVGbG93Qm94KiBjcmVhdGVMaW5lQm94
ZXMoUmVuZGVyT2JqZWN0KiwgY29uc3QgTGluZUluZm8mLCBMZWdhY3lJbmxpbmVCb3gqKTsKKyAg
ICBMZWdhY3lJbmxpbmVGbG93Qm94KiBjcmVhdGVMaW5lQm94ZXMoUmVuZGVyT2JqZWN0KiwgY29u
c3QgTGluZUluZm8mLCBMZWdhY3lJbmxpbmVCb3gqKTsKICAgICBUZXh0QWxpZ25Nb2RlIHRleHRB
bGlnbm1lbnRGb3JMaW5lKGJvb2wgZW5kc1dpdGhTb2Z0QnJlYWspIGNvbnN0OwogICAgIHZvaWQg
c2V0TWFyZ2luc0ZvclJ1YnlSdW4oQmlkaVJ1biosIFJlbmRlclJ1YnlSdW4mLCBSZW5kZXJPYmpl
Y3QqIHByZXZpb3VzT2JqZWN0LCBjb25zdCBMaW5lSW5mbyYpOwogICAgIHZvaWQgdXBkYXRlUnVi
eUZvckp1c3RpZmllZFRleHQoUmVuZGVyUnVieVJ1biYsIEJpZGlSdW4mLCBjb25zdCBWZWN0b3I8
dW5zaWduZWQsIDE2PiYgZXhwYW5zaW9uT3Bwb3J0dW5pdGllcywgdW5zaWduZWQmIGV4cGFuc2lv
bk9wcG9ydHVuaXR5Q291bnQsIGZsb2F0JiB0b3RhbExvZ2ljYWxXaWR0aCwgZmxvYXQgYXZhaWxh
YmxlTG9naWNhbFdpZHRoLCBzaXplX3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9MZWdhY3lSb290SW5saW5lQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9MZWdhY3lSb290SW5saW5lQm94LmNwcAppbmRleCA4MThkMzg2MjhkNjYuLmU5ZGNhZGU2OGVj
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeVJvb3RJbmxpbmVC
b3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lSb290SW5saW5lQm94
LmNwcApAQCAtNDUsNyArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChMZWdhY3lSb290SW5saW5lQm94KTsKIAotc3RydWN0IFNhbWVTaXpl
QXNMZWdhY3lSb290SW5saW5lQm94IDogcHVibGljIElubGluZUZsb3dCb3gsIHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxMZWdhY3lSb290SW5saW5lQm94PiB7CitzdHJ1Y3QgU2FtZVNpemVBc0xlZ2Fj
eVJvb3RJbmxpbmVCb3ggOiBwdWJsaWMgTGVnYWN5SW5saW5lRmxvd0JveCwgcHVibGljIENhbk1h
a2VXZWFrUHRyPExlZ2FjeVJvb3RJbmxpbmVCb3g+IHsKICAgICB1bnNpZ25lZCB2YXJpYWJsZXNb
N107CiAgICAgV2Vha1B0cjxSZW5kZXJPYmplY3Q+IGxpbmVCcmVha09iajsKICAgICB2b2lkKiBw
b2ludGVyc1syXTsKQEAgLTY2LDcgKzY2LDcgQEAgc3RhdGljIENvbnRhaW5pbmdGcmFnbWVudE1h
cCYgY29udGFpbmluZ0ZyYWdtZW50TWFwKFJlbmRlckJsb2NrRmxvdyYgYmxvY2spCiB9CiAKIExl
Z2FjeVJvb3RJbmxpbmVCb3g6OkxlZ2FjeVJvb3RJbmxpbmVCb3goUmVuZGVyQmxvY2tGbG93JiBi
bG9jaykKLSAgICA6IElubGluZUZsb3dCb3goYmxvY2spCisgICAgOiBMZWdhY3lJbmxpbmVGbG93
Qm94KGJsb2NrKQogewogICAgIHNldElzSG9yaXpvbnRhbChibG9jay5pc0hvcml6b250YWxXcml0
aW5nTW9kZSgpKTsKIH0KQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBMZWdhY3lSb290SW5saW5lQm94
OjpjbGVhclRydW5jYXRpb24oKQogewogICAgIGlmIChoYXNFbGxpcHNpc0JveCgpKSB7CiAgICAg
ICAgIGRldGFjaEVsbGlwc2lzQm94KCk7Ci0gICAgICAgIElubGluZUZsb3dCb3g6OmNsZWFyVHJ1
bmNhdGlvbigpOworICAgICAgICBMZWdhY3lJbmxpbmVGbG93Qm94OjpjbGVhclRydW5jYXRpb24o
KTsKICAgICB9CiB9CiAKQEAgLTEyNCw3ICsxMjQsNyBAQCBib29sIExlZ2FjeVJvb3RJbmxpbmVC
b3g6OmxpbmVDYW5BY2NvbW1vZGF0ZUVsbGlwc2lzKGJvb2wgbHRyLCBpbnQgYmxvY2tFZGdlLCBp
bgogCiAgICAgLy8gTmV4dCBpdGVyYXRlIG92ZXIgYWxsIHRoZSBsaW5lIGJveGVzIG9uIHRoZSBs
aW5lLiBJZiB3ZSBmaW5kIGEgcmVwbGFjZWQgZWxlbWVudCB0aGF0IGludGVyc2VjdHMKICAgICAv
LyB0aGVuIHdlIHJlZnVzZSB0byBhY2NvbW1vZGF0ZSB0aGUgZWxsaXBzaXMuIE90aGVyd2lzZSB3
ZSdyZSBvay4KLSAgICByZXR1cm4gSW5saW5lRmxvd0JveDo6Y2FuQWNjb21tb2RhdGVFbGxpcHNp
cyhsdHIsIGJsb2NrRWRnZSwgZWxsaXBzaXNXaWR0aCk7CisgICAgcmV0dXJuIExlZ2FjeUlubGlu
ZUZsb3dCb3g6OmNhbkFjY29tbW9kYXRlRWxsaXBzaXMobHRyLCBibG9ja0VkZ2UsIGVsbGlwc2lz
V2lkdGgpOwogfQogCiBmbG9hdCBMZWdhY3lSb290SW5saW5lQm94OjpwbGFjZUVsbGlwc2lzKGNv
bnN0IEF0b21TdHJpbmcmIGVsbGlwc2lzU3RyLCAgYm9vbCBsdHIsIGZsb2F0IGJsb2NrTGVmdEVk
Z2UsIGZsb2F0IGJsb2NrUmlnaHRFZGdlLCBmbG9hdCBlbGxpcHNpc1dpZHRoLCBMZWdhY3lJbmxp
bmVCb3gqIG1hcmt1cEJveCkKQEAgLTE1Myw3ICsxNTMsNyBAQCBmbG9hdCBMZWdhY3lSb290SW5s
aW5lQm94OjpwbGFjZUVsbGlwc2lzKGNvbnN0IEF0b21TdHJpbmcmIGVsbGlwc2lzU3RyLCAgYm9v
bCBsdAogCiBmbG9hdCBMZWdhY3lSb290SW5saW5lQm94OjpwbGFjZUVsbGlwc2lzQm94KGJvb2wg
bHRyLCBmbG9hdCBibG9ja0xlZnRFZGdlLCBmbG9hdCBibG9ja1JpZ2h0RWRnZSwgZmxvYXQgZWxs
aXBzaXNXaWR0aCwgZmxvYXQgJnRydW5jYXRlZFdpZHRoLCBib29sJiBmb3VuZEJveCkKIHsKLSAg
ICBmbG9hdCByZXN1bHQgPSBJbmxpbmVGbG93Qm94OjpwbGFjZUVsbGlwc2lzQm94KGx0ciwgYmxv
Y2tMZWZ0RWRnZSwgYmxvY2tSaWdodEVkZ2UsIGVsbGlwc2lzV2lkdGgsIHRydW5jYXRlZFdpZHRo
LCBmb3VuZEJveCk7CisgICAgZmxvYXQgcmVzdWx0ID0gTGVnYWN5SW5saW5lRmxvd0JveDo6cGxh
Y2VFbGxpcHNpc0JveChsdHIsIGJsb2NrTGVmdEVkZ2UsIGJsb2NrUmlnaHRFZGdlLCBlbGxpcHNp
c1dpZHRoLCB0cnVuY2F0ZWRXaWR0aCwgZm91bmRCb3gpOwogICAgIGlmIChyZXN1bHQgPT0gLTEp
IHsKICAgICAgICAgcmVzdWx0ID0gbHRyID8gYmxvY2tSaWdodEVkZ2UgLSBlbGxpcHNpc1dpZHRo
IDogYmxvY2tMZWZ0RWRnZTsKICAgICAgICAgdHJ1bmNhdGVkV2lkdGggPSBibG9ja1JpZ2h0RWRn
ZSAtIGJsb2NrTGVmdEVkZ2U7CkBAIC0xNjksNyArMTY5LDcgQEAgdm9pZCBMZWdhY3lSb290SW5s
aW5lQm94OjpwYWludEVsbGlwc2lzQm94KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXRQb2kKIAogdm9pZCBMZWdhY3lSb290SW5saW5lQm94OjpwYWludChQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3As
IExheW91dFVuaXQgbGluZUJvdHRvbSkKIHsKLSAgICBJbmxpbmVGbG93Qm94OjpwYWludChwYWlu
dEluZm8sIHBhaW50T2Zmc2V0LCBsaW5lVG9wLCBsaW5lQm90dG9tKTsKKyAgICBMZWdhY3lJbmxp
bmVGbG93Qm94OjpwYWludChwYWludEluZm8sIHBhaW50T2Zmc2V0LCBsaW5lVG9wLCBsaW5lQm90
dG9tKTsKICAgICBwYWludEVsbGlwc2lzQm94KHBhaW50SW5mbywgcGFpbnRPZmZzZXQsIGxpbmVU
b3AsIGxpbmVCb3R0b20pOwogfQogCkBAIC0xODEsMTIgKzE4MSwxMiBAQCBib29sIExlZ2FjeVJv
b3RJbmxpbmVCb3g6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBI
aXRUZXN0UmVzdQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgcmV0dXJuIElubGluZUZsb3dCb3g6Om5vZGVBdFBvaW50KHJlcXVlc3QsIHJlc3VsdCwgbG9j
YXRpb25JbkNvbnRhaW5lciwgYWNjdW11bGF0ZWRPZmZzZXQsIGxpbmVUb3AsIGxpbmVCb3R0b20s
IGhpdFRlc3RBY3Rpb24pOworICAgIHJldHVybiBMZWdhY3lJbmxpbmVGbG93Qm94Ojpub2RlQXRQ
b2ludChyZXF1ZXN0LCByZXN1bHQsIGxvY2F0aW9uSW5Db250YWluZXIsIGFjY3VtdWxhdGVkT2Zm
c2V0LCBsaW5lVG9wLCBsaW5lQm90dG9tLCBoaXRUZXN0QWN0aW9uKTsKIH0KIAogdm9pZCBMZWdh
Y3lSb290SW5saW5lQm94OjphZGp1c3RQb3NpdGlvbihmbG9hdCBkeCwgZmxvYXQgZHkpCiB7Ci0g
ICAgSW5saW5lRmxvd0JveDo6YWRqdXN0UG9zaXRpb24oZHgsIGR5KTsKKyAgICBMZWdhY3lJbmxp
bmVGbG93Qm94OjphZGp1c3RQb3NpdGlvbihkeCwgZHkpOwogICAgIExheW91dFVuaXQgYmxvY2tE
aXJlY3Rpb25EZWx0YSB7IGlzSG9yaXpvbnRhbCgpID8gZHkgOiBkeCB9OyAvLyBUaGUgYmxvY2sg
ZGlyZWN0aW9uIGRlbHRhIGlzIGEgTGF5b3V0VW5pdC4KICAgICBtX2xpbmVUb3AgKz0gYmxvY2tE
aXJlY3Rpb25EZWx0YTsKICAgICBtX2xpbmVCb3R0b20gKz0gYmxvY2tEaXJlY3Rpb25EZWx0YTsK
QEAgLTk4NSw3ICs5ODUsNyBAQCBib29sIExlZ2FjeVJvb3RJbmxpbmVCb3g6OmluY2x1ZGVGb250
Rm9yQm94KExlZ2FjeUlubGluZUJveCYgYm94KSBjb25zdAogICAgIGlmIChib3gucmVuZGVyZXIo
KS5pc1JlcGxhY2VkKCkgfHwgKGJveC5yZW5kZXJlcigpLmlzVGV4dE9yTGluZUJyZWFrKCkgJiYg
IWJveC5iZWhhdmVzTGlrZVRleHQoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAg
ICBpZiAoIWJveC5iZWhhdmVzTGlrZVRleHQoKSAmJiBpczxJbmxpbmVGbG93Qm94Pihib3gpICYm
ICFkb3duY2FzdDxJbmxpbmVGbG93Qm94Pihib3gpLmhhc1RleHRDaGlsZHJlbigpKQorICAgIGlm
ICghYm94LmJlaGF2ZXNMaWtlVGV4dCgpICYmIGlzPExlZ2FjeUlubGluZUZsb3dCb3g+KGJveCkg
JiYgIWRvd25jYXN0PExlZ2FjeUlubGluZUZsb3dCb3g+KGJveCkuaGFzVGV4dENoaWxkcmVuKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiByZW5kZXJlcigpLnN0eWxlKCku
bGluZUJveENvbnRhaW4oKS5jb250YWlucyhMaW5lQm94Q29udGFpbjo6Rm9udCk7CkBAIC05OTYs
NyArOTk2LDcgQEAgYm9vbCBMZWdhY3lSb290SW5saW5lQm94OjppbmNsdWRlR2x5cGhzRm9yQm94
KExlZ2FjeUlubGluZUJveCYgYm94KSBjb25zdAogICAgIGlmIChib3gucmVuZGVyZXIoKS5pc1Jl
cGxhY2VkKCkgfHwgKGJveC5yZW5kZXJlcigpLmlzVGV4dE9yTGluZUJyZWFrKCkgJiYgIWJveC5i
ZWhhdmVzTGlrZVRleHQoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBpZiAo
IWJveC5iZWhhdmVzTGlrZVRleHQoKSAmJiBpczxJbmxpbmVGbG93Qm94Pihib3gpICYmICFkb3du
Y2FzdDxJbmxpbmVGbG93Qm94Pihib3gpLmhhc1RleHRDaGlsZHJlbigpKQorICAgIGlmICghYm94
LmJlaGF2ZXNMaWtlVGV4dCgpICYmIGlzPExlZ2FjeUlubGluZUZsb3dCb3g+KGJveCkgJiYgIWRv
d25jYXN0PExlZ2FjeUlubGluZUZsb3dCb3g+KGJveCkuaGFzVGV4dENoaWxkcmVuKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiByZW5kZXJlcigpLnN0eWxlKCkubGluZUJv
eENvbnRhaW4oKS5jb250YWlucyhMaW5lQm94Q29udGFpbjo6R2x5cGhzKTsKQEAgLTEwMDcsNyAr
MTAwNyw3IEBAIGJvb2wgTGVnYWN5Um9vdElubGluZUJveDo6aW5jbHVkZUluaXRpYWxMZXR0ZXJG
b3JCb3goTGVnYWN5SW5saW5lQm94JiBib3gpIGNvbnN0CiAgICAgaWYgKGJveC5yZW5kZXJlcigp
LmlzUmVwbGFjZWQoKSB8fCAoYm94LnJlbmRlcmVyKCkuaXNUZXh0T3JMaW5lQnJlYWsoKSAmJiAh
Ym94LmJlaGF2ZXNMaWtlVGV4dCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAg
IGlmICghYm94LmJlaGF2ZXNMaWtlVGV4dCgpICYmIGlzPElubGluZUZsb3dCb3g+KGJveCkgJiYg
IWRvd25jYXN0PElubGluZUZsb3dCb3g+KGJveCkuaGFzVGV4dENoaWxkcmVuKCkpCisgICAgaWYg
KCFib3guYmVoYXZlc0xpa2VUZXh0KCkgJiYgaXM8TGVnYWN5SW5saW5lRmxvd0JveD4oYm94KSAm
JiAhZG93bmNhc3Q8TGVnYWN5SW5saW5lRmxvd0JveD4oYm94KS5oYXNUZXh0Q2hpbGRyZW4oKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHJlbmRlcmVyKCkuc3R5bGUoKS5s
aW5lQm94Q29udGFpbigpLmNvbnRhaW5zKExpbmVCb3hDb250YWluOjpJbml0aWFsTGV0dGVyKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lSb290SW5saW5lQm94
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5Um9vdElubGluZUJveC5oCmluZGV4
IGEzNzc0YmQwMjBhZC4uNWY4Y2IwMjY0MTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvTGVnYWN5Um9vdElubGluZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9MZWdhY3lSb290SW5saW5lQm94LmgKQEAgLTIxLDcgKzIxLDcgQEAKICNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSAiQmlkaUNvbnRleHQuaCIKLSNpbmNsdWRlICJJbmxpbmVGbG93Qm94Lmgi
CisjaW5jbHVkZSAiTGVnYWN5SW5saW5lRmxvd0JveC5oIgogI2luY2x1ZGUgIlJlbmRlckJveC5o
IgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgUmVu
ZGVyRnJhZ21lbnRDb250YWluZXI7CiBzdHJ1Y3QgQmlkaVN0YXR1czsKIHN0cnVjdCBHYXBSZWN0
czsKIAotY2xhc3MgTGVnYWN5Um9vdElubGluZUJveCA6IHB1YmxpYyBJbmxpbmVGbG93Qm94LCBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8TGVnYWN5Um9vdElubGluZUJveD4geworY2xhc3MgTGVnYWN5
Um9vdElubGluZUJveCA6IHB1YmxpYyBMZWdhY3lJbmxpbmVGbG93Qm94LCBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8TGVnYWN5Um9vdElubGluZUJveD4gewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FU
RUQoTGVnYWN5Um9vdElubGluZUJveCk7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTGVnYWN5Um9v
dElubGluZUJveChSZW5kZXJCbG9ja0Zsb3cmKTsKQEAgLTE2NywxOSArMTY3LDE5IEBAIHB1Ymxp
YzoKICAgICAKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxUb3BWaXN1YWxPdmVyZmxvdygpIGNvbnN0
CiAgICAgewotICAgICAgICByZXR1cm4gSW5saW5lRmxvd0JveDo6bG9naWNhbFRvcFZpc3VhbE92
ZXJmbG93KGxpbmVUb3AoKSk7CisgICAgICAgIHJldHVybiBMZWdhY3lJbmxpbmVGbG93Qm94Ojps
b2dpY2FsVG9wVmlzdWFsT3ZlcmZsb3cobGluZVRvcCgpKTsKICAgICB9CiAgICAgTGF5b3V0VW5p
dCBsb2dpY2FsQm90dG9tVmlzdWFsT3ZlcmZsb3coKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0
dXJuIElubGluZUZsb3dCb3g6OmxvZ2ljYWxCb3R0b21WaXN1YWxPdmVyZmxvdyhsaW5lQm90dG9t
KCkpOworICAgICAgICByZXR1cm4gTGVnYWN5SW5saW5lRmxvd0JveDo6bG9naWNhbEJvdHRvbVZp
c3VhbE92ZXJmbG93KGxpbmVCb3R0b20oKSk7CiAgICAgfQogICAgIExheW91dFVuaXQgbG9naWNh
bFRvcExheW91dE92ZXJmbG93KCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBJbmxpbmVG
bG93Qm94Ojpsb2dpY2FsVG9wTGF5b3V0T3ZlcmZsb3cobGluZVRvcCgpKTsKKyAgICAgICAgcmV0
dXJuIExlZ2FjeUlubGluZUZsb3dCb3g6OmxvZ2ljYWxUb3BMYXlvdXRPdmVyZmxvdyhsaW5lVG9w
KCkpOwogICAgIH0KICAgICBMYXlvdXRVbml0IGxvZ2ljYWxCb3R0b21MYXlvdXRPdmVyZmxvdygp
IGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gSW5saW5lRmxvd0JveDo6bG9naWNhbEJvdHRv
bUxheW91dE92ZXJmbG93KGxpbmVCb3R0b20oKSk7CisgICAgICAgIHJldHVybiBMZWdhY3lJbmxp
bmVGbG93Qm94Ojpsb2dpY2FsQm90dG9tTGF5b3V0T3ZlcmZsb3cobGluZUJvdHRvbSgpKTsKICAg
ICB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNUcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3goKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2tGbG93LmNwcAppbmRleCAyNWY0MjVjZjE5MjIuLjY4ZGIwNjJlMDI0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTMxOTEsNyArMzE5
MSw3IEBAIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQmxvY2tGbG93OjppbmxpbmVC
bG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlCiAgICAgICAgIGlmIChsZWdhY3lMaW5lTGF5
b3V0KCkpIHsKICAgICAgICAgICAgIGJvb2wgaXNGaXJzdExpbmUgPSBsYXN0Um9vdEJveCgpID09
IGZpcnN0Um9vdEJveCgpOwogICAgICAgICAgICAgY29uc3QgYXV0byYgc3R5bGUgPSBpc0ZpcnN0
TGluZSA/IGZpcnN0TGluZVN0eWxlKCkgOiB0aGlzLT5zdHlsZSgpOwotICAgICAgICAgICAgLy8g
SW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc0luQmxvY2tEaXJlY3Rpb24gd2lsbCBmbGlwIGxpbmVz
IGluIGNhc2Ugb2YgdmVydGljYWxMUiBtb2RlLCBzbyB3ZSBjYW4gYXNzdW1lIHZlcnRpY2FsUkwg
Zm9yIG5vdy4KKyAgICAgICAgICAgIC8vIExlZ2FjeUlubGluZUZsb3dCb3g6OnBsYWNlQm94ZXNJ
bkJsb2NrRGlyZWN0aW9uIHdpbGwgZmxpcCBsaW5lcyBpbiBjYXNlIG9mIHZlcnRpY2FsTFIgbW9k
ZSwgc28gd2UgY2FuIGFzc3VtZSB2ZXJ0aWNhbFJMIGZvciBub3cuCiAgICAgICAgICAgICBsYXN0
QmFzZWxpbmUgPSBzdHlsZS5mb250TWV0cmljcygpLmFzY2VudChsYXN0Um9vdEJveCgpLT5iYXNl
bGluZVR5cGUoKSkKICAgICAgICAgICAgICAgICArIChzdHlsZS5pc0ZsaXBwZWRMaW5lc1dyaXRp
bmdNb2RlKCkgPyBsb2dpY2FsSGVpZ2h0KCkgLSBsYXN0Um9vdEJveCgpLT5sb2dpY2FsQm90dG9t
KCkgOiBsYXN0Um9vdEJveCgpLT5sb2dpY2FsVG9wKCkpOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDY4MzRmMjM4YzRlNi4uZTcwNzc5OTE2OTJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtMzU3MSw4ICszNTcx
LDggQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0aEZv
clBvc2l0aW9uZWQoY29uc3QgUmVuZGVyQm94TW8KICAgICBBU1NFUlQoY29udGFpbmluZ0Jsb2Nr
LmlzSW5GbG93UG9zaXRpb25lZCgpKTsKIAogICAgIGNvbnN0IGF1dG8mIGZsb3cgPSBkb3duY2Fz
dDxSZW5kZXJJbmxpbmU+KGNvbnRhaW5pbmdCbG9jayk7Ci0gICAgSW5saW5lRmxvd0JveCogZmly
c3QgPSBmbG93LmZpcnN0TGluZUJveCgpOwotICAgIElubGluZUZsb3dCb3gqIGxhc3QgPSBmbG93
Lmxhc3RMaW5lQm94KCk7CisgICAgTGVnYWN5SW5saW5lRmxvd0JveCogZmlyc3QgPSBmbG93LmZp
cnN0TGluZUJveCgpOworICAgIExlZ2FjeUlubGluZUZsb3dCb3gqIGxhc3QgPSBmbG93Lmxhc3RM
aW5lQm94KCk7CiAKICAgICAvLyBJZiB0aGUgY29udGFpbmluZyBibG9jayBpcyBlbXB0eSwgcmV0
dXJuIGEgd2lkdGggb2YgMC4KICAgICBpZiAoIWZpcnN0IHx8ICFsYXN0KQpAQCAtMzYxOCw4ICsz
NjE4LDggQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxIZWln
aHRGb3JQb3NpdGlvbmVkKGNvbnN0IFJlbmRlckJveE0KICAgICBBU1NFUlQoY29udGFpbmluZ0Js
b2NrLmlzSW5GbG93UG9zaXRpb25lZCgpKTsKIAogICAgIGNvbnN0IGF1dG8mIGZsb3cgPSBkb3du
Y2FzdDxSZW5kZXJJbmxpbmU+KGNvbnRhaW5pbmdCbG9jayk7Ci0gICAgSW5saW5lRmxvd0JveCog
Zmlyc3QgPSBmbG93LmZpcnN0TGluZUJveCgpOwotICAgIElubGluZUZsb3dCb3gqIGxhc3QgPSBm
bG93Lmxhc3RMaW5lQm94KCk7CisgICAgTGVnYWN5SW5saW5lRmxvd0JveCogZmlyc3QgPSBmbG93
LmZpcnN0TGluZUJveCgpOworICAgIExlZ2FjeUlubGluZUZsb3dCb3gqIGxhc3QgPSBmbG93Lmxh
c3RMaW5lQm94KCk7CiAKICAgICAvLyBJZiB0aGUgY29udGFpbmluZyBibG9jayBpcyBlbXB0eSwg
cmV0dXJuIGEgaGVpZ2h0IG9mIDAuCiAgICAgaWYgKCFmaXJzdCB8fCAhbGFzdCkKQEAgLTQwNjIs
OCArNDA2Miw4IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0
aFVzaW5nKFNpemVUeXBlIHdpZHRoVHlwZSwgTGVuZ3RoIGxvCiAgICAgLy8gdGhpcyBpcyBmaXhl
ZCBlbHNld2hlcmUsIHRoaXMgYmxvY2sgc2hvdWxkIGJlIHJlbW92ZWQuCiAgICAgaWYgKGlzPFJl
bmRlcklubGluZT4oY29udGFpbmVyQmxvY2spICYmICFjb250YWluZXJCbG9jay5zdHlsZSgpLmlz
TGVmdFRvUmlnaHREaXJlY3Rpb24oKSkgewogICAgICAgICBjb25zdCBhdXRvJiBmbG93ID0gZG93
bmNhc3Q8UmVuZGVySW5saW5lPihjb250YWluZXJCbG9jayk7Ci0gICAgICAgIElubGluZUZsb3dC
b3gqIGZpcnN0TGluZSA9IGZsb3cuZmlyc3RMaW5lQm94KCk7Ci0gICAgICAgIElubGluZUZsb3dC
b3gqIGxhc3RMaW5lID0gZmxvdy5sYXN0TGluZUJveCgpOworICAgICAgICBMZWdhY3lJbmxpbmVG
bG93Qm94KiBmaXJzdExpbmUgPSBmbG93LmZpcnN0TGluZUJveCgpOworICAgICAgICBMZWdhY3lJ
bmxpbmVGbG93Qm94KiBsYXN0TGluZSA9IGZsb3cubGFzdExpbmVCb3goKTsKICAgICAgICAgaWYg
KGZpcnN0TGluZSAmJiBsYXN0TGluZSAmJiBmaXJzdExpbmUgIT0gbGFzdExpbmUpIHsKICAgICAg
ICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fcG9zaXRpb24gPSBsb2dpY2FsTGVmdFZhbHVlICsgbWFy
Z2luTG9naWNhbExlZnRWYWx1ZSArIGxhc3RMaW5lLT5ib3JkZXJMb2dpY2FsTGVmdCgpICsgKGxh
c3RMaW5lLT5sb2dpY2FsTGVmdCgpIC0gZmlyc3RMaW5lLT5sb2dpY2FsTGVmdCgpKTsKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTQ1MjcsOCArNDUyNyw4IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21w
dXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFJlcGxhY2VkKExvZ2ljYWxFeHRlbnRDb21wdXRlZFZh
bHVlCiAgICAgLy8gdGhpcyBpcyBmaXhlZCBlbHNld2hlcmUsIHRoaXMgYmxvY2sgc2hvdWxkIGJl
IHJlbW92ZWQuCiAgICAgaWYgKGlzPFJlbmRlcklubGluZT4oY29udGFpbmVyQmxvY2spICYmICFj
b250YWluZXJCbG9jay5zdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkgewogICAgICAg
ICBjb25zdCBhdXRvJiBmbG93ID0gZG93bmNhc3Q8UmVuZGVySW5saW5lPihjb250YWluZXJCbG9j
ayk7Ci0gICAgICAgIElubGluZUZsb3dCb3gqIGZpcnN0TGluZSA9IGZsb3cuZmlyc3RMaW5lQm94
KCk7Ci0gICAgICAgIElubGluZUZsb3dCb3gqIGxhc3RMaW5lID0gZmxvdy5sYXN0TGluZUJveCgp
OworICAgICAgICBMZWdhY3lJbmxpbmVGbG93Qm94KiBmaXJzdExpbmUgPSBmbG93LmZpcnN0TGlu
ZUJveCgpOworICAgICAgICBMZWdhY3lJbmxpbmVGbG93Qm94KiBsYXN0TGluZSA9IGZsb3cubGFz
dExpbmVCb3goKTsKICAgICAgICAgaWYgKGZpcnN0TGluZSAmJiBsYXN0TGluZSAmJiBmaXJzdExp
bmUgIT0gbGFzdExpbmUpIHsKICAgICAgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fcG9zaXRpb24g
PSBsb2dpY2FsTGVmdFZhbHVlICsgbWFyZ2luTG9naWNhbExlZnRBbGlhcyArIGxhc3RMaW5lLT5i
b3JkZXJMb2dpY2FsTGVmdCgpICsgKGxhc3RMaW5lLT5sb2dpY2FsTGVmdCgpIC0gZmlyc3RMaW5l
LT5sb2dpY2FsTGVmdCgpKTsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IDgyMjIwMzlkOTYy
Ny4uNjZlM2YwY2VkODU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTYwOSw3ICs2MDksNyBAQCBMYXlvdXRVbml0IFJlbmRl
ckJveE1vZGVsT2JqZWN0Ojpjb21wdXRlZENTU1BhZGRpbmcoY29uc3QgTGVuZ3RoJiBwYWRkaW5n
KSBjb25zdAogICAgIHJldHVybiBtaW5pbXVtVmFsdWVGb3JMZW5ndGgocGFkZGluZywgdyk7CiB9
CiAKLVJvdW5kZWRSZWN0IFJlbmRlckJveE1vZGVsT2JqZWN0OjpnZXRCYWNrZ3JvdW5kUm91bmRl
ZFJlY3QoY29uc3QgTGF5b3V0UmVjdCYgYm9yZGVyUmVjdCwgSW5saW5lRmxvd0JveCogYm94LCBM
YXlvdXRVbml0IGlubGluZUJveFdpZHRoLCBMYXlvdXRVbml0IGlubGluZUJveEhlaWdodCwKK1Jv
dW5kZWRSZWN0IFJlbmRlckJveE1vZGVsT2JqZWN0OjpnZXRCYWNrZ3JvdW5kUm91bmRlZFJlY3Qo
Y29uc3QgTGF5b3V0UmVjdCYgYm9yZGVyUmVjdCwgTGVnYWN5SW5saW5lRmxvd0JveCogYm94LCBM
YXlvdXRVbml0IGlubGluZUJveFdpZHRoLCBMYXlvdXRVbml0IGlubGluZUJveEhlaWdodCwKICAg
ICBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVk
Z2UpIGNvbnN0CiB7CiAgICAgUm91bmRlZFJlY3QgYm9yZGVyID0gc3R5bGUoKS5nZXRSb3VuZGVk
Qm9yZGVyRm9yKGJvcmRlclJlY3QsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dp
Y2FsUmlnaHRFZGdlKTsKQEAgLTY3MCw3ICs2NzAsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckJveE1v
ZGVsT2JqZWN0Ojpib3JkZXJJbm5lclJlY3RBZGp1c3RlZEZvckJsZWVkQXZvaWRhbmNlKGNvbnN0
CiAgICAgcmV0dXJuIHNocmlua1JlY3RCeU9uZURldmljZVBpeGVsKGNvbnRleHQsIHJlY3QsIGRv
Y3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiB9CiAKLVJvdW5kZWRSZWN0IFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpiYWNrZ3JvdW5kUm91bmRlZFJlY3RBZGp1c3RlZEZvckJsZWVkQXZvaWRh
bmNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgYm9y
ZGVyUmVjdCwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIGJsZWVkQXZvaWRhbmNlLCBJbmxpbmVG
bG93Qm94KiBib3gsIGNvbnN0IExheW91dFNpemUmIGJveFNpemUsIGJvb2wgaW5jbHVkZUxvZ2lj
YWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkgY29uc3QKK1JvdW5kZWRS
ZWN0IFJlbmRlckJveE1vZGVsT2JqZWN0OjpiYWNrZ3JvdW5kUm91bmRlZFJlY3RBZGp1c3RlZEZv
ckJsZWVkQXZvaWRhbmNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5
b3V0UmVjdCYgYm9yZGVyUmVjdCwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIGJsZWVkQXZvaWRh
bmNlLCBMZWdhY3lJbmxpbmVGbG93Qm94KiBib3gsIGNvbnN0IExheW91dFNpemUmIGJveFNpemUs
IGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRn
ZSkgY29uc3QKIHsKICAgICBpZiAoYmxlZWRBdm9pZGFuY2UgPT0gQmFja2dyb3VuZEJsZWVkU2hy
aW5rQmFja2dyb3VuZCkgewogICAgICAgICAvLyBXZSBzaHJpbmsgdGhlIHJlY3RhbmdsZSBieSBv
bmUgZGV2aWNlIHBpeGVsIG9uIGVhY2ggc2lkZSBiZWNhdXNlIHRoZSBibGVlZCBpcyBvbmUgcGl4
ZWwgbWF4aW11bS4KQEAgLTY5OCw3ICs2OTgsNyBAQCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6Y2hvb3NlSW50ZXJwb2xhdGlvblF1YWxpdHkoR3JhcGhpY3NDbwog
ICAgIHJldHVybiB2aWV3KCkuaW1hZ2VRdWFsaXR5Q29udHJvbGxlcigpLmNob29zZUludGVycG9s
YXRpb25RdWFsaXR5KGNvbnRleHQsIHRoaXMsIGltYWdlLCBsYXllciwgc2l6ZSk7CiB9CiAKLXZv
aWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50TWFza0ZvclRleHRGaWxsQm94KEltYWdlQnVm
ZmVyKiBtYXNrSW1hZ2UsIGNvbnN0IEludFJlY3QmIG1hc2tSZWN0LCBJbmxpbmVGbG93Qm94KiBi
b3gsIGNvbnN0IExheW91dFJlY3QmIHNjcm9sbGVkUGFpbnRSZWN0KQordm9pZCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6cGFpbnRNYXNrRm9yVGV4dEZpbGxCb3goSW1hZ2VCdWZmZXIqIG1hc2tJbWFn
ZSwgY29uc3QgSW50UmVjdCYgbWFza1JlY3QsIExlZ2FjeUlubGluZUZsb3dCb3gqIGJveCwgY29u
c3QgTGF5b3V0UmVjdCYgc2Nyb2xsZWRQYWludFJlY3QpCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0
JiBtYXNrSW1hZ2VDb250ZXh0ID0gbWFza0ltYWdlLT5jb250ZXh0KCk7CiAgICAgbWFza0ltYWdl
Q29udGV4dC50cmFuc2xhdGUoLW1hc2tSZWN0LmxvY2F0aW9uKCkpOwpAQCAtNzE2LDcgKzcxNiw3
IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50TWFza0ZvclRleHRGaWxsQm94KElt
YWdlQnVmZmVyKiBtYXNrSW1hZ2UsIGNvbnN0CiB9CiAKIHZvaWQgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IENvbG9yJiBjb2xvciwgY29uc3QgRmlsbExheWVyJiBiZ0xheWVyLCBjb25zdCBMYXlvdXRS
ZWN0JiByZWN0LAotICAgIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lkYW5jZSwg
SW5saW5lRmxvd0JveCogYm94LCBjb25zdCBMYXlvdXRTaXplJiBib3hTaXplLCBDb21wb3NpdGVP
cGVyYXRvciBvcCwgUmVuZGVyRWxlbWVudCogYmFja2dyb3VuZE9iamVjdCwgQmFzZUJhY2tncm91
bmRDb2xvclVzYWdlIGJhc2VCZ0NvbG9yVXNhZ2UpCisgICAgQmFja2dyb3VuZEJsZWVkQXZvaWRh
bmNlIGJsZWVkQXZvaWRhbmNlLCBMZWdhY3lJbmxpbmVGbG93Qm94KiBib3gsIGNvbnN0IExheW91
dFNpemUmIGJveFNpemUsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBSZW5kZXJFbGVtZW50KiBiYWNr
Z3JvdW5kT2JqZWN0LCBCYXNlQmFja2dyb3VuZENvbG9yVXNhZ2UgYmFzZUJnQ29sb3JVc2FnZSkK
IHsKICAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOwog
CkBAIC0yMzE5LDcgKzIzMTksNyBAQCBib29sIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpib3JkZXJP
YnNjdXJlc0JhY2tncm91bmQoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFJl
bmRlckJveE1vZGVsT2JqZWN0Ojpib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQo
Y29uc3QgTGF5b3V0UG9pbnQmLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxlZWRBdm9pZGFu
Y2UsIElubGluZUZsb3dCb3gqIGlubGluZUZsb3dCb3gpIGNvbnN0Citib29sIFJlbmRlckJveE1v
ZGVsT2JqZWN0Ojpib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQoY29uc3QgTGF5
b3V0UG9pbnQmLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxlZWRBdm9pZGFuY2UsIExlZ2Fj
eUlubGluZUZsb3dCb3gqIGlubGluZUZsb3dCb3gpIGNvbnN0CiB7CiAgICAgaWYgKGJsZWVkQXZv
aWRhbmNlICE9IEJhY2tncm91bmRCbGVlZE5vbmUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKaW5kZXgg
OWIxNWViOTc0MzdjLi44MzhmNjRmMTZkNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCkBAIC02MCw3ICs2MCw3IEBAIGVudW0gQ29udGVu
dENoYW5nZVR5cGUgewogCiBjbGFzcyBCb3JkZXJFZGdlOwogY2xhc3MgSW1hZ2VCdWZmZXI7Ci1j
bGFzcyBJbmxpbmVGbG93Qm94OworY2xhc3MgTGVnYWN5SW5saW5lRmxvd0JveDsKIGNsYXNzIFJl
bmRlclRleHRGcmFnbWVudDsKIGNsYXNzIFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50
czsKIApAQCAtMjEwLDkgKzIxMCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHBhaW50Qm9yZGVyKGNv
bnN0IFBhaW50SW5mbyYsIGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBSZW5kZXJTdHlsZSYsIEJh
Y2tncm91bmRCbGVlZEF2b2lkYW5jZSA9IEJhY2tncm91bmRCbGVlZE5vbmUsIGJvb2wgaW5jbHVk
ZUxvZ2ljYWxMZWZ0RWRnZSA9IHRydWUsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UgPSB0
cnVlKTsKICAgICBib29sIHBhaW50TmluZVBpZWNlSW1hZ2UoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgTGF5b3V0UmVjdCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgTmluZVBpZWNlSW1hZ2Um
LCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZU9wZXJhdG9yOjpTb3VyY2VPdmVyKTsKICAg
ICB2b2lkIHBhaW50Qm94U2hhZG93KGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IExheW91dFJlY3Qm
LCBjb25zdCBSZW5kZXJTdHlsZSYsIFNoYWRvd1N0eWxlLCBib29sIGluY2x1ZGVMb2dpY2FsTGVm
dEVkZ2UgPSB0cnVlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlID0gdHJ1ZSk7Ci0gICAg
dm9pZCBwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IENvbG9y
JiwgY29uc3QgRmlsbExheWVyJiwgY29uc3QgTGF5b3V0UmVjdCYsIEJhY2tncm91bmRCbGVlZEF2
b2lkYW5jZSwgSW5saW5lRmxvd0JveCogPSBudWxscHRyLCBjb25zdCBMYXlvdXRTaXplJiA9IExh
eW91dFNpemUoKSwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVPcGVyYXRvcjo6U291cmNl
T3ZlciwgUmVuZGVyRWxlbWVudCogYmFja2dyb3VuZE9iamVjdCA9IG51bGxwdHIsIEJhc2VCYWNr
Z3JvdW5kQ29sb3JVc2FnZSA9IEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2UpOworICAgIHZvaWQgcGFp
bnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mLCBjb25zdCBDb2xvciYsIGNvbnN0
IEZpbGxMYXllciYsIGNvbnN0IExheW91dFJlY3QmLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2Us
IExlZ2FjeUlubGluZUZsb3dCb3gqID0gbnVsbHB0ciwgY29uc3QgTGF5b3V0U2l6ZSYgPSBMYXlv
dXRTaXplKCksIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlT3BlcmF0b3I6OlNvdXJjZU92
ZXIsIFJlbmRlckVsZW1lbnQqIGJhY2tncm91bmRPYmplY3QgPSBudWxscHRyLCBCYXNlQmFja2dy
b3VuZENvbG9yVXNhZ2UgPSBCYXNlQmFja2dyb3VuZENvbG9yVXNlKTsKIAotICAgIHZpcnR1YWwg
Ym9vbCBib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQoY29uc3QgTGF5b3V0UG9p
bnQmIGFic29sdXRlUGFpbnRQb3N0aW9uLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsIElubGlu
ZUZsb3dCb3gqID0gbnVsbHB0cikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGJveFNoYWRvd1No
b3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZChjb25zdCBMYXlvdXRQb2ludCYgYWJzb2x1dGVQYWlu
dFBvc3Rpb24sIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwgTGVnYWN5SW5saW5lRmxvd0JveCog
PSBudWxscHRyKSBjb25zdDsKIAogICAgIC8vIE92ZXJyaWRkZW4gYnkgc3ViY2xhc3NlcyB0byBk
ZXRlcm1pbmUgbGluZSBoZWlnaHQgYW5kIGJhc2VsaW5lIHBvc2l0aW9uLgogICAgIHZpcnR1YWwg
TGF5b3V0VW5pdCBsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwg
TGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3QgPSAwOwpA
QCAtMjU2LDcgKzI1Niw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgY29uc3QgTGF5b3V0UmVjdCYg
cGFpbnRSZWN0LCBSZW5kZXJFbGVtZW50KiA9IG51bGxwdHIpIGNvbnN0OwogICAgIGJvb2wgYm9y
ZGVyT2JzY3VyZXNCYWNrZ3JvdW5kRWRnZShjb25zdCBGbG9hdFNpemUmIGNvbnRleHRTY2FsZSkg
Y29uc3Q7CiAgICAgYm9vbCBib3JkZXJPYnNjdXJlc0JhY2tncm91bmQoKSBjb25zdDsKLSAgICBS
b3VuZGVkUmVjdCBiYWNrZ3JvdW5kUm91bmRlZFJlY3RBZGp1c3RlZEZvckJsZWVkQXZvaWRhbmNl
KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheW91dFJlY3QmLCBCYWNrZ3JvdW5kQmxl
ZWRBdm9pZGFuY2UsIElubGluZUZsb3dCb3gqLCBjb25zdCBMYXlvdXRTaXplJiwgYm9vbCBpbmNs
dWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKSBjb25zdDsK
KyAgICBSb3VuZGVkUmVjdCBiYWNrZ3JvdW5kUm91bmRlZFJlY3RBZGp1c3RlZEZvckJsZWVkQXZv
aWRhbmNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheW91dFJlY3QmLCBCYWNrZ3Jv
dW5kQmxlZWRBdm9pZGFuY2UsIExlZ2FjeUlubGluZUZsb3dCb3gqLCBjb25zdCBMYXlvdXRTaXpl
JiwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRF
ZGdlKSBjb25zdDsKICAgICBMYXlvdXRSZWN0IGJvcmRlcklubmVyUmVjdEFkanVzdGVkRm9yQmxl
ZWRBdm9pZGFuY2UoY29uc3QgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UmVjdCYsIEJh
Y2tncm91bmRCbGVlZEF2b2lkYW5jZSkgY29uc3Q7CiAKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0
eSBjaG9vc2VJbnRlcnBvbGF0aW9uUXVhbGl0eShHcmFwaGljc0NvbnRleHQmLCBJbWFnZSYsIGNv
bnN0IHZvaWQqLCBjb25zdCBMYXlvdXRTaXplJik7CkBAIC0zMDcsNyArMzA3LDcgQEAgcHJpdmF0
ZToKIAogICAgIExheW91dFNpemUgY2FsY3VsYXRlRmlsbFRpbGVTaXplKGNvbnN0IEZpbGxMYXll
ciYsIGNvbnN0IExheW91dFNpemUmIHNjYWxlZFBvc2l0aW9uaW5nQXJlYVNpemUpIGNvbnN0Owog
Ci0gICAgUm91bmRlZFJlY3QgZ2V0QmFja2dyb3VuZFJvdW5kZWRSZWN0KGNvbnN0IExheW91dFJl
Y3QmLCBJbmxpbmVGbG93Qm94KiwgTGF5b3V0VW5pdCBpbmxpbmVCb3hXaWR0aCwgTGF5b3V0VW5p
dCBpbmxpbmVCb3hIZWlnaHQsCisgICAgUm91bmRlZFJlY3QgZ2V0QmFja2dyb3VuZFJvdW5kZWRS
ZWN0KGNvbnN0IExheW91dFJlY3QmLCBMZWdhY3lJbmxpbmVGbG93Qm94KiwgTGF5b3V0VW5pdCBp
bmxpbmVCb3hXaWR0aCwgTGF5b3V0VW5pdCBpbmxpbmVCb3hIZWlnaHQsCiAgICAgICAgIGJvb2wg
aW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkgY29u
c3Q7CiAgICAgCiAgICAgYm9vbCBmaXhlZEJhY2tncm91bmRQYWludHNJbkxvY2FsQ29vcmRpbmF0
ZXMoKSBjb25zdDsKQEAgLTMyNiw3ICszMjYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZHJhd0Jv
eFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0JiwgY29uc3Qg
UGF0aCYsIGNvbnN0IEJvcmRlckVkZ2VzJiwKICAgICAgICAgZmxvYXQgdGhpY2tuZXNzLCBmbG9h
dCBkcmF3VGhpY2tuZXNzLCBCb3hTaWRlLCBjb25zdCBSZW5kZXJTdHlsZSYsCiAgICAgICAgIENv
bG9yLCBCb3JkZXJTdHlsZSwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBib29sIGluY2x1ZGVM
b2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwotICAgIHZvaWQg
cGFpbnRNYXNrRm9yVGV4dEZpbGxCb3goSW1hZ2VCdWZmZXIqLCBjb25zdCBJbnRSZWN0JiwgSW5s
aW5lRmxvd0JveCosIGNvbnN0IExheW91dFJlY3QmKTsKKyAgICB2b2lkIHBhaW50TWFza0ZvclRl
eHRGaWxsQm94KEltYWdlQnVmZmVyKiwgY29uc3QgSW50UmVjdCYsIExlZ2FjeUlubGluZUZsb3dC
b3gqLCBjb25zdCBMYXlvdXRSZWN0Jik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRleCA2ZGI0ZTlkYWY5ZGUu
Ljg3MTJmOTEzNjQyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3Bw
CkBAIC02OTIsNyArNjkyLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IFJlbmRlckltYWdlOjpwYWludElu
dG9SZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFJlY3QKICAgICByZXR1cm4g
ZHJhd1Jlc3VsdDsKIH0KIAotYm9vbCBSZW5kZXJJbWFnZTo6Ym94U2hhZG93U2hvdWxkQmVBcHBs
aWVkVG9CYWNrZ3JvdW5kKGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgQmFja2dyb3Vu
ZEJsZWVkQXZvaWRhbmNlIGJsZWVkQXZvaWRhbmNlLCBJbmxpbmVGbG93Qm94KikgY29uc3QKK2Jv
b2wgUmVuZGVySW1hZ2U6OmJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZChjb25z
dCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVl
ZEF2b2lkYW5jZSwgTGVnYWN5SW5saW5lRmxvd0JveCopIGNvbnN0CiB7CiAgICAgaWYgKCFSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6Ym94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKHBh
aW50T2Zmc2V0LCBibGVlZEF2b2lkYW5jZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKaW5kZXggOGNkYTRmZjJiMWNlLi45MWJiNGJj
OTZmNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCkBAIC0xMjEsNyAr
MTIxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNl
JiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgYm9vbCBub2RlQXRQb2lu
dChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9j
YXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRl
ZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgZmluYWw7CiAKLSAgICBib29sIGJveFNoYWRvd1Nob3Vs
ZEJlQXBwbGllZFRvQmFja2dyb3VuZChjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIEJh
Y2tncm91bmRCbGVlZEF2b2lkYW5jZSwgSW5saW5lRmxvd0JveCopIGNvbnN0IGZpbmFsOworICAg
IGJvb2wgYm94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKGNvbnN0IExheW91dFBv
aW50JiBwYWludE9mZnNldCwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBMZWdhY3lJbmxpbmVG
bG93Qm94KikgY29uc3QgZmluYWw7CiAKICAgICBJbnRTaXplIGltYWdlU2l6ZUZvckVycm9yKENh
Y2hlZEltYWdlKikgY29uc3Q7CiAgICAgdm9pZCByZXBhaW50T3JNYXJrRm9yTGF5b3V0KEltYWdl
U2l6ZUNoYW5nZVR5cGUsIGNvbnN0IEludFJlY3QqID0gbnVsbHB0cik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCmluZGV4IDJlMWQwMmI4YTk4ZS4uOWY4NGQ4MmU1
MGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcApAQCAtMjU3
LDcgKzI1Nyw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjpnZW5lcmF0ZUxpbmVCb3hSZWN0cyhHZW5l
cmF0b3JDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGlmICghYWx3YXlzQ3JlYXRlTGlu
ZUJveGVzKCkpCiAgICAgICAgIGdlbmVyYXRlQ3VsbGVkTGluZUJveFJlY3RzKGNvbnRleHQsIHRo
aXMpOwotICAgIGVsc2UgaWYgKElubGluZUZsb3dCb3gqIGN1cnIgPSBmaXJzdExpbmVCb3goKSkg
eworICAgIGVsc2UgaWYgKExlZ2FjeUlubGluZUZsb3dCb3gqIGN1cnIgPSBmaXJzdExpbmVCb3go
KSkgewogICAgICAgICBmb3IgKDsgY3VycjsgY3VyciA9IGN1cnItPm5leHRMaW5lQm94KCkpCiAg
ICAgICAgICAgICBjb250ZXh0LmFkZFJlY3QoRmxvYXRSZWN0KGN1cnItPnRvcExlZnQoKSwgY3Vy
ci0+c2l6ZSgpKSk7CiAgICAgfSBlbHNlCkBAIC0yOTgsNyArMjk4LDcgQEAgdm9pZCBSZW5kZXJJ
bmxpbmU6OmdlbmVyYXRlQ3VsbGVkTGluZUJveFJlY3RzKEdlbmVyYXRvckNvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IFIKICAgICAgICAgICAgIGlmICghcmVuZGVySW5saW5lLmFsd2F5c0NyZWF0ZUxp
bmVCb3hlcygpKQogICAgICAgICAgICAgICAgIHJlbmRlcklubGluZS5nZW5lcmF0ZUN1bGxlZExp
bmVCb3hSZWN0cyhjb250ZXh0LCBjb250YWluZXIpOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgZm9yIChJbmxpbmVGbG93Qm94KiBjaGlsZExpbmUgPSByZW5kZXJJbmxpbmUu
Zmlyc3RMaW5lQm94KCk7IGNoaWxkTGluZTsgY2hpbGRMaW5lID0gY2hpbGRMaW5lLT5uZXh0TGlu
ZUJveCgpKSB7CisgICAgICAgICAgICAgICAgZm9yIChhdXRvKiBjaGlsZExpbmUgPSByZW5kZXJJ
bmxpbmUuZmlyc3RMaW5lQm94KCk7IGNoaWxkTGluZTsgY2hpbGRMaW5lID0gY2hpbGRMaW5lLT5u
ZXh0TGluZUJveCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IExlZ2FjeVJvb3RJbmxp
bmVCb3gmIHJvb3RCb3ggPSBjaGlsZExpbmUtPnJvb3QoKTsKICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgUmVuZGVyU3R5bGUmIGNvbnRhaW5lclN0eWxlID0gcm9vdEJveC5pc0ZpcnN0TGluZSgp
ID8gY29udGFpbmVyLT5maXJzdExpbmVTdHlsZSgpIDogY29udGFpbmVyLT5zdHlsZSgpOwogICAg
ICAgICAgICAgICAgICAgICBpbnQgbG9naWNhbFRvcCA9IHJvb3RCb3gubG9naWNhbFRvcCgpICsg
KHJvb3RCb3gubGluZVN0eWxlKCkuZm9udENhc2NhZGUoKS5mb250TWV0cmljcygpLmFzY2VudCgp
IC0gY29udGFpbmVyU3R5bGUuZm9udENhc2NhZGUoKS5mb250TWV0cmljcygpLmFzY2VudCgpKTsK
QEAgLTY1Myw3ICs2NTMsNyBAQCBJbnRSZWN0IFJlbmRlcklubGluZTo6bGluZXNCb3VuZGluZ0Jv
eCgpIGNvbnN0CiAgICAgICAgIC8vIFJldHVybiB0aGUgd2lkdGggb2YgdGhlIG1pbmltYWwgbGVm
dCBzaWRlIGFuZCB0aGUgbWF4aW1hbCByaWdodCBzaWRlLgogICAgICAgICBmbG9hdCBsb2dpY2Fs
TGVmdFNpZGUgPSAwOwogICAgICAgICBmbG9hdCBsb2dpY2FsUmlnaHRTaWRlID0gMDsKLSAgICAg
ICAgZm9yIChJbmxpbmVGbG93Qm94KiBjdXJyID0gZmlyc3RMaW5lQm94KCk7IGN1cnI7IGN1cnIg
PSBjdXJyLT5uZXh0TGluZUJveCgpKSB7CisgICAgICAgIGZvciAoYXV0byogY3VyciA9IGZpcnN0
TGluZUJveCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dExpbmVCb3goKSkgewogICAgICAgICAg
ICAgaWYgKGN1cnIgPT0gZmlyc3RMaW5lQm94KCkgfHwgY3Vyci0+bG9naWNhbExlZnQoKSA8IGxv
Z2ljYWxMZWZ0U2lkZSkKICAgICAgICAgICAgICAgICBsb2dpY2FsTGVmdFNpZGUgPSBjdXJyLT5s
b2dpY2FsTGVmdCgpOwogICAgICAgICAgICAgaWYgKGN1cnIgPT0gZmlyc3RMaW5lQm94KCkgfHwg
Y3Vyci0+bG9naWNhbFJpZ2h0KCkgPiBsb2dpY2FsUmlnaHRTaWRlKQpAQCAtNzg3LDcgKzc4Nyw3
IEBAIExheW91dFJlY3QgUmVuZGVySW5saW5lOjpsaW5lc1Zpc3VhbE92ZXJmbG93Qm91bmRpbmdC
b3goKSBjb25zdAogICAgIC8vIFJldHVybiB0aGUgd2lkdGggb2YgdGhlIG1pbmltYWwgbGVmdCBz
aWRlIGFuZCB0aGUgbWF4aW1hbCByaWdodCBzaWRlLgogICAgIExheW91dFVuaXQgbG9naWNhbExl
ZnRTaWRlID0gTGF5b3V0VW5pdDo6bWF4KCk7CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHRT
aWRlID0gTGF5b3V0VW5pdDo6bWluKCk7Ci0gICAgZm9yIChJbmxpbmVGbG93Qm94KiBjdXJyID0g
Zmlyc3RMaW5lQm94KCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0TGluZUJveCgpKSB7CisgICAg
Zm9yIChhdXRvKiBjdXJyID0gZmlyc3RMaW5lQm94KCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0
TGluZUJveCgpKSB7CiAgICAgICAgIGxvZ2ljYWxMZWZ0U2lkZSA9IHN0ZDo6bWluKGxvZ2ljYWxM
ZWZ0U2lkZSwgY3Vyci0+bG9naWNhbExlZnRWaXN1YWxPdmVyZmxvdygpKTsKICAgICAgICAgbG9n
aWNhbFJpZ2h0U2lkZSA9IHN0ZDo6bWF4KGxvZ2ljYWxSaWdodFNpZGUsIGN1cnItPmxvZ2ljYWxS
aWdodFZpc3VhbE92ZXJmbG93KCkpOwogICAgIH0KQEAgLTgxOCw4ICs4MTgsOCBAQCBMYXlvdXRS
ZWN0IFJlbmRlcklubGluZTo6bGluZXNWaXN1YWxPdmVyZmxvd0JvdW5kaW5nQm94SW5GcmFnbWVu
dChjb25zdCBSZW5kZXJGcgogICAgIExheW91dFVuaXQgbG9naWNhbFJpZ2h0U2lkZSA9IExheW91
dFVuaXQ6Om1pbigpOwogICAgIExheW91dFVuaXQgbG9naWNhbFRvcDsKICAgICBMYXlvdXRVbml0
IGxvZ2ljYWxIZWlnaHQ7Ci0gICAgSW5saW5lRmxvd0JveCogbGFzdElubGluZUluRnJhZ21lbnQg
PSAwOwotICAgIGZvciAoSW5saW5lRmxvd0JveCogY3VyciA9IGZpcnN0TGluZUJveCgpOyBjdXJy
OyBjdXJyID0gY3Vyci0+bmV4dExpbmVCb3goKSkgeworICAgIExlZ2FjeUlubGluZUZsb3dCb3gq
IGxhc3RJbmxpbmVJbkZyYWdtZW50ID0gMDsKKyAgICBmb3IgKGF1dG8qIGN1cnIgPSBmaXJzdExp
bmVCb3goKTsgY3VycjsgY3VyciA9IGN1cnItPm5leHRMaW5lQm94KCkpIHsKICAgICAgICAgY29u
c3QgTGVnYWN5Um9vdElubGluZUJveCYgcm9vdCA9IGN1cnItPnJvb3QoKTsKICAgICAgICAgaWYg
KHJvb3QuY29udGFpbmluZ0ZyYWdtZW50KCkgIT0gZnJhZ21lbnQpIHsKICAgICAgICAgICAgIGlm
IChsYXN0SW5saW5lSW5GcmFnbWVudCkKQEAgLTExMTUsNyArMTExNSw3IEBAIHZvaWQgUmVuZGVy
SW5saW5lOjpkaXJ0eUxpbmVCb3hlcyhib29sIGZ1bGxMYXlvdXQpCiAgICAgICAgICAgICB9IGVs
c2UgaWYgKCFjdXJyZW50LnNlbGZOZWVkc0xheW91dCgpKSB7CiAgICAgICAgICAgICAgICAgaWYg
KGlzPFJlbmRlcklubGluZT4oY3VycmVudCkpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byYg
cmVuZGVySW5saW5lID0gZG93bmNhc3Q8UmVuZGVySW5saW5lPihjdXJyZW50KTsKLSAgICAgICAg
ICAgICAgICAgICAgZm9yIChJbmxpbmVGbG93Qm94KiBjaGlsZExpbmUgPSByZW5kZXJJbmxpbmUu
Zmlyc3RMaW5lQm94KCk7IGNoaWxkTGluZTsgY2hpbGRMaW5lID0gY2hpbGRMaW5lLT5uZXh0TGlu
ZUJveCgpKQorICAgICAgICAgICAgICAgICAgICBmb3IgKGF1dG8qIGNoaWxkTGluZSA9IHJlbmRl
cklubGluZS5maXJzdExpbmVCb3goKTsgY2hpbGRMaW5lOyBjaGlsZExpbmUgPSBjaGlsZExpbmUt
Pm5leHRMaW5lQm94KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZExpbmUtPnJvb3Qo
KS5tYXJrRGlydHkoKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzPFJlbmRlclRleHQ+
KGN1cnJlbnQpKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8mIHJlbmRlclRleHQgPSBkb3du
Y2FzdDxSZW5kZXJUZXh0PihjdXJyZW50KTsKQEAgLTExMzcsMTIgKzExMzcsMTIgQEAgdm9pZCBS
ZW5kZXJJbmxpbmU6OmRlbGV0ZUxpbmVzKCkKICAgICBtX2xpbmVCb3hlcy5kZWxldGVMaW5lQm94
VHJlZSgpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW5saW5lRmxvd0JveD4gUmVuZGVySW5saW5l
OjpjcmVhdGVJbmxpbmVGbG93Qm94KCkKK3N0ZDo6dW5pcXVlX3B0cjxMZWdhY3lJbmxpbmVGbG93
Qm94PiBSZW5kZXJJbmxpbmU6OmNyZWF0ZUlubGluZUZsb3dCb3goKQogewotICAgIHJldHVybiBt
YWtlVW5pcXVlPElubGluZUZsb3dCb3g+KCp0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxM
ZWdhY3lJbmxpbmVGbG93Qm94PigqdGhpcyk7CiB9CiAKLUlubGluZUZsb3dCb3gqIFJlbmRlcklu
bGluZTo6Y3JlYXRlQW5kQXBwZW5kSW5saW5lRmxvd0JveCgpCitMZWdhY3lJbmxpbmVGbG93Qm94
KiBSZW5kZXJJbmxpbmU6OmNyZWF0ZUFuZEFwcGVuZElubGluZUZsb3dCb3goKQogewogICAgIHNl
dEFsd2F5c0NyZWF0ZUxpbmVCb3hlcygpOwogICAgIGF1dG8gbmV3Rmxvd0JveCA9IGNyZWF0ZUlu
bGluZUZsb3dCb3goKTsKQEAgLTEyNzIsNyArMTI3Miw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjpw
YWludE91dGxpbmUoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWlu
dE9mCiAKICAgICBWZWN0b3I8TGF5b3V0UmVjdD4gcmVjdHM7CiAgICAgcmVjdHMuYXBwZW5kKExh
eW91dFJlY3QoKSk7Ci0gICAgZm9yIChJbmxpbmVGbG93Qm94KiBjdXJyID0gZmlyc3RMaW5lQm94
KCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0TGluZUJveCgpKSB7CisgICAgZm9yIChhdXRvKiBj
dXJyID0gZmlyc3RMaW5lQm94KCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0TGluZUJveCgpKSB7
CiAgICAgICAgIGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVCb3gmIHJvb3RCb3ggPSBjdXJyLT5yb290
KCk7CiAgICAgICAgIExheW91dFVuaXQgdG9wID0gc3RkOjptYXgocm9vdEJveC5saW5lVG9wKCks
IExheW91dFVuaXQoY3Vyci0+bG9naWNhbFRvcCgpKSk7CiAgICAgICAgIExheW91dFVuaXQgYm90
dG9tID0gc3RkOjptaW4ocm9vdEJveC5saW5lQm90dG9tKCksIExheW91dFVuaXQoY3Vyci0+bG9n
aWNhbEJvdHRvbSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW5saW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKaW5k
ZXggYmMwM2VkNmIzOWRhLi42NmY1NGM3N2ExNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW5saW5lLmgKQEAgLTIyLDcgKzIyLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNs
dWRlICJJbmxpbmVGbG93Qm94LmgiCisjaW5jbHVkZSAiTGVnYWN5SW5saW5lRmxvd0JveC5oIgog
I2luY2x1ZGUgIlJlbmRlckJveE1vZGVsT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGluZUJv
eExpc3QuaCIKIApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgTGF5b3V0UmVjdCBsaW5l
c1Zpc3VhbE92ZXJmbG93Qm91bmRpbmdCb3goKSBjb25zdDsKICAgICBMYXlvdXRSZWN0IGxpbmVz
VmlzdWFsT3ZlcmZsb3dCb3VuZGluZ0JveEluRnJhZ21lbnQoY29uc3QgUmVuZGVyRnJhZ21lbnRD
b250YWluZXIqKSBjb25zdDsKIAotICAgIElubGluZUZsb3dCb3gqIGNyZWF0ZUFuZEFwcGVuZElu
bGluZUZsb3dCb3goKTsKKyAgICBMZWdhY3lJbmxpbmVGbG93Qm94KiBjcmVhdGVBbmRBcHBlbmRJ
bmxpbmVGbG93Qm94KCk7CiAKICAgICB2b2lkIGRpcnR5TGluZUJveGVzKGJvb2wgZnVsbExheW91
dCk7CiAgICAgdm9pZCBkZWxldGVMaW5lcygpOwpAQCAtNjgsOCArNjgsOCBAQCBwdWJsaWM6CiAg
ICAgUmVuZGVyTGluZUJveExpc3QmIGxpbmVCb3hlcygpIHsgcmV0dXJuIG1fbGluZUJveGVzOyB9
CiAgICAgY29uc3QgUmVuZGVyTGluZUJveExpc3QmIGxpbmVCb3hlcygpIGNvbnN0IHsgcmV0dXJu
IG1fbGluZUJveGVzOyB9CiAKLSAgICBJbmxpbmVGbG93Qm94KiBmaXJzdExpbmVCb3goKSBjb25z
dCB7IHJldHVybiBtX2xpbmVCb3hlcy5maXJzdExpbmVCb3goKTsgfQotICAgIElubGluZUZsb3dC
b3gqIGxhc3RMaW5lQm94KCkgY29uc3QgeyByZXR1cm4gbV9saW5lQm94ZXMubGFzdExpbmVCb3go
KTsgfQorICAgIExlZ2FjeUlubGluZUZsb3dCb3gqIGZpcnN0TGluZUJveCgpIGNvbnN0IHsgcmV0
dXJuIG1fbGluZUJveGVzLmZpcnN0TGluZUJveCgpOyB9CisgICAgTGVnYWN5SW5saW5lRmxvd0Jv
eCogbGFzdExpbmVCb3goKSBjb25zdCB7IHJldHVybiBtX2xpbmVCb3hlcy5sYXN0TGluZUJveCgp
OyB9CiAgICAgTGVnYWN5SW5saW5lQm94KiBmaXJzdExpbmVCb3hJbmNsdWRpbmdDdWxsaW5nKCkg
Y29uc3QgeyByZXR1cm4gYWx3YXlzQ3JlYXRlTGluZUJveGVzKCkgPyBmaXJzdExpbmVCb3goKSA6
IGN1bGxlZElubGluZUZpcnN0TGluZUJveCgpOyB9CiAgICAgTGVnYWN5SW5saW5lQm94KiBsYXN0
TGluZUJveEluY2x1ZGluZ0N1bGxpbmcoKSBjb25zdCB7IHJldHVybiBhbHdheXNDcmVhdGVMaW5l
Qm94ZXMoKSA/IGxhc3RMaW5lQm94KCkgOiBjdWxsZWRJbmxpbmVMYXN0TGluZUJveCgpOyB9CiAK
QEAgLTEzOSw3ICsxMzksNyBAQCBwcml2YXRlOgogCiAgICAgTGF5b3V0UmVjdCBmcmFtZVJlY3RG
b3JTdGlja3lQb3NpdGlvbmluZygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGxpbmVzQm91bmRpbmdC
b3goKTsgfQogCi0gICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lRmxvd0JveD4gY3Jl
YXRlSW5saW5lRmxvd0JveCgpOyAvLyBTdWJjbGFzc2VkIGJ5IFJlbmRlclNWR0lubGluZQorICAg
IHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUlubGluZUZsb3dCb3g+IGNyZWF0ZUlubGlu
ZUZsb3dCb3goKTsgLy8gU3ViY2xhc3NlZCBieSBSZW5kZXJTVkdJbmxpbmUKIAogICAgIHZvaWQg
ZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQoUmVuZGVyT2JqZWN0JiBjaGlsZCkgZmluYWwgeyBt
X2xpbmVCb3hlcy5kaXJ0eUxpbmVzRnJvbUNoYW5nZWRDaGlsZCgqdGhpcywgY2hpbGQpOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3QuY3BwCmluZGV4
IDcxMDJmNjMyZmFjYi4uM2M5ZWU0ZmMyNDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHAKQEAgLTQ5LDExICs0OSwxMSBAQCBSZW5kZXJMaW5l
Qm94TGlzdDo6flJlbmRlckxpbmVCb3hMaXN0KCkKIH0KICNlbmRpZgogCi12b2lkIFJlbmRlckxp
bmVCb3hMaXN0OjphcHBlbmRMaW5lQm94KHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVGbG93Qm94PiBi
b3gpCit2b2lkIFJlbmRlckxpbmVCb3hMaXN0OjphcHBlbmRMaW5lQm94KHN0ZDo6dW5pcXVlX3B0
cjxMZWdhY3lJbmxpbmVGbG93Qm94PiBib3gpCiB7CiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwog
Ci0gICAgSW5saW5lRmxvd0JveCogYm94UHRyID0gYm94LnJlbGVhc2UoKTsKKyAgICBMZWdhY3lJ
bmxpbmVGbG93Qm94KiBib3hQdHIgPSBib3gucmVsZWFzZSgpOwogCiAgICAgaWYgKCFtX2ZpcnN0
TGluZUJveCkgewogICAgICAgICBtX2ZpcnN0TGluZUJveCA9IGJveFB0cjsKQEAgLTY5LDggKzY5
LDggQEAgdm9pZCBSZW5kZXJMaW5lQm94TGlzdDo6YXBwZW5kTGluZUJveChzdGQ6OnVuaXF1ZV9w
dHI8SW5saW5lRmxvd0JveD4gYm94KQogCiB2b2lkIFJlbmRlckxpbmVCb3hMaXN0OjpkZWxldGVM
aW5lQm94VHJlZSgpCiB7Ci0gICAgSW5saW5lRmxvd0JveCogbGluZSA9IG1fZmlyc3RMaW5lQm94
OwotICAgIElubGluZUZsb3dCb3gqIG5leHRMaW5lOworICAgIExlZ2FjeUlubGluZUZsb3dCb3gq
IGxpbmUgPSBtX2ZpcnN0TGluZUJveDsKKyAgICBMZWdhY3lJbmxpbmVGbG93Qm94KiBuZXh0TGlu
ZTsKICAgICB3aGlsZSAobGluZSkgewogICAgICAgICBuZXh0TGluZSA9IGxpbmUtPm5leHRMaW5l
Qm94KCk7CiAgICAgICAgIGxpbmUtPmRlbGV0ZUxpbmUoKTsKQEAgLTc5LDcgKzc5LDcgQEAgdm9p
ZCBSZW5kZXJMaW5lQm94TGlzdDo6ZGVsZXRlTGluZUJveFRyZWUoKQogICAgIG1fZmlyc3RMaW5l
Qm94ID0gbV9sYXN0TGluZUJveCA9IG51bGxwdHI7CiB9CiAKLXZvaWQgUmVuZGVyTGluZUJveExp
c3Q6OmV4dHJhY3RMaW5lQm94KElubGluZUZsb3dCb3gqIGJveCkKK3ZvaWQgUmVuZGVyTGluZUJv
eExpc3Q6OmV4dHJhY3RMaW5lQm94KExlZ2FjeUlubGluZUZsb3dCb3gqIGJveCkKIHsKICAgICBj
aGVja0NvbnNpc3RlbmN5KCk7CiAgICAgCkBAIC04OSwxMyArODksMTMgQEAgdm9pZCBSZW5kZXJM
aW5lQm94TGlzdDo6ZXh0cmFjdExpbmVCb3goSW5saW5lRmxvd0JveCogYm94KQogICAgIGlmIChi
b3gtPnByZXZMaW5lQm94KCkpCiAgICAgICAgIGJveC0+cHJldkxpbmVCb3goKS0+c2V0TmV4dExp
bmVCb3gobnVsbHB0cik7CiAgICAgYm94LT5zZXRQcmV2aW91c0xpbmVCb3gobnVsbHB0cik7Ci0g
ICAgZm9yIChJbmxpbmVGbG93Qm94KiBjdXJyID0gYm94OyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4
dExpbmVCb3goKSkKKyAgICBmb3IgKGF1dG8qIGN1cnIgPSBib3g7IGN1cnI7IGN1cnIgPSBjdXJy
LT5uZXh0TGluZUJveCgpKQogICAgICAgICBjdXJyLT5zZXRFeHRyYWN0ZWQoKTsKIAogICAgIGNo
ZWNrQ29uc2lzdGVuY3koKTsKIH0KIAotdm9pZCBSZW5kZXJMaW5lQm94TGlzdDo6YXR0YWNoTGlu
ZUJveChJbmxpbmVGbG93Qm94KiBib3gpCit2b2lkIFJlbmRlckxpbmVCb3hMaXN0OjphdHRhY2hM
aW5lQm94KExlZ2FjeUlubGluZUZsb3dCb3gqIGJveCkKIHsKICAgICBjaGVja0NvbnNpc3RlbmN5
KCk7CiAKQEAgLTEwNCw4ICsxMDQsOCBAQCB2b2lkIFJlbmRlckxpbmVCb3hMaXN0OjphdHRhY2hM
aW5lQm94KElubGluZUZsb3dCb3gqIGJveCkKICAgICAgICAgYm94LT5zZXRQcmV2aW91c0xpbmVC
b3gobV9sYXN0TGluZUJveCk7CiAgICAgfSBlbHNlCiAgICAgICAgIG1fZmlyc3RMaW5lQm94ID0g
Ym94OwotICAgIElubGluZUZsb3dCb3gqIGxhc3QgPSBib3g7Ci0gICAgZm9yIChJbmxpbmVGbG93
Qm94KiBjdXJyID0gYm94OyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dExpbmVCb3goKSkgeworICAg
IExlZ2FjeUlubGluZUZsb3dCb3gqIGxhc3QgPSBib3g7CisgICAgZm9yIChhdXRvKiBjdXJyID0g
Ym94OyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dExpbmVCb3goKSkgewogICAgICAgICBjdXJyLT5z
ZXRFeHRyYWN0ZWQoZmFsc2UpOwogICAgICAgICBsYXN0ID0gY3VycjsKICAgICB9CkBAIC0xMTQs
NyArMTE0LDcgQEAgdm9pZCBSZW5kZXJMaW5lQm94TGlzdDo6YXR0YWNoTGluZUJveChJbmxpbmVG
bG93Qm94KiBib3gpCiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogfQogCi12b2lkIFJlbmRlckxp
bmVCb3hMaXN0OjpyZW1vdmVMaW5lQm94KElubGluZUZsb3dCb3gqIGJveCkKK3ZvaWQgUmVuZGVy
TGluZUJveExpc3Q6OnJlbW92ZUxpbmVCb3goTGVnYWN5SW5saW5lRmxvd0JveCogYm94KQogewog
ICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKIApAQCAtMTMzLDggKzEzMyw4IEBAIHZvaWQgUmVuZGVy
TGluZUJveExpc3Q6OnJlbW92ZUxpbmVCb3goSW5saW5lRmxvd0JveCogYm94KQogdm9pZCBSZW5k
ZXJMaW5lQm94TGlzdDo6ZGVsZXRlTGluZUJveGVzKCkKIHsKICAgICBpZiAobV9maXJzdExpbmVC
b3gpIHsKLSAgICAgICAgSW5saW5lRmxvd0JveCogbmV4dDsKLSAgICAgICAgZm9yIChJbmxpbmVG
bG93Qm94KiBjdXJyID0gbV9maXJzdExpbmVCb3g7IGN1cnI7IGN1cnIgPSBuZXh0KSB7CisgICAg
ICAgIExlZ2FjeUlubGluZUZsb3dCb3gqIG5leHQ7CisgICAgICAgIGZvciAoYXV0byogY3VyciA9
IG1fZmlyc3RMaW5lQm94OyBjdXJyOyBjdXJyID0gbmV4dCkgewogICAgICAgICAgICAgbmV4dCA9
IGN1cnItPm5leHRMaW5lQm94KCk7CiAgICAgICAgICAgICBkZWxldGUgY3VycjsKICAgICAgICAg
fQpAQCAtMTQ1LDcgKzE0NSw3IEBAIHZvaWQgUmVuZGVyTGluZUJveExpc3Q6OmRlbGV0ZUxpbmVC
b3hlcygpCiAKIHZvaWQgUmVuZGVyTGluZUJveExpc3Q6OmRpcnR5TGluZUJveGVzKCkKIHsKLSAg
ICBmb3IgKElubGluZUZsb3dCb3gqIGN1cnIgPSBmaXJzdExpbmVCb3goKTsgY3VycjsgY3VyciA9
IGN1cnItPm5leHRMaW5lQm94KCkpCisgICAgZm9yIChhdXRvKiBjdXJyID0gZmlyc3RMaW5lQm94
KCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0TGluZUJveCgpKQogICAgICAgICBjdXJyLT5kaXJ0
eUxpbmVCb3hlcygpOwogfQogCkBAIC0xOTcsNyArMTk3LDcgQEAgYm9vbCBSZW5kZXJMaW5lQm94
TGlzdDo6YW55TGluZUludGVyc2VjdHNSZWN0KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZW5kZXJl
ciwgY28KICAgICByZXR1cm4gcmFuZ2VJbnRlcnNlY3RzUmVjdChyZW5kZXJlciwgZmlyc3RMaW5l
VG9wLCBsYXN0TGluZUJvdHRvbSwgcmVjdCwgb2Zmc2V0KTsKIH0KIAotYm9vbCBSZW5kZXJMaW5l
Qm94TGlzdDo6bGluZUludGVyc2VjdHNEaXJ0eVJlY3QoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJl
bmRlcmVyLCBJbmxpbmVGbG93Qm94KiBib3gsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYgb2Zmc2V0KSBjb25zdAorYm9vbCBSZW5kZXJMaW5lQm94TGlzdDo6
bGluZUludGVyc2VjdHNEaXJ0eVJlY3QoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlbmRlcmVyLCBM
ZWdhY3lJbmxpbmVGbG93Qm94KiBib3gsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2ludCYgb2Zmc2V0KSBjb25zdAogewogICAgIGNvbnN0IExlZ2FjeVJvb3RJbmxp
bmVCb3gmIHJvb3RCb3ggPSBib3gtPnJvb3QoKTsKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxUb3Ag
PSBzdGQ6Om1pbihib3gtPmxvZ2ljYWxUb3BWaXN1YWxPdmVyZmxvdyhyb290Qm94LmxpbmVUb3Ao
KSksIHJvb3RCb3guc2VsZWN0aW9uVG9wKCkpOwpAQCAtMjI3LDcgKzIyNyw3IEBAIHZvaWQgUmVu
ZGVyTGluZUJveExpc3Q6OnBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZW5kZXJlciwgUGFp
bnRJbmZvJiBwYWludEluCiAgICAgLy8gU2VlIGlmIG91ciByb290IGxpbmVzIGludGVyc2VjdCB3
aXRoIHRoZSBkaXJ0eSByZWN0LiAgSWYgc28sIHRoZW4gd2UgcGFpbnQKICAgICAvLyB0aGVtLiAg
Tm90ZSB0aGF0IGJveGVzIGNhbiBlYXNpbHkgb3ZlcmxhcCwgc28gd2UgY2FuJ3QgbWFrZSBhbnkg
YXNzdW1wdGlvbnMKICAgICAvLyBiYXNlZCBvZmYgcG9zaXRpb25zIG9mIG91ciBmaXJzdCBsaW5l
IGJveCBvciBvdXIgbGFzdCBsaW5lIGJveC4KLSAgICBmb3IgKElubGluZUZsb3dCb3gqIGN1cnIg
PSBmaXJzdExpbmVCb3goKTsgY3VycjsgY3VyciA9IGN1cnItPm5leHRMaW5lQm94KCkpIHsKKyAg
ICBmb3IgKGF1dG8qIGN1cnIgPSBmaXJzdExpbmVCb3goKTsgY3VycjsgY3VyciA9IGN1cnItPm5l
eHRMaW5lQm94KCkpIHsKICAgICAgICAgaWYgKHVzZVByaW50UmVjdCkgewogICAgICAgICAgICAg
Ly8gRklYTUU6IFRoaXMgaXMgdGhlIGRlcHJlY2F0ZWQgcGFnaW5hdGlvbiBtb2RlbCB0aGF0IGlz
IHN0aWxsIG5lZWRlZAogICAgICAgICAgICAgLy8gZm9yIGVtYmVkZGVkIHZpZXdzIGluc2lkZSBB
cHBLaXQuICBBcHBLaXQgaXMgaW5jYXBhYmxlIG9mIHBhZ2luYXRpbmcgdmVydGljYWwKQEAgLTI5
MCw3ICsyOTAsNyBAQCBib29sIFJlbmRlckxpbmVCb3hMaXN0OjpoaXRUZXN0KFJlbmRlckJveE1v
ZGVsT2JqZWN0KiByZW5kZXJlciwgY29uc3QgSGl0VGVzdFJlcQogICAgIC8vIFNlZSBpZiBvdXIg
cm9vdCBsaW5lcyBjb250YWluIHRoZSBwb2ludC4gIElmIHNvLCB0aGVuIHdlIGhpdCB0ZXN0CiAg
ICAgLy8gdGhlbSBmdXJ0aGVyLiAgTm90ZSB0aGF0IGJveGVzIGNhbiBlYXNpbHkgb3ZlcmxhcCwg
c28gd2UgY2FuJ3QgbWFrZSBhbnkgYXNzdW1wdGlvbnMKICAgICAvLyBiYXNlZCBvZmYgcG9zaXRp
b25zIG9mIG91ciBmaXJzdCBsaW5lIGJveCBvciBvdXIgbGFzdCBsaW5lIGJveC4KLSAgICBmb3Ig
KElubGluZUZsb3dCb3gqIGN1cnIgPSBsYXN0TGluZUJveCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+
cHJldkxpbmVCb3goKSkgeworICAgIGZvciAoYXV0byogY3VyciA9IGxhc3RMaW5lQm94KCk7IGN1
cnI7IGN1cnIgPSBjdXJyLT5wcmV2TGluZUJveCgpKSB7CiAgICAgICAgIGNvbnN0IExlZ2FjeVJv
b3RJbmxpbmVCb3gmIHJvb3RCb3ggPSBjdXJyLT5yb290KCk7CiAgICAgICAgIGlmIChyYW5nZUlu
dGVyc2VjdHNSZWN0KHJlbmRlcmVyLCBjdXJyLT5sb2dpY2FsVG9wVmlzdWFsT3ZlcmZsb3cocm9v
dEJveC5saW5lVG9wKCkpLCBjdXJyLT5sb2dpY2FsQm90dG9tVmlzdWFsT3ZlcmZsb3cocm9vdEJv
eC5saW5lQm90dG9tKCkpLCByZWN0LCBhY2N1bXVsYXRlZE9mZnNldCkpIHsKICAgICAgICAgICAg
IGJvb2wgaW5zaWRlID0gY3Vyci0+bm9kZUF0UG9pbnQocmVxdWVzdCwgcmVzdWx0LCBsb2NhdGlv
bkluQ29udGFpbmVyLCBhY2N1bXVsYXRlZE9mZnNldCwgcm9vdEJveC5saW5lVG9wKCksIHJvb3RC
b3gubGluZUJvdHRvbSgpLCBoaXRUZXN0QWN0aW9uKTsKQEAgLTQwMSw4ICs0MDEsOCBAQCB2b2lk
IFJlbmRlckxpbmVCb3hMaXN0OjpkaXJ0eUxpbmVzRnJvbUNoYW5nZWRDaGlsZChSZW5kZXJCb3hN
b2RlbE9iamVjdCYgY29udGFpbgogdm9pZCBSZW5kZXJMaW5lQm94TGlzdDo6Y2hlY2tDb25zaXN0
ZW5jeSgpIGNvbnN0CiB7CiAjaWZkZWYgQ0hFQ0tfQ09OU0lTVEVOQ1kKLSAgICBjb25zdCBJbmxp
bmVGbG93Qm94KiBwcmV2ID0gbnVsbHB0cjsKLSAgICBmb3IgKGNvbnN0IElubGluZUZsb3dCb3gq
IGNoaWxkID0gbV9maXJzdExpbmVCb3g7IGNoaWxkICE9IG51bGxwdHI7IGNoaWxkID0gY2hpbGQt
Pm5leHRMaW5lQm94KCkpIHsKKyAgICBjb25zdCBMZWdhY3lJbmxpbmVGbG93Qm94KiBwcmV2ID0g
bnVsbHB0cjsKKyAgICBmb3IgKGNvbnN0IExlZ2FjeUlubGluZUZsb3dCb3gqIGNoaWxkID0gbV9m
aXJzdExpbmVCb3g7IGNoaWxkICE9IG51bGxwdHI7IGNoaWxkID0gY2hpbGQtPm5leHRMaW5lQm94
KCkpIHsKICAgICAgICAgQVNTRVJUKGNoaWxkLT5wcmV2TGluZUJveCgpID09IHByZXYpOwogICAg
ICAgICBwcmV2ID0gY2hpbGQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGluZUJveExpc3QuaAppbmRleCAyMzFkOGYwZmNmZGYuLjAzMzYyZmM2MjZjNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmgKQEAgLTMyLDcgKzMy
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbmxpbmVGbG93Qm94OworY2xh
c3MgTGVnYWN5SW5saW5lRmxvd0JveDsKIGNsYXNzIFJlbmRlckJsb2NrRmxvdzsKIAogY2xhc3Mg
UmVuZGVyTGluZUJveExpc3QgewpAQCAtNDcsMTkgKzQ3LDE5IEBAIHB1YmxpYzoKICAgICB+UmVu
ZGVyTGluZUJveExpc3QoKTsKICNlbmRpZgogCi0gICAgSW5saW5lRmxvd0JveCogZmlyc3RMaW5l
Qm94KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdExpbmVCb3g7IH0KLSAgICBJbmxpbmVGbG93Qm94
KiBsYXN0TGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdExpbmVCb3g7IH0KKyAgICBMZWdh
Y3lJbmxpbmVGbG93Qm94KiBmaXJzdExpbmVCb3goKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0TGlu
ZUJveDsgfQorICAgIExlZ2FjeUlubGluZUZsb3dCb3gqIGxhc3RMaW5lQm94KCkgY29uc3QgeyBy
ZXR1cm4gbV9sYXN0TGluZUJveDsgfQogCiAgICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5KCkgY29u
c3Q7CiAKLSAgICB2b2lkIGFwcGVuZExpbmVCb3goc3RkOjp1bmlxdWVfcHRyPElubGluZUZsb3dC
b3g+KTsKKyAgICB2b2lkIGFwcGVuZExpbmVCb3goc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUlubGlu
ZUZsb3dCb3g+KTsKIAogICAgIHZvaWQgZGVsZXRlTGluZUJveFRyZWUoKTsKICAgICB2b2lkIGRl
bGV0ZUxpbmVCb3hlcygpOwogCi0gICAgdm9pZCBleHRyYWN0TGluZUJveChJbmxpbmVGbG93Qm94
Kik7Ci0gICAgdm9pZCBhdHRhY2hMaW5lQm94KElubGluZUZsb3dCb3gqKTsKLSAgICB2b2lkIHJl
bW92ZUxpbmVCb3goSW5saW5lRmxvd0JveCopOworICAgIHZvaWQgZXh0cmFjdExpbmVCb3goTGVn
YWN5SW5saW5lRmxvd0JveCopOworICAgIHZvaWQgYXR0YWNoTGluZUJveChMZWdhY3lJbmxpbmVG
bG93Qm94Kik7CisgICAgdm9pZCByZW1vdmVMaW5lQm94KExlZ2FjeUlubGluZUZsb3dCb3gqKTsK
ICAgICAKICAgICB2b2lkIGRpcnR5TGluZUJveGVzKCk7CiAgICAgdm9pZCBkaXJ0eUxpbmVzRnJv
bUNoYW5nZWRDaGlsZChSZW5kZXJCb3hNb2RlbE9iamVjdCYgcGFyZW50LCBSZW5kZXJPYmplY3Qm
IGNoaWxkKTsKQEAgLTY5LDE0ICs2OSwxNCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgYm9v
bCBhbnlMaW5lSW50ZXJzZWN0c1JlY3QoUmVuZGVyQm94TW9kZWxPYmplY3QqLCBjb25zdCBMYXlv
dXRSZWN0JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBib29sIHVzZVByaW50UmVjdCA9IGZhbHNlKSBj
b25zdDsKLSAgICBib29sIGxpbmVJbnRlcnNlY3RzRGlydHlSZWN0KFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiwgSW5saW5lRmxvd0JveCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50
JikgY29uc3Q7CisgICAgYm9vbCBsaW5lSW50ZXJzZWN0c0RpcnR5UmVjdChSZW5kZXJCb3hNb2Rl
bE9iamVjdCosIExlZ2FjeUlubGluZUZsb3dCb3gqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBM
YXlvdXRQb2ludCYpIGNvbnN0OwogICAgIGJvb2wgcmFuZ2VJbnRlcnNlY3RzUmVjdChSZW5kZXJC
b3hNb2RlbE9iamVjdCosIExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dpY2Fs
Qm90dG9tLCBjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgTGF5b3V0UG9pbnQmKSBjb25zdDsKIAog
ICAgIC8vIEZvciBibG9jayBmbG93cywgZWFjaCBib3ggcmVwcmVzZW50cyB0aGUgcm9vdCBpbmxp
bmUgYm94IGZvciBhIGxpbmUgaW4gdGhlCiAgICAgLy8gcGFyYWdyYXBoLgogICAgIC8vIEZvciBp
bmxpbmUgZmxvd3MsIGVhY2ggYm94IHJlcHJlc2VudHMgYSBwb3J0aW9uIG9mIHRoYXQgaW5saW5l
LgotICAgIElubGluZUZsb3dCb3gqIG1fZmlyc3RMaW5lQm94OwotICAgIElubGluZUZsb3dCb3gq
IG1fbGFzdExpbmVCb3g7CisgICAgTGVnYWN5SW5saW5lRmxvd0JveCogbV9maXJzdExpbmVCb3g7
CisgICAgTGVnYWN5SW5saW5lRmxvd0JveCogbV9sYXN0TGluZUJveDsKIH07CiAKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck92ZXJmbG93LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT3ZlcmZsb3cuaAppbmRleCBkOGQ5OGJjN2RiODYuLmMz
OTRjYjQ5NmViYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck92
ZXJmbG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck92ZXJmbG93LmgK
QEAgLTI2LDcgKzI2LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlCiB7CiAvLyBSZW5kZXJPdmVyZmxv
dyBpcyBhIGNsYXNzIGZvciB0cmFja2luZyBjb250ZW50IHRoYXQgc3BpbGxzIG91dCBvZiBhIGJv
eC4gIFRoaXMgY2xhc3MgaXMgdXNlZCBieSBSZW5kZXJCb3ggYW5kCi0vLyBJbmxpbmVGbG93Qm94
LgorLy8gTGVnYWN5SW5saW5lRmxvd0JveC4KIC8vCiAvLyBUaGVyZSBhcmUgdHdvIHR5cGVzIG9m
IG92ZXJmbG93OiBsYXlvdXQgb3ZlcmZsb3cgKHdoaWNoIGlzIGV4cGVjdGVkIHRvIGJlIHJlYWNo
YWJsZSB2aWEgc2Nyb2xsaW5nIG1lY2hhbmlzbXMpIGFuZAogLy8gdmlzdWFsIG92ZXJmbG93ICh3
aGljaCBpcyBub3QgZXhwZWN0ZWQgdG8gYmUgcmVhY2hhYmxlIHZpYSBzY3JvbGxpbmcgbWVjaGFu
aXNtcykuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVD
ZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCmlu
ZGV4IDRlM2ZmZThjMTQ1NS4uN2E1ODdiODlhY2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcApAQCAtMTM0Niw3ICsxMzQ2LDcgQEAgdm9pZCBSZW5k
ZXJUYWJsZUNlbGw6OnBhaW50TWFzayhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2YKICAgICBwYWludE1hc2tJbWFnZXMocGFpbnRJbmZvLCBwYWludFJlY3Qp
OwogfQogCi1ib29sIFJlbmRlclRhYmxlQ2VsbDo6Ym94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9C
YWNrZ3JvdW5kKGNvbnN0IExheW91dFBvaW50JiwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBJ
bmxpbmVGbG93Qm94KikgY29uc3QKK2Jvb2wgUmVuZGVyVGFibGVDZWxsOjpib3hTaGFkb3dTaG91
bGRCZUFwcGxpZWRUb0JhY2tncm91bmQoY29uc3QgTGF5b3V0UG9pbnQmLCBCYWNrZ3JvdW5kQmxl
ZWRBdm9pZGFuY2UsIExlZ2FjeUlubGluZUZsb3dCb3gqKSBjb25zdAogewogICAgIHJldHVybiBm
YWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZUNlbGwuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAppbmRl
eCA5MDhiNGM1MjRkYjkuLjQxYTgzYTJjODY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZUNlbGwuaApAQCAtMTUxLDcgKzE1MSw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBwYWludE1hc2soUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQm
KSBvdmVycmlkZTsKIAotICAgIGJvb2wgYm94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3Jv
dW5kKGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgQmFja2dyb3VuZEJsZWVkQXZvaWRh
bmNlLCBJbmxpbmVGbG93Qm94KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBib3hTaGFkb3dT
aG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQoY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
LCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsIExlZ2FjeUlubGluZUZsb3dCb3gqKSBjb25zdCBv
dmVycmlkZTsKIAogICAgIExheW91dFNpemUgb2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJFbGVt
ZW50JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBib29sKiBvZmZzZXREZXBlbmRzT25Qb2ludCA9IDAp
IGNvbnN0IG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0UmVjdD4gY29tcHV0ZVZp
c2libGVSZWN0SW5Db250YWluZXIoY29uc3QgTGF5b3V0UmVjdCYsIGNvbnN0IFJlbmRlckxheWVy
TW9kZWxPYmplY3QqIGNvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0KSBjb25zdCBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWVFRDdWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZUVEN1ZS5jcHAKaW5kZXggZjcwZjU0
YzJmOTdjLi41YmFlOGVmZTdhOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJWVFRDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJW
VFRDdWUuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgUmVuZGVyVlRUQ3VlOjpsYXlvdXQoKQog
ICAgICAgICByZXBvc2l0aW9uR2VuZXJpY0N1ZSgpOwogfQogCi1ib29sIFJlbmRlclZUVEN1ZTo6
aW5pdGlhbGl6ZUxheW91dFBhcmFtZXRlcnMoSW5saW5lRmxvd0JveComIGZpcnN0TGluZUJveCwg
TGF5b3V0VW5pdCYgc3RlcCwgTGF5b3V0VW5pdCYgcG9zaXRpb24pCitib29sIFJlbmRlclZUVEN1
ZTo6aW5pdGlhbGl6ZUxheW91dFBhcmFtZXRlcnMoTGVnYWN5SW5saW5lRmxvd0JveComIGZpcnN0
TGluZUJveCwgTGF5b3V0VW5pdCYgc3RlcCwgTGF5b3V0VW5pdCYgcG9zaXRpb24pCiB7CiAgICAg
QVNTRVJUKGZpcnN0Q2hpbGQoKSk7CiAgICAgaWYgKCFmaXJzdENoaWxkKCkpCkBAIC0xNzcsNyAr
MTc3LDcgQEAgUmVuZGVyT2JqZWN0KiBSZW5kZXJWVFRDdWU6Om92ZXJsYXBwaW5nT2JqZWN0Rm9y
UmVjdChjb25zdCBJbnRSZWN0JiByZWN0KSBjb25zdAogICAgIHJldHVybiAwOwogfQogCi1ib29s
IFJlbmRlclZUVEN1ZTo6c2hvdWxkU3dpdGNoRGlyZWN0aW9uKElubGluZUZsb3dCb3gqIGZpcnN0
TGluZUJveCwgTGF5b3V0VW5pdCBzdGVwKSBjb25zdAorYm9vbCBSZW5kZXJWVFRDdWU6OnNob3Vs
ZFN3aXRjaERpcmVjdGlvbihMZWdhY3lJbmxpbmVGbG93Qm94KiBmaXJzdExpbmVCb3gsIExheW91
dFVuaXQgc3RlcCkgY29uc3QKIHsKICAgICBMYXlvdXRVbml0IHRvcCA9IHkoKTsKICAgICBMYXlv
dXRVbml0IGxlZnQgPSB4KCk7CkBAIC0zMTIsNyArMzEyLDcgQEAgYm9vbCBSZW5kZXJWVFRDdWU6
OmZpbmROb25PdmVybGFwcGluZ1Bvc2l0aW9uKGludCYgbmV3WCwgaW50JiBuZXdZKSBjb25zdAog
CiB2b2lkIFJlbmRlclZUVEN1ZTo6cmVwb3NpdGlvbkN1ZVNuYXBUb0xpbmVzU2V0KCkKIHsKLSAg
ICBJbmxpbmVGbG93Qm94KiBmaXJzdExpbmVCb3g7CisgICAgTGVnYWN5SW5saW5lRmxvd0JveCog
Zmlyc3RMaW5lQm94OwogICAgIExheW91dFVuaXQgc3RlcDsKICAgICBMYXlvdXRVbml0IHBvc2l0
aW9uOwogICAgIGlmICghaW5pdGlhbGl6ZUxheW91dFBhcmFtZXRlcnMoZmlyc3RMaW5lQm94LCBz
dGVwLCBwb3NpdGlvbikpCkBAIC0zNTAsNyArMzUwLDcgQEAgdm9pZCBSZW5kZXJWVFRDdWU6OnJl
cG9zaXRpb25HZW5lcmljQ3VlKCkKICAgICBSZW5kZXJPYmplY3QmIGZpcnN0Q2hpbGQgPSAqdGhp
cy0+Zmlyc3RDaGlsZCgpOwogICAgIFJlbmRlckVsZW1lbnQmIGJhY2tkcm9wRWxlbWVudCA9IGRv
d25jYXN0PFJlbmRlckVsZW1lbnQ+KGZpcnN0Q2hpbGQpOwogICAgIAotICAgIElubGluZUZsb3dC
b3gqIGZpcnN0TGluZUJveCA9IGRvd25jYXN0PFJlbmRlcklubGluZT4oKmJhY2tkcm9wRWxlbWVu
dC5maXJzdENoaWxkKCkpLmZpcnN0TGluZUJveCgpOworICAgIExlZ2FjeUlubGluZUZsb3dCb3gq
IGZpcnN0TGluZUJveCA9IGRvd25jYXN0PFJlbmRlcklubGluZT4oKmJhY2tkcm9wRWxlbWVudC5m
aXJzdENoaWxkKCkpLmZpcnN0TGluZUJveCgpOwogICAgIGlmIChkb3duY2FzdDxUZXh0VHJhY2tD
dWVHZW5lcmljPigqbV9jdWUpLnVzZURlZmF1bHRQb3NpdGlvbigpICYmIGZpcnN0TGluZUJveCkg
ewogICAgICAgICBMYXlvdXRVbml0IHBhcmVudFdpZHRoID0gY29udGFpbmluZ0Jsb2NrKCktPmxv
Z2ljYWxXaWR0aCgpOwogICAgICAgICBMYXlvdXRVbml0IHdpZHRoIHsgZmlyc3RMaW5lQm94LT53
aWR0aCgpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVlRU
Q3VlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmgKaW5kZXggYmY0
YjZmNjM0ODU2Li4yYzU1N2I2ZGU2MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJWVFRDdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VlRUQ3VlLmgKQEAgLTQ5LDE0ICs0OSwxNCBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNPdmVybGFw
cGluZygpIGNvbnN0OwogICAgIFJlbmRlck9iamVjdCogb3ZlcmxhcHBpbmdPYmplY3QoKSBjb25z
dDsKICAgICBSZW5kZXJPYmplY3QqIG92ZXJsYXBwaW5nT2JqZWN0Rm9yUmVjdChjb25zdCBJbnRS
ZWN0JikgY29uc3Q7Ci0gICAgYm9vbCBzaG91bGRTd2l0Y2hEaXJlY3Rpb24oSW5saW5lRmxvd0Jv
eCosIExheW91dFVuaXQpIGNvbnN0OworICAgIGJvb2wgc2hvdWxkU3dpdGNoRGlyZWN0aW9uKExl
Z2FjeUlubGluZUZsb3dCb3gqLCBMYXlvdXRVbml0KSBjb25zdDsKIAogICAgIHZvaWQgbW92ZUJv
eGVzQnlTdGVwKExheW91dFVuaXQpOwogICAgIGJvb2wgc3dpdGNoRGlyZWN0aW9uKGJvb2wmLCBM
YXlvdXRVbml0Jik7CiAgICAgdm9pZCBtb3ZlSWZOZWNlc3NhcnlUb0tlZXBXaXRoaW5Db250YWlu
ZXIoKTsKICAgICBib29sIGZpbmROb25PdmVybGFwcGluZ1Bvc2l0aW9uKGludCYgeCwgaW50JiB5
KSBjb25zdDsKIAotICAgIGJvb2wgaW5pdGlhbGl6ZUxheW91dFBhcmFtZXRlcnMoSW5saW5lRmxv
d0JveComLCBMYXlvdXRVbml0JiwgTGF5b3V0VW5pdCYpOworICAgIGJvb2wgaW5pdGlhbGl6ZUxh
eW91dFBhcmFtZXRlcnMoTGVnYWN5SW5saW5lRmxvd0JveComLCBMYXlvdXRVbml0JiwgTGF5b3V0
VW5pdCYpOwogICAgIHZvaWQgcGxhY2VCb3hJbkRlZmF1bHRQb3NpdGlvbihMYXlvdXRVbml0LCBi
b29sJik7CiAgICAgdm9pZCByZXBvc2l0aW9uQ3VlU25hcFRvTGluZXNTZXQoKTsKICAgICB2b2lk
IHJlcG9zaXRpb25DdWVTbmFwVG9MaW5lc05vdFNldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCmluZGV4IDU3NTNlM2I5YTNjYi4uNzZk
YTg0NTk2Yjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0lubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdJbmxpbmUuY3BwCkBAIC0zOSw3ICszOSw3IEBAIFJlbmRlclNWR0lubGluZTo6UmVuZGVyU1ZH
SW5saW5lKFNWR0dyYXBoaWNzRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsCiAg
ICAgc2V0QWx3YXlzQ3JlYXRlTGluZUJveGVzKCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbmxp
bmVGbG93Qm94PiBSZW5kZXJTVkdJbmxpbmU6OmNyZWF0ZUlubGluZUZsb3dCb3goKQorc3RkOjp1
bmlxdWVfcHRyPExlZ2FjeUlubGluZUZsb3dCb3g+IFJlbmRlclNWR0lubGluZTo6Y3JlYXRlSW5s
aW5lRmxvd0JveCgpCiB7CiAgICAgYXV0byBib3ggPSBtYWtlVW5pcXVlPFNWR0lubGluZUZsb3dC
b3g+KCp0aGlzKTsKICAgICBib3gtPnNldEhhc1ZpcnR1YWxMb2dpY2FsSGVpZ2h0KCk7CkBAIC05
Nyw3ICs5Nyw3IEBAIHZvaWQgUmVuZGVyU1ZHSW5saW5lOjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxG
bG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpIGNvCiAgICAgICAgIHJldHVybjsKIAog
ICAgIEZsb2F0UmVjdCB0ZXh0Qm91bmRpbmdCb3ggPSB0ZXh0QW5jZXN0b3ItPnN0cm9rZUJvdW5k
aW5nQm94KCk7Ci0gICAgZm9yIChJbmxpbmVGbG93Qm94KiBib3ggPSBmaXJzdExpbmVCb3goKTsg
Ym94OyBib3ggPSBib3gtPm5leHRMaW5lQm94KCkpCisgICAgZm9yIChhdXRvKiBib3ggPSBmaXJz
dExpbmVCb3goKTsgYm94OyBib3ggPSBib3gtPm5leHRMaW5lQm94KCkpCiAgICAgICAgIHF1YWRz
LmFwcGVuZChsb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdCh0ZXh0Qm91bmRpbmdCb3gueCgp
ICsgYm94LT54KCksIHRleHRCb3VuZGluZ0JveC55KCkgKyBib3gtPnkoKSwgYm94LT5sb2dpY2Fs
V2lkdGgoKSwgYm94LT5sb2dpY2FsSGVpZ2h0KCkpLCBVc2VUcmFuc2Zvcm1zLCB3YXNGaXhlZCkp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0lubGluZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUu
aAppbmRleCBhOWU5Zjk2NmYxZTAuLjJhMDkwYTQyNmQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5oCkBAIC01Niw3ICs1Niw3IEBAIHByaXZh
dGU6CiAgICAgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0
IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5
TWFwJikgY29uc3QgZmluYWw7CiAgICAgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1
YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0IGZpbmFsOwogCi0gICAgc3RkOjp1bmlxdWVfcHRy
PElubGluZUZsb3dCb3g+IGNyZWF0ZUlubGluZUZsb3dCb3goKSBmaW5hbDsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8TGVnYWN5SW5saW5lRmxvd0JveD4gY3JlYXRlSW5saW5lRmxvd0JveCgpIGZpbmFs
OwogCiAgICAgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBmaW5hbDsKICAgICB2b2lkIHN0eWxlRGlk
Q2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lRmxv
d0JveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVGbG93Qm94LmgK
aW5kZXggOTcwZDNlMDYwMmM4Li5mZWZlMThhZWNlODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lRmxvd0JveC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lRmxvd0JveC5oCkBAIC0yMCwyMyArMjAsMjMgQEAKIAog
I3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJJbmxpbmVGbG93Qm94LmgiCisjaW5jbHVkZSAiTGVn
YWN5SW5saW5lRmxvd0JveC5oIgogI2luY2x1ZGUgIlJlbmRlclNWR0lubGluZS5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlclNWR0lubGluZVRleHQ7CiAKLWNsYXNzIFNW
R0lubGluZUZsb3dCb3ggZmluYWwgOiBwdWJsaWMgSW5saW5lRmxvd0JveCB7CitjbGFzcyBTVkdJ
bmxpbmVGbG93Qm94IGZpbmFsIDogcHVibGljIExlZ2FjeUlubGluZUZsb3dCb3ggewogICAgIFdU
Rl9NQUtFX0lTT19BTExPQ0FURUQoU1ZHSW5saW5lRmxvd0JveCk7CiBwdWJsaWM6CiAgICAgU1ZH
SW5saW5lRmxvd0JveChSZW5kZXJTVkdJbmxpbmUmIHJlbmRlcmVyKQotICAgICAgICA6IElubGlu
ZUZsb3dCb3gocmVuZGVyZXIpCisgICAgICAgIDogTGVnYWN5SW5saW5lRmxvd0JveChyZW5kZXJl
cikKICAgICAgICAgLCBtX2xvZ2ljYWxIZWlnaHQoMCkKICAgICB7CiAgICAgfQogCi0gICAgUmVu
ZGVyU1ZHSW5saW5lJiByZW5kZXJlcigpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFJlbmRlclNWR0lu
bGluZSY+KElubGluZUZsb3dCb3g6OnJlbmRlcmVyKCkpOyB9CisgICAgUmVuZGVyU1ZHSW5saW5l
JiByZW5kZXJlcigpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFJlbmRlclNWR0lubGluZSY+KExlZ2Fj
eUlubGluZUZsb3dCb3g6OnJlbmRlcmVyKCkpOyB9CiAKICAgICBGbG9hdFJlY3QgY2FsY3VsYXRl
Qm91bmRhcmllcygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcAppbmRleCBkYjI1MmEzMWUwZGMuLjNkNTBiMDkzNjFlZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3gu
Y3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgotI2luY2x1ZGUg
IklubGluZUZsb3dCb3guaCIKKyNpbmNsdWRlICJMZWdhY3lJbmxpbmVGbG93Qm94LmgiCiAjaW5j
bHVkZSAiUG9pbnRlckV2ZW50c0hpdFJ1bGVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIK
ICNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKQEAgLTQ1Miw3ICs0NTIsNyBAQCBzdGF0aWMgaW5s
aW5lIGZsb2F0IHRoaWNrbmVzc0ZvckRlY29yYXRpb24oT3B0aW9uU2V0PFRleHREZWNvcmF0aW9u
PiwgY29uc3QgRm9udAogICAgIHJldHVybiBmb250LnNpemUoKSAvIDIwLjBmOwogfQogCi1zdGF0
aWMgaW5saW5lIFJlbmRlckJveE1vZGVsT2JqZWN0JiBmaW5kUmVuZGVyZXJEZWZpbmluaW5nVGV4
dERlY29yYXRpb24oSW5saW5lRmxvd0JveCogcGFyZW50Qm94KQorc3RhdGljIGlubGluZSBSZW5k
ZXJCb3hNb2RlbE9iamVjdCYgZmluZFJlbmRlcmVyRGVmaW5pbmluZ1RleHREZWNvcmF0aW9uKExl
Z2FjeUlubGluZUZsb3dCb3gqIHBhcmVudEJveCkKIHsKICAgICAvLyBMb29rdXAgZmlyc3QgcmVu
ZGVyIG9iamVjdCBpbiBwYXJlbnQgaGllcmFyY2h5IHdoaWNoIGhhcyB0ZXh0LWRlY29yYXRpb24g
c2V0LgogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZW5kZXJlciA9IG51bGxwdHI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmNwcAppbmRl
eCAyZGNiMThiZDRjYWUuLmM4NDc1Y2JmNjY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9p
ZCBTVkdSb290SW5saW5lQm94Ojpjb21wdXRlUGVyQ2hhcmFjdGVyTGF5b3V0SW5mb3JtYXRpb24o
KQogICAgIGxheW91dFJvb3RCb3goY2hpbGRSZWN0KTsKIH0KIAotdm9pZCBTVkdSb290SW5saW5l
Qm94OjpsYXlvdXRDaGFyYWN0ZXJzSW5UZXh0Qm94ZXMoSW5saW5lRmxvd0JveCogc3RhcnQsIFNW
R1RleHRMYXlvdXRFbmdpbmUmIGNoYXJhY3RlckxheW91dCkKK3ZvaWQgU1ZHUm9vdElubGluZUJv
eDo6bGF5b3V0Q2hhcmFjdGVyc0luVGV4dEJveGVzKExlZ2FjeUlubGluZUZsb3dCb3gqIHN0YXJ0
LCBTVkdUZXh0TGF5b3V0RW5naW5lJiBjaGFyYWN0ZXJMYXlvdXQpCiB7CiAgICAgZm9yIChhdXRv
KiBjaGlsZCA9IHN0YXJ0LT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0
T25MaW5lKCkpIHsKICAgICAgICAgaWYgKGlzPFNWR0lubGluZVRleHRCb3g+KCpjaGlsZCkpIHsK
QEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIFNWR1Jvb3RJbmxpbmVCb3g6OmxheW91dENoYXJhY3Rl
cnNJblRleHRCb3hlcyhJbmxpbmVGbG93Qm94KiBzdGFydCwgU1ZHVGV4dAogICAgIH0KIH0KIAot
dm9pZCBTVkdSb290SW5saW5lQm94OjpsYXlvdXRDaGlsZEJveGVzKElubGluZUZsb3dCb3gqIHN0
YXJ0LCBGbG9hdFJlY3QqIGNoaWxkUmVjdCkKK3ZvaWQgU1ZHUm9vdElubGluZUJveDo6bGF5b3V0
Q2hpbGRCb3hlcyhMZWdhY3lJbmxpbmVGbG93Qm94KiBzdGFydCwgRmxvYXRSZWN0KiBjaGlsZFJl
Y3QpCiB7CiAgICAgZm9yIChhdXRvKiBjaGlsZCA9IHN0YXJ0LT5maXJzdENoaWxkKCk7IGNoaWxk
OyBjaGlsZCA9IGNoaWxkLT5uZXh0T25MaW5lKCkpIHsKICAgICAgICAgRmxvYXRSZWN0IGJveFJl
Y3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxp
bmVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUm9vdElubGluZUJveC5o
CmluZGV4IDJiMzA4YTBkZjhhMS4uMTQ1ZjA1YmI1YWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guaApAQCAtNTEsOCArNTEsOCBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIGJvb2wgaXNTVkdSb290SW5saW5lQm94KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgcmVvcmRlclZhbHVlTGlzdHMoVmVjdG9yPFNW
R1RleHRMYXlvdXRBdHRyaWJ1dGVzKj4mKTsKLSAgICB2b2lkIGxheW91dENoYXJhY3RlcnNJblRl
eHRCb3hlcyhJbmxpbmVGbG93Qm94KiwgU1ZHVGV4dExheW91dEVuZ2luZSYpOwotICAgIHZvaWQg
bGF5b3V0Q2hpbGRCb3hlcyhJbmxpbmVGbG93Qm94KiwgRmxvYXRSZWN0KiA9IG51bGxwdHIpOwor
ICAgIHZvaWQgbGF5b3V0Q2hhcmFjdGVyc0luVGV4dEJveGVzKExlZ2FjeUlubGluZUZsb3dCb3gq
LCBTVkdUZXh0TGF5b3V0RW5naW5lJik7CisgICAgdm9pZCBsYXlvdXRDaGlsZEJveGVzKExlZ2Fj
eUlubGluZUZsb3dCb3gqLCBGbG9hdFJlY3QqID0gbnVsbHB0cik7CiAgICAgdm9pZCBsYXlvdXRS
b290Qm94KGNvbnN0IEZsb2F0UmVjdCYpOwogCiAgICAgZmxvYXQgbV9sb2dpY2FsSGVpZ2h0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UXVlcnkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UXVlcnkuY3BwCmluZGV4IDFk
NzdjMWE5NzIwYy4uZDRlYzBmNjZkNTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1RleHRRdWVyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdUZXh0UXVlcnkuY3BwCkBAIC0yMSw3ICsyMSw3IEBACiAjaW5jbHVkZSAiU1ZHVGV4
dFF1ZXJ5LmgiCiAKICNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKLSNpbmNsdWRlICJJbmxp
bmVGbG93Qm94LmgiCisjaW5jbHVkZSAiTGVnYWN5SW5saW5lRmxvd0JveC5oIgogI2luY2x1ZGUg
IlJlbmRlckJsb2NrRmxvdy5oIgogI2luY2x1ZGUgIlJlbmRlcklubGluZS5oIgogI2luY2x1ZGUg
IlJlbmRlclNWR1RleHQuaCIKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RydWN0IFNWR1RleHRRdWVyeTo6
RGF0YSB7CiAgICAgY29uc3QgU1ZHSW5saW5lVGV4dEJveCogdGV4dEJveDsKIH07CiAKLXN0YXRp
YyBpbmxpbmUgSW5saW5lRmxvd0JveCogZmxvd0JveEZvclJlbmRlcmVyKFJlbmRlck9iamVjdCog
cmVuZGVyZXIpCitzdGF0aWMgaW5saW5lIExlZ2FjeUlubGluZUZsb3dCb3gqIGZsb3dCb3hGb3JS
ZW5kZXJlcihSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewogICAgIGlmICghcmVuZGVyZXIpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNjksNyArNjksNyBAQCBzdGF0aWMgaW5saW5lIElu
bGluZUZsb3dCb3gqIGZsb3dCb3hGb3JSZW5kZXJlcihSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQog
ICAgICAgICBSZW5kZXJJbmxpbmUmIHJlbmRlcklubGluZSA9IGRvd25jYXN0PFJlbmRlcklubGlu
ZT4oKnJlbmRlcmVyKTsKIAogICAgICAgICAvLyBSZW5kZXJTVkdJbmxpbmUgb25seSBldmVyIGNv
bnRhaW5zIGEgc2luZ2xlIGxpbmUgYm94LgotICAgICAgICBJbmxpbmVGbG93Qm94KiBmbG93Qm94
ID0gcmVuZGVySW5saW5lLmZpcnN0TGluZUJveCgpOworICAgICAgICBMZWdhY3lJbmxpbmVGbG93
Qm94KiBmbG93Qm94ID0gcmVuZGVySW5saW5lLmZpcnN0TGluZUJveCgpOwogICAgICAgICBBU1NF
UlQoZmxvd0JveCA9PSByZW5kZXJJbmxpbmUubGFzdExpbmVCb3goKSk7CiAgICAgICAgIHJldHVy
biBmbG93Qm94OwogICAgIH0KQEAgLTgzLDE4ICs4MywxOCBAQCBTVkdUZXh0UXVlcnk6OlNWR1Rl
eHRRdWVyeShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogICAgIGNvbGxlY3RUZXh0Qm94ZXNJbkZs
b3dCb3goZmxvd0JveEZvclJlbmRlcmVyKHJlbmRlcmVyKSk7CiB9CiAKLXZvaWQgU1ZHVGV4dFF1
ZXJ5Ojpjb2xsZWN0VGV4dEJveGVzSW5GbG93Qm94KElubGluZUZsb3dCb3gqIGZsb3dCb3gpCit2
b2lkIFNWR1RleHRRdWVyeTo6Y29sbGVjdFRleHRCb3hlc0luRmxvd0JveChMZWdhY3lJbmxpbmVG
bG93Qm94KiBmbG93Qm94KQogewogICAgIGlmICghZmxvd0JveCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgZm9yIChhdXRvKiBjaGlsZCA9IGZsb3dCb3gtPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNo
aWxkID0gY2hpbGQtPm5leHRPbkxpbmUoKSkgewotICAgICAgICBpZiAoaXM8SW5saW5lRmxvd0Jv
eD4oKmNoaWxkKSkgeworICAgICAgICBpZiAoaXM8TGVnYWN5SW5saW5lRmxvd0JveD4oKmNoaWxk
KSkgewogICAgICAgICAgICAgLy8gU2tpcCBnZW5lcmF0ZWQgY29udGVudC4KICAgICAgICAgICAg
IGlmICghY2hpbGQtPnJlbmRlcmVyKCkubm9kZSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogCi0gICAgICAgICAgICBjb2xsZWN0VGV4dEJveGVzSW5GbG93Qm94KGRvd25jYXN0PElubGlu
ZUZsb3dCb3g+KGNoaWxkKSk7CisgICAgICAgICAgICBjb2xsZWN0VGV4dEJveGVzSW5GbG93Qm94
KGRvd25jYXN0PExlZ2FjeUlubGluZUZsb3dCb3g+KGNoaWxkKSk7CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1RleHRRdWVyeS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0
UXVlcnkuaAppbmRleCAzZjA5YTc2Yzk5MWUuLjE1NjBhODUyZjc3MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UXVlcnkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRRdWVyeS5oCkBAIC0yNSw3ICsyNSw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSW5saW5lRmxvd0JveDsKK2NsYXNzIExlZ2FjeUlu
bGluZUZsb3dCb3g7CiBjbGFzcyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBTVkdJbmxpbmVUZXh0Qm94
OwogCkBAIC00OSw3ICs0OSw3IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBib29sIChTVkdUZXh0
UXVlcnk6OipQcm9jZXNzVGV4dEZyYWdtZW50Q2FsbGJhY2spKERhdGEqLCBjb25zdCBTVkdUZXh0
RnJhZ21lbnQmKSBjb25zdDsKICAgICBib29sIGV4ZWN1dGVRdWVyeShEYXRhKiwgUHJvY2Vzc1Rl
eHRGcmFnbWVudENhbGxiYWNrKSBjb25zdDsKIAotICAgIHZvaWQgY29sbGVjdFRleHRCb3hlc0lu
Rmxvd0JveChJbmxpbmVGbG93Qm94Kik7CisgICAgdm9pZCBjb2xsZWN0VGV4dEJveGVzSW5GbG93
Qm94KExlZ2FjeUlubGluZUZsb3dCb3gqKTsKICAgICBib29sIG1hcFN0YXJ0RW5kUG9zaXRpb25z
SW50b0ZyYWdtZW50Q29vcmRpbmF0ZXMoRGF0YSosIGNvbnN0IFNWR1RleHRGcmFnbWVudCYsIHVu
c2lnbmVkJiBzdGFydFBvc2l0aW9uLCB1bnNpZ25lZCYgZW5kUG9zaXRpb24pIGNvbnN0OwogICAg
IHZvaWQgbW9kaWZ5U3RhcnRFbmRQb3NpdGlvbnNSZXNwZWN0aW5nTGlnYXR1cmVzKERhdGEqLCB1
bnNpZ25lZCYgc3RhcnRQb3NpdGlvbiwgdW5zaWduZWQmIGVuZFBvc2l0aW9uKSBjb25zdDsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>