<?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>231135</bug_id>
          
          <creation_ts>2021-10-03 01:25:44 -0700</creation_ts>
          <short_desc>[LFC][Integration] More run-&gt;box renaming and other iterator cleanups</short_desc>
          <delta_ts>2021-10-03 07:01:16 -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="Antti Koivisto">koivisto</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>annulen</cc>
    
    <cc>apinheiro</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>changseok</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>samuel_white</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>1799835</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-10-03 01:25:44 -0700</bug_when>
    <thetext>cleanups</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799836</commentid>
    <comment_count>1</comment_count>
      <attachid>440000</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-10-03 01:28:11 -0700</bug_when>
    <thetext>Created attachment 440000
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799837</commentid>
    <comment_count>2</comment_count>
      <attachid>440001</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-10-03 01:54:24 -0700</bug_when>
    <thetext>Created attachment 440001
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799839</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-10-03 03:18:30 -0700</bug_when>
    <thetext>The GTK build failure looks like an unclean build rather than anything in the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799840</commentid>
    <comment_count>4</comment_count>
      <attachid>440002</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-10-03 03:28:53 -0700</bug_when>
    <thetext>Created attachment 440002
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799847</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-03 06:59:56 -0700</bug_when>
    <thetext>Committed r283464 (242443@main): &lt;https://commits.webkit.org/242443@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 440002.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799848</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-03 07:01:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/83813131&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440000</attachid>
            <date>2021-10-03 01:28:11 -0700</date>
            <delta_ts>2021-10-03 01:58:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231135-20211003112809.patch</filename>
            <type>text/plain</type>
            <size>96670</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNDQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWI0YjUyMGQ1NDg0Mjky
OGZlYzJhYjJlM2QyOTAyNWFmY2U1ODgzMS4uZDg2ZWVjMTVmMTM5N2EwMTVkYTFiYWNlMmYzMDQ4
NGI5YTc2ZmIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2MCBAQAorMjAyMS0xMC0wMyAgQW50
dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSW50ZWdyYXRp
b25dIE1vcmUgcnVuLT5ib3ggcmVuYW1pbmcgYW5kIG90aGVyIGl0ZXJhdG9yIGNsZWFudXBzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzExMzUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbHNvIG1vdmUg
VGV4dEJveEl0ZXJhdG9yIHRvIGEgZmlsZSBvZiBpdHMgb3duLgorCisgICAgICAgICogSGVhZGVy
cy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmxvY2FsQ2FyZXRSZWN0
Rm9yQ2hhcmFjdGVyT2Zmc2V0KToKKyAgICAgICAgKiBkb20vUG9zaXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6aGFzSW5saW5lUnVuKToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjp1
cHN0cmVhbSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6ZG93bnN0cmVhbSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpzZWFyY2hBaGVhZEZvckJldHRlck1hdGNoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjppbmxpbmVSdW5BbmRPZmZzZXQgY29uc3QpOgorICAg
ICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OmRlbGV0ZUluc2lnbmlmaWNhbnRUZXh0KToKKyAgICAg
ICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRl
cmF0b3I6OmhhbmRsZVRleHROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6
aGFuZGxlVGV4dFJ1bik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmhhbmRsZVRl
eHROb2RlRmlyc3RMZXR0ZXIpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmg6Cisg
ICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvcjo6Qm94SXRlcmF0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveEl0ZXJhdG9yOjpvcGVyYXRvcj09
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvcjo6
YXRFbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveDo6bGlu
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3I6
OnRyYXZlcnNlTmV4dE9uTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6
Qm94SXRlcmF0b3I6OnRyYXZlcnNlUHJldmlvdXNPbkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5saW5lSXRlcmF0b3I6OkJveEl0ZXJhdG9yOjp0cmF2ZXJzZU5leHRPbkxpbmVJZ25vcmluZ0xp
bmVCcmVhayk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3I6
OnRyYXZlcnNlUHJldmlvdXNPbkxpbmVJZ25vcmluZ0xpbmVCcmVhayk6CisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3I6OnRyYXZlcnNlTmV4dE9uTGluZUluTG9n
aWNhbE9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRv
cjo6dHJhdmVyc2VQcmV2aW91c09uTGluZUluTG9naWNhbE9yZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OklubGluZUl0ZXJhdG9yOjpib3hGb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRl
cmF0b3I6OkJveDo6bW9kZXJuUGF0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJ
dGVyYXRvcjo6Qm94OjpsZWdhY3lQYXRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZUl0ZXJhdG9yOjpUZXh0Qm94OjpuZXh0VGV4dFJ1biBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6VGV4dEJveDo6bmV4dFRleHRSdW5JblRleHRPcmRl
ciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6VGV4
dEJveDo6c2VsZWN0aW9uUmVjdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVJdGVyYXRvcjo6VGV4dEJveDo6aXNDb21iaW5lZFRleHQgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OlRleHRCb3g6OmZvbnRDYXNjYWRlIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94
SXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yOjp0cmF2ZXJzZU5leHRUZXh0UnVuKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3I6
OnRyYXZlcnNlTmV4dFRleHRSdW5JblRleHRPcmRlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVJdGVyYXRvcjo6Zmlyc3RUZXh0UnVuRm9yKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpmaXJzdFRleHRSdW5JblRleHRPcmRlckZvcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6dGV4dFJ1bkZvcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6dGV4dFJ1bnNGb3IpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OnJ1bkZvcik6IERlbGV0
ZWQuCisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3I6OkJveEl0ZXJhdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvcjo6b3BlcmF0
b3IqIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRv
cjo6b3BlcmF0b3ItPiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6
Qm94OjpsZWdhY3lJbmxpbmVCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRl
cmF0b3I6OkJveDo6aW5saW5lQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0
ZXJhdG9yOjpUZXh0Qm94OjpyZW5kZXJlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVJdGVyYXRvcjo6VGV4dEJveDo6bGVnYWN5SW5saW5lQm94IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3I6
OlRleHRCb3hJdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVy
YXRvcjo6VGV4dEJveEl0ZXJhdG9yOjpvcGVyYXRvcisrKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3I6Om9wZXJhdG9yKiBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6VGV4dEJveEl0ZXJh
dG9yOjpvcGVyYXRvci0+IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3I6OmdldCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6VGV4dFJ1blJhbmdlOjpUZXh0UnVuUmFuZ2UpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OlRleHRSdW5SYW5nZTo6
YmVnaW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6
OlRleHRSdW5SYW5nZTo6ZW5kIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oklu
bGluZUl0ZXJhdG9yOjpUZXh0Qm94OjpoYXNIeXBoZW4gY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OlRleHRCb3g6OlRleHRCb3gpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OlRleHRCb3g6OnRleHQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OlRleHRCb3g6OnN0YXJ0
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpUZXh0
Qm94OjplbmQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0
b3I6OlRleHRCb3g6Omxlbmd0aCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVJdGVyYXRvcjo6VGV4dEJveDo6b2Zmc2V0Rm9yUG9zaXRpb24gY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OlRleHRCb3g6OnBvc2l0aW9uRm9y
T2Zmc2V0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9y
OjpUZXh0Qm94OjpzZWxlY3RhYmxlUmFuZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SW5saW5lSXRlcmF0b3I6OlRleHRCb3g6OmNyZWF0ZVRleHRSdW4gY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoaXNUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW50ZWdy
YXRpb24vSW5saW5lSXRlcmF0b3JCb3hMZWdhY3lQYXRoLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVJdGVyYXRvcjo6Qm94TGVnYWN5UGF0aDo6Qm94TGVnYWN5UGF0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94TGVnYWN5UGF0aDo6dHJhdmVyc2VOZXh0VGV4dEJv
eCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94TGVnYWN5UGF0aDo6dHJh
dmVyc2VOZXh0VGV4dEJveEluVGV4dE9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0
ZXJhdG9yOjpCb3hMZWdhY3lQYXRoOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OklubGluZUl0ZXJhdG9yOjpCb3hMZWdhY3lQYXRoOjp0cmF2ZXJzZU5leHRJbmxpbmVCb3hJ
bkNhY2hlT3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveExlZ2Fj
eVBhdGg6OnRyYXZlcnNlUHJldmlvdXNJbmxpbmVCb3hJbkNhY2hlT3JkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveEl0ZXJhdG9yTGVnYWN5UGF0aDo6Qm94SXRlcmF0
b3JMZWdhY3lQYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9y
OjpCb3hJdGVyYXRvckxlZ2FjeVBhdGg6OmlzVGV4dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3JMZWdhY3lQYXRoOjpyZWN0IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVy
YXRvckxlZ2FjeVBhdGg6OmlzSG9yaXpvbnRhbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3JMZWdhY3lQYXRoOjpkaXJPdmVycmlk
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94
SXRlcmF0b3JMZWdhY3lQYXRoOjppc0xpbmVCcmVhayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3JMZWdhY3lQYXRoOjptaW5pbXVt
Q2FyZXRPZmZzZXQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRl
cmF0b3I6OkJveEl0ZXJhdG9yTGVnYWN5UGF0aDo6bWF4aW11bUNhcmV0T2Zmc2V0IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvckxl
Z2FjeVBhdGg6OmJpZGlMZXZlbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3JMZWdhY3lQYXRoOjpoYXNIeXBoZW4gY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveEl0ZXJhdG9yTGVn
YWN5UGF0aDo6dGV4dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJ
dGVyYXRvcjo6Qm94SXRlcmF0b3JMZWdhY3lQYXRoOjpzdGFydCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3JMZWdhY3lQYXRoOjpl
bmQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJv
eEl0ZXJhdG9yTGVnYWN5UGF0aDo6bGVuZ3RoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvckxlZ2FjeVBhdGg6Om9mZnNldEZvclBv
c2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9y
OjpCb3hJdGVyYXRvckxlZ2FjeVBhdGg6OnBvc2l0aW9uRm9yT2Zmc2V0IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvckxlZ2FjeVBh
dGg6OnNlbGVjdGFibGVSYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3JMZWdhY3lQYXRoOjpjcmVhdGVUZXh0UnVuIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRv
ckxlZ2FjeVBhdGg6OnJlbmRlcmVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvckxlZ2FjeVBhdGg6OnRyYXZlcnNlTmV4dFRleHRS
dW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveEl0ZXJh
dG9yTGVnYWN5UGF0aDo6dHJhdmVyc2VOZXh0VGV4dFJ1bkluVGV4dE9yZGVyKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvckxlZ2FjeVBhdGg6
OnRyYXZlcnNlTmV4dE9uTGluZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJ
dGVyYXRvcjo6Qm94SXRlcmF0b3JMZWdhY3lQYXRoOjp0cmF2ZXJzZVByZXZpb3VzT25MaW5lKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvckxl
Z2FjeVBhdGg6OnRyYXZlcnNlTmV4dE9uTGluZUluTG9naWNhbE9yZGVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvckxlZ2FjeVBhdGg6OnRy
YXZlcnNlUHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxPcmRlcik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3JMZWdhY3lQYXRoOjpvcGVyYXRvcj09
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJ
dGVyYXRvckxlZ2FjeVBhdGg6OmF0RW5kIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvckxlZ2FjeVBhdGg6OmxlZ2FjeUlubGluZUJv
eCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94
SXRlcmF0b3JMZWdhY3lQYXRoOjpyb290SW5saW5lQm94IGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvckxlZ2FjeVBhdGg6OmlubGlu
ZVRleHRCb3ggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0
b3I6OkJveEl0ZXJhdG9yTGVnYWN5UGF0aDo6aW5pdGlhbGl6ZUxvZ2ljYWxPcmRlckNhY2hlRm9y
TGluZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94SXRl
cmF0b3JMZWdhY3lQYXRoOjp0cmF2ZXJzZU5leHRJbmxpbmVCb3hJbkNhY2hlT3JkZXIpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveEl0ZXJhdG9yTGVnYWN5
UGF0aDo6dHJhdmVyc2VQcmV2aW91c0lubGluZUJveEluQ2FjaGVPcmRlcik6IERlbGV0ZWQuCisg
ICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94TW9kZXJuUGF0aC5o
OgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveE1vZGVyblBhdGg6OkJveE1v
ZGVyblBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveE1vZGVyblBh
dGg6OnRyYXZlcnNlTmV4dFRleHRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0
b3I6OkJveE1vZGVyblBhdGg6OnRyYXZlcnNlTmV4dFRleHRCb3hJblRleHRPcmRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94TW9kZXJuUGF0aDo6b3BlcmF0b3I9PSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3JNb2Rl
cm5QYXRoOjpCb3hJdGVyYXRvck1vZGVyblBhdGgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lSXRlcmF0b3I6OkJveEl0ZXJhdG9yTW9kZXJuUGF0aDo6aXNUZXh0IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvck1v
ZGVyblBhdGg6OnJlY3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5l
SXRlcmF0b3I6OkJveEl0ZXJhdG9yTW9kZXJuUGF0aDo6aXNIb3Jpem9udGFsIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvck1vZGVy
blBhdGg6OmRpck92ZXJyaWRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oklu
bGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvck1vZGVyblBhdGg6OmlzTGluZUJyZWFrIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvck1v
ZGVyblBhdGg6Om1pbmltdW1DYXJldE9mZnNldCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3JNb2Rlcm5QYXRoOjptYXhpbXVtQ2Fy
ZXRPZmZzZXQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0
b3I6OkJveEl0ZXJhdG9yTW9kZXJuUGF0aDo6YmlkaUxldmVsIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvck1vZGVyblBhdGg6Omhh
c0h5cGhlbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRv
cjo6Qm94SXRlcmF0b3JNb2Rlcm5QYXRoOjp0ZXh0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvck1vZGVyblBhdGg6OnN0YXJ0IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVy
YXRvck1vZGVyblBhdGg6OmVuZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3JNb2Rlcm5QYXRoOjpsZW5ndGggY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveEl0ZXJhdG9yTW9kZXJu
UGF0aDo6b2Zmc2V0Rm9yUG9zaXRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lSXRlcmF0b3I6OkJveEl0ZXJhdG9yTW9kZXJuUGF0aDo6cG9zaXRpb25Gb3JPZmZz
ZXQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJv
eEl0ZXJhdG9yTW9kZXJuUGF0aDo6c2VsZWN0YWJsZVJhbmdlIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvck1vZGVyblBhdGg6OmNy
ZWF0ZVRleHRSdW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRl
cmF0b3I6OkJveEl0ZXJhdG9yTW9kZXJuUGF0aDo6cmVuZGVyZXIgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveEl0ZXJhdG9yTW9kZXJuUGF0aDo6
dHJhdmVyc2VOZXh0VGV4dFJ1bik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJ
dGVyYXRvcjo6Qm94SXRlcmF0b3JNb2Rlcm5QYXRoOjp0cmF2ZXJzZU5leHRUZXh0UnVuSW5UZXh0
T3JkZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveEl0
ZXJhdG9yTW9kZXJuUGF0aDo6dHJhdmVyc2VOZXh0T25MaW5lKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvck1vZGVyblBhdGg6OnRyYXZlcnNl
UHJldmlvdXNPbkxpbmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0
b3I6OkJveEl0ZXJhdG9yTW9kZXJuUGF0aDo6dHJhdmVyc2VOZXh0T25MaW5lSW5Mb2dpY2FsT3Jk
ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveEl0ZXJh
dG9yTW9kZXJuUGF0aDo6dHJhdmVyc2VQcmV2aW91c09uTGluZUluTG9naWNhbE9yZGVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvck1vZGVy
blBhdGg6Om9wZXJhdG9yPT0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lSXRlcmF0b3I6OkJveEl0ZXJhdG9yTW9kZXJuUGF0aDo6YXRFbmQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveEl0ZXJhdG9yTW9kZXJuUGF0
aDo6Ym94IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9y
OjpCb3hJdGVyYXRvck1vZGVyblBhdGg6OmlubGluZUNvbnRlbnQgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveEl0ZXJhdG9yTW9kZXJuUGF0aDo6
dHJhdmVyc2VOZXh0TGVhZik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVy
YXRvcjo6Qm94SXRlcmF0b3JNb2Rlcm5QYXRoOjp0cmF2ZXJzZVByZXZpb3VzTGVhZik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3JNb2Rlcm5Q
YXRoOjpzZXRBdEVuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRv
cjo6Qm94SXRlcmF0b3JNb2Rlcm5QYXRoOjpib3hlcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3JNb2Rlcm5QYXRoOjpsaW5lIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0
b3JMaW5lTGVnYWN5UGF0aC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6Okxp
bmVJdGVyYXRvckxlZ2FjeVBhdGg6OmZpcnN0UnVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JMZWdhY3lQYXRoOjpsYXN0UnVuIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JMZWdhY3lQYXRo
Ojpsb2dpY2FsU3RhcnRSdW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0
b3I6OkxpbmVJdGVyYXRvckxlZ2FjeVBhdGg6OmxvZ2ljYWxFbmRSdW4gY29uc3QpOgorICAgICAg
ICAqIGxheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVNb2Rlcm5QYXRoLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yTW9kZXJuUGF0aDo6
Zmlyc3RSdW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVJ
dGVyYXRvck1vZGVyblBhdGg6Omxhc3RSdW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvck1vZGVyblBhdGg6OmxvZ2ljYWxTdGFydFJ1biBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yTW9kZXJu
UGF0aDo6bG9naWNhbEVuZFJ1biBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9u
L0lubGluZUl0ZXJhdG9yVGV4dEJveC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lSXRlcmF0b3I6OlRleHRCb3g6Om5leHRUZXh0Qm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94OjpuZXh0VGV4dEJveEluVGV4dE9yZGVyIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94OjpzZWxlY3Rpb25S
ZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94Ojpp
c0NvbWJpbmVkVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6
VGV4dEJveDo6Zm9udENhc2NhZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRl
cmF0b3I6OlRleHRCb3hJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3I6OnRyYXZlcnNlTmV4dFRleHRCb3gp
OgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvcjo6dHJh
dmVyc2VOZXh0VGV4dEJveEluVGV4dE9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0
ZXJhdG9yOjpmaXJzdFRleHRCb3hGb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0
b3I6OmZpcnN0VGV4dEJveEluVGV4dE9yZGVyRm9yKToKKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZUl0ZXJhdG9yOjp0ZXh0Qm94Rm9yKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9y
Ojp0ZXh0Qm94ZXNGb3IpOgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVy
YXRvclRleHRCb3guaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6
VGV4dEJveDo6cmVuZGVyZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0
b3I6OlRleHRCb3g6OmxlZ2FjeUlubGluZUJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvcjo6b3BlcmF0b3IrKyk6
CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yOjpvcGVy
YXRvciogY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OlRleHRCb3hJ
dGVyYXRvcjo6b3BlcmF0b3ItPiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVy
YXRvcjo6VGV4dEJveEl0ZXJhdG9yOjpnZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lSXRlcmF0b3I6OlRleHRCb3hSYW5nZTo6VGV4dEJveFJhbmdlKToKKyAgICAgICAgKFdlYkNv
cmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94UmFuZ2U6OmJlZ2luIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94UmFuZ2U6OmVuZCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6VGV4dEJveDo6aGFzSHlwaGVuIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94OjpUZXh0Qm94KToKKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94Ojp0ZXh0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94OjpzdGFydCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6VGV4dEJveDo6ZW5kIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94OjpsZW5ndGggY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OlRleHRCb3g6Om9mZnNldEZvclBvc2l0
aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94Ojpw
b3NpdGlvbkZvck9mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRv
cjo6VGV4dEJveDo6c2VsZWN0YWJsZVJhbmdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
bGluZUl0ZXJhdG9yOjpUZXh0Qm94OjpjcmVhdGVUZXh0UnVuIGNvbnN0KToKKyAgICAgICAgKGlz
VHlwZSk6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQ292
ZXJhZ2UuaDoKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25M
aW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5l
TGF5b3V0Ojp0ZXh0Qm94ZXNGb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50
ZWdyYXRpb246OkxpbmVMYXlvdXQ6OmJveEZvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6dGV4dFJ1bnNGb3IgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OnJ1bkZv
ciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uTGluZUxheW91dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9DYXJldFJlY3RDb21w
dXRhdGlvbi5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL0xlZ2FjeUlubGluZVRleHRCb3guaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvTGVnYWN5TGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzZXRMb2dpY2FsV2lkdGhGb3JUZXh0UnVuKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpnZXRMZWFk
aW5nQ29ybmVyIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmNvbGxlY3RTZWxlY3Rpb25HZW9tZXRyaWVz
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxpbmVCcmVhazo6bGluZXNCb3VuZGluZ0JveCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMaW5lQnJlYWs6OmFic29sdXRlUmVjdHMgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGluZUJyZWFrOjphYnNvbHV0ZVF1YWRzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxpbmVCcmVhazo6Y29sbGVjdFNlbGVjdGlvbkdlb21ldHJpZXMp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJSZXBsYWNlZDo6cG9zaXRpb25Gb3JQb2ludCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6YWJzb2x1
dGVSZWN0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojpjb2xsZWN0U2Vs
ZWN0aW9uR2VvbWV0cmllcyk6CisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0QWJzb2x1dGVRdWFk
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjphYnNvbHV0ZVF1YWRzRm9yUmFuZ2Ug
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6cG9zaXRpb25Gb3JQb2ludCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpmaXJzdFJ1bkxvY2F0aW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmxpbmVzQm91bmRpbmdCb3ggY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y29sbGVjdFNlbGVjdGlvbkdlb21ldHJpZXNG
b3JMaW5lQm94ZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y2FyZXRNaW5PZmZz
ZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y2FyZXRNYXhPZmZzZXQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y291bnRSZW5kZXJlZENoYXJh
Y3Rlck9mZnNldHNVbnRpbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjb250YWluc09mZnNl
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpoYXNSZW5kZXJlZFRleHQgY29uc3Qp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRyZWVBc1RleHQ6OndyaXRlUmVuZGVyT2JqZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OndyaXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dEJveFBhaW50ZXI6OlRleHRCb3hQYWludGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRCb3hQYWludGVyOjpwYWludERlY29yYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dEJveFBhaW50ZXI6OmNhbGN1bGF0ZVVuaW9uT2ZBbGxEb2N1bWVudE1hcmtl
ckJvdW5kcyk6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50VGV4dERlY29yYXRpb24pOgorICAgICAgICAq
IHJlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHREZWNvcmF0aW9uUGFpbnRlcjo6c2V0VGV4dEJveCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
RGVjb3JhdGlvblBhaW50ZXI6OnNldFRleHRCb3hJdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAg
ICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKiBzdHlsZS9Jbmxp
bmVUZXh0Qm94U3R5bGUuY3BwOgorCiAyMDIxLTEwLTAyICBBbnR0aSBLb2l2aXN0byAgPGFudHRp
QGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJbnRlZ3JhdGlvbl0gTW92ZSBpbmxpbmUgaXRl
cmF0b3JzIHRvIElubGluZUl0ZXJhdG9yIG5hbWVzcGFjZSBhbmQgcmVuYW1lIFJ1biogdG8gQm94
KgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UKaW5kZXggNWRiNjgyOTk1ODlmZGNiMjk5NzUyZTU4MjZkYzk5MzFl
NmVhMDFmNy4uMzk0Y2IzYmI2ZTFhMzI3MjQ5NTFiMjI2NTdlZDk1OTlmZDM3OGY4MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCkBAIC04MDEsNiArODAxLDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFN
RVdPUktfSEVBREVSUwogICAgIGxheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmUu
aAogICAgIGxheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVMZWdhY3lQYXRoLmgK
ICAgICBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lTW9kZXJuUGF0aC5oCisg
ICAgbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJveC5oCiAgICAgbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudC5oCiAgICAgbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZS5oCiAgICAgbGF5b3V0L2xheW91dHRy
ZWUvTGF5b3V0Qm94LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggNDQ3ZjFjNTNlY2ZhMTAwMDI2OWY4OGRk
YTA2MWY5NDA1MDMxYjc1NC4uZDRlYWVkZWYxZWE1MWRlOGIxMTE2ZDIwODdmMmM0MGY0NTExYmU3
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKQEAgLTE1MTIsNiArMTUxMiw3IEBAIGxheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL2ludmFsaWRhdGlvbi9JbmxpbmVJbnZhbGlkYXRpb24uY3BwCiBsYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS90ZXh0L1RleHRVdGlsLmNwcAogbGF5b3V0L2lu
dGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmNwcAogbGF5b3V0L2ludGVncmF0aW9uL0lubGlu
ZUl0ZXJhdG9yTGluZS5jcHAKK2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvclRleHRC
b3guY3BwCiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmNwcAog
bGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQ292ZXJhZ2UuY3BwCiBsYXlvdXQv
aW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50QnVpbGRlci5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBjMjM2ZDdhNDQ3YTNhYTUyMTE2NjYwYWYxZDFhZmFlZmU1Mzk2NDMwLi45YTUzYWY1MDU2N2Uz
YzY2NTNhNjhmNjUyOTlmYWY1MWNjMzk5YjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MjcxLDYgKzUyNzEsNyBAQAogCQlF
NDdDMzkzMjFGRTZFMTA1MDBCQkJDNkIgLyogUmVuZGVyVHJlZUJ1aWxkZXJMaXN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDdDMzkyODFGRTZFMERE
MDBCQkJDNkIgLyogUmVuZGVyVHJlZUJ1aWxkZXJMaXN0LmggKi87IH07CiAJCUU0N0MzOTMzMUZF
NkUxMDgwMEJCQkM2QiAvKiBSZW5kZXJUcmVlQnVpbGRlck11bHRpQ29sdW1uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDdDMzkyNzFGRTZFMERDMDBC
QkJDNkIgLyogUmVuZGVyVHJlZUJ1aWxkZXJNdWx0aUNvbHVtbi5oICovOyB9OwogCQlFNDdDRUJD
OTI3MDZFRjUyMDBCOEQ4RjUgLyogSW5saW5lV2Fsa2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDdDRUJDNzI3MDZFRjUxMDBCOEQ4RjUgLyogSW5s
aW5lV2Fsa2VyLmggKi87IH07CisJCUU0N0NFQkUxMjcwOTkxNkQwMEI4RDhGNSAvKiBJbmxpbmVJ
dGVyYXRvclRleHRCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEU0N0NFQkUwMjcwOTkxNkQwMEI4RDhGNSAvKiBJbmxpbmVJdGVyYXRvclRleHRCb3gu
aCAqLzsgfTsKIAkJRTQ3RTI3NjUxNjAzNkVEMjAwRUUyQUZCIC8qIEV4dGVuc2lvblN0eWxlU2hl
ZXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDdF
Mjc2NDE2MDM2RUQyMDBFRTJBRkIgLyogRXh0ZW5zaW9uU3R5bGVTaGVldHMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDdGQzhBMzI1Qjg0RDcy
MDA1NDk1RkMgLyogTG9hZFNjaGVkdWxpbmdNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDdGQzhBMTI1Qjg0RDcxMDA1NDk1RkMgLyogTG9hZFNj
aGVkdWxpbmdNb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTQ4MTM3QjkxREIzQjUyNjAwNUM1OUJGIC8qIFN0eWxlVmFsaWRpdHkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0ODEzN0I4MURCM0I1
MjYwMDVDNTlCRiAvKiBTdHlsZVZhbGlkaXR5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE2NTMwLDYgKzE2NTMxLDggQEAKIAkJRTQ3QzM5MkIx
RkU2RTBERjAwQkJCQzZCIC8qIFJlbmRlclRyZWVCdWlsZGVyTGlzdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJUcmVlQnVpbGRlckxpc3QuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDdDMzkyQzFGRTZFMERGMDBCQkJDNkIgLyogUmVu
ZGVyVHJlZVVwZGF0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVy
VHJlZVVwZGF0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ3Q0VCQzcyNzA2
RUY1MTAwQjhEOEY1IC8qIElubGluZVdhbGtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbmxpbmVXYWxrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTQ3
Q0VCREUyNzA5OTE2NDAwQjhEOEY1IC8qIElubGluZUl0ZXJhdG9yVGV4dEJveC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbmxpbmVJdGVyYXRvclRleHRCb3guY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlFNDdDRUJFMDI3MDk5MTZEMDBCOEQ4RjUgLyogSW5saW5lSXRlcmF0b3JU
ZXh0Qm94LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElubGluZUl0ZXJhdG9y
VGV4dEJveC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDdFMjc2NDE2MDM2RUQy
MDBFRTJBRkIgLyogRXh0ZW5zaW9uU3R5bGVTaGVldHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRXh0ZW5zaW9uU3R5bGVTaGVldHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTQ3RTI3NjcxNjAzNkVEQzAwRUUyQUZCIC8qIEV4dGVuc2lvblN0eWxlU2hlZXRz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4dGVuc2lvblN0eWxl
U2hlZXRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ3RkM4QTEyNUI4NEQ3
MTAwNTQ5NUZDIC8qIExvYWRTY2hlZHVsaW5nTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBMb2FkU2NoZWR1bGluZ01vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTI5NDk4LDYgKzI5NTAxLDggQEAKIAkJCQlFNEQzM0YzRjI1MkM0QjgyMDA4MzdEMDUg
LyogSW5saW5lSXRlcmF0b3JMaW5lLmggKi8sCiAJCQkJRTREMzNGNDMyNTJDNTBFMjAwODM3RDA1
IC8qIElubGluZUl0ZXJhdG9yTGluZUxlZ2FjeVBhdGguaCAqLywKIAkJCQlFNEQzM0Y0NTI1MkM1
MEZCMDA4MzdEMDUgLyogSW5saW5lSXRlcmF0b3JMaW5lTW9kZXJuUGF0aC5oICovLAorCQkJCUU0
N0NFQkRFMjcwOTkxNjQwMEI4RDhGNSAvKiBJbmxpbmVJdGVyYXRvclRleHRCb3guY3BwICovLAor
CQkJCUU0N0NFQkUwMjcwOTkxNkQwMEI4RDhGNSAvKiBJbmxpbmVJdGVyYXRvclRleHRCb3guaCAq
LywKIAkJCQlFNDE4MDI1NjIzRDQ1NEI1MDBGRkIwNzEgLyogTGF5b3V0SW50ZWdyYXRpb25Cb3hU
cmVlLmNwcCAqLywKIAkJCQlFNDE4MDI1MzIzRDQ1NDlBMDBGRkIwNzEgLyogTGF5b3V0SW50ZWdy
YXRpb25Cb3hUcmVlLmggKi8sCiAJCQkJRTQwM0I3OUYyNTFCMTE4QjAwMTlFODAwIC8qIExheW91
dEludGVncmF0aW9uQ292ZXJhZ2UuY3BwICovLApAQCAtMzMwMTcsNiArMzMwMjIsNyBAQAogCQkJ
CUU0RDMzRjQxMjUyQzRCODMwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRvckxpbmUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUU0RDMzRjQ0MjUyQzUwRTIwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRvckxp
bmVMZWdhY3lQYXRoLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEQzM0Y0NjI1MkM1MEZDMDA4MzdE
MDUgLyogSW5saW5lSXRlcmF0b3JMaW5lTW9kZXJuUGF0aC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RTQ3Q0VCRTEyNzA5OTE2RDAwQjhEOEY1IC8qIElubGluZUl0ZXJhdG9yVGV4dEJveC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNkZBQUU3MTMyNkEyODE0QjAwRTA3NTAyIC8qIElubGluZUxldmVsQm94
LmggaW4gSGVhZGVycyAqLywKIAkJCQk2RjBDRDY5NTIyOUVEMzI3MDBDNTk5NEUgLyogSW5saW5l
TGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkZCMjQwMDUyM0RGRjEyODAwNzk2NDU4IC8qIElu
bGluZUxpbmVCb3guaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggNjJkMzJlNzZhMmMzODhjNmNkZGE4ZTc2MTE0
N2ZhYzM4NTc5ZDNlZC4uMGEyNzllYzUzOTJmMjFmZGM1ZDU5OTExZTI0MWRlYWNkOTk4NGY5NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBA
IC0yOTQ1LDcgKzI5NDUsNyBAQCBMYXlvdXRSZWN0IEFYT2JqZWN0Q2FjaGU6OmxvY2FsQ2FyZXRS
ZWN0Rm9yQ2hhcmFjdGVyT2Zmc2V0KFJlbmRlck9iamVjdComIHJlbmRlcgogICAgIGlmIChydW5B
bmRPZmZzZXQucnVuKQogICAgICAgICByZW5kZXJlciA9IGNvbnN0X2Nhc3Q8UmVuZGVyT2JqZWN0
Kj4oJnJ1bkFuZE9mZnNldC5ydW4tPnJlbmRlcmVyKCkpOwogCi0gICAgaWYgKGlzPFJlbmRlckxp
bmVCcmVhaz4ocmVuZGVyZXIpICYmIElubGluZUl0ZXJhdG9yOjpydW5Gb3IoZG93bmNhc3Q8UmVu
ZGVyTGluZUJyZWFrPigqcmVuZGVyZXIpKSAhPSBydW5BbmRPZmZzZXQucnVuKQorICAgIGlmIChp
czxSZW5kZXJMaW5lQnJlYWs+KHJlbmRlcmVyKSAmJiBJbmxpbmVJdGVyYXRvcjo6Ym94Rm9yKGRv
d25jYXN0PFJlbmRlckxpbmVCcmVhaz4oKnJlbmRlcmVyKSkgIT0gcnVuQW5kT2Zmc2V0LnJ1bikK
ICAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKIAogICAgIHJldHVybiBjb21wdXRlTG9jYWxDYXJl
dFJlY3QoKnJlbmRlcmVyLCBydW5BbmRPZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1Bvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKaW5k
ZXggYjZjZTk5NTcwYWJlOWNmYmUzYWEyYjQ5NDUzZjlhMDE3ZTczNTU3MC4uMWNjM2Y1ZDQyMzdm
MmY2MDZiOGRkMmVmZTllZmE2MTY2YjcyYmY2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1Bvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCkBA
IC0zNSw4ICszNSw4IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFBh
cnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZUVsZW1lbnQuaCIKLSNpbmNsdWRlICJJ
bmxpbmVJdGVyYXRvckJveC5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTGluZS5oIgorI2lu
Y2x1ZGUgIklubGluZUl0ZXJhdG9yVGV4dEJveC5oIgogI2luY2x1ZGUgIklubGluZVJ1bkFuZE9m
ZnNldC5oIgogI2luY2x1ZGUgIkxlZ2FjeUlubGluZVRleHRCb3guaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCkBAIC02OSwxMSArNjksMTEgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAog
c3RhdGljIGJvb2wgaGFzSW5saW5lUnVuKFJlbmRlck9iamVjdCYgcmVuZGVyZXIpCiB7Ci0gICAg
aWYgKGlzPFJlbmRlckJveD4ocmVuZGVyZXIpICYmIElubGluZUl0ZXJhdG9yOjpydW5Gb3IoZG93
bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJlcikpKQorICAgIGlmIChpczxSZW5kZXJCb3g+KHJlbmRl
cmVyKSAmJiBJbmxpbmVJdGVyYXRvcjo6Ym94Rm9yKGRvd25jYXN0PFJlbmRlckJveD4ocmVuZGVy
ZXIpKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKGlzPFJlbmRlclRleHQ+KHJlbmRl
cmVyKSAmJiBJbmxpbmVJdGVyYXRvcjo6Zmlyc3RUZXh0UnVuRm9yKGRvd25jYXN0PFJlbmRlclRl
eHQ+KHJlbmRlcmVyKSkpCisgICAgaWYgKGlzPFJlbmRlclRleHQ+KHJlbmRlcmVyKSAmJiBJbmxp
bmVJdGVyYXRvcjo6Zmlyc3RUZXh0Qm94Rm9yKGRvd25jYXN0PFJlbmRlclRleHQ+KHJlbmRlcmVy
KSkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChpczxSZW5kZXJMaW5lQnJlYWs+KHJl
bmRlcmVyKSAmJiBJbmxpbmVJdGVyYXRvcjo6cnVuRm9yKGRvd25jYXN0PFJlbmRlckxpbmVCcmVh
az4ocmVuZGVyZXIpKSkKKyAgICBpZiAoaXM8UmVuZGVyTGluZUJyZWFrPihyZW5kZXJlcikgJiYg
SW5saW5lSXRlcmF0b3I6OmJveEZvcihkb3duY2FzdDxSZW5kZXJMaW5lQnJlYWs+KHJlbmRlcmVy
KSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTczOSw3
ICs3MzksNyBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6dXBzdHJlYW0oRWRpdGluZ0JvdW5kYXJ5Q3Jv
c3NpbmdSdWxlIHJ1bGUpIGNvbnN0CiAgICAgICAgIGlmIChpczxSZW5kZXJUZXh0PigqcmVuZGVy
ZXIpKSB7CiAgICAgICAgICAgICBhdXRvJiB0ZXh0UmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJU
ZXh0PigqcmVuZGVyZXIpOwogCi0gICAgICAgICAgICBhdXRvIGZpcnN0VGV4dFJ1biA9IElubGlu
ZUl0ZXJhdG9yOjpmaXJzdFRleHRSdW5JblRleHRPcmRlckZvcih0ZXh0UmVuZGVyZXIpOworICAg
ICAgICAgICAgYXV0byBmaXJzdFRleHRSdW4gPSBJbmxpbmVJdGVyYXRvcjo6Zmlyc3RUZXh0Qm94
SW5UZXh0T3JkZXJGb3IodGV4dFJlbmRlcmVyKTsKICAgICAgICAgICAgIGlmICghZmlyc3RUZXh0
UnVuKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCkBAIC03NTcsNyArNzU3LDcgQEAgUG9z
aXRpb24gUG9zaXRpb246OnVwc3RyZWFtKEVkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZSBydWxl
KSBjb25zdAogICAgICAgICAgICAgICAgIGlmICh0ZXh0T2Zmc2V0ID4gcnVuLT5zdGFydCgpICYm
IHRleHRPZmZzZXQgPD0gcnVuLT5lbmQoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN1
cnJlbnRQb3NpdGlvbjsKIAotICAgICAgICAgICAgICAgIGF1dG8gbmV4dFJ1biA9IHJ1bi0+bmV4
dFRleHRSdW5JblRleHRPcmRlcigpOworICAgICAgICAgICAgICAgIGF1dG8gbmV4dFJ1biA9IHJ1
bi0+bmV4dFRleHRCb3hJblRleHRPcmRlcigpOwogICAgICAgICAgICAgICAgIGlmICh0ZXh0T2Zm
c2V0ID09IHJ1bi0+ZW5kKCkgKyAxICYmIG5leHRSdW4gJiYgcnVuLT5saW5lKCkgIT0gbmV4dFJ1
bi0+bGluZSgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudFBvc2l0aW9uOwog
CkBAIC04NDYsNyArODQ2LDcgQEAgUG9zaXRpb24gUG9zaXRpb246OmRvd25zdHJlYW0oRWRpdGlu
Z0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlIHJ1bGUpIGNvbnN0CiAgICAgICAgIGlmIChpczxSZW5kZXJU
ZXh0PigqcmVuZGVyZXIpKSB7CiAgICAgICAgICAgICBhdXRvJiB0ZXh0UmVuZGVyZXIgPSBkb3du
Y2FzdDxSZW5kZXJUZXh0PigqcmVuZGVyZXIpOwogCi0gICAgICAgICAgICBhdXRvIGZpcnN0VGV4
dFJ1biA9IElubGluZUl0ZXJhdG9yOjpmaXJzdFRleHRSdW5JblRleHRPcmRlckZvcih0ZXh0UmVu
ZGVyZXIpOworICAgICAgICAgICAgYXV0byBmaXJzdFRleHRSdW4gPSBJbmxpbmVJdGVyYXRvcjo6
Zmlyc3RUZXh0Qm94SW5UZXh0T3JkZXJGb3IodGV4dFJlbmRlcmVyKTsKICAgICAgICAgICAgIGlm
ICghZmlyc3RUZXh0UnVuKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCkBAIC04NjMsNyAr
ODYzLDcgQEAgUG9zaXRpb24gUG9zaXRpb246OmRvd25zdHJlYW0oRWRpdGluZ0JvdW5kYXJ5Q3Jv
c3NpbmdSdWxlIHJ1bGUpIGNvbnN0CiAgICAgICAgICAgICAgICAgaWYgKHRleHRPZmZzZXQgPj0g
cnVuLT5zdGFydCgpICYmIHRleHRPZmZzZXQgPCBydW4tPmVuZCgpKQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gY3VycmVudFBvc2l0aW9uOwogCi0gICAgICAgICAgICAgICAgYXV0byBuZXh0
UnVuID0gcnVuLT5uZXh0VGV4dFJ1bkluVGV4dE9yZGVyKCk7CisgICAgICAgICAgICAgICAgYXV0
byBuZXh0UnVuID0gcnVuLT5uZXh0VGV4dEJveEluVGV4dE9yZGVyKCk7CiAgICAgICAgICAgICAg
ICAgaWYgKHRleHRPZmZzZXQgPT0gcnVuLT5lbmQoKSAmJiBuZXh0UnVuICYmIHJ1bi0+bGluZSgp
ICE9IG5leHRSdW4tPmxpbmUoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRQ
b3NpdGlvbjsKIApAQCAtMTE3Miw3ICsxMTcyLDcgQEAgc3RhdGljIElubGluZUl0ZXJhdG9yOjpU
ZXh0Qm94SXRlcmF0b3Igc2VhcmNoQWhlYWRGb3JCZXR0ZXJNYXRjaChSZW5kZXJUZXh0JiByZW4K
ICAgICAgICAgaWYgKGlzTm9uVGV4dExlYWZDaGlsZCgqbmV4dCkpCiAgICAgICAgICAgICByZXR1
cm4geyB9OwogICAgICAgICBpZiAoaXM8UmVuZGVyVGV4dD4oKm5leHQpKSB7Ci0gICAgICAgICAg
ICBpZiAoYXV0byBydW4gPSBJbmxpbmVJdGVyYXRvcjo6Zmlyc3RUZXh0UnVuSW5UZXh0T3JkZXJG
b3IoZG93bmNhc3Q8UmVuZGVyVGV4dD4oKm5leHQpKSkKKyAgICAgICAgICAgIGlmIChhdXRvIHJ1
biA9IElubGluZUl0ZXJhdG9yOjpmaXJzdFRleHRCb3hJblRleHRPcmRlckZvcihkb3duY2FzdDxS
ZW5kZXJUZXh0PigqbmV4dCkpKQogICAgICAgICAgICAgICAgIHJldHVybiBydW47CiAgICAgICAg
IH0KICAgICB9CkBAIC0xMjE1LDExICsxMjE1LDExIEBAIElubGluZVJ1bkFuZE9mZnNldCBQb3Np
dGlvbjo6aW5saW5lUnVuQW5kT2Zmc2V0KEFmZmluaXR5IGFmZmluaXR5LCBUZXh0RGlyZWN0aW9u
CiAgICAgaWYgKHJlbmRlcmVyLT5pc0JSKCkpIHsKICAgICAgICAgYXV0byYgbGluZUJyZWFrUmVu
ZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJMaW5lQnJlYWs+KCpyZW5kZXJlcik7CiAgICAgICAgIGlm
ICghY2FyZXRPZmZzZXQpCi0gICAgICAgICAgICBydW4gPSBJbmxpbmVJdGVyYXRvcjo6cnVuRm9y
KGxpbmVCcmVha1JlbmRlcmVyKTsKKyAgICAgICAgICAgIHJ1biA9IElubGluZUl0ZXJhdG9yOjpi
b3hGb3IobGluZUJyZWFrUmVuZGVyZXIpOwogICAgIH0gZWxzZSBpZiAoaXM8UmVuZGVyVGV4dD4o
KnJlbmRlcmVyKSkgewogICAgICAgICBhdXRvJiB0ZXh0UmVuZGVyZXIgPSBkb3duY2FzdDxSZW5k
ZXJUZXh0PigqcmVuZGVyZXIpOwogCi0gICAgICAgIGF1dG8gdGV4dFJ1biA9IElubGluZUl0ZXJh
dG9yOjpmaXJzdFRleHRSdW5Gb3IodGV4dFJlbmRlcmVyKTsKKyAgICAgICAgYXV0byB0ZXh0UnVu
ID0gSW5saW5lSXRlcmF0b3I6OmZpcnN0VGV4dEJveEZvcih0ZXh0UmVuZGVyZXIpOwogICAgICAg
ICBJbmxpbmVJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yIGNhbmRpZGF0ZTsKIAogICAgICAgICBm
b3IgKDsgdGV4dFJ1bjsgKyt0ZXh0UnVuKSB7CkBAIC0xMjQ3LDcgKzEyNDcsNyBAQCBJbmxpbmVS
dW5BbmRPZmZzZXQgUG9zaXRpb246OmlubGluZVJ1bkFuZE9mZnNldChBZmZpbml0eSBhZmZpbml0
eSwgVGV4dERpcmVjdGlvbgogICAgICAgICAgICAgY2FuZGlkYXRlID0gdGV4dFJ1bjsKICAgICAg
ICAgfQogCi0gICAgICAgIGlmIChjYW5kaWRhdGUgJiYgIWNhbmRpZGF0ZS0+bmV4dFRleHRSdW4o
KSAmJiBhZmZpbml0eSA9PSBBZmZpbml0eTo6RG93bnN0cmVhbSkgeworICAgICAgICBpZiAoY2Fu
ZGlkYXRlICYmICFjYW5kaWRhdGUtPm5leHRUZXh0Qm94KCkgJiYgYWZmaW5pdHkgPT0gQWZmaW5p
dHk6OkRvd25zdHJlYW0pIHsKICAgICAgICAgICAgIHRleHRSdW4gPSBzZWFyY2hBaGVhZEZvckJl
dHRlck1hdGNoKHRleHRSZW5kZXJlcik7CiAgICAgICAgICAgICBpZiAodGV4dFJ1bikKICAgICAg
ICAgICAgICAgICBjYXJldE9mZnNldCA9IHRleHRSdW4tPm1pbmltdW1DYXJldE9mZnNldCgpOwpA
QCAtMTI3MCw3ICsxMjcwLDcgQEAgSW5saW5lUnVuQW5kT2Zmc2V0IFBvc2l0aW9uOjppbmxpbmVS
dW5BbmRPZmZzZXQoQWZmaW5pdHkgYWZmaW5pdHksIFRleHREaXJlY3Rpb24KICAgICAgICAgICAg
IHJldHVybiBlcXVpdmFsZW50LmlubGluZVJ1bkFuZE9mZnNldChBZmZpbml0eTo6VXBzdHJlYW0s
IHByaW1hcnlEaXJlY3Rpb24pOwogICAgICAgICB9CiAgICAgICAgIGlmIChpczxSZW5kZXJCb3g+
KCpyZW5kZXJlcikpIHsKLSAgICAgICAgICAgIHJ1biA9IElubGluZUl0ZXJhdG9yOjpydW5Gb3Io
ZG93bmNhc3Q8UmVuZGVyQm94PigqcmVuZGVyZXIpKTsKKyAgICAgICAgICAgIHJ1biA9IElubGlu
ZUl0ZXJhdG9yOjpib3hGb3IoZG93bmNhc3Q8UmVuZGVyQm94PigqcmVuZGVyZXIpKTsKICAgICAg
ICAgICAgIGlmIChydW4gJiYgY2FyZXRPZmZzZXQgPiBydW4tPm1pbmltdW1DYXJldE9mZnNldCgp
ICYmIGNhcmV0T2Zmc2V0IDwgcnVuLT5tYXhpbXVtQ2FyZXRPZmZzZXQoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4geyBydW4sIGNhcmV0T2Zmc2V0IH07CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKaW5kZXggM2E2ZTRlYTc0
NDA2MmRmZmQ2NGEyNmJjNjJlZjJjZDg0ZTY3MjBkZS4uNThkNzUzYjIzZDYzYjg3Mjk1OTAwN2M1
YTcwOTY3Mzk3Yzg4Nzg0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21w
b3NpdGVFZGl0Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3Np
dGVFZGl0Q29tbWFuZC5jcHAKQEAgLTEwMTYsNyArMTAxNiw3IEBAIHZvaWQgQ29tcG9zaXRlRWRp
dENvbW1hbmQ6OmRlbGV0ZUluc2lnbmlmaWNhbnRUZXh0KFRleHQmIHRleHROb2RlLCB1bnNpZ25l
ZCBzdGFyCiAgICAgICAgIGlmICghdGV4dFJlbmRlcmVyKQogICAgICAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgIGF1dG8gcnVuID0gSW5saW5lSXRlcmF0b3I6OmZpcnN0VGV4dFJ1bkluVGV4dE9y
ZGVyRm9yKCp0ZXh0UmVuZGVyZXIpOworICAgICAgICBhdXRvIHJ1biA9IElubGluZUl0ZXJhdG9y
OjpmaXJzdFRleHRCb3hJblRleHRPcmRlckZvcigqdGV4dFJlbmRlcmVyKTsKICAgICAgICAgaWYg
KCFydW4pIHsKICAgICAgICAgICAgIHdob2xlVGV4dE5vZGVJc0VtcHR5ID0gdHJ1ZTsKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTEwNTEsNyArMTA1MSw3IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENv
bW1hbmQ6OmRlbGV0ZUluc2lnbmlmaWNhbnRUZXh0KFRleHQmIHRleHROb2RlLCB1bnNpZ25lZCBz
dGFyCiAKICAgICAgICAgICAgIHByZXZpb3VzUnVuID0gcnVuOwogICAgICAgICAgICAgaWYgKHJ1
bikKLSAgICAgICAgICAgICAgICBydW4udHJhdmVyc2VOZXh0VGV4dFJ1bkluVGV4dE9yZGVyKCk7
CisgICAgICAgICAgICAgICAgcnVuLnRyYXZlcnNlTmV4dFRleHRCb3hJblRleHRPcmRlcigpOwog
ICAgICAgICB9CiAgICAgfTsKICAgICBkZXRlcm1pbmVSZW1vdmFsTW9kZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4IGRmZDZjYjViMTVlNTFkZmViZDkwNzQ0
YjM2MjhiOTBjYmJlNjQ1MWQuLjUzMjY5NWE4ZjhlNjYzNTA3OGUzMjBkNGFhNTgzNDBlNzdjMDM4
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKQEAgLTU4MCw3ICs1
ODAsNyBAQCBib29sIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUoKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBtX3RleHRSdW4gPSBJbmxpbmVJdGVyYXRvcjo6Zmlyc3RU
ZXh0UnVuSW5UZXh0T3JkZXJGb3IocmVuZGVyZXIpOworICAgIG1fdGV4dFJ1biA9IElubGluZUl0
ZXJhdG9yOjpmaXJzdFRleHRCb3hJblRleHRPcmRlckZvcihyZW5kZXJlcik7CiAKICAgICBib29s
IHNob3VsZEhhbmRsZUZpcnN0TGV0dGVyID0gIW1faGFuZGxlZEZpcnN0TGV0dGVyICYmIGlzPFJl
bmRlclRleHRGcmFnbWVudD4ocmVuZGVyZXIpICYmICFtX29mZnNldDsKICAgICBpZiAoc2hvdWxk
SGFuZGxlRmlyc3RMZXR0ZXIpCkBAIC02MDcsNyArNjA3LDcgQEAgdm9pZCBUZXh0SXRlcmF0b3I6
OmhhbmRsZVRleHRSdW4oKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBmaXJz
dFRleHRSdW4gPSBJbmxpbmVJdGVyYXRvcjo6Zmlyc3RUZXh0UnVuSW5UZXh0T3JkZXJGb3IocmVu
ZGVyZXIpOworICAgIGF1dG8gZmlyc3RUZXh0UnVuID0gSW5saW5lSXRlcmF0b3I6OmZpcnN0VGV4
dEJveEluVGV4dE9yZGVyRm9yKHJlbmRlcmVyKTsKIAogICAgIFN0cmluZyByZW5kZXJlclRleHQg
PSByZW5kZXJlci50ZXh0KCk7CiAgICAgdW5zaWduZWQgc3RhcnQgPSBtX29mZnNldDsKQEAgLTYz
Myw3ICs2MzMsNyBAQCB2b2lkIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dFJ1bigpCiAgICAgICAg
IAogICAgICAgICAvLyBEZXRlcm1pbmUgd2hhdCB0aGUgbmV4dCB0ZXh0IHJ1biB3aWxsIGJlLCBi
dXQgZG9uJ3QgYWR2YW5jZSB5ZXQKICAgICAgICAgYXV0byBuZXh0VGV4dFJ1biA9IG1fdGV4dFJ1
bjsKLSAgICAgICAgbmV4dFRleHRSdW4udHJhdmVyc2VOZXh0VGV4dFJ1bkluVGV4dE9yZGVyKCk7
CisgICAgICAgIG5leHRUZXh0UnVuLnRyYXZlcnNlTmV4dFRleHRCb3hJblRleHRPcmRlcigpOwog
CiAgICAgICAgIGlmIChydW5TdGFydCA8IHJ1bkVuZCkgewogICAgICAgICAgICAgYXV0byBpc05l
d2xpbmVPclRhYiA9IFsmXShVQ2hhciBjaGFyYWN0ZXIpIHsKQEAgLTcwMSw3ICs3MDEsNyBAQCB2
b2lkIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGVGaXJzdExldHRlcihSZW5kZXJUZXh0RnJh
Z21lbnQmIHJlbmRlcmVyKQogICAgICAgICBpZiAoYXV0byogZmlyc3RMZXR0ZXJUZXh0ID0gZmly
c3RSZW5kZXJUZXh0SW5GaXJzdExldHRlcihmaXJzdExldHRlcikpIHsKICAgICAgICAgICAgIG1f
aGFuZGxlZEZpcnN0TGV0dGVyID0gdHJ1ZTsKICAgICAgICAgICAgIG1fcmVtYWluaW5nVGV4dFJ1
biA9IG1fdGV4dFJ1bjsKLSAgICAgICAgICAgIG1fdGV4dFJ1biA9IElubGluZUl0ZXJhdG9yOjpm
aXJzdFRleHRSdW5JblRleHRPcmRlckZvcigqZmlyc3RMZXR0ZXJUZXh0KTsKKyAgICAgICAgICAg
IG1fdGV4dFJ1biA9IElubGluZUl0ZXJhdG9yOjpmaXJzdFRleHRCb3hJblRleHRPcmRlckZvcigq
Zmlyc3RMZXR0ZXJUZXh0KTsKICAgICAgICAgICAgIG1fZmlyc3RMZXR0ZXJUZXh0ID0gZmlyc3RM
ZXR0ZXJUZXh0OwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJh
dG9yLmgKaW5kZXggM2ZjMjdhMDk3ZDM5YWM4N2FiNTM5NWIxMmJhYjM0NmMxZDc3YzFlNS4uOTA2
ZGEwNjUzMTMxMDEyMzI0YzVjYTY5NDRiZTczODlhYzc5ZDBkZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1RleHRJdGVyYXRvci5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbmNsdWRlICJDaGFyYWN0
ZXJSYW5nZS5oIgogI2luY2x1ZGUgIkZpbmRPcHRpb25zLmgiCi0jaW5jbHVkZSAiSW5saW5lSXRl
cmF0b3JCb3guaCIKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvclRleHRCb3guaCIKICNpbmNsdWRl
ICJTaW1wbGVSYW5nZS5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvckJlaGF2aW9yLmgiCiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveC5jcHAKaW5kZXggYTJhMzlkMzE0MTY3ZThhZjM2
OGQ4NzVkZGRiNTU4OWM3MTE2YTg0OC4uY2ZmMzlmMjIwNDllNDY0Y2M3NDI3OWU2OTA1MDljZTk0
ZmE2OTQ3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lu
bGluZUl0ZXJhdG9yQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vSW5saW5lSXRlcmF0b3JCb3guY3BwCkBAIC0yNiwxMSArMjYsMTAgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckJveC5oIgogCi0KICNpbmNsdWRlICJJ
bmxpbmVJdGVyYXRvckxpbmUuaCIKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvclRleHRCb3guaCIK
ICNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaCIKICNpbmNsdWRlICJSZW5k
ZXJCbG9ja0Zsb3cuaCIKLSNpbmNsdWRlICJSZW5kZXJDb21iaW5lVGV4dC5oIgogI2luY2x1ZGUg
IlJlbmRlckxpbmVCcmVhay5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKIApAQCAtMzgsMjMg
KzM3LDIzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBJbmxpbmVJdGVyYXRvciB7
CiAKIEJveEl0ZXJhdG9yOjpCb3hJdGVyYXRvcihCb3g6OlBhdGhWYXJpYW50JiYgcGF0aFZhcmlh
bnQpCi0gICAgOiBtX3J1bihXVEZNb3ZlKHBhdGhWYXJpYW50KSkKKyAgICA6IG1fYm94KFdURk1v
dmUocGF0aFZhcmlhbnQpKQogewogfQogCiBCb3hJdGVyYXRvcjo6Qm94SXRlcmF0b3IoY29uc3Qg
Qm94JiBydW4pCi0gICAgOiBtX3J1bihydW4pCisgICAgOiBtX2JveChydW4pCiB7CiB9CiAKIGJv
b2wgQm94SXRlcmF0b3I6Om9wZXJhdG9yPT0oY29uc3QgQm94SXRlcmF0b3ImIG90aGVyKSBjb25z
dAogewotICAgIHJldHVybiBtX3J1bi5tX3BhdGhWYXJpYW50ID09IG90aGVyLm1fcnVuLm1fcGF0
aFZhcmlhbnQ7CisgICAgcmV0dXJuIG1fYm94Lm1fcGF0aFZhcmlhbnQgPT0gb3RoZXIubV9ib3gu
bV9wYXRoVmFyaWFudDsKIH0KIAogYm9vbCBCb3hJdGVyYXRvcjo6YXRFbmQoKSBjb25zdAogewot
ICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcnVuLm1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBh
dGgpIHsKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX2JveC5tX3BhdGhWYXJpYW50LCBbXShh
dXRvJiBwYXRoKSB7CiAgICAgICAgIHJldHVybiBwYXRoLmF0RW5kKCk7CiAgICAgfSk7CiB9CkBA
IC04MSwxMSArODAsMTEgQEAgQm94SXRlcmF0b3IgQm94OjpwcmV2aW91c09uTGluZUlnbm9yaW5n
TGluZUJyZWFrKCkgY29uc3QKIAogTGluZUl0ZXJhdG9yIEJveDo6bGluZSgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10oY29uc3QgQm94SXRlcmF0
b3JMZWdhY3lQYXRoJiBwYXRoKSB7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFy
aWFudCwgW10oY29uc3QgQm94TGVnYWN5UGF0aCYgcGF0aCkgewogICAgICAgICByZXR1cm4gTGlu
ZUl0ZXJhdG9yKExpbmVJdGVyYXRvckxlZ2FjeVBhdGgoJnBhdGgucm9vdElubGluZUJveCgpKSk7
CiAgICAgfQogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQotICAgICwgW10o
Y29uc3QgQm94SXRlcmF0b3JNb2Rlcm5QYXRoJiBwYXRoKSB7CisgICAgLCBbXShjb25zdCBCb3hN
b2Rlcm5QYXRoJiBwYXRoKSB7CiAgICAgICAgIHJldHVybiBMaW5lSXRlcmF0b3IoTGluZUl0ZXJh
dG9yTW9kZXJuUGF0aChwYXRoLmlubGluZUNvbnRlbnQoKSwgcGF0aC5ib3goKS5saW5lSW5kZXgo
KSkpOwogICAgIH0KICNlbmRpZgpAQCAtOTcsNDkgKzk2LDYgQEAgY29uc3QgUmVuZGVyU3R5bGUm
IEJveDo6c3R5bGUoKSBjb25zdAogICAgIHJldHVybiBsaW5lKCktPmlzRmlyc3QoKSA/IHJlbmRl
cmVyKCkuZmlyc3RMaW5lU3R5bGUoKSA6IHJlbmRlcmVyKCkuc3R5bGUoKTsKIH0KIAotVGV4dEJv
eEl0ZXJhdG9yIFRleHRCb3g6Om5leHRUZXh0UnVuKCkgY29uc3QKLXsKLSAgICByZXR1cm4gVGV4
dEJveEl0ZXJhdG9yKCp0aGlzKS50cmF2ZXJzZU5leHRUZXh0UnVuKCk7Ci19Ci0KLVRleHRCb3hJ
dGVyYXRvciBUZXh0Qm94OjpuZXh0VGV4dFJ1bkluVGV4dE9yZGVyKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gVGV4dEJveEl0ZXJhdG9yKCp0aGlzKS50cmF2ZXJzZU5leHRUZXh0UnVuSW5UZXh0T3Jk
ZXIoKTsKLX0KLQotTGF5b3V0UmVjdCBUZXh0Qm94OjpzZWxlY3Rpb25SZWN0KHVuc2lnbmVkIHJh
bmdlU3RhcnQsIHVuc2lnbmVkIHJhbmdlRW5kKSBjb25zdAotewotICAgIGF1dG8gW2NsYW1wZWRT
dGFydCwgY2xhbXBlZEVuZF0gPSBzZWxlY3RhYmxlUmFuZ2UoKS5jbGFtcChyYW5nZVN0YXJ0LCBy
YW5nZUVuZCk7Ci0KLSAgICBpZiAoY2xhbXBlZFN0YXJ0ID49IGNsYW1wZWRFbmQgJiYgIShyYW5n
ZVN0YXJ0ID09IHJhbmdlRW5kICYmIHJhbmdlU3RhcnQgPj0gc3RhcnQoKSAmJiByYW5nZVN0YXJ0
IDw9IGVuZCgpKSkKLSAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgIGF1dG8gc2VsZWN0aW9uVG9w
ID0gbGluZSgpLT5zZWxlY3Rpb25Ub3AoKTsKLSAgICBhdXRvIHNlbGVjdGlvbkhlaWdodCA9IGxp
bmUoKS0+c2VsZWN0aW9uSGVpZ2h0KCk7Ci0KLSAgICBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3Qg
eyBsb2dpY2FsTGVmdCgpLCBzZWxlY3Rpb25Ub3AsIGxvZ2ljYWxXaWR0aCgpLCBzZWxlY3Rpb25I
ZWlnaHQgfTsKLQotICAgIFRleHRSdW4gdGV4dFJ1biA9IGNyZWF0ZVRleHRSdW4oKTsKLSAgICBp
ZiAoY2xhbXBlZFN0YXJ0IHx8IGNsYW1wZWRFbmQgIT0gdGV4dFJ1bi5sZW5ndGgoKSkKLSAgICAg
ICAgZm9udENhc2NhZGUoKS5hZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dCh0ZXh0UnVuLCBzZWxl
Y3Rpb25SZWN0LCBjbGFtcGVkU3RhcnQsIGNsYW1wZWRFbmQpOwotCi0gICAgcmV0dXJuIHNuYXBw
ZWRTZWxlY3Rpb25SZWN0KHNlbGVjdGlvblJlY3QsIGxvZ2ljYWxSaWdodCgpLCBzZWxlY3Rpb25U
b3AsIHNlbGVjdGlvbkhlaWdodCwgaXNIb3Jpem9udGFsKCkpOwotfQotCi1ib29sIFRleHRCb3g6
OmlzQ29tYmluZWRUZXh0KCkgY29uc3QKLXsKLSAgICBhdXRvJiByZW5kZXJlciA9IHRoaXMtPnJl
bmRlcmVyKCk7Ci0gICAgcmV0dXJuIGlzPFJlbmRlckNvbWJpbmVUZXh0PihyZW5kZXJlcikgJiYg
ZG93bmNhc3Q8UmVuZGVyQ29tYmluZVRleHQ+KHJlbmRlcmVyKS5pc0NvbWJpbmVkKCk7Ci19Ci0K
LWNvbnN0IEZvbnRDYXNjYWRlJiBUZXh0Qm94Ojpmb250Q2FzY2FkZSgpIGNvbnN0Ci17Ci0gICAg
aWYgKGlzQ29tYmluZWRUZXh0KCkpCi0gICAgICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJDb21i
aW5lVGV4dD4ocmVuZGVyZXIoKSkudGV4dENvbWJpbmVGb250KCk7Ci0KLSAgICByZXR1cm4gc3R5
bGUoKS5mb250Q2FzY2FkZSgpOwotfQotCiBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlIEJv
eDo6c2VsZWN0aW9uU3RhdGUoKSBjb25zdAogewogICAgIGlmIChpc1RleHQoKSkgewpAQCAtMTUw
LDM1ICsxMDYsOSBAQCBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlIEJveDo6c2VsZWN0aW9u
U3RhdGUoKSBjb25zdAogICAgIHJldHVybiByZW5kZXJlcigpLnNlbGVjdGlvblN0YXRlKCk7CiB9
CiAKLVRleHRCb3hJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yKEJveDo6UGF0aFZhcmlhbnQmJiBw
YXRoVmFyaWFudCkKLSAgICA6IEJveEl0ZXJhdG9yKFdURk1vdmUocGF0aFZhcmlhbnQpKQotewot
fQotCi1UZXh0Qm94SXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvcihjb25zdCBCb3gmIHJ1bikKLSAg
ICA6IEJveEl0ZXJhdG9yKHJ1bikKLXsKLX0KLQotVGV4dEJveEl0ZXJhdG9yJiBUZXh0Qm94SXRl
cmF0b3I6OnRyYXZlcnNlTmV4dFRleHRSdW4oKQotewotICAgIFdURjo6c3dpdGNoT24obV9ydW4u
bV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgewotICAgICAgICBwYXRoLnRyYXZlcnNlTmV4
dFRleHRSdW4oKTsKLSAgICB9KTsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLVRleHRCb3hJdGVy
YXRvciYgVGV4dEJveEl0ZXJhdG9yOjp0cmF2ZXJzZU5leHRUZXh0UnVuSW5UZXh0T3JkZXIoKQot
ewotICAgIFdURjo6c3dpdGNoT24obV9ydW4ubV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkg
ewotICAgICAgICBwYXRoLnRyYXZlcnNlTmV4dFRleHRSdW5JblRleHRPcmRlcigpOwotICAgIH0p
OwotICAgIHJldHVybiAqdGhpczsKLX0KLQogQm94SXRlcmF0b3ImIEJveEl0ZXJhdG9yOjp0cmF2
ZXJzZU5leHRPbkxpbmUoKQogewotICAgIFdURjo6c3dpdGNoT24obV9ydW4ubV9wYXRoVmFyaWFu
dCwgW10oYXV0byYgcGF0aCkgeworICAgIFdURjo6c3dpdGNoT24obV9ib3gubV9wYXRoVmFyaWFu
dCwgW10oYXV0byYgcGF0aCkgewogICAgICAgICBwYXRoLnRyYXZlcnNlTmV4dE9uTGluZSgpOwog
ICAgIH0pOwogICAgIHJldHVybiAqdGhpczsKQEAgLTE4Niw3ICsxMTYsNyBAQCBCb3hJdGVyYXRv
ciYgQm94SXRlcmF0b3I6OnRyYXZlcnNlTmV4dE9uTGluZSgpCiAKIEJveEl0ZXJhdG9yJiBCb3hJ
dGVyYXRvcjo6dHJhdmVyc2VQcmV2aW91c09uTGluZSgpCiB7Ci0gICAgV1RGOjpzd2l0Y2hPbiht
X3J1bi5tX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7CisgICAgV1RGOjpzd2l0Y2hPbiht
X2JveC5tX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7CiAgICAgICAgIHBhdGgudHJhdmVy
c2VQcmV2aW91c09uTGluZSgpOwogICAgIH0pOwogICAgIHJldHVybiAqdGhpczsKQEAgLTE5Niw3
ICsxMjYsNyBAQCBCb3hJdGVyYXRvciYgQm94SXRlcmF0b3I6OnRyYXZlcnNlTmV4dE9uTGluZUln
bm9yaW5nTGluZUJyZWFrKCkKIHsKICAgICBkbyB7CiAgICAgICAgIHRyYXZlcnNlTmV4dE9uTGlu
ZSgpOwotICAgIH0gd2hpbGUgKCFhdEVuZCgpICYmIG1fcnVuLmlzTGluZUJyZWFrKCkpOworICAg
IH0gd2hpbGUgKCFhdEVuZCgpICYmIG1fYm94LmlzTGluZUJyZWFrKCkpOwogICAgIHJldHVybiAq
dGhpczsKIH0KIApAQCAtMjA0LDEzICsxMzQsMTMgQEAgQm94SXRlcmF0b3ImIEJveEl0ZXJhdG9y
Ojp0cmF2ZXJzZVByZXZpb3VzT25MaW5lSWdub3JpbmdMaW5lQnJlYWsoKQogewogICAgIGRvIHsK
ICAgICAgICAgdHJhdmVyc2VQcmV2aW91c09uTGluZSgpOwotICAgIH0gd2hpbGUgKCFhdEVuZCgp
ICYmIG1fcnVuLmlzTGluZUJyZWFrKCkpOworICAgIH0gd2hpbGUgKCFhdEVuZCgpICYmIG1fYm94
LmlzTGluZUJyZWFrKCkpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAogQm94SXRlcmF0b3ImIEJv
eEl0ZXJhdG9yOjp0cmF2ZXJzZU5leHRPbkxpbmVJbkxvZ2ljYWxPcmRlcigpCiB7Ci0gICAgV1RG
Ojpzd2l0Y2hPbihtX3J1bi5tX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7CisgICAgV1RG
Ojpzd2l0Y2hPbihtX2JveC5tX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7CiAgICAgICAg
IHBhdGgudHJhdmVyc2VOZXh0T25MaW5lSW5Mb2dpY2FsT3JkZXIoKTsKICAgICB9KTsKICAgICBy
ZXR1cm4gKnRoaXM7CkBAIC0yMTgsOTYgKzE0OCw0NyBAQCBCb3hJdGVyYXRvciYgQm94SXRlcmF0
b3I6OnRyYXZlcnNlTmV4dE9uTGluZUluTG9naWNhbE9yZGVyKCkKIAogQm94SXRlcmF0b3ImIEJv
eEl0ZXJhdG9yOjp0cmF2ZXJzZVByZXZpb3VzT25MaW5lSW5Mb2dpY2FsT3JkZXIoKQogewotICAg
IFdURjo6c3dpdGNoT24obV9ydW4ubV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgeworICAg
IFdURjo6c3dpdGNoT24obV9ib3gubV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgewogICAg
ICAgICBwYXRoLnRyYXZlcnNlUHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxPcmRlcigpOwogICAgIH0p
OwogICAgIHJldHVybiAqdGhpczsKIH0KIAotVGV4dEJveEl0ZXJhdG9yIGZpcnN0VGV4dFJ1bkZv
cihjb25zdCBSZW5kZXJUZXh0JiB0ZXh0KQotewotI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElO
R19DT05URVhUKQotICAgIGlmIChhdXRvKiBsaW5lTGF5b3V0ID0gTGF5b3V0SW50ZWdyYXRpb246
OkxpbmVMYXlvdXQ6OmNvbnRhaW5pbmcodGV4dCkpCi0gICAgICAgIHJldHVybiBsaW5lTGF5b3V0
LT50ZXh0UnVuc0Zvcih0ZXh0KTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIHsgQm94SXRlcmF0b3JM
ZWdhY3lQYXRoIHsgdGV4dC5maXJzdFRleHRCb3goKSB9IH07Ci19Ci0KLVRleHRCb3hJdGVyYXRv
ciBmaXJzdFRleHRSdW5JblRleHRPcmRlckZvcihjb25zdCBSZW5kZXJUZXh0JiB0ZXh0KQotewot
ICAgIGlmICh0ZXh0LmZpcnN0VGV4dEJveCgpICYmIHRleHQuY29udGFpbnNSZXZlcnNlZFRleHQo
KSkgewotICAgICAgICBWZWN0b3I8Y29uc3QgTGVnYWN5SW5saW5lQm94Kj4gc29ydGVkVGV4dEJv
eGVzOwotICAgICAgICBmb3IgKGF1dG8qIHRleHRCb3ggPSB0ZXh0LmZpcnN0VGV4dEJveCgpOyB0
ZXh0Qm94OyB0ZXh0Qm94ID0gdGV4dEJveC0+bmV4dFRleHRCb3goKSkKLSAgICAgICAgICAgIHNv
cnRlZFRleHRCb3hlcy5hcHBlbmQodGV4dEJveCk7Ci0gICAgICAgIHN0ZDo6c29ydChzb3J0ZWRU
ZXh0Qm94ZXMuYmVnaW4oKSwgc29ydGVkVGV4dEJveGVzLmVuZCgpLCBbXShhdXRvKiBhLCBhdXRv
KiBiKSB7Ci0gICAgICAgICAgICByZXR1cm4gTGVnYWN5SW5saW5lVGV4dEJveDo6Y29tcGFyZUJ5
U3RhcnQoZG93bmNhc3Q8TGVnYWN5SW5saW5lVGV4dEJveD4oYSksIGRvd25jYXN0PExlZ2FjeUlu
bGluZVRleHRCb3g+KGIpKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIGF1dG8qIGZpcnN0ID0gc29y
dGVkVGV4dEJveGVzWzBdOwotICAgICAgICByZXR1cm4geyBCb3hJdGVyYXRvckxlZ2FjeVBhdGgg
eyBmaXJzdCwgV1RGTW92ZShzb3J0ZWRUZXh0Qm94ZXMpLCAwIH0gfTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gZmlyc3RUZXh0UnVuRm9yKHRleHQpOwotfQotCi1UZXh0Qm94SXRlcmF0b3IgdGV4dFJ1
bkZvcihjb25zdCBMZWdhY3lJbmxpbmVUZXh0Qm94KiBsZWdhY3lJbmxpbmVUZXh0Qm94KQotewot
ICAgIHJldHVybiB7IEJveEl0ZXJhdG9yTGVnYWN5UGF0aCB7IGxlZ2FjeUlubGluZVRleHRCb3gg
fSB9OwotfQotCi0jaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCi1UZXh0Qm94
SXRlcmF0b3IgdGV4dFJ1bkZvcihjb25zdCBMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVu
dCYgY29udGVudCwgY29uc3QgSW5saW5lRGlzcGxheTo6Qm94JiBib3gpCi17Ci0gICAgcmV0dXJu
IHRleHRSdW5Gb3IoY29udGVudCwgY29udGVudC5pbmRleEZvckJveChib3gpKTsKLX0KLQotVGV4
dEJveEl0ZXJhdG9yIHRleHRSdW5Gb3IoY29uc3QgTGF5b3V0SW50ZWdyYXRpb246OklubGluZUNv
bnRlbnQmIGNvbnRlbnQsIHNpemVfdCBib3hJbmRleCkKLXsKLSAgICBBU1NFUlQoY29udGVudC5i
b3hlc1tib3hJbmRleF0udGV4dCgpKTsKLSAgICByZXR1cm4geyBCb3hJdGVyYXRvck1vZGVyblBh
dGggeyBjb250ZW50LCBib3hJbmRleCB9IH07Ci19Ci0jZW5kaWYKLQotVGV4dFJ1blJhbmdlIHRl
eHRSdW5zRm9yKGNvbnN0IFJlbmRlclRleHQmIHRleHQpCi17Ci0gICAgcmV0dXJuIHsgZmlyc3RU
ZXh0UnVuRm9yKHRleHQpIH07Ci19Ci0KLUJveEl0ZXJhdG9yIHJ1bkZvcihjb25zdCBSZW5kZXJM
aW5lQnJlYWsmIHJlbmRlcmVyKQorQm94SXRlcmF0b3IgYm94Rm9yKGNvbnN0IFJlbmRlckxpbmVC
cmVhayYgcmVuZGVyZXIpCiB7CiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQp
CiAgICAgaWYgKGF1dG8qIGxpbmVMYXlvdXQgPSBMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91
dDo6Y29udGFpbmluZyhyZW5kZXJlcikpCi0gICAgICAgIHJldHVybiBsaW5lTGF5b3V0LT5ydW5G
b3IocmVuZGVyZXIpOworICAgICAgICByZXR1cm4gbGluZUxheW91dC0+Ym94Rm9yKHJlbmRlcmVy
KTsKICNlbmRpZgotICAgIHJldHVybiB7IEJveEl0ZXJhdG9yTGVnYWN5UGF0aChyZW5kZXJlci5p
bmxpbmVCb3hXcmFwcGVyKCkpIH07CisgICAgcmV0dXJuIHsgQm94TGVnYWN5UGF0aChyZW5kZXJl
ci5pbmxpbmVCb3hXcmFwcGVyKCkpIH07CiB9CiAKLUJveEl0ZXJhdG9yIHJ1bkZvcihjb25zdCBS
ZW5kZXJCb3gmIHJlbmRlcmVyKQorQm94SXRlcmF0b3IgYm94Rm9yKGNvbnN0IFJlbmRlckJveCYg
cmVuZGVyZXIpCiB7CiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAgICAg
aWYgKGF1dG8qIGxpbmVMYXlvdXQgPSBMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6Y29u
dGFpbmluZyhyZW5kZXJlcikpCi0gICAgICAgIHJldHVybiBsaW5lTGF5b3V0LT5ydW5Gb3IocmVu
ZGVyZXIpOworICAgICAgICByZXR1cm4gbGluZUxheW91dC0+Ym94Rm9yKHJlbmRlcmVyKTsKICNl
bmRpZgotICAgIHJldHVybiB7IEJveEl0ZXJhdG9yTGVnYWN5UGF0aChyZW5kZXJlci5pbmxpbmVC
b3hXcmFwcGVyKCkpIH07CisgICAgcmV0dXJuIHsgQm94TGVnYWN5UGF0aChyZW5kZXJlci5pbmxp
bmVCb3hXcmFwcGVyKCkpIH07CiB9CiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09O
VEVYVCkKLUJveEl0ZXJhdG9yIHJ1bkZvcihjb25zdCBMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5l
Q29udGVudCYgY29udGVudCwgc2l6ZV90IHJ1bkluZGV4KQorQm94SXRlcmF0b3IgYm94Rm9yKGNv
bnN0IExheW91dEludGVncmF0aW9uOjpJbmxpbmVDb250ZW50JiBjb250ZW50LCBzaXplX3QgYm94
SW5kZXgpCiB7Ci0gICAgcmV0dXJuIHsgQm94SXRlcmF0b3JNb2Rlcm5QYXRoIHsgY29udGVudCwg
cnVuSW5kZXggfSB9OworICAgIHJldHVybiB7IEJveE1vZGVyblBhdGggeyBjb250ZW50LCBib3hJ
bmRleCB9IH07CiB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05U
RVhUKQotY29uc3QgQm94SXRlcmF0b3JNb2Rlcm5QYXRoJiBCb3g6Om1vZGVyblBhdGgoKSBjb25z
dAorY29uc3QgQm94TW9kZXJuUGF0aCYgQm94Ojptb2Rlcm5QYXRoKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gV1RGOjpnZXQ8Qm94SXRlcmF0b3JNb2Rlcm5QYXRoPihtX3BhdGhWYXJpYW50KTsKKyAg
ICByZXR1cm4gV1RGOjpnZXQ8Qm94TW9kZXJuUGF0aD4obV9wYXRoVmFyaWFudCk7CiB9CiAjZW5k
aWYKIAotY29uc3QgQm94SXRlcmF0b3JMZWdhY3lQYXRoJiBCb3g6OmxlZ2FjeVBhdGgoKSBjb25z
dAorY29uc3QgQm94TGVnYWN5UGF0aCYgQm94OjpsZWdhY3lQYXRoKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gV1RGOjpnZXQ8Qm94SXRlcmF0b3JMZWdhY3lQYXRoPihtX3BhdGhWYXJpYW50KTsKKyAg
ICByZXR1cm4gV1RGOjpnZXQ8Qm94TGVnYWN5UGF0aD4obV9wYXRoVmFyaWFudCk7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVy
YXRvckJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJh
dG9yQm94LmgKaW5kZXggZTZlMzEwMzRiOGU1NjkwNzA4NzkzZDZjZjEzYTk1MGU0ODMyNTk0Mi4u
NzM0OGJhZDBiMzA0Y2U2NWM4NzcyNDEzNzUwODI2NDE0OWU0NzYyOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDks
OSArNDksOSBAQCBjbGFzcyBCb3ggewogcHVibGljOgogICAgIHVzaW5nIFBhdGhWYXJpYW50ID0g
VmFyaWFudDwKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKLSAgICAgICAg
Qm94SXRlcmF0b3JNb2Rlcm5QYXRoLAorICAgICAgICBCb3hNb2Rlcm5QYXRoLAogI2VuZGlmCi0g
ICAgICAgIEJveEl0ZXJhdG9yTGVnYWN5UGF0aAorICAgICAgICBCb3hMZWdhY3lQYXRoCiAgICAg
PjsKIAogICAgIEJveChQYXRoVmFyaWFudCYmKTsKQEAgLTg1LDExICs4NSwxMiBAQCBwdWJsaWM6
CiAgICAgY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlcigpIGNvbnN0OwogICAgIGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZSgpIGNvbnN0OwogCi0gICAgLy8gRm9yIGludGVybWVkaWF0ZSBwb3J0
aW5nIHN0ZXBzIG9ubHkuCisgICAgLy8gRklYTUU6IFJlbW92ZS4gRm9yIGludGVybWVkaWF0ZSBw
b3J0aW5nIHN0ZXBzIG9ubHkuCiAgICAgY29uc3QgTGVnYWN5SW5saW5lQm94KiBsZWdhY3lJbmxp
bmVCb3goKSBjb25zdDsKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKICAg
ICBjb25zdCBJbmxpbmVEaXNwbGF5OjpCb3gqIGlubGluZUJveCgpIGNvbnN0OwogI2VuZGlmCisg
ICAgCiAgICAgQm94SXRlcmF0b3IgbmV4dE9uTGluZSgpIGNvbnN0OwogICAgIEJveEl0ZXJhdG9y
IHByZXZpb3VzT25MaW5lKCkgY29uc3Q7CiAgICAgQm94SXRlcmF0b3IgbmV4dE9uTGluZUlnbm9y
aW5nTGluZUJyZWFrKCkgY29uc3Q7CkBAIC0xMDMsNDUgKzEwNCwxNiBAQCBwcm90ZWN0ZWQ6CiAK
ICAgICAvLyBUbyBoZWxwIHdpdGggZGVidWdnaW5nLgogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFU
VElOR19DT05URVhUKQotICAgIGNvbnN0IEJveEl0ZXJhdG9yTW9kZXJuUGF0aCYgbW9kZXJuUGF0
aCgpIGNvbnN0OworICAgIGNvbnN0IEJveE1vZGVyblBhdGgmIG1vZGVyblBhdGgoKSBjb25zdDsK
ICNlbmRpZgotICAgIGNvbnN0IEJveEl0ZXJhdG9yTGVnYWN5UGF0aCYgbGVnYWN5UGF0aCgpIGNv
bnN0OworICAgIGNvbnN0IEJveExlZ2FjeVBhdGgmIGxlZ2FjeVBhdGgoKSBjb25zdDsKIAogICAg
IFBhdGhWYXJpYW50IG1fcGF0aFZhcmlhbnQ7CiB9OwogCi1jbGFzcyBUZXh0Qm94IDogcHVibGlj
IEJveCB7Ci1wdWJsaWM6Ci0gICAgVGV4dEJveChQYXRoVmFyaWFudCYmKTsKLQotICAgIGJvb2wg
aGFzSHlwaGVuKCkgY29uc3Q7Ci0gICAgU3RyaW5nVmlldyB0ZXh0KCkgY29uc3Q7Ci0KLSAgICB1
bnNpZ25lZCBzdGFydCgpIGNvbnN0OwotICAgIHVuc2lnbmVkIGVuZCgpIGNvbnN0OwotICAgIHVu
c2lnbmVkIGxlbmd0aCgpIGNvbnN0OwotCi0gICAgdW5zaWduZWQgb2Zmc2V0Rm9yUG9zaXRpb24o
ZmxvYXQgeCkgY29uc3Q7Ci0gICAgZmxvYXQgcG9zaXRpb25Gb3JPZmZzZXQodW5zaWduZWQpIGNv
bnN0OwotCi0gICAgVGV4dEJveFNlbGVjdGFibGVSYW5nZSBzZWxlY3RhYmxlUmFuZ2UoKSBjb25z
dDsKLSAgICBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3QodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVk
IGVuZCkgY29uc3Q7Ci0KLSAgICBib29sIGlzQ29tYmluZWRUZXh0KCkgY29uc3Q7Ci0gICAgY29u
c3QgRm9udENhc2NhZGUmIGZvbnRDYXNjYWRlKCkgY29uc3Q7Ci0KLSAgICBUZXh0UnVuIGNyZWF0
ZVRleHRSdW4oKSBjb25zdDsKLQotICAgIGNvbnN0IFJlbmRlclRleHQmIHJlbmRlcmVyKCkgY29u
c3QgeyByZXR1cm4gZG93bmNhc3Q8UmVuZGVyVGV4dD4oQm94OjpyZW5kZXJlcigpKTsgfQotICAg
IGNvbnN0IExlZ2FjeUlubGluZVRleHRCb3gqIGxlZ2FjeUlubGluZUJveCgpIGNvbnN0IHsgcmV0
dXJuIGRvd25jYXN0PExlZ2FjeUlubGluZVRleHRCb3g+KEJveDo6bGVnYWN5SW5saW5lQm94KCkp
OyB9Ci0KLSAgICBUZXh0Qm94SXRlcmF0b3IgbmV4dFRleHRSdW4oKSBjb25zdDsKLSAgICBUZXh0
Qm94SXRlcmF0b3IgbmV4dFRleHRSdW5JblRleHRPcmRlcigpIGNvbnN0OwotfTsKLQogY2xhc3Mg
Qm94SXRlcmF0b3IgewogcHVibGljOgotICAgIEJveEl0ZXJhdG9yKCkgOiBtX3J1bihCb3hJdGVy
YXRvckxlZ2FjeVBhdGggeyBudWxscHRyLCB7IH0gfSkgeyB9OworICAgIEJveEl0ZXJhdG9yKCkg
OiBtX2JveChCb3hMZWdhY3lQYXRoIHsgbnVsbHB0ciwgeyB9IH0pIHsgfTsKICAgICBCb3hJdGVy
YXRvcihCb3g6OlBhdGhWYXJpYW50JiYpOwogICAgIEJveEl0ZXJhdG9yKGNvbnN0IEJveCYpOwog
CkBAIC0xNTMsOCArMTI1LDggQEAgcHVibGljOgogICAgIGJvb2wgb3BlcmF0b3I9PShFbmRJdGVy
YXRvcikgY29uc3QgeyByZXR1cm4gYXRFbmQoKTsgfQogICAgIGJvb2wgb3BlcmF0b3IhPShFbmRJ
dGVyYXRvcikgY29uc3QgeyByZXR1cm4gIWF0RW5kKCk7IH0KIAotICAgIGNvbnN0IEJveCYgb3Bl
cmF0b3IqKCkgY29uc3QgeyByZXR1cm4gbV9ydW47IH0KLSAgICBjb25zdCBCb3gqIG9wZXJhdG9y
LT4oKSBjb25zdCB7IHJldHVybiAmbV9ydW47IH0KKyAgICBjb25zdCBCb3gmIG9wZXJhdG9yKigp
IGNvbnN0IHsgcmV0dXJuIG1fYm94OyB9CisgICAgY29uc3QgQm94KiBvcGVyYXRvci0+KCkgY29u
c3QgeyByZXR1cm4gJm1fYm94OyB9CiAKICAgICBib29sIGF0RW5kKCkgY29uc3Q7CiAKQEAgLTE2
Niw2MCArMTM4LDEzIEBAIHB1YmxpYzoKICAgICBCb3hJdGVyYXRvciYgdHJhdmVyc2VQcmV2aW91
c09uTGluZUluTG9naWNhbE9yZGVyKCk7CiAKIHByb3RlY3RlZDoKLSAgICBCb3ggbV9ydW47Ci19
OwotCi1jbGFzcyBUZXh0Qm94SXRlcmF0b3IgOiBwdWJsaWMgQm94SXRlcmF0b3IgewotcHVibGlj
OgotICAgIFRleHRCb3hJdGVyYXRvcigpIHsgfQotICAgIFRleHRCb3hJdGVyYXRvcihCb3g6OlBh
dGhWYXJpYW50JiYpOwotICAgIFRleHRCb3hJdGVyYXRvcihjb25zdCBCb3gmKTsKLQotICAgIFRl
eHRCb3hJdGVyYXRvciYgb3BlcmF0b3IrKygpIHsgcmV0dXJuIHRyYXZlcnNlTmV4dFRleHRSdW4o
KTsgfQotCi0gICAgY29uc3QgVGV4dEJveCYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gZ2V0
KCk7IH0KLSAgICBjb25zdCBUZXh0Qm94KiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gJmdl
dCgpOyB9Ci0KLSAgICBUZXh0Qm94SXRlcmF0b3ImIHRyYXZlcnNlTmV4dFRleHRSdW4oKTsKLSAg
ICBUZXh0Qm94SXRlcmF0b3ImIHRyYXZlcnNlTmV4dFRleHRSdW5JblRleHRPcmRlcigpOwotCi1w
cml2YXRlOgotICAgIEJveEl0ZXJhdG9yJiB0cmF2ZXJzZU5leHRPbkxpbmUoKSA9IGRlbGV0ZTsK
LSAgICBCb3hJdGVyYXRvciYgdHJhdmVyc2VQcmV2aW91c09uTGluZSgpID0gZGVsZXRlOwotICAg
IEJveEl0ZXJhdG9yJiB0cmF2ZXJzZU5leHRPbkxpbmVJZ25vcmluZ0xpbmVCcmVhaygpID0gZGVs
ZXRlOwotICAgIEJveEl0ZXJhdG9yJiB0cmF2ZXJzZVByZXZpb3VzT25MaW5lSWdub3JpbmdMaW5l
QnJlYWsoKSA9IGRlbGV0ZTsKLSAgICBCb3hJdGVyYXRvciYgdHJhdmVyc2VOZXh0T25MaW5lSW5M
b2dpY2FsT3JkZXIoKSA9IGRlbGV0ZTsKLSAgICBCb3hJdGVyYXRvciYgdHJhdmVyc2VQcmV2aW91
c09uTGluZUluTG9naWNhbE9yZGVyKCkgPSBkZWxldGU7Ci0KLSAgICBjb25zdCBUZXh0Qm94JiBn
ZXQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxUZXh0Qm94PihtX3J1bik7IH0KKyAgICBCb3gg
bV9ib3g7CiB9OwogCi1jbGFzcyBUZXh0UnVuUmFuZ2UgewotcHVibGljOgotICAgIFRleHRSdW5S
YW5nZShUZXh0Qm94SXRlcmF0b3IgYmVnaW4pCi0gICAgICAgIDogbV9iZWdpbihiZWdpbikKLSAg
ICB7Ci0gICAgfQotCi0gICAgVGV4dEJveEl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4g
bV9iZWdpbjsgfQotICAgIEVuZEl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIHsgfTsgfQot
Ci1wcml2YXRlOgotICAgIFRleHRCb3hJdGVyYXRvciBtX2JlZ2luOwotfTsKLQotVGV4dEJveEl0
ZXJhdG9yIGZpcnN0VGV4dFJ1bkZvcihjb25zdCBSZW5kZXJUZXh0Jik7Ci1UZXh0Qm94SXRlcmF0
b3IgZmlyc3RUZXh0UnVuSW5UZXh0T3JkZXJGb3IoY29uc3QgUmVuZGVyVGV4dCYpOwotVGV4dEJv
eEl0ZXJhdG9yIHRleHRSdW5Gb3IoY29uc3QgTGVnYWN5SW5saW5lVGV4dEJveCopOwotI2lmIEVO
QUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQotVGV4dEJveEl0ZXJhdG9yIHRleHRSdW5G
b3IoY29uc3QgTGF5b3V0SW50ZWdyYXRpb246OklubGluZUNvbnRlbnQmLCBjb25zdCBJbmxpbmVE
aXNwbGF5OjpCb3gmKTsKLVRleHRCb3hJdGVyYXRvciB0ZXh0UnVuRm9yKGNvbnN0IExheW91dElu
dGVncmF0aW9uOjpJbmxpbmVDb250ZW50Jiwgc2l6ZV90IHJ1bkluZGV4KTsKLSNlbmRpZgotVGV4
dFJ1blJhbmdlIHRleHRSdW5zRm9yKGNvbnN0IFJlbmRlclRleHQmKTsKLUJveEl0ZXJhdG9yIHJ1
bkZvcihjb25zdCBSZW5kZXJMaW5lQnJlYWsmKTsKLUJveEl0ZXJhdG9yIHJ1bkZvcihjb25zdCBS
ZW5kZXJCb3gmKTsKK0JveEl0ZXJhdG9yIGJveEZvcihjb25zdCBSZW5kZXJMaW5lQnJlYWsmKTsK
K0JveEl0ZXJhdG9yIGJveEZvcihjb25zdCBSZW5kZXJCb3gmKTsKICNpZiBFTkFCTEUoTEFZT1VU
X0ZPUk1BVFRJTkdfQ09OVEVYVCkKLUJveEl0ZXJhdG9yIHJ1bkZvcihjb25zdCBMYXlvdXRJbnRl
Z3JhdGlvbjo6SW5saW5lQ29udGVudCYsIHNpemVfdCBydW5JbmRleCk7CitCb3hJdGVyYXRvciBi
b3hGb3IoY29uc3QgTGF5b3V0SW50ZWdyYXRpb246OklubGluZUNvbnRlbnQmLCBzaXplX3QgYm94
SW5kZXgpOwogI2VuZGlmCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCkBAIC0yOTQsOTUgKzIxOSwxOSBAQCBpbmxpbmUgY29uc3QgUmVuZGVyT2Jq
ZWN0JiBCb3g6OnJlbmRlcmVyKCkgY29uc3QKIAogaW5saW5lIGNvbnN0IExlZ2FjeUlubGluZUJv
eCogQm94OjpsZWdhY3lJbmxpbmVCb3goKSBjb25zdAogewotICAgIGlmICghV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxCb3hJdGVyYXRvckxlZ2FjeVBhdGg+KG1fcGF0aFZhcmlhbnQpKQorICAgIGlm
ICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxCb3hMZWdhY3lQYXRoPihtX3BhdGhWYXJpYW50KSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFdURjo6Z2V0PEJveEl0ZXJhdG9y
TGVnYWN5UGF0aD4obV9wYXRoVmFyaWFudCkubGVnYWN5SW5saW5lQm94KCk7CisgICAgcmV0dXJu
IFdURjo6Z2V0PEJveExlZ2FjeVBhdGg+KG1fcGF0aFZhcmlhbnQpLmxlZ2FjeUlubGluZUJveCgp
OwogfQogCiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiBpbmxpbmUgY29u
c3QgSW5saW5lRGlzcGxheTo6Qm94KiBCb3g6OmlubGluZUJveCgpIGNvbnN0CiB7Ci0gICAgaWYg
KCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEJveEl0ZXJhdG9yTW9kZXJuUGF0aD4obV9wYXRoVmFy
aWFudCkpCisgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEJveE1vZGVyblBhdGg+KG1f
cGF0aFZhcmlhbnQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gJldURjo6
Z2V0PEJveEl0ZXJhdG9yTW9kZXJuUGF0aD4obV9wYXRoVmFyaWFudCkuYm94KCk7CisgICAgcmV0
dXJuICZXVEY6OmdldDxCb3hNb2Rlcm5QYXRoPihtX3BhdGhWYXJpYW50KS5ib3goKTsKIH0KICNl
bmRpZgogCi1pbmxpbmUgYm9vbCBUZXh0Qm94OjpoYXNIeXBoZW4oKSBjb25zdAotewotICAgIHJl
dHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKLSAgICAg
ICAgcmV0dXJuIHBhdGguaGFzSHlwaGVuKCk7Ci0gICAgfSk7Ci19Ci0KLWlubGluZSBUZXh0Qm94
OjpUZXh0Qm94KFBhdGhWYXJpYW50JiYgcGF0aCkKLSAgICA6IEJveChXVEZNb3ZlKHBhdGgpKQot
ewotfQotCi1pbmxpbmUgU3RyaW5nVmlldyBUZXh0Qm94Ojp0ZXh0KCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7Ci0gICAg
ICAgIHJldHVybiBwYXRoLnRleHQoKTsKLSAgICB9KTsKLX0KLQotaW5saW5lIHVuc2lnbmVkIFRl
eHRCb3g6OnN0YXJ0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhW
YXJpYW50LCBbXShhdXRvJiBwYXRoKSB7Ci0gICAgICAgIHJldHVybiBwYXRoLnN0YXJ0KCk7Ci0g
ICAgfSk7Ci19Ci0KLWlubGluZSB1bnNpZ25lZCBUZXh0Qm94OjplbmQoKSBjb25zdAotewotICAg
IHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKLSAg
ICAgICAgcmV0dXJuIHBhdGguZW5kKCk7Ci0gICAgfSk7Ci19Ci0KLWlubGluZSB1bnNpZ25lZCBU
ZXh0Qm94OjpsZW5ndGgoKSBjb25zdAotewotICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0
aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKLSAgICAgICAgcmV0dXJuIHBhdGgubGVuZ3RoKCk7
Ci0gICAgfSk7Ci19Ci0KLWlubGluZSB1bnNpZ25lZCBUZXh0Qm94OjpvZmZzZXRGb3JQb3NpdGlv
bihmbG9hdCB4KSBjb25zdAotewotICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlh
bnQsIFsmXShhdXRvJiBwYXRoKSB7Ci0gICAgICAgIHJldHVybiBwYXRoLm9mZnNldEZvclBvc2l0
aW9uKHgpOwotICAgIH0pOwotfQotCi1pbmxpbmUgZmxvYXQgVGV4dEJveDo6cG9zaXRpb25Gb3JP
ZmZzZXQodW5zaWduZWQgb2Zmc2V0KSBjb25zdAotewotICAgIHJldHVybiBXVEY6OnN3aXRjaE9u
KG1fcGF0aFZhcmlhbnQsIFsmXShhdXRvJiBwYXRoKSB7Ci0gICAgICAgIHJldHVybiBwYXRoLnBv
c2l0aW9uRm9yT2Zmc2V0KG9mZnNldCk7Ci0gICAgfSk7Ci19Ci0KLWlubGluZSBUZXh0Qm94U2Vs
ZWN0YWJsZVJhbmdlIFRleHRCb3g6OnNlbGVjdGFibGVSYW5nZSgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgWyZdKGF1dG8mIHBhdGgpIHsKLSAgICAg
ICAgcmV0dXJuIHBhdGguc2VsZWN0YWJsZVJhbmdlKCk7Ci0gICAgfSk7CiB9Ci0KLWlubGluZSBU
ZXh0UnVuIFRleHRCb3g6OmNyZWF0ZVRleHRSdW4oKSBjb25zdAotewotICAgIHJldHVybiBXVEY6
OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFsmXShhdXRvJiBwYXRoKSB7Ci0gICAgICAgIHJldHVy
biBwYXRoLmNyZWF0ZVRleHRSdW4oKTsKLSAgICB9KTsKIH0KLQotfQotfQotCi1TUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94KQotc3Rh
dGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3gmIHJ1bikg
eyByZXR1cm4gcnVuLmlzVGV4dCgpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0K
LVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OlRl
eHRCb3hJdGVyYXRvcikKLXN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpJbmxpbmVJ
dGVyYXRvcjo6Qm94SXRlcmF0b3ImIHJ1bkl0ZXJhdG9yKSB7IHJldHVybiAhcnVuSXRlcmF0b3Ig
fHwgcnVuSXRlcmF0b3ItPmlzVGV4dCgpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRl
cmF0b3JCb3hMZWdhY3lQYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24v
SW5saW5lSXRlcmF0b3JCb3hMZWdhY3lQYXRoLmgKaW5kZXggZDIyNGMyYTIzMDY2MzI0MjVmM2Mx
NjZlZWMxNTQyY2Y1ZjIxZWJiOS4uNzk1OGJiMjdkMmQ5N2U4MDBhMjg0M2M5YzYxZDFjNzczZjRl
NzI0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGlu
ZUl0ZXJhdG9yQm94TGVnYWN5UGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRl
Z3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveExlZ2FjeVBhdGguaApAQCAtMzUsMTYgKzM1LDE2IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgSW5saW5lSXRlcmF0b3IgewogCi1jbGFz
cyBCb3hJdGVyYXRvckxlZ2FjeVBhdGggeworY2xhc3MgQm94TGVnYWN5UGF0aCB7CiBwdWJsaWM6
Ci0gICAgQm94SXRlcmF0b3JMZWdhY3lQYXRoKGNvbnN0IExlZ2FjeUlubGluZUJveCogaW5saW5l
Qm94LCBWZWN0b3I8Y29uc3QgTGVnYWN5SW5saW5lQm94Kj4mJiBzb3J0ZWRJbmxpbmVCb3hlcyA9
IHsgfSwgc2l6ZV90IHNvcnRlZElubGluZUJveEluZGV4ID0gMCkKKyAgICBCb3hMZWdhY3lQYXRo
KGNvbnN0IExlZ2FjeUlubGluZUJveCogaW5saW5lQm94LCBWZWN0b3I8Y29uc3QgTGVnYWN5SW5s
aW5lQm94Kj4mJiBzb3J0ZWRJbmxpbmVCb3hlcyA9IHsgfSwgc2l6ZV90IHNvcnRlZElubGluZUJv
eEluZGV4ID0gMCkKICAgICAgICAgOiBtX2lubGluZUJveChpbmxpbmVCb3gpCiAgICAgICAgICwg
bV9sb2dpY2FsT3JkZXJDYWNoZShXVEZNb3ZlKHNvcnRlZElubGluZUJveGVzKSkKICAgICAgICAg
LCBtX2xvZ2ljYWxPcmRlckNhY2hlSW5kZXgoc29ydGVkSW5saW5lQm94SW5kZXgpCiAgICAgeyB9
CiAKICAgICBlbnVtIGNsYXNzIExvZ2ljYWxPcmRlciB7IFN0YXJ0LCBFbmQgfTsKLSAgICBCb3hJ
dGVyYXRvckxlZ2FjeVBhdGgoY29uc3QgTGVnYWN5Um9vdElubGluZUJveCYgcm9vdCwgTG9naWNh
bE9yZGVyIG9yZGVyKQorICAgIEJveExlZ2FjeVBhdGgoY29uc3QgTGVnYWN5Um9vdElubGluZUJv
eCYgcm9vdCwgTG9naWNhbE9yZGVyIG9yZGVyKQogICAgICAgICA6IG1fbG9naWNhbE9yZGVyQ2Fj
aGUoaW5saW5lQm94ZXNJbkxvZ2ljYWxPcmRlcihyb290KSkKICAgICB7CiAgICAgICAgIGlmICgh
bV9sb2dpY2FsT3JkZXJDYWNoZS5pc0VtcHR5KCkpIHsKQEAgLTg0LDE1ICs4NCwxNSBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBtX2lubGluZUJveC0+cmVuZGVyZXIoKTsKICAgICB9CiAKLSAg
ICB2b2lkIHRyYXZlcnNlTmV4dFRleHRSdW4oKSB7IG1faW5saW5lQm94ID0gaW5saW5lVGV4dEJv
eCgpLT5uZXh0VGV4dEJveCgpOyB9Ci0gICAgdm9pZCB0cmF2ZXJzZU5leHRUZXh0UnVuSW5UZXh0
T3JkZXIoKQorICAgIHZvaWQgdHJhdmVyc2VOZXh0VGV4dEJveCgpIHsgbV9pbmxpbmVCb3ggPSBp
bmxpbmVUZXh0Qm94KCktPm5leHRUZXh0Qm94KCk7IH0KKyAgICB2b2lkIHRyYXZlcnNlTmV4dFRl
eHRCb3hJblRleHRPcmRlcigpCiAgICAgewogICAgICAgICBpZiAoIW1fbG9naWNhbE9yZGVyQ2Fj
aGUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICB0cmF2ZXJzZU5leHRJbmxpbmVCb3hJbkNhY2hl
T3JkZXIoKTsKICAgICAgICAgICAgIEFTU0VSVCghbV9pbmxpbmVCb3ggfHwgaXM8TGVnYWN5SW5s
aW5lVGV4dEJveD4obV9pbmxpbmVCb3gpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQotICAgICAgICB0cmF2ZXJzZU5leHRUZXh0UnVuKCk7CisgICAgICAgIHRyYXZlcnNlTmV4dFRl
eHRCb3goKTsKICAgICB9CiAKICAgICB2b2lkIHRyYXZlcnNlTmV4dE9uTGluZSgpCkBAIC0xMTcs
NyArMTE3LDcgQEAgcHVibGljOgogICAgICAgICB0cmF2ZXJzZVByZXZpb3VzSW5saW5lQm94SW5D
YWNoZU9yZGVyKCk7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJveEl0ZXJh
dG9yTGVnYWN5UGF0aCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lQm94ID09IG90aGVy
Lm1faW5saW5lQm94OyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJveExlZ2FjeVBhdGgm
IG90aGVyKSBjb25zdCB7IHJldHVybiBtX2lubGluZUJveCA9PSBvdGhlci5tX2lubGluZUJveDsg
fQogCiAgICAgYm9vbCBhdEVuZCgpIGNvbnN0IHsgcmV0dXJuICFtX2lubGluZUJveDsgfQogCkBA
IC0xNTQsMTQgKzE1NCwxNCBAQCBwcml2YXRlOgogfTsKIAogCi1pbmxpbmUgdm9pZCBCb3hJdGVy
YXRvckxlZ2FjeVBhdGg6OnRyYXZlcnNlTmV4dElubGluZUJveEluQ2FjaGVPcmRlcigpCitpbmxp
bmUgdm9pZCBCb3hMZWdhY3lQYXRoOjp0cmF2ZXJzZU5leHRJbmxpbmVCb3hJbkNhY2hlT3JkZXIo
KQogewogICAgIEFTU0VSVCghbV9sb2dpY2FsT3JkZXJDYWNoZS5pc0VtcHR5KCkpOwogICAgICsr
bV9sb2dpY2FsT3JkZXJDYWNoZUluZGV4OwogICAgIG1faW5saW5lQm94ID0gbV9sb2dpY2FsT3Jk
ZXJDYWNoZUluZGV4IDwgbV9sb2dpY2FsT3JkZXJDYWNoZS5zaXplKCkgPyBtX2xvZ2ljYWxPcmRl
ckNhY2hlW21fbG9naWNhbE9yZGVyQ2FjaGVJbmRleF0gOiBudWxscHRyOwogfQogCi1pbmxpbmUg
dm9pZCBCb3hJdGVyYXRvckxlZ2FjeVBhdGg6OnRyYXZlcnNlUHJldmlvdXNJbmxpbmVCb3hJbkNh
Y2hlT3JkZXIoKQoraW5saW5lIHZvaWQgQm94TGVnYWN5UGF0aDo6dHJhdmVyc2VQcmV2aW91c0lu
bGluZUJveEluQ2FjaGVPcmRlcigpCiB7CiAgICAgQVNTRVJUKCFtX2xvZ2ljYWxPcmRlckNhY2hl
LmlzRW1wdHkoKSk7CiAgICAgaWYgKCFtX2xvZ2ljYWxPcmRlckNhY2hlSW5kZXgpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJv
eE1vZGVyblBhdGguaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJ
dGVyYXRvckJveE1vZGVyblBhdGguaAppbmRleCA1YzE5ZjAxYjRlMTliYmM1ZTYxOThmOWNjZjEz
YTZhOWIwNjM3MmNhLi45YzM2NDQwMmRmZDJjZGVjZDdhOGI5OWM1YmFlYTVmN2UwNmIzN2Q5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0
b3JCb3hNb2Rlcm5QYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L0lubGluZUl0ZXJhdG9yQm94TW9kZXJuUGF0aC5oCkBAIC0zNCwxNCArMzQsMTQgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBJbmxpbmVJdGVyYXRvciB7CiAKLWNsYXNzIEJveEl0
ZXJhdG9yTW9kZXJuUGF0aCB7CitjbGFzcyBCb3hNb2Rlcm5QYXRoIHsKIHB1YmxpYzoKLSAgICBC
b3hJdGVyYXRvck1vZGVyblBhdGgoY29uc3QgTGF5b3V0SW50ZWdyYXRpb246OklubGluZUNvbnRl
bnQmIGlubGluZUNvbnRlbnQpCisgICAgQm94TW9kZXJuUGF0aChjb25zdCBMYXlvdXRJbnRlZ3Jh
dGlvbjo6SW5saW5lQ29udGVudCYgaW5saW5lQ29udGVudCkKICAgICAgICAgOiBtX2lubGluZUNv
bnRlbnQoJmlubGluZUNvbnRlbnQpCiAgICAgewogICAgICAgICBzZXRBdEVuZCgpOwogICAgIH0K
LSAgICBCb3hJdGVyYXRvck1vZGVyblBhdGgoY29uc3QgTGF5b3V0SW50ZWdyYXRpb246OklubGlu
ZUNvbnRlbnQmIGlubGluZUNvbnRlbnQsIHNpemVfdCBzdGFydEluZGV4KQorICAgIEJveE1vZGVy
blBhdGgoY29uc3QgTGF5b3V0SW50ZWdyYXRpb246OklubGluZUNvbnRlbnQmIGlubGluZUNvbnRl
bnQsIHNpemVfdCBzdGFydEluZGV4KQogICAgICAgICA6IG1faW5saW5lQ29udGVudCgmaW5saW5l
Q29udGVudCkKICAgICAgICAgLCBtX2JveEluZGV4KHN0YXJ0SW5kZXgpCiAgICAgewpAQCAtMTE5
LDcgKzExOSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1faW5saW5lQ29udGVudC0+cmVu
ZGVyZXJGb3JMYXlvdXRCb3goYm94KCkubGF5b3V0Qm94KCkpOwogICAgIH0KIAotICAgIHZvaWQg
dHJhdmVyc2VOZXh0VGV4dFJ1bigpCisgICAgdm9pZCB0cmF2ZXJzZU5leHRUZXh0Qm94KCkKICAg
ICB7CiAgICAgICAgIEFTU0VSVCghYXRFbmQoKSk7CiAgICAgICAgIEFTU0VSVChib3goKS50ZXh0
KCkpOwpAQCAtMTM0LDEwICsxMzQsMTAgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoYXRFbmQo
KSB8fCBib3goKS50ZXh0KCkpOwogICAgIH0KIAotICAgIHZvaWQgdHJhdmVyc2VOZXh0VGV4dFJ1
bkluVGV4dE9yZGVyKCkKKyAgICB2b2lkIHRyYXZlcnNlTmV4dFRleHRCb3hJblRleHRPcmRlcigp
CiAgICAgewogICAgICAgICAvLyBGSVhNRTogTm8gUlRMIGluIExGQy4KLSAgICAgICAgdHJhdmVy
c2VOZXh0VGV4dFJ1bigpOworICAgICAgICB0cmF2ZXJzZU5leHRUZXh0Qm94KCk7CiAgICAgfQog
CiAgICAgdm9pZCB0cmF2ZXJzZU5leHRPbkxpbmUoKQpAQCAtMTc0LDcgKzE3NCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgdHJhdmVyc2VQcmV2aW91c09uTGluZSgpOwogICAgIH0KIAotICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBCb3hJdGVyYXRvck1vZGVyblBhdGgmIG90aGVyKSBjb25zdCB7IHJl
dHVybiBtX2lubGluZUNvbnRlbnQgPT0gb3RoZXIubV9pbmxpbmVDb250ZW50ICYmIG1fYm94SW5k
ZXggPT0gb3RoZXIubV9ib3hJbmRleDsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCb3hN
b2Rlcm5QYXRoJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVDb250ZW50ID09IG90aGVy
Lm1faW5saW5lQ29udGVudCAmJiBtX2JveEluZGV4ID09IG90aGVyLm1fYm94SW5kZXg7IH0KIAog
ICAgIGJvb2wgYXRFbmQoKSBjb25zdCB7IHJldHVybiBtX2JveEluZGV4ID09IGJveGVzKCkuc2l6
ZSgpOyB9CiAgICAgY29uc3QgSW5saW5lRGlzcGxheTo6Qm94JiBib3goKSBjb25zdCB7IHJldHVy
biBib3hlcygpW21fYm94SW5kZXhdOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lTGVnYWN5UGF0aC5oIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZUxlZ2FjeVBhdGguaApp
bmRleCA5MTM4ZTUxN2NiMTM1ZDQ5MzQ0OTNjOWQ4ODc1YWFjYTM0YzU5ZjIwLi5mYWMzYTIyZTc0
OTRkNGU0MzEyMThmY2U4OWU3OWI0MzI0YTkzZDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lTGVnYWN5UGF0aC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVMZWdh
Y3lQYXRoLmgKQEAgLTc1LDI1ICs3NSwyNSBAQCBwdWJsaWM6CiAKICAgICBib29sIGF0RW5kKCkg
Y29uc3QgeyByZXR1cm4gIW1fcm9vdElubGluZUJveDsgfQogCi0gICAgQm94SXRlcmF0b3JMZWdh
Y3lQYXRoIGZpcnN0UnVuKCkgY29uc3QKKyAgICBCb3hMZWdhY3lQYXRoIGZpcnN0UnVuKCkgY29u
c3QKICAgICB7CiAgICAgICAgIHJldHVybiB7IG1fcm9vdElubGluZUJveC0+Zmlyc3RMZWFmRGVz
Y2VuZGFudCgpIH07CiAgICAgfQogCi0gICAgQm94SXRlcmF0b3JMZWdhY3lQYXRoIGxhc3RSdW4o
KSBjb25zdAorICAgIEJveExlZ2FjeVBhdGggbGFzdFJ1bigpIGNvbnN0CiAgICAgewogICAgICAg
ICByZXR1cm4geyBtX3Jvb3RJbmxpbmVCb3gtPmxhc3RMZWFmRGVzY2VuZGFudCgpIH07CiAgICAg
fQogCiAKLSAgICBCb3hJdGVyYXRvckxlZ2FjeVBhdGggbG9naWNhbFN0YXJ0UnVuKCkgY29uc3QK
KyAgICBCb3hMZWdhY3lQYXRoIGxvZ2ljYWxTdGFydFJ1bigpIGNvbnN0CiAgICAgewotICAgICAg
ICByZXR1cm4geyAqbV9yb290SW5saW5lQm94LCBCb3hJdGVyYXRvckxlZ2FjeVBhdGg6OkxvZ2lj
YWxPcmRlcjo6U3RhcnQgfTsKKyAgICAgICAgcmV0dXJuIHsgKm1fcm9vdElubGluZUJveCwgQm94
TGVnYWN5UGF0aDo6TG9naWNhbE9yZGVyOjpTdGFydCB9OwogICAgIH0KIAotICAgIEJveEl0ZXJh
dG9yTGVnYWN5UGF0aCBsb2dpY2FsRW5kUnVuKCkgY29uc3QKKyAgICBCb3hMZWdhY3lQYXRoIGxv
Z2ljYWxFbmRSdW4oKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIHsgKm1fcm9vdElubGlu
ZUJveCwgQm94SXRlcmF0b3JMZWdhY3lQYXRoOjpMb2dpY2FsT3JkZXI6OkVuZCB9OworICAgICAg
ICByZXR1cm4geyAqbV9yb290SW5saW5lQm94LCBCb3hMZWdhY3lQYXRoOjpMb2dpY2FsT3JkZXI6
OkVuZCB9OwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVNb2Rlcm5QYXRoLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lTW9kZXJuUGF0aC5o
CmluZGV4IGNkMzg3OWIwYTVlNTg0YjY3MGE0ZDgyOTliNzViNDExNjZkZjFiNzAuLmNhZjgyNmY4
NTFlNDdmZmU3ZDVhMGRhYzU5NWZlOWRmMzNjNDVkZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVNb2Rlcm5QYXRoLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZU1v
ZGVyblBhdGguaApAQCAtMzQsNyArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNw
YWNlIElubGluZUl0ZXJhdG9yIHsKIAotY2xhc3MgQm94SXRlcmF0b3JNb2Rlcm5QYXRoOworY2xh
c3MgQm94TW9kZXJuUGF0aDsKIAogY2xhc3MgTGluZUl0ZXJhdG9yTW9kZXJuUGF0aCB7CiBwdWJs
aWM6CkBAIC05NSwzMyArOTUsMzMgQEAgcHVibGljOgogCiAgICAgYm9vbCBhdEVuZCgpIGNvbnN0
IHsgcmV0dXJuIG1fbGluZUluZGV4ID09IGxpbmVzKCkuc2l6ZSgpOyB9CiAKLSAgICBCb3hJdGVy
YXRvck1vZGVyblBhdGggZmlyc3RSdW4oKSBjb25zdAorICAgIEJveE1vZGVyblBhdGggZmlyc3RS
dW4oKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKCFsaW5lKCkuYm94Q291bnQoKSkKICAgICAg
ICAgICAgIHJldHVybiB7ICptX2lubGluZUNvbnRlbnQgfTsKLSAgICAgICAgYXV0byBydW5JdGVy
YXRvciA9IEJveEl0ZXJhdG9yTW9kZXJuUGF0aCB7ICptX2lubGluZUNvbnRlbnQsIGxpbmUoKS5m
aXJzdEJveEluZGV4KCkgfTsKKyAgICAgICAgYXV0byBydW5JdGVyYXRvciA9IEJveE1vZGVyblBh
dGggeyAqbV9pbmxpbmVDb250ZW50LCBsaW5lKCkuZmlyc3RCb3hJbmRleCgpIH07CiAgICAgICAg
IGlmIChydW5JdGVyYXRvci5ib3goKS5pc0lubGluZUJveCgpKQogICAgICAgICAgICAgcnVuSXRl
cmF0b3IudHJhdmVyc2VOZXh0T25MaW5lKCk7CiAgICAgICAgIHJldHVybiBydW5JdGVyYXRvcjsK
ICAgICB9CiAKLSAgICBCb3hJdGVyYXRvck1vZGVyblBhdGggbGFzdFJ1bigpIGNvbnN0CisgICAg
Qm94TW9kZXJuUGF0aCBsYXN0UnVuKCkgY29uc3QKICAgICB7CiAgICAgICAgIGF1dG8gYm94Q291
bnQgPSBsaW5lKCkuYm94Q291bnQoKTsKICAgICAgICAgaWYgKCFib3hDb3VudCkKICAgICAgICAg
ICAgIHJldHVybiB7ICptX2lubGluZUNvbnRlbnQgfTsKLSAgICAgICAgYXV0byBydW5JdGVyYXRv
ciA9IEJveEl0ZXJhdG9yTW9kZXJuUGF0aCB7ICptX2lubGluZUNvbnRlbnQsIGxpbmUoKS5maXJz
dEJveEluZGV4KCkgKyBib3hDb3VudCAtIDEgfTsKKyAgICAgICAgYXV0byBydW5JdGVyYXRvciA9
IEJveE1vZGVyblBhdGggeyAqbV9pbmxpbmVDb250ZW50LCBsaW5lKCkuZmlyc3RCb3hJbmRleCgp
ICsgYm94Q291bnQgLSAxIH07CiAgICAgICAgIGlmIChydW5JdGVyYXRvci5ib3goKS5pc0lubGlu
ZUJveCgpKQogICAgICAgICAgICAgcnVuSXRlcmF0b3IudHJhdmVyc2VQcmV2aW91c09uTGluZSgp
OwogICAgICAgICByZXR1cm4gcnVuSXRlcmF0b3I7CiAgICAgfQogCi0gICAgQm94SXRlcmF0b3JN
b2Rlcm5QYXRoIGxvZ2ljYWxTdGFydFJ1bigpIGNvbnN0CisgICAgQm94TW9kZXJuUGF0aCBsb2dp
Y2FsU3RhcnRSdW4oKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGZpcnN0UnVuKCk7CiAg
ICAgfQogCi0gICAgQm94SXRlcmF0b3JNb2Rlcm5QYXRoIGxvZ2ljYWxFbmRSdW4oKSBjb25zdAor
ICAgIEJveE1vZGVyblBhdGggbG9naWNhbEVuZFJ1bigpIGNvbnN0CiAgICAgewogICAgICAgICBy
ZXR1cm4gbGFzdFJ1bigpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvclRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJveC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NThlOTJmOTNkNDIzMmZhNWJiZjNmNTBmMjNjZmZkMzM3NGEzYjg4NgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvclRleHRC
b3guY3BwCkBAIC0wLDAgKzEsMTU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JUZXh0Qm94LmgiCisKKyNpbmNsdWRlICJJ
bmxpbmVJdGVyYXRvckxpbmUuaCIKKyNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlv
dXQuaCIKKyNpbmNsdWRlICJSZW5kZXJDb21iaW5lVGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CituYW1lc3BhY2UgSW5saW5lSXRlcmF0b3IgeworCitUZXh0Qm94SXRlcmF0b3IgVGV4dEJv
eDo6bmV4dFRleHRCb3goKSBjb25zdAoreworICAgIHJldHVybiBUZXh0Qm94SXRlcmF0b3IoKnRo
aXMpLnRyYXZlcnNlTmV4dFRleHRCb3goKTsKK30KKworVGV4dEJveEl0ZXJhdG9yIFRleHRCb3g6
Om5leHRUZXh0Qm94SW5UZXh0T3JkZXIoKSBjb25zdAoreworICAgIHJldHVybiBUZXh0Qm94SXRl
cmF0b3IoKnRoaXMpLnRyYXZlcnNlTmV4dFRleHRCb3hJblRleHRPcmRlcigpOworfQorCitMYXlv
dXRSZWN0IFRleHRCb3g6OnNlbGVjdGlvblJlY3QodW5zaWduZWQgcmFuZ2VTdGFydCwgdW5zaWdu
ZWQgcmFuZ2VFbmQpIGNvbnN0Cit7CisgICAgYXV0byBbY2xhbXBlZFN0YXJ0LCBjbGFtcGVkRW5k
XSA9IHNlbGVjdGFibGVSYW5nZSgpLmNsYW1wKHJhbmdlU3RhcnQsIHJhbmdlRW5kKTsKKworICAg
IGlmIChjbGFtcGVkU3RhcnQgPj0gY2xhbXBlZEVuZCAmJiAhKHJhbmdlU3RhcnQgPT0gcmFuZ2VF
bmQgJiYgcmFuZ2VTdGFydCA+PSBzdGFydCgpICYmIHJhbmdlU3RhcnQgPD0gZW5kKCkpKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBzZWxlY3Rpb25Ub3AgPSBsaW5lKCktPnNlbGVj
dGlvblRvcCgpOworICAgIGF1dG8gc2VsZWN0aW9uSGVpZ2h0ID0gbGluZSgpLT5zZWxlY3Rpb25I
ZWlnaHQoKTsKKworICAgIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdCB7IGxvZ2ljYWxMZWZ0KCks
IHNlbGVjdGlvblRvcCwgbG9naWNhbFdpZHRoKCksIHNlbGVjdGlvbkhlaWdodCB9OworCisgICAg
VGV4dFJ1biB0ZXh0UnVuID0gY3JlYXRlVGV4dFJ1bigpOworICAgIGlmIChjbGFtcGVkU3RhcnQg
fHwgY2xhbXBlZEVuZCAhPSB0ZXh0UnVuLmxlbmd0aCgpKQorICAgICAgICBmb250Q2FzY2FkZSgp
LmFkanVzdFNlbGVjdGlvblJlY3RGb3JUZXh0KHRleHRSdW4sIHNlbGVjdGlvblJlY3QsIGNsYW1w
ZWRTdGFydCwgY2xhbXBlZEVuZCk7CisKKyAgICByZXR1cm4gc25hcHBlZFNlbGVjdGlvblJlY3Qo
c2VsZWN0aW9uUmVjdCwgbG9naWNhbFJpZ2h0KCksIHNlbGVjdGlvblRvcCwgc2VsZWN0aW9uSGVp
Z2h0LCBpc0hvcml6b250YWwoKSk7Cit9CisKK2Jvb2wgVGV4dEJveDo6aXNDb21iaW5lZFRleHQo
KSBjb25zdAoreworICAgIGF1dG8mIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKKyAgICBy
ZXR1cm4gaXM8UmVuZGVyQ29tYmluZVRleHQ+KHJlbmRlcmVyKSAmJiBkb3duY2FzdDxSZW5kZXJD
b21iaW5lVGV4dD4ocmVuZGVyZXIpLmlzQ29tYmluZWQoKTsKK30KKworY29uc3QgRm9udENhc2Nh
ZGUmIFRleHRCb3g6OmZvbnRDYXNjYWRlKCkgY29uc3QKK3sKKyAgICBpZiAoaXNDb21iaW5lZFRl
eHQoKSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckNvbWJpbmVUZXh0PihyZW5kZXJl
cigpKS50ZXh0Q29tYmluZUZvbnQoKTsKKworICAgIHJldHVybiBzdHlsZSgpLmZvbnRDYXNjYWRl
KCk7Cit9CisKK1RleHRCb3hJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yKEJveDo6UGF0aFZhcmlh
bnQmJiBwYXRoVmFyaWFudCkKKyAgICA6IEJveEl0ZXJhdG9yKFdURk1vdmUocGF0aFZhcmlhbnQp
KQoreworfQorCitUZXh0Qm94SXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvcihjb25zdCBCb3gmIGJv
eCkKKyAgICA6IEJveEl0ZXJhdG9yKGJveCkKK3sKK30KKworVGV4dEJveEl0ZXJhdG9yJiBUZXh0
Qm94SXRlcmF0b3I6OnRyYXZlcnNlTmV4dFRleHRCb3goKQoreworICAgIFdURjo6c3dpdGNoT24o
bV9ib3gubV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgeworICAgICAgICBwYXRoLnRyYXZl
cnNlTmV4dFRleHRCb3goKTsKKyAgICB9KTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK1RleHRC
b3hJdGVyYXRvciYgVGV4dEJveEl0ZXJhdG9yOjp0cmF2ZXJzZU5leHRUZXh0Qm94SW5UZXh0T3Jk
ZXIoKQoreworICAgIFdURjo6c3dpdGNoT24obV9ib3gubV9wYXRoVmFyaWFudCwgW10oYXV0byYg
cGF0aCkgeworICAgICAgICBwYXRoLnRyYXZlcnNlTmV4dFRleHRCb3hJblRleHRPcmRlcigpOwor
ICAgIH0pOworICAgIHJldHVybiAqdGhpczsKK30KKworVGV4dEJveEl0ZXJhdG9yIGZpcnN0VGV4
dEJveEZvcihjb25zdCBSZW5kZXJUZXh0JiB0ZXh0KQoreworI2lmIEVOQUJMRShMQVlPVVRfRk9S
TUFUVElOR19DT05URVhUKQorICAgIGlmIChhdXRvKiBsaW5lTGF5b3V0ID0gTGF5b3V0SW50ZWdy
YXRpb246OkxpbmVMYXlvdXQ6OmNvbnRhaW5pbmcodGV4dCkpCisgICAgICAgIHJldHVybiBsaW5l
TGF5b3V0LT50ZXh0Qm94ZXNGb3IodGV4dCk7CisjZW5kaWYKKworICAgIHJldHVybiB7IEJveExl
Z2FjeVBhdGggeyB0ZXh0LmZpcnN0VGV4dEJveCgpIH0gfTsKK30KKworVGV4dEJveEl0ZXJhdG9y
IGZpcnN0VGV4dEJveEluVGV4dE9yZGVyRm9yKGNvbnN0IFJlbmRlclRleHQmIHRleHQpCit7Cisg
ICAgaWYgKHRleHQuZmlyc3RUZXh0Qm94KCkgJiYgdGV4dC5jb250YWluc1JldmVyc2VkVGV4dCgp
KSB7CisgICAgICAgIFZlY3Rvcjxjb25zdCBMZWdhY3lJbmxpbmVCb3gqPiBzb3J0ZWRUZXh0Qm94
ZXM7CisgICAgICAgIGZvciAoYXV0byogdGV4dEJveCA9IHRleHQuZmlyc3RUZXh0Qm94KCk7IHRl
eHRCb3g7IHRleHRCb3ggPSB0ZXh0Qm94LT5uZXh0VGV4dEJveCgpKQorICAgICAgICAgICAgc29y
dGVkVGV4dEJveGVzLmFwcGVuZCh0ZXh0Qm94KTsKKyAgICAgICAgc3RkOjpzb3J0KHNvcnRlZFRl
eHRCb3hlcy5iZWdpbigpLCBzb3J0ZWRUZXh0Qm94ZXMuZW5kKCksIFtdKGF1dG8qIGEsIGF1dG8q
IGIpIHsKKyAgICAgICAgICAgIHJldHVybiBMZWdhY3lJbmxpbmVUZXh0Qm94Ojpjb21wYXJlQnlT
dGFydChkb3duY2FzdDxMZWdhY3lJbmxpbmVUZXh0Qm94PihhKSwgZG93bmNhc3Q8TGVnYWN5SW5s
aW5lVGV4dEJveD4oYikpOworICAgICAgICB9KTsKKyAgICAgICAgYXV0byogZmlyc3QgPSBzb3J0
ZWRUZXh0Qm94ZXNbMF07CisgICAgICAgIHJldHVybiB7IEJveExlZ2FjeVBhdGggeyBmaXJzdCwg
V1RGTW92ZShzb3J0ZWRUZXh0Qm94ZXMpLCAwIH0gfTsKKyAgICB9CisKKyAgICByZXR1cm4gZmly
c3RUZXh0Qm94Rm9yKHRleHQpOworfQorCitUZXh0Qm94SXRlcmF0b3IgdGV4dEJveEZvcihjb25z
dCBMZWdhY3lJbmxpbmVUZXh0Qm94KiBsZWdhY3lJbmxpbmVUZXh0Qm94KQoreworICAgIHJldHVy
biB7IEJveExlZ2FjeVBhdGggeyBsZWdhY3lJbmxpbmVUZXh0Qm94IH0gfTsKK30KKworI2lmIEVO
QUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQorVGV4dEJveEl0ZXJhdG9yIHRleHRCb3hG
b3IoY29uc3QgTGF5b3V0SW50ZWdyYXRpb246OklubGluZUNvbnRlbnQmIGNvbnRlbnQsIGNvbnN0
IElubGluZURpc3BsYXk6OkJveCYgYm94KQoreworICAgIHJldHVybiB0ZXh0Qm94Rm9yKGNvbnRl
bnQsIGNvbnRlbnQuaW5kZXhGb3JCb3goYm94KSk7Cit9CisKK1RleHRCb3hJdGVyYXRvciB0ZXh0
Qm94Rm9yKGNvbnN0IExheW91dEludGVncmF0aW9uOjpJbmxpbmVDb250ZW50JiBjb250ZW50LCBz
aXplX3QgYm94SW5kZXgpCit7CisgICAgQVNTRVJUKGNvbnRlbnQuYm94ZXNbYm94SW5kZXhdLnRl
eHQoKSk7CisgICAgcmV0dXJuIHsgQm94TW9kZXJuUGF0aCB7IGNvbnRlbnQsIGJveEluZGV4IH0g
fTsKK30KKyNlbmRpZgorCitUZXh0Qm94UmFuZ2UgdGV4dEJveGVzRm9yKGNvbnN0IFJlbmRlclRl
eHQmIHRleHQpCit7CisgICAgcmV0dXJuIHsgZmlyc3RUZXh0Qm94Rm9yKHRleHQpIH07Cit9CisK
K30KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9Jbmxp
bmVJdGVyYXRvclRleHRCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9J
bmxpbmVJdGVyYXRvclRleHRCb3guaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNDRjYTM1YzNiMjlhMTYxMzA2YzA2
OWEyNTVhZGY4OWJlM2U5ZTc3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJveC5oCkBAIC0wLDAgKzEsMTk2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIklubGluZUl0ZXJh
dG9yQm94LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVuZGVyTGluZUJyZWFr
OworY2xhc3MgUmVuZGVyT2JqZWN0OworY2xhc3MgUmVuZGVyU3R5bGU7CitjbGFzcyBSZW5kZXJU
ZXh0OworCituYW1lc3BhY2UgSW5saW5lSXRlcmF0b3IgeworCitjbGFzcyBUZXh0Qm94IDogcHVi
bGljIEJveCB7CitwdWJsaWM6CisgICAgVGV4dEJveChQYXRoVmFyaWFudCYmKTsKKworICAgIGJv
b2wgaGFzSHlwaGVuKCkgY29uc3Q7CisgICAgU3RyaW5nVmlldyB0ZXh0KCkgY29uc3Q7CisKKyAg
ICB1bnNpZ25lZCBzdGFydCgpIGNvbnN0OworICAgIHVuc2lnbmVkIGVuZCgpIGNvbnN0OworICAg
IHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OworCisgICAgdW5zaWduZWQgb2Zmc2V0Rm9yUG9zaXRp
b24oZmxvYXQgeCkgY29uc3Q7CisgICAgZmxvYXQgcG9zaXRpb25Gb3JPZmZzZXQodW5zaWduZWQp
IGNvbnN0OworCisgICAgVGV4dEJveFNlbGVjdGFibGVSYW5nZSBzZWxlY3RhYmxlUmFuZ2UoKSBj
b25zdDsKKyAgICBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3QodW5zaWduZWQgc3RhcnQsIHVuc2ln
bmVkIGVuZCkgY29uc3Q7CisKKyAgICBib29sIGlzQ29tYmluZWRUZXh0KCkgY29uc3Q7CisgICAg
Y29uc3QgRm9udENhc2NhZGUmIGZvbnRDYXNjYWRlKCkgY29uc3Q7CisKKyAgICBUZXh0UnVuIGNy
ZWF0ZVRleHRSdW4oKSBjb25zdDsKKworICAgIGNvbnN0IFJlbmRlclRleHQmIHJlbmRlcmVyKCkg
Y29uc3QgeyByZXR1cm4gZG93bmNhc3Q8UmVuZGVyVGV4dD4oQm94OjpyZW5kZXJlcigpKTsgfQor
CisgICAgLy8gRklYTUU6IFJlbW92ZS4gRm9yIGludGVybWVkaWF0ZSBwb3J0aW5nIHN0ZXBzIG9u
bHkuCisgICAgY29uc3QgTGVnYWN5SW5saW5lVGV4dEJveCogbGVnYWN5SW5saW5lQm94KCkgY29u
c3QgeyByZXR1cm4gZG93bmNhc3Q8TGVnYWN5SW5saW5lVGV4dEJveD4oQm94OjpsZWdhY3lJbmxp
bmVCb3goKSk7IH0KKworICAgIFRleHRCb3hJdGVyYXRvciBuZXh0VGV4dEJveCgpIGNvbnN0Owor
ICAgIFRleHRCb3hJdGVyYXRvciBuZXh0VGV4dEJveEluVGV4dE9yZGVyKCkgY29uc3Q7Cit9Owor
CitjbGFzcyBUZXh0Qm94SXRlcmF0b3IgOiBwdWJsaWMgQm94SXRlcmF0b3IgeworcHVibGljOgor
ICAgIFRleHRCb3hJdGVyYXRvcigpIHsgfQorICAgIFRleHRCb3hJdGVyYXRvcihCb3g6OlBhdGhW
YXJpYW50JiYpOworICAgIFRleHRCb3hJdGVyYXRvcihjb25zdCBCb3gmKTsKKworICAgIFRleHRC
b3hJdGVyYXRvciYgb3BlcmF0b3IrKygpIHsgcmV0dXJuIHRyYXZlcnNlTmV4dFRleHRCb3goKTsg
fQorCisgICAgY29uc3QgVGV4dEJveCYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gZ2V0KCk7
IH0KKyAgICBjb25zdCBUZXh0Qm94KiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gJmdldCgp
OyB9CisKKyAgICBUZXh0Qm94SXRlcmF0b3ImIHRyYXZlcnNlTmV4dFRleHRCb3goKTsKKyAgICBU
ZXh0Qm94SXRlcmF0b3ImIHRyYXZlcnNlTmV4dFRleHRCb3hJblRleHRPcmRlcigpOworCitwcml2
YXRlOgorICAgIEJveEl0ZXJhdG9yJiB0cmF2ZXJzZU5leHRPbkxpbmUoKSA9IGRlbGV0ZTsKKyAg
ICBCb3hJdGVyYXRvciYgdHJhdmVyc2VQcmV2aW91c09uTGluZSgpID0gZGVsZXRlOworICAgIEJv
eEl0ZXJhdG9yJiB0cmF2ZXJzZU5leHRPbkxpbmVJZ25vcmluZ0xpbmVCcmVhaygpID0gZGVsZXRl
OworICAgIEJveEl0ZXJhdG9yJiB0cmF2ZXJzZVByZXZpb3VzT25MaW5lSWdub3JpbmdMaW5lQnJl
YWsoKSA9IGRlbGV0ZTsKKyAgICBCb3hJdGVyYXRvciYgdHJhdmVyc2VOZXh0T25MaW5lSW5Mb2dp
Y2FsT3JkZXIoKSA9IGRlbGV0ZTsKKyAgICBCb3hJdGVyYXRvciYgdHJhdmVyc2VQcmV2aW91c09u
TGluZUluTG9naWNhbE9yZGVyKCkgPSBkZWxldGU7CisKKyAgICBjb25zdCBUZXh0Qm94JiBnZXQo
KSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxUZXh0Qm94PihtX2JveCk7IH0KK307CisKK2NsYXNz
IFRleHRCb3hSYW5nZSB7CitwdWJsaWM6CisgICAgVGV4dEJveFJhbmdlKFRleHRCb3hJdGVyYXRv
ciBiZWdpbikKKyAgICAgICAgOiBtX2JlZ2luKGJlZ2luKQorICAgIHsKKyAgICB9CisKKyAgICBU
ZXh0Qm94SXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX2JlZ2luOyB9CisgICAgRW5k
SXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4geyB9OyB9CisKK3ByaXZhdGU6CisgICAgVGV4
dEJveEl0ZXJhdG9yIG1fYmVnaW47Cit9OworCitUZXh0Qm94SXRlcmF0b3IgZmlyc3RUZXh0Qm94
Rm9yKGNvbnN0IFJlbmRlclRleHQmKTsKK1RleHRCb3hJdGVyYXRvciBmaXJzdFRleHRCb3hJblRl
eHRPcmRlckZvcihjb25zdCBSZW5kZXJUZXh0Jik7CitUZXh0Qm94SXRlcmF0b3IgdGV4dEJveEZv
cihjb25zdCBMZWdhY3lJbmxpbmVUZXh0Qm94Kik7CisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRU
SU5HX0NPTlRFWFQpCitUZXh0Qm94SXRlcmF0b3IgdGV4dEJveEZvcihjb25zdCBMYXlvdXRJbnRl
Z3JhdGlvbjo6SW5saW5lQ29udGVudCYsIGNvbnN0IElubGluZURpc3BsYXk6OkJveCYpOworVGV4
dEJveEl0ZXJhdG9yIHRleHRCb3hGb3IoY29uc3QgTGF5b3V0SW50ZWdyYXRpb246OklubGluZUNv
bnRlbnQmLCBzaXplX3QgYm94SW5kZXgpOworI2VuZGlmCitUZXh0Qm94UmFuZ2UgdGV4dEJveGVz
Rm9yKGNvbnN0IFJlbmRlclRleHQmKTsKKworaW5saW5lIGJvb2wgVGV4dEJveDo6aGFzSHlwaGVu
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBbXShh
dXRvJiBwYXRoKSB7CisgICAgICAgIHJldHVybiBwYXRoLmhhc0h5cGhlbigpOworICAgIH0pOwor
fQorCitpbmxpbmUgVGV4dEJveDo6VGV4dEJveChQYXRoVmFyaWFudCYmIHBhdGgpCisgICAgOiBC
b3goV1RGTW92ZShwYXRoKSkKK3sKK30KKworaW5saW5lIFN0cmluZ1ZpZXcgVGV4dEJveDo6dGV4
dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10o
YXV0byYgcGF0aCkgeworICAgICAgICByZXR1cm4gcGF0aC50ZXh0KCk7CisgICAgfSk7Cit9CisK
K2lubGluZSB1bnNpZ25lZCBUZXh0Qm94OjpzdGFydCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdU
Rjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgeworICAgICAgICByZXR1
cm4gcGF0aC5zdGFydCgpOworICAgIH0pOworfQorCitpbmxpbmUgdW5zaWduZWQgVGV4dEJveDo6
ZW5kKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBb
XShhdXRvJiBwYXRoKSB7CisgICAgICAgIHJldHVybiBwYXRoLmVuZCgpOworICAgIH0pOworfQor
CitpbmxpbmUgdW5zaWduZWQgVGV4dEJveDo6bGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
V1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7CisgICAgICAgIHJl
dHVybiBwYXRoLmxlbmd0aCgpOworICAgIH0pOworfQorCitpbmxpbmUgdW5zaWduZWQgVGV4dEJv
eDo6b2Zmc2V0Rm9yUG9zaXRpb24oZmxvYXQgeCkgY29uc3QKK3sKKyAgICByZXR1cm4gV1RGOjpz
d2l0Y2hPbihtX3BhdGhWYXJpYW50LCBbJl0oYXV0byYgcGF0aCkgeworICAgICAgICByZXR1cm4g
cGF0aC5vZmZzZXRGb3JQb3NpdGlvbih4KTsKKyAgICB9KTsKK30KKworaW5saW5lIGZsb2F0IFRl
eHRCb3g6OnBvc2l0aW9uRm9yT2Zmc2V0KHVuc2lnbmVkIG9mZnNldCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBbJl0oYXV0byYgcGF0aCkgeworICAg
ICAgICByZXR1cm4gcGF0aC5wb3NpdGlvbkZvck9mZnNldChvZmZzZXQpOworICAgIH0pOworfQor
CitpbmxpbmUgVGV4dEJveFNlbGVjdGFibGVSYW5nZSBUZXh0Qm94OjpzZWxlY3RhYmxlUmFuZ2Uo
KSBjb25zdAoreworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFsmXShh
dXRvJiBwYXRoKSB7CisgICAgICAgIHJldHVybiBwYXRoLnNlbGVjdGFibGVSYW5nZSgpOworICAg
IH0pOworfQorCitpbmxpbmUgVGV4dFJ1biBUZXh0Qm94OjpjcmVhdGVUZXh0UnVuKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBbJl0oYXV0byYgcGF0
aCkgeworICAgICAgICByZXR1cm4gcGF0aC5jcmVhdGVUZXh0UnVuKCk7CisgICAgfSk7Cit9CisK
K30KK30KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpJbmxpbmVJdGVy
YXRvcjo6VGV4dEJveCkKK3N0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpJbmxpbmVJ
dGVyYXRvcjo6Qm94JiBib3gpIHsgcmV0dXJuIGJveC5pc1RleHQoKTsgfQorU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19FTkQoKQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6
OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3IpCitzdGF0aWMgYm9vbCBpc1R5cGUoY29u
c3QgV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveEl0ZXJhdG9yJiBib3gpIHsgcmV0dXJuICFi
b3ggfHwgYm94LT5pc1RleHQoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdy
YXRpb25Db3ZlcmFnZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uQ292ZXJhZ2UuaAppbmRleCBiZDIzOWFkZDI0ZWIzNjI5ZWMxYjU2Y2EwMjc4
NjFlZDA0NTBiM2RmLi5mMzYwZWQ2MWRiZTc3OTMyZTVhODY5ZGE4MTI4NzkzZDk0ZDMxMDRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdy
YXRpb25Db3ZlcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9M
YXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmgKQEAgLTMzLDYgKzMzLDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyQmxvY2tGbG93OworY2xhc3MgUmVuZGVySW5saW5lOwog
CiBuYW1lc3BhY2UgTGF5b3V0SW50ZWdyYXRpb24gewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVM
YXlvdXQuY3BwCmluZGV4IGU2ZGJlZmY0OTZkN2JjNDJiYmExNGVmNTc2ZTAxNDdlZDgzODgyYmIu
LjQ4ODdhZWRkYzIxNmU5YzVhY2M2ODNlZTM3MDlhNjNmMGRhYTAwMzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlv
dXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvbkxpbmVMYXlvdXQuY3BwCkBAIC0zOTEsNyArMzkxLDcgQEAgSW5saW5lQ29udGVudCYg
TGluZUxheW91dDo6ZW5zdXJlSW5saW5lQ29udGVudCgpCiAgICAgcmV0dXJuICptX2lubGluZUNv
bnRlbnQ7CiB9CiAKLUlubGluZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3IgTGluZUxheW91dDo6
dGV4dFJ1bnNGb3IoY29uc3QgUmVuZGVyVGV4dCYgcmVuZGVyVGV4dCkgY29uc3QKK0lubGluZUl0
ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3IgTGluZUxheW91dDo6dGV4dEJveGVzRm9yKGNvbnN0IFJl
bmRlclRleHQmIHJlbmRlclRleHQpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lubGluZUNvbnRlbnQp
CiAgICAgICAgIHJldHVybiB7IH07CkBAIC00MDEsMTAgKzQwMSwxMCBAQCBJbmxpbmVJdGVyYXRv
cjo6VGV4dEJveEl0ZXJhdG9yIExpbmVMYXlvdXQ6OnRleHRSdW5zRm9yKGNvbnN0IFJlbmRlclRl
eHQmIHJlbmRlcgogICAgIGlmICghZmlyc3RJbmRleCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAot
ICAgIHJldHVybiBJbmxpbmVJdGVyYXRvcjo6dGV4dFJ1bkZvcigqbV9pbmxpbmVDb250ZW50LCAq
Zmlyc3RJbmRleCk7CisgICAgcmV0dXJuIElubGluZUl0ZXJhdG9yOjp0ZXh0Qm94Rm9yKCptX2lu
bGluZUNvbnRlbnQsICpmaXJzdEluZGV4KTsKIH0KIAotSW5saW5lSXRlcmF0b3I6OkJveEl0ZXJh
dG9yIExpbmVMYXlvdXQ6OnJ1bkZvcihjb25zdCBSZW5kZXJFbGVtZW50JiByZW5kZXJFbGVtZW50
KSBjb25zdAorSW5saW5lSXRlcmF0b3I6OkJveEl0ZXJhdG9yIExpbmVMYXlvdXQ6OmJveEZvcihj
b25zdCBSZW5kZXJFbGVtZW50JiByZW5kZXJFbGVtZW50KSBjb25zdAogewogICAgIGlmICghbV9p
bmxpbmVDb250ZW50KQogICAgICAgICByZXR1cm4geyB9OwpAQCAtNDE0LDcgKzQxNCw3IEBAIElu
bGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvciBMaW5lTGF5b3V0OjpydW5Gb3IoY29uc3QgUmVuZGVy
RWxlbWVudCYgcmVuZGVyRWxlbWVuCiAgICAgaWYgKCFmaXJzdEluZGV4KQogICAgICAgICByZXR1
cm4geyB9OwogCi0gICAgcmV0dXJuIElubGluZUl0ZXJhdG9yOjpydW5Gb3IoKm1faW5saW5lQ29u
dGVudCwgKmZpcnN0SW5kZXgpOworICAgIHJldHVybiBJbmxpbmVJdGVyYXRvcjo6Ym94Rm9yKCpt
X2lubGluZUNvbnRlbnQsICpmaXJzdEluZGV4KTsKIH0KIAogSW5saW5lSXRlcmF0b3I6OkxpbmVJ
dGVyYXRvciBMaW5lTGF5b3V0OjpmaXJzdExpbmUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5o
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGlu
ZUxheW91dC5oCmluZGV4IGEzM2QwNmViMzg4ODIzNzA2NTAyNmY1NDkyZTk4MTE4NWVlMWE1ZTIu
LjhjZjNhODRlM2QwNzg4YmQyYjhkMmNmOWRiOWIzMGZlZDllYWI0YjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlv
dXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdy
YXRpb25MaW5lTGF5b3V0LmgKQEAgLTI4LDggKzI4LDggQEAKICNpZiBFTkFCTEUoTEFZT1VUX0ZP
Uk1BVFRJTkdfQ09OVEVYVCkKIAogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgotI2luY2x1ZGUgIklu
bGluZUl0ZXJhdG9yQm94LmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lLmgiCisjaW5j
bHVkZSAiSW5saW5lSXRlcmF0b3JUZXh0Qm94LmgiCiAjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRp
b25Cb3hUcmVlLmgiCiAjaW5jbHVkZSAiTGF5b3V0UG9pbnQuaCIKICNpbmNsdWRlICJMYXlvdXRT
dGF0ZS5oIgpAQCAtOTYsOCArOTYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYWludChQYWludElu
Zm8mLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpOwogICAgIGJvb2wgaGl0VGVzdChj
b25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRp
b24mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24p
OwogCi0gICAgSW5saW5lSXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvciB0ZXh0UnVuc0Zvcihjb25z
dCBSZW5kZXJUZXh0JikgY29uc3Q7Ci0gICAgSW5saW5lSXRlcmF0b3I6OkJveEl0ZXJhdG9yIHJ1
bkZvcihjb25zdCBSZW5kZXJFbGVtZW50JikgY29uc3Q7CisgICAgSW5saW5lSXRlcmF0b3I6OlRl
eHRCb3hJdGVyYXRvciB0ZXh0Qm94ZXNGb3IoY29uc3QgUmVuZGVyVGV4dCYpIGNvbnN0OworICAg
IElubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvciBib3hGb3IoY29uc3QgUmVuZGVyRWxlbWVudCYp
IGNvbnN0OwogICAgIElubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3IgZmlyc3RMaW5lKCkgY29u
c3Q7CiAgICAgSW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvciBsYXN0TGluZSgpIGNvbnN0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2FyZXRSZWN0Q29tcHV0YXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NhcmV0UmVjdENvbXB1dGF0aW9uLmNw
cAppbmRleCA5OTgwODc4NDE4NDNlNWU5MzdiNjc2MDUwMDM0MmVjNWNjY2M0ZTMyLi4zYjcwMmE5
N2YwNGExZDAyZDE4ZjUzODQ2NjJhNWIzNzM5ZjQ1Zjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvQ2FyZXRSZWN0Q29tcHV0YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9DYXJldFJlY3RDb21wdXRhdGlvbi5jcHAKQEAgLTI3LDggKzI3LDggQEAK
ICNpbmNsdWRlICJDYXJldFJlY3RDb21wdXRhdGlvbi5oIgogCiAjaW5jbHVkZSAiRWRpdGluZy5o
IgotI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yQm94LmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0
b3JMaW5lLmgiCisjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JUZXh0Qm94LmgiCiAjaW5jbHVkZSAi
UmVuZGVyQmxvY2tGbG93LmgiCiAjaW5jbHVkZSAiUmVuZGVySW5saW5lLmgiCiAjaW5jbHVkZSAi
UmVuZGVyTGluZUJyZWFrLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
TGVnYWN5SW5saW5lVGV4dEJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlu
bGluZVRleHRCb3guaAppbmRleCA4YTVjZWY2MWY2NDJjMmFlN2E2MmYyZDk2M2RlODNiNTcxMTNh
ODVjLi42NDRkOTI1YjRhNTBhODRhMGMzMGNlZDY0NWZlN2E4MjhjZGQyYmQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lVGV4dEJveC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVUZXh0Qm94LmgKQEAgLTMyLDcgKzMy
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVuZGVyQ29tYmluZVRleHQ7CiAKIG5h
bWVzcGFjZSBJbmxpbmVJdGVyYXRvciB7Ci1jbGFzcyBCb3hJdGVyYXRvckxlZ2FjeVBhdGg7Citj
bGFzcyBCb3hMZWdhY3lQYXRoOwogfQogCiBjbGFzcyBMZWdhY3lJbmxpbmVUZXh0Qm94IDogcHVi
bGljIExlZ2FjeUlubGluZUJveCB7CkBAIC0xNTQsNyArMTU0LDcgQEAgcHVibGljOgogICAgIGJv
b2wgaGFzTWFya2VycygpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBJbmxp
bmVJdGVyYXRvcjo6Qm94SXRlcmF0b3JMZWdhY3lQYXRoOworICAgIGZyaWVuZCBjbGFzcyBJbmxp
bmVJdGVyYXRvcjo6Qm94TGVnYWN5UGF0aDsKICAgICBmcmllbmQgY2xhc3MgVGV4dEJveFBhaW50
ZXI7CiAKICAgICBjb25zdCBSZW5kZXJDb21iaW5lVGV4dCogY29tYmluZWRUZXh0KCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5TGluZUxheW91dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5TGluZUxheW91dC5jcHAKaW5kZXgg
ZWU4YjA0NGNhNjlkM2RhYzJhNTNmN2JlNmQzZTJhODgwMTU1MWRhZC4uZWE3ZWUwMGQ5NjFlNTk3
OTJiZTFkMDRjNTMzMzEzYTk5YWU0ZDFiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0xlZ2FjeUxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9MZWdhY3lMaW5lTGF5b3V0LmNwcApAQCAtNTQ3LDcgKzU0Nyw3IEBAIHN0YXRpYyBpbmxpbmUg
dm9pZCBzZXRMb2dpY2FsV2lkdGhGb3JUZXh0UnVuKExlZ2FjeVJvb3RJbmxpbmVCb3gqIGxpbmVC
b3gsIEJpZGlSCiAKICAgICAvLyBJbmNsdWRlIHRleHQgZGVjb3JhdGlvbiB2aXN1YWwgb3ZlcmZs
b3cgYXMgcGFydCBvZiB0aGUgZ2x5cGggb3ZlcmZsb3cuCiAgICAgaWYgKCFyZW5kZXJlci5zdHls
ZSgpLnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCkuaXNFbXB0eSgpKQotICAgICAgICBnbHlwaE92
ZXJmbG93LmV4dGVuZFRvKHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMocnVuLT5ib3goKS0+
bGluZVN0eWxlKCksIElubGluZUl0ZXJhdG9yOjp0ZXh0UnVuRm9yKGRvd25jYXN0PExlZ2FjeUlu
bGluZVRleHRCb3g+KHJ1bi0+Ym94KCkpKSkpOworICAgICAgICBnbHlwaE92ZXJmbG93LmV4dGVu
ZFRvKHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMocnVuLT5ib3goKS0+bGluZVN0eWxlKCks
IElubGluZUl0ZXJhdG9yOjp0ZXh0Qm94Rm9yKGRvd25jYXN0PExlZ2FjeUlubGluZVRleHRCb3g+
KHJ1bi0+Ym94KCkpKSkpOwogCiAgICAgaWYgKCFnbHlwaE92ZXJmbG93LmlzRW1wdHkoKSkgewog
ICAgICAgICBBU1NFUlQocnVuLT5ib3goKS0+YmVoYXZlc0xpa2VUZXh0KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCmluZGV4IDA2Y2NmMGZiOGZmOTgxYTBk
YmE3NzdlNjFlZTJjNjI5OGEyMDQ0NDAuLjk4MmZlYzQ0MDY0ZWM1OGY1YTYyY2E2YTkwM2M3MTQy
MTc1ZGRmNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAK
QEAgLTQwLDggKzQwLDggQEAKICNpbmNsdWRlICJIVE1MSHRtbEVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0jaW5jbHVkZSAi
SW5saW5lSXRlcmF0b3JCb3guaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmUuaCIKKyNp
bmNsdWRlICJJbmxpbmVJdGVyYXRvclRleHRCb3guaCIKICNpbmNsdWRlICJMZW5ndGhGdW5jdGlv
bnMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtMTY0NCwx
MyArMTY0NCwxMyBAQCBib29sIFJlbmRlckVsZW1lbnQ6OmdldExlYWRpbmdDb3JuZXIoRmxvYXRQ
b2ludCYgcG9pbnQsIGJvb2wmIGluc2lkZUZpeGVkKSBjb25zdAogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAocC0+bm9kZSgpICYmIHAtPm5vZGUoKSA9
PSBlbGVtZW50KCkgJiYgaXM8UmVuZGVyVGV4dD4oKm8pICYmICFJbmxpbmVJdGVyYXRvcjo6Zmly
c3RUZXh0UnVuRm9yKGRvd25jYXN0PFJlbmRlclRleHQ+KCpvKSkpIHsKKyAgICAgICAgaWYgKHAt
Pm5vZGUoKSAmJiBwLT5ub2RlKCkgPT0gZWxlbWVudCgpICYmIGlzPFJlbmRlclRleHQ+KCpvKSAm
JiAhSW5saW5lSXRlcmF0b3I6OmZpcnN0VGV4dEJveEZvcihkb3duY2FzdDxSZW5kZXJUZXh0Pigq
bykpKSB7CiAgICAgICAgICAgICAvLyBkbyBub3RoaW5nIC0gc2tpcCB1bnJlbmRlcmVkIHdoaXRl
c3BhY2UgdGhhdCBpcyBhIGNoaWxkIG9yIG5leHQgc2libGluZyBvZiB0aGUgYW5jaG9yCiAgICAg
ICAgIH0gZWxzZSBpZiAoaXM8UmVuZGVyVGV4dD4oKm8pIHx8IG8tPmlzUmVwbGFjZWQoKSkgewog
ICAgICAgICAgICAgcG9pbnQgPSBGbG9hdFBvaW50KCk7CiAgICAgICAgICAgICBpZiAoaXM8UmVu
ZGVyVGV4dD4oKm8pKSB7CiAgICAgICAgICAgICAgICAgYXV0byYgdGV4dFJlbmRlcmVyID0gZG93
bmNhc3Q8UmVuZGVyVGV4dD4oKm8pOwotICAgICAgICAgICAgICAgIGlmIChhdXRvIHJ1biA9IElu
bGluZUl0ZXJhdG9yOjpmaXJzdFRleHRSdW5Gb3IodGV4dFJlbmRlcmVyKSkKKyAgICAgICAgICAg
ICAgICBpZiAoYXV0byBydW4gPSBJbmxpbmVJdGVyYXRvcjo6Zmlyc3RUZXh0Qm94Rm9yKHRleHRS
ZW5kZXJlcikpCiAgICAgICAgICAgICAgICAgICAgIHBvaW50Lm1vdmUodGV4dFJlbmRlcmVyLmxp
bmVzQm91bmRpbmdCb3goKS54KCksIHJ1bi0+bGluZSgpLT50b3AoKSk7CiAgICAgICAgICAgICB9
IGVsc2UgaWYgKGlzPFJlbmRlckJveD4oKm8pKQogICAgICAgICAgICAgICAgIHBvaW50Lm1vdmVC
eShkb3duY2FzdDxSZW5kZXJCb3g+KCpvKS5sb2NhdGlvbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuY3BwCmluZGV4IGFjMjRjNTZhZGFlYzJiOTFmYTFmY2UzODY1ZTU3
MmRlMWY1NTk4YWMuLjBiOTgzY2VjYjliZTI5ZjM4Nzk5NjgwYTYxN2RlMTY4ODA5NzMzNTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtOTEsNyArOTEsNyBA
QCB2b2lkIFJlbmRlckltYWdlOjpjb2xsZWN0U2VsZWN0aW9uR2VvbWV0cmllcyhWZWN0b3I8U2Vs
ZWN0aW9uR2VvbWV0cnk+JiBnZW9tZXRyaQogICAgIGJvb2wgaXNGaXJzdE9uTGluZSA9IGZhbHNl
OwogICAgIGJvb2wgaXNMYXN0T25MaW5lID0gZmFsc2U7CiAKLSAgICBhdXRvIHJ1biA9IElubGlu
ZUl0ZXJhdG9yOjpydW5Gb3IoKnRoaXMpOworICAgIGF1dG8gcnVuID0gSW5saW5lSXRlcmF0b3I6
OmJveEZvcigqdGhpcyk7CiAgICAgaWYgKCFydW4pIHsKICAgICAgICAgLy8gVGhpcyBpcyBhIGJs
b2NrIGltYWdlLgogICAgICAgICBpbWFnZVJlY3QgPSBJbnRSZWN0KDAsIDAsIHdpZHRoKCksIGhl
aWdodCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5l
QnJlYWsuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAK
aW5kZXggNzE4ODI2MzEwNWViN2Y4ZDA1MzMzNDM4NTRlMzFjMzgwMjAxNTc1OC4uYzFjOTViMTA5
NDQwMjQyMDk1NDExYTViZTRjNTk4NzNmYWZhOTAxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKQEAgLTE0NCw3ICsxNDQsNyBAQCBWaXNpYmxlUG9z
aXRpb24gUmVuZGVyTGluZUJyZWFrOjpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50
JiwgY29uc3QgUmVuZAogCiBJbnRSZWN0IFJlbmRlckxpbmVCcmVhazo6bGluZXNCb3VuZGluZ0Jv
eCgpIGNvbnN0CiB7Ci0gICAgYXV0byBydW4gPSBJbmxpbmVJdGVyYXRvcjo6cnVuRm9yKCp0aGlz
KTsKKyAgICBhdXRvIHJ1biA9IElubGluZUl0ZXJhdG9yOjpib3hGb3IoKnRoaXMpOwogICAgIGlm
ICghcnVuKQogICAgICAgICByZXR1cm4geyB9OwogCkBAIC0xNTMsNyArMTUzLDcgQEAgSW50UmVj
dCBSZW5kZXJMaW5lQnJlYWs6OmxpbmVzQm91bmRpbmdCb3goKSBjb25zdAogCiB2b2lkIFJlbmRl
ckxpbmVCcmVhazo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBjb25zdCBM
YXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0CiB7Ci0gICAgYXV0byBib3ggPSBJ
bmxpbmVJdGVyYXRvcjo6cnVuRm9yKCp0aGlzKTsKKyAgICBhdXRvIGJveCA9IElubGluZUl0ZXJh
dG9yOjpib3hGb3IoKnRoaXMpOwogICAgIGlmICghYm94KQogICAgICAgICByZXR1cm47CiAKQEAg
LTE2Myw3ICsxNjMsNyBAQCB2b2lkIFJlbmRlckxpbmVCcmVhazo6YWJzb2x1dGVSZWN0cyhWZWN0
b3I8SW50UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYQogCiB2b2lkIFJlbmRlckxp
bmVCcmVhazo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdh
c0ZpeGVkKSBjb25zdAogewotICAgIGF1dG8gYm94ID0gSW5saW5lSXRlcmF0b3I6OnJ1bkZvcigq
dGhpcyk7CisgICAgYXV0byBib3ggPSBJbmxpbmVJdGVyYXRvcjo6Ym94Rm9yKCp0aGlzKTsKICAg
ICBpZiAoIWJveCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xODAsNyArMTgwLDcgQEAgdm9pZCBS
ZW5kZXJMaW5lQnJlYWs6OnVwZGF0ZUZyb21TdHlsZSgpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIHZvaWQgUmVuZGVyTGluZUJyZWFrOjpjb2xsZWN0U2VsZWN0aW9uR2VvbWV0cmllcyhWZWN0
b3I8U2VsZWN0aW9uR2VvbWV0cnk+JiByZWN0cywgdW5zaWduZWQsIHVuc2lnbmVkKQogewotICAg
IGF1dG8gcnVuID0gSW5saW5lSXRlcmF0b3I6OnJ1bkZvcigqdGhpcyk7CisgICAgYXV0byBydW4g
PSBJbmxpbmVJdGVyYXRvcjo6Ym94Rm9yKCp0aGlzKTsKIAogICAgIGlmICghcnVuKQogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVw
bGFjZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcApp
bmRleCA5ZDI5YjczZjRkZGRmZTVlOGYzZTYwNGY5N2YzZGY3ODNmMjU3NWZhLi43ZWU5NDQyNmNj
NTJiYWRiNDBmZmM0Y2I3Y2ZiZDEyNzc0YmNlNzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKQEAgLTY4OSw3ICs2ODksNyBAQCB2b2lkIFJlbmRlclJl
cGxhY2VkOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpCiBWaXNpYmxlUG9zaXRpb24g
UmVuZGVyUmVwbGFjZWQ6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50
LCBjb25zdCBSZW5kZXJGcmFnbWVudENvbnRhaW5lciogZnJhZ21lbnQpCiB7CiAgICAgYXV0byBb
dG9wLCBib3R0b21dID0gWyZdIHsKLSAgICAgICAgaWYgKGF1dG8gcnVuID0gSW5saW5lSXRlcmF0
b3I6OnJ1bkZvcigqdGhpcykpIHsKKyAgICAgICAgaWYgKGF1dG8gcnVuID0gSW5saW5lSXRlcmF0
b3I6OmJveEZvcigqdGhpcykpIHsKICAgICAgICAgICAgIGF1dG8gbGluZSA9IHJ1bi0+bGluZSgp
OwogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGxpbmUtPnNlbGVjdGlvblRvcEZv
ckhpdFRlc3RpbmcoKSwgbGluZS0+c2VsZWN0aW9uQm90dG9tKCkpOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKaW5kZXggZmM0NmQ1ZDBlZmFjZTI5OTQw
Y2YxNjIzMmJhNDlhZGU4M2I3OWQ4YS4uZGM1MmVmMjIxZTFhZWZhZjUyOTY3ZGNkMzAzY2YzNjNi
OTllM2FlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcApAQCAtMzUs
OCArMzUsOCBAQAogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJ
ZGlvbXMuaCIKICNpbmNsdWRlICJIeXBoZW5hdGlvbi5oIgotI2luY2x1ZGUgIklubGluZUl0ZXJh
dG9yQm94LmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lLmgiCisjaW5jbHVkZSAiSW5s
aW5lSXRlcmF0b3JUZXh0Qm94LmgiCiAjaW5jbHVkZSAiSW5saW5lUnVuQW5kT2Zmc2V0LmgiCiAj
aW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmgiCiAjaW5jbHVkZSAiTGVnYWN5
RWxsaXBzaXNCb3guaCIKQEAgLTMwNyw3ICszMDcsNyBAQCBTdHJpbmcgUmVuZGVyVGV4dDo6b3Jp
Z2luYWxUZXh0KCkgY29uc3QKIAogdm9pZCBSZW5kZXJUZXh0OjphYnNvbHV0ZVJlY3RzKFZlY3Rv
cjxJbnRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkg
Y29uc3QKIHsKLSAgICBmb3IgKGF1dG8mIHJ1biA6IElubGluZUl0ZXJhdG9yOjp0ZXh0UnVuc0Zv
cigqdGhpcykpIHsKKyAgICBmb3IgKGF1dG8mIHJ1biA6IElubGluZUl0ZXJhdG9yOjp0ZXh0Qm94
ZXNGb3IoKnRoaXMpKSB7CiAgICAgICAgIGF1dG8gcmVjdCA9IHJ1bi5yZWN0KCk7CiAgICAgICAg
IHJlY3RzLmFwcGVuZChlbmNsb3NpbmdJbnRSZWN0KEZsb2F0UmVjdChhY2N1bXVsYXRlZE9mZnNl
dCArIHJlY3QubG9jYXRpb24oKSwgcmVjdC5zaXplKCkpKSk7CiAgICAgfQpAQCAtMzI2LDcgKzMy
Niw3IEBAIFZlY3RvcjxJbnRSZWN0PiBSZW5kZXJUZXh0OjphYnNvbHV0ZVJlY3RzRm9yUmFuZ2Uo
dW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCwKIC8vIEZ1bGwgYW5ub3RhdGlvbnMgYXJlIGFk
ZGVkIGluIHRoaXMgY2xhc3MuCiB2b2lkIFJlbmRlclRleHQ6OmNvbGxlY3RTZWxlY3Rpb25HZW9t
ZXRyaWVzKFZlY3RvcjxTZWxlY3Rpb25HZW9tZXRyeT4mIHJlY3RzLCB1bnNpZ25lZCBzdGFydCwg
dW5zaWduZWQgZW5kKQogewotICAgIGZvciAoYXV0byBydW4gPSBJbmxpbmVJdGVyYXRvcjo6Zmly
c3RUZXh0UnVuRm9yKCp0aGlzKTsgcnVuOyBydW4gPSBydW4udHJhdmVyc2VOZXh0VGV4dFJ1bigp
KSB7CisgICAgZm9yIChhdXRvIHJ1biA9IElubGluZUl0ZXJhdG9yOjpmaXJzdFRleHRCb3hGb3Io
KnRoaXMpOyBydW47IHJ1biA9IHJ1bi50cmF2ZXJzZU5leHRUZXh0Qm94KCkpIHsKICAgICAgICAg
TGF5b3V0UmVjdCByZWN0OwogICAgICAgICBpZiAoc3RhcnQgPD0gcnVuLT5zdGFydCgpICYmIHJ1
bi0+ZW5kKCkgPD0gZW5kKQogICAgICAgICAgICAgcmVjdCA9IHJ1bi0+c2VsZWN0aW9uUmVjdChz
dGFydCwgZW5kKTsKQEAgLTQyOCw3ICs0MjgsNyBAQCBlbnVtIGNsYXNzIENsaXBwaW5nT3B0aW9u
IHsgTm9DbGlwcGluZywgQ2xpcFRvRWxsaXBzaXMgfTsKIHN0YXRpYyBWZWN0b3I8RmxvYXRRdWFk
PiBjb2xsZWN0QWJzb2x1dGVRdWFkcyhjb25zdCBSZW5kZXJUZXh0JiB0ZXh0UmVuZGVyZXIsIGJv
b2wqIHdhc0ZpeGVkLCBDbGlwcGluZ09wdGlvbiBjbGlwcGluZykKIHsKICAgICBWZWN0b3I8Rmxv
YXRRdWFkPiBxdWFkczsKLSAgICBmb3IgKGF1dG8mIHJ1biA6IElubGluZUl0ZXJhdG9yOjp0ZXh0
UnVuc0Zvcih0ZXh0UmVuZGVyZXIpKSB7CisgICAgZm9yIChhdXRvJiBydW4gOiBJbmxpbmVJdGVy
YXRvcjo6dGV4dEJveGVzRm9yKHRleHRSZW5kZXJlcikpIHsKICAgICAgICAgYXV0byBib3VuZGFy
aWVzID0gYm91bmRhcmllc0ZvclRleHRSdW4ocnVuKTsKIAogICAgICAgICAvLyBTaG9ydGVuIHRo
ZSB3aWR0aCBvZiB0aGlzIHRleHQgYm94IGlmIGl0IGVuZHMgaW4gYW4gZWxsaXBzaXMuCkBAIC00
OTAsNyArNDkwLDcgQEAgVmVjdG9yPEZsb2F0UXVhZD4gUmVuZGVyVGV4dDo6YWJzb2x1dGVRdWFk
c0ZvclJhbmdlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQKICAgICBlbmQgPSBzdGQ6Om1p
bihlbmQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihJTlRfTUFYKSk7CiAKICAgICBWZWN0b3I8Rmxv
YXRRdWFkPiBxdWFkczsKLSAgICBmb3IgKGF1dG8mIHJ1biA6IElubGluZUl0ZXJhdG9yOjp0ZXh0
UnVuc0ZvcigqdGhpcykpIHsKKyAgICBmb3IgKGF1dG8mIHJ1biA6IElubGluZUl0ZXJhdG9yOjp0
ZXh0Qm94ZXNGb3IoKnRoaXMpKSB7CiAgICAgICAgIGlmIChpZ25vcmVFbXB0eVRleHRTZWxlY3Rp
b25zICYmICFydW4uc2VsZWN0YWJsZVJhbmdlKCkuaW50ZXJzZWN0cyhzdGFydCwgZW5kKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoc3RhcnQgPD0gcnVuLnN0YXJ0KCkgJiYg
cnVuLmVuZCgpIDw9IGVuZCkgewpAQCAtNjU0LDcgKzY1NCw3IEBAIHN0YXRpYyBWaXNpYmxlUG9z
aXRpb24gY3JlYXRlVmlzaWJsZVBvc2l0aW9uQWZ0ZXJBZGp1c3RpbmdPZmZzZXRGb3JCaURpKGNv
bnN0IEluCiAKIFZpc2libGVQb3NpdGlvbiBSZW5kZXJUZXh0Ojpwb3NpdGlvbkZvclBvaW50KGNv
bnN0IExheW91dFBvaW50JiBwb2ludCwgY29uc3QgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqKQog
ewotICAgIGF1dG8gZmlyc3RSdW4gPSBJbmxpbmVJdGVyYXRvcjo6Zmlyc3RUZXh0UnVuRm9yKCp0
aGlzKTsKKyAgICBhdXRvIGZpcnN0UnVuID0gSW5saW5lSXRlcmF0b3I6OmZpcnN0VGV4dEJveEZv
cigqdGhpcyk7CiAKICAgICBpZiAoIWZpcnN0UnVuIHx8ICF0ZXh0KCkubGVuZ3RoKCkpCiAgICAg
ICAgIHJldHVybiBjcmVhdGVWaXNpYmxlUG9zaXRpb24oMCwgQWZmaW5pdHk6OkRvd25zdHJlYW0p
OwpAQCAtNjY0LDkgKzY2NCw5IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJUZXh0Ojpwb3NpdGlv
bkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgY29uc3QgUmVuCiAgICAgYm9vbCBi
bG9ja3NBcmVGbGlwcGVkID0gc3R5bGUoKS5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpOwog
CiAgICAgSW5saW5lSXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvciBsYXN0UnVuOwotICAgIGZvciAo
YXV0byBydW4gPSBmaXJzdFJ1bjsgcnVuOyBydW4udHJhdmVyc2VOZXh0VGV4dFJ1bigpKSB7Cisg
ICAgZm9yIChhdXRvIHJ1biA9IGZpcnN0UnVuOyBydW47IHJ1bi50cmF2ZXJzZU5leHRUZXh0Qm94
KCkpIHsKICAgICAgICAgaWYgKHJ1bi0+aXNMaW5lQnJlYWsoKSAmJiAhcnVuLT5wcmV2aW91c09u
TGluZSgpICYmIHJ1bi0+bmV4dE9uTGluZSgpICYmICFydW4tPm5leHRPbkxpbmUoKS0+aXNMaW5l
QnJlYWsoKSkKLSAgICAgICAgICAgIHJ1bi50cmF2ZXJzZU5leHRUZXh0UnVuKCk7CisgICAgICAg
ICAgICBydW4udHJhdmVyc2VOZXh0VGV4dEJveCgpOwogCiAgICAgICAgIGF1dG8gbGluZSA9IHJ1
bi0+bGluZSgpOwogICAgICAgICBMYXlvdXRVbml0IHRvcCA9IHN0ZDo6bWluKGxpbmUtPnNlbGVj
dGlvblRvcEZvckhpdFRlc3RpbmcoKSwgbGluZS0+dG9wKCkpOwpAQCAtMTI3Miw3ICsxMjcyLDcg
QEAgVmVjdG9yPHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+PiBSZW5kZXJUZXh0OjpkcmFn
Z2VkQ29udGVudFJhbmdlc0JldHdlZW5PZmYKIAogSW50UG9pbnQgUmVuZGVyVGV4dDo6Zmlyc3RS
dW5Mb2NhdGlvbigpIGNvbnN0CiB7Ci0gICAgYXV0byBmaXJzdCA9IElubGluZUl0ZXJhdG9yOjpm
aXJzdFRleHRSdW5Gb3IoKnRoaXMpOworICAgIGF1dG8gZmlyc3QgPSBJbmxpbmVJdGVyYXRvcjo6
Zmlyc3RUZXh0Qm94Rm9yKCp0aGlzKTsKICAgICBpZiAoIWZpcnN0KQogICAgICAgICByZXR1cm4g
eyB9OwogICAgIHJldHVybiBJbnRQb2ludChmaXJzdC0+cmVjdCgpLmxvY2F0aW9uKCkpOwpAQCAt
MTU3Niw3ICsxNTc2LDcgQEAgZmxvYXQgUmVuZGVyVGV4dDo6d2lkdGgodW5zaWduZWQgZnJvbSwg
dW5zaWduZWQgbGVuLCBjb25zdCBGb250Q2FzY2FkZSYgZiwgZmxvYXQKIAogSW50UmVjdCBSZW5k
ZXJUZXh0OjpsaW5lc0JvdW5kaW5nQm94KCkgY29uc3QKIHsKLSAgICBhdXRvIGZpcnN0ID0gSW5s
aW5lSXRlcmF0b3I6OmZpcnN0VGV4dFJ1bkZvcigqdGhpcyk7CisgICAgYXV0byBmaXJzdCA9IElu
bGluZUl0ZXJhdG9yOjpmaXJzdFRleHRCb3hGb3IoKnRoaXMpOwogICAgIGlmICghZmlyc3QpCiAg
ICAgICAgIHJldHVybiB7IH07CiAKQEAgLTE2MzQsNyArMTYzNCw3IEBAIExheW91dFJlY3QgUmVu
ZGVyVGV4dDo6Y29sbGVjdFNlbGVjdGlvbkdlb21ldHJpZXNGb3JMaW5lQm94ZXMoY29uc3QgUmVu
ZGVyTGF5ZXJNCiAKICAgICBMYXlvdXRSZWN0IHJlc3VsdFJlY3Q7CiAKLSAgICBmb3IgKGF1dG8m
IHJ1biA6IElubGluZUl0ZXJhdG9yOjp0ZXh0UnVuc0ZvcigqdGhpcykpIHsKKyAgICBmb3IgKGF1
dG8mIHJ1biA6IElubGluZUl0ZXJhdG9yOjp0ZXh0Qm94ZXNGb3IoKnRoaXMpKSB7CiAgICAgICAg
IExheW91dFJlY3QgcmVjdDsKICAgICAgICAgcmVjdC51bml0ZShydW4uc2VsZWN0aW9uUmVjdChz
dGFydE9mZnNldCwgZW5kT2Zmc2V0KSk7CiAgICAgICAgIHJlY3QudW5pdGUoZWxsaXBzaXNSZWN0
Rm9yVGV4dFJ1bihydW4sIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpKTsKQEAgLTE2NjQsNyArMTY2
NCw3IEBAIExheW91dFJlY3QgUmVuZGVyVGV4dDo6c2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoY29u
c3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwCiAKIGludCBSZW5kZXJUZXh0OjpjYXJldE1p
bk9mZnNldCgpIGNvbnN0CiB7Ci0gICAgYXV0byBmaXJzdCA9IElubGluZUl0ZXJhdG9yOjpmaXJz
dFRleHRSdW5Gb3IoKnRoaXMpOworICAgIGF1dG8gZmlyc3QgPSBJbmxpbmVJdGVyYXRvcjo6Zmly
c3RUZXh0Qm94Rm9yKCp0aGlzKTsKICAgICBpZiAoIWZpcnN0KQogICAgICAgICByZXR1cm4gMDsK
IApAQCAtMTY3Nyw3ICsxNjc3LDcgQEAgaW50IFJlbmRlclRleHQ6OmNhcmV0TWluT2Zmc2V0KCkg
Y29uc3QKIAogaW50IFJlbmRlclRleHQ6OmNhcmV0TWF4T2Zmc2V0KCkgY29uc3QKIHsKLSAgICBh
dXRvIGZpcnN0ID0gSW5saW5lSXRlcmF0b3I6OmZpcnN0VGV4dFJ1bkZvcigqdGhpcyk7CisgICAg
YXV0byBmaXJzdCA9IElubGluZUl0ZXJhdG9yOjpmaXJzdFRleHRCb3hGb3IoKnRoaXMpOwogICAg
IGlmICghZmlyc3QpCiAgICAgICAgIHJldHVybiB0ZXh0KCkubGVuZ3RoKCk7CiAKQEAgLTE2OTEs
NyArMTY5MSw3IEBAIGludCBSZW5kZXJUZXh0OjpjYXJldE1heE9mZnNldCgpIGNvbnN0CiB1bnNp
Z25lZCBSZW5kZXJUZXh0Ojpjb3VudFJlbmRlcmVkQ2hhcmFjdGVyT2Zmc2V0c1VudGlsKHVuc2ln
bmVkIG9mZnNldCkgY29uc3QKIHsKICAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwotICAgIGZvciAo
YXV0byYgcnVuIDogSW5saW5lSXRlcmF0b3I6OnRleHRSdW5zRm9yKCp0aGlzKSkgeworICAgIGZv
ciAoYXV0byYgcnVuIDogSW5saW5lSXRlcmF0b3I6OnRleHRCb3hlc0ZvcigqdGhpcykpIHsKICAg
ICAgICAgYXV0byBzdGFydCA9IHJ1bi5zdGFydCgpOwogICAgICAgICBhdXRvIGxlbmd0aCA9IHJ1
bi5sZW5ndGgoKTsKICAgICAgICAgaWYgKG9mZnNldCA8IHN0YXJ0KQpAQCAtMTcwOCw3ICsxNzA4
LDcgQEAgdW5zaWduZWQgUmVuZGVyVGV4dDo6Y291bnRSZW5kZXJlZENoYXJhY3Rlck9mZnNldHNV
bnRpbCh1bnNpZ25lZCBvZmZzZXQpIGNvbnN0CiBlbnVtIGNsYXNzIE9mZnNldFR5cGUgeyBDaGFy
YWN0ZXIsIENhcmV0IH07CiBzdGF0aWMgYm9vbCBjb250YWluc09mZnNldChjb25zdCBSZW5kZXJU
ZXh0JiB0ZXh0LCB1bnNpZ25lZCBvZmZzZXQsIE9mZnNldFR5cGUgdHlwZSkKIHsKLSAgICBmb3Ig
KGF1dG8gYm94ID0gSW5saW5lSXRlcmF0b3I6OmZpcnN0VGV4dFJ1bkluVGV4dE9yZGVyRm9yKHRl
eHQpOyBib3g7IGJveC50cmF2ZXJzZU5leHRUZXh0UnVuSW5UZXh0T3JkZXIoKSkgeworICAgIGZv
ciAoYXV0byBib3ggPSBJbmxpbmVJdGVyYXRvcjo6Zmlyc3RUZXh0Qm94SW5UZXh0T3JkZXJGb3Io
dGV4dCk7IGJveDsgYm94LnRyYXZlcnNlTmV4dFRleHRCb3hJblRleHRPcmRlcigpKSB7CiAgICAg
ICAgIGF1dG8gc3RhcnQgPSBib3gtPnN0YXJ0KCk7CiAgICAgICAgIGlmIChvZmZzZXQgPCBzdGFy
dCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE3MzcsNyArMTczNyw3IEBAIGJvb2wg
UmVuZGVyVGV4dDo6Y29udGFpbnNDYXJldE9mZnNldCh1bnNpZ25lZCBvZmZzZXQpIGNvbnN0CiAK
IGJvb2wgUmVuZGVyVGV4dDo6aGFzUmVuZGVyZWRUZXh0KCkgY29uc3QKIHsKLSAgICBmb3IgKGF1
dG8mIGJveCA6IElubGluZUl0ZXJhdG9yOjp0ZXh0UnVuc0ZvcigqdGhpcykpIHsKKyAgICBmb3Ig
KGF1dG8mIGJveCA6IElubGluZUl0ZXJhdG9yOjp0ZXh0Qm94ZXNGb3IoKnRoaXMpKSB7CiAgICAg
ICAgIGlmIChib3gubGVuZ3RoKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggZDEw
YTRkMjgyODA4MDc3MDA0NzBkOGNmMzlhZTcwMGU1YjRiODA2OS4uYjc4MTczMWM4MmVlZWM5MTY0
NzA1OGEwMTg5MmY2MmZiZjg1NDI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUcmVlQXNUZXh0LmNwcApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkhUTUxFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFNwYW5FbGVtZW50
LmgiCi0jaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JCb3guaCIKKyNpbmNsdWRlICJJbmxpbmVJdGVy
YXRvclRleHRCb3guaCIKICNpbmNsdWRlICJMZWdhY3lJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlByaW50Q29udGV4dC5oIgpAQCAtMjQwLDEzICsyNDAs
MTMgQEAgdm9pZCBSZW5kZXJUcmVlQXNUZXh0Ojp3cml0ZVJlbmRlck9iamVjdChUZXh0U3RyZWFt
JiB0cywgY29uc3QgUmVuZGVyT2JqZWN0JiBvLAogICAgICAgICAvLyBtYW55IHRlc3QgcmVzdWx0
cy4KICAgICAgICAgY29uc3QgUmVuZGVyVGV4dCYgdGV4dCA9IGRvd25jYXN0PFJlbmRlclRleHQ+
KG8pOwogICAgICAgICByID0gSW50UmVjdCh0ZXh0LmZpcnN0UnVuTG9jYXRpb24oKSwgdGV4dC5s
aW5lc0JvdW5kaW5nQm94KCkuc2l6ZSgpKTsKLSAgICAgICAgaWYgKCFJbmxpbmVJdGVyYXRvcjo6
Zmlyc3RUZXh0UnVuRm9yKHRleHQpKQorICAgICAgICBpZiAoIUlubGluZUl0ZXJhdG9yOjpmaXJz
dFRleHRCb3hGb3IodGV4dCkpCiAgICAgICAgICAgICBhZGp1c3RGb3JUYWJsZUNlbGxzID0gZmFs
c2U7CiAgICAgfSBlbHNlIGlmIChvLmlzQlIoKSkgewogICAgICAgICBjb25zdCBSZW5kZXJMaW5l
QnJlYWsmIGJyID0gZG93bmNhc3Q8UmVuZGVyTGluZUJyZWFrPihvKTsKICAgICAgICAgSW50UmVj
dCBsaW5lc0JveCA9IGJyLmxpbmVzQm91bmRpbmdCb3goKTsKICAgICAgICAgciA9IEludFJlY3Qo
bGluZXNCb3gueCgpLCBsaW5lc0JveC55KCksIGxpbmVzQm94LndpZHRoKCksIGxpbmVzQm94Lmhl
aWdodCgpKTsKLSAgICAgICAgaWYgKCFici5pbmxpbmVCb3hXcmFwcGVyKCkgJiYgIUlubGluZUl0
ZXJhdG9yOjpydW5Gb3IoYnIpKQorICAgICAgICBpZiAoIWJyLmlubGluZUJveFdyYXBwZXIoKSAm
JiAhSW5saW5lSXRlcmF0b3I6OmJveEZvcihicikpCiAgICAgICAgICAgICBhZGp1c3RGb3JUYWJs
ZUNlbGxzID0gZmFsc2U7CiAgICAgfSBlbHNlIGlmIChpczxSZW5kZXJJbmxpbmU+KG8pKSB7CiAg
ICAgICAgIGNvbnN0IFJlbmRlcklubGluZSYgaW5saW5lRmxvdyA9IGRvd25jYXN0PFJlbmRlcklu
bGluZT4obyk7CkBAIC02MDEsNyArNjAxLDcgQEAgdm9pZCB3cml0ZShUZXh0U3RyZWFtJiB0cywg
Y29uc3QgUmVuZGVyT2JqZWN0JiBvLCBPcHRpb25TZXQ8UmVuZGVyQXNUZXh0RmxhZz4gYmUKIAog
ICAgIGlmIChpczxSZW5kZXJUZXh0PihvKSkgewogICAgICAgICBhdXRvJiB0ZXh0ID0gZG93bmNh
c3Q8UmVuZGVyVGV4dD4obyk7Ci0gICAgICAgIGZvciAoYXV0byYgcnVuIDogSW5saW5lSXRlcmF0
b3I6OnRleHRSdW5zRm9yKHRleHQpKSB7CisgICAgICAgIGZvciAoYXV0byYgcnVuIDogSW5saW5l
SXRlcmF0b3I6OnRleHRCb3hlc0Zvcih0ZXh0KSkgewogICAgICAgICAgICAgdHMgPDwgaW5kZW50
OwogICAgICAgICAgICAgd3JpdGVUZXh0UnVuKHRleHQsIHJ1bik7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwCmluZGV4IDMyM2RlMDlmM2M2
ZTRiZmY3YjgzZWFkYzVjNGEwNzNhNzM5MDZkMTIuLjgwNzY3OTY3NGIwOTIwM2M3YTM3NDE5Yzgy
YzU2M2ZhZjRjNDNkNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0
Qm94UGFpbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWlu
dGVyLmNwcApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUg
IkV2ZW50UmVnaW9uLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAi
SW5saW5lSXRlcmF0b3JCb3guaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmUuaCIKICNp
bmNsdWRlICJMZWdhY3lJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiUGFpbnRJbmZvLmgiCkBA
IC00NSwxNCArNDQsMTQgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogVGV4dEJveFBhaW50ZXI6
OlRleHRCb3hQYWludGVyKGNvbnN0IExlZ2FjeUlubGluZVRleHRCb3gmIHRleHRCb3gsIFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCi0gICAgOiBU
ZXh0Qm94UGFpbnRlcihJbmxpbmVJdGVyYXRvcjo6dGV4dFJ1bkZvcigmdGV4dEJveCksIHBhaW50
SW5mbywgcGFpbnRPZmZzZXQpCisgICAgOiBUZXh0Qm94UGFpbnRlcihJbmxpbmVJdGVyYXRvcjo6
dGV4dEJveEZvcigmdGV4dEJveCksIHBhaW50SW5mbywgcGFpbnRPZmZzZXQpCiB7CiAgICAgbV9l
bXBoYXNpc01hcmtFeGlzdHNBbmRJc0Fib3ZlID0gdGV4dEJveC5lbXBoYXNpc01hcmtFeGlzdHNB
bmRJc0Fib3ZlKG1fc3R5bGUpOwogfQogCiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NP
TlRFWFQpCiBUZXh0Qm94UGFpbnRlcjo6VGV4dEJveFBhaW50ZXIoY29uc3QgTGF5b3V0SW50ZWdy
YXRpb246OklubGluZUNvbnRlbnQmIGlubGluZUNvbnRlbnQsIGNvbnN0IElubGluZURpc3BsYXk6
OkJveCYgYm94LCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50
T2Zmc2V0KQotICAgIDogVGV4dEJveFBhaW50ZXIoSW5saW5lSXRlcmF0b3I6OnRleHRSdW5Gb3Io
aW5saW5lQ29udGVudCwgYm94KSwgcGFpbnRJbmZvLCBwYWludE9mZnNldCkKKyAgICA6IFRleHRC
b3hQYWludGVyKElubGluZUl0ZXJhdG9yOjp0ZXh0Qm94Rm9yKGlubGluZUNvbnRlbnQsIGJveCks
IHBhaW50SW5mbywgcGFpbnRPZmZzZXQpCiB7CiB9CiAjZW5kaWYKQEAgLTM3Miw3ICszNzEsNyBA
QCB2b2lkIFRleHRCb3hQYWludGVyOjpwYWludERlY29yYXRpb24oY29uc3QgU3R5bGVkTWFya2Vk
VGV4dCYgbWFya2VkVGV4dCwgY29uc3QgRgogICAgIGF1dG8gdGV4dERlY29yYXRpb25zID0gbV9z
dHlsZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpOwogICAgIHRleHREZWNvcmF0aW9ucy5hZGQo
VGV4dERlY29yYXRpb25QYWludGVyOjp0ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdEZvclN0eWxlKG1h
cmtlZFRleHQuc3R5bGUudGV4dERlY29yYXRpb25TdHlsZXMpKTsKICAgICBUZXh0RGVjb3JhdGlv
blBhaW50ZXIgZGVjb3JhdGlvblBhaW50ZXIgeyBjb250ZXh0LCB0ZXh0RGVjb3JhdGlvbnMsIG1f
cmVuZGVyZXIsIG1faXNGaXJzdExpbmUsIGZvbnQsIG1hcmtlZFRleHQuc3R5bGUudGV4dERlY29y
YXRpb25TdHlsZXMgfTsKLSAgICBkZWNvcmF0aW9uUGFpbnRlci5zZXRUZXh0Qm94SXRlcmF0b3Io
bV90ZXh0Qm94KTsKKyAgICBkZWNvcmF0aW9uUGFpbnRlci5zZXRUZXh0Qm94KG1fdGV4dEJveCk7
CiAgICAgZGVjb3JhdGlvblBhaW50ZXIuc2V0V2lkdGgoc25hcHBlZFNlbGVjdGlvblJlY3Qud2lk
dGgoKSk7CiAgICAgZGVjb3JhdGlvblBhaW50ZXIuc2V0SXNIb3Jpem9udGFsKHRleHRCb3goKS5p
c0hvcml6b250YWwoKSk7CiAgICAgaWYgKG1hcmtlZFRleHQuc3R5bGUudGV4dFNoYWRvdykgewpA
QCAtNDk1LDcgKzQ5NCw3IEBAIEZsb2F0UmVjdCBUZXh0Qm94UGFpbnRlcjo6Y2FsY3VsYXRlVW5p
b25PZkFsbERvY3VtZW50TWFya2VyQm91bmRzKGNvbnN0IExlZ2FjeUluCiAgICAgRmxvYXRSZWN0
IHJlc3VsdDsKICAgICBhdXRvIG1hcmtlZFRleHRzID0gTWFya2VkVGV4dDo6Y29sbGVjdEZvckRv
Y3VtZW50TWFya2Vycyh0ZXh0Qm94LnJlbmRlcmVyKCksIHRleHRCb3guc2VsZWN0YWJsZVJhbmdl
KCksIE1hcmtlZFRleHQ6OlBhaW50UGhhc2U6OkRlY29yYXRpb24pOwogICAgIGZvciAoYXV0byYg
bWFya2VkVGV4dCA6IE1hcmtlZFRleHQ6OnN1YmRpdmlkZShtYXJrZWRUZXh0cywgTWFya2VkVGV4
dDo6T3ZlcmxhcFN0cmF0ZWd5OjpGcm9udG1vc3QpKQotICAgICAgICByZXN1bHQgPSB1bmlvblJl
Y3QocmVzdWx0LCBjYWxjdWxhdGVEb2N1bWVudE1hcmtlckJvdW5kcyhJbmxpbmVJdGVyYXRvcjo6
dGV4dFJ1bkZvcigmdGV4dEJveCksIG1hcmtlZFRleHQpKTsKKyAgICAgICAgcmVzdWx0ID0gdW5p
b25SZWN0KHJlc3VsdCwgY2FsY3VsYXRlRG9jdW1lbnRNYXJrZXJCb3VuZHMoSW5saW5lSXRlcmF0
b3I6OnRleHRCb3hGb3IoJnRleHRCb3gpLCBtYXJrZWRUZXh0KSk7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWlu
dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuaAppbmRleCAx
MWQ3NzI5OTFmNDEwNWYyMzE1M2I0MDgyZGJhMTA3YzljOWUwZTM0Li5hZjhkMGVlYzEwYzc3MGRi
ODA4MWNlMWM1ODIxMTI0OWJkMDIxODEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvVGV4dEJveFBhaW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4
dEJveFBhaW50ZXIuaApAQCAtMjUsNyArMjUsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckJveC5oIgorI2luY2x1ZGUg
IklubGluZUl0ZXJhdG9yVGV4dEJveC5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2lu
Y2x1ZGUgIlRleHRCb3hTZWxlY3RhYmxlUmFuZ2UuaCIKICNpbmNsdWRlICJUZXh0UnVuLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3Bw
CmluZGV4IDdmNjAzYTg3Yzc1ZGVhOTU4ODJkYzA1ZTExMjhhN2YxYTlmYjM0NDcuLmI1OTZkM2Uw
NzBhNmFhYzdkNjIxOTJhMTFiMTIxOWFiYWQ3ZDZlYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3BwCkBAIC0yODgsNyArMjg4LDcg
QEAgdm9pZCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50VGV4dERlY29yYXRpb24oY29uc3Qg
VGV4dFJ1biYgdGV4dFJ1biwgY29uc3QgRmwKICAgICAgICAgaWYgKG1fZGVjb3JhdGlvbnMuY29u
dGFpbnMoVGV4dERlY29yYXRpb246OlVuZGVybGluZSkpIHsKICAgICAgICAgICAgIGZsb2F0IHRl
eHREZWNvcmF0aW9uQmFzZUZvbnRTaXplID0gMTY7CiAgICAgICAgICAgICBhdXRvIGRlZmF1bHRH
YXAgPSBtX2xpbmVTdHlsZS5jb21wdXRlZEZvbnRTaXplKCkgLyB0ZXh0RGVjb3JhdGlvbkJhc2VG
b250U2l6ZTsKLSAgICAgICAgICAgIGZsb2F0IG9mZnNldCA9IGNvbXB1dGVVbmRlcmxpbmVPZmZz
ZXQobV9saW5lU3R5bGUudGV4dFVuZGVybGluZVBvc2l0aW9uKCksIG1fbGluZVN0eWxlLnRleHRV
bmRlcmxpbmVPZmZzZXQoKSwgbV9saW5lU3R5bGUuZm9udE1ldHJpY3MoKSwgbV90ZXh0UnVuLCBk
ZWZhdWx0R2FwKTsKKyAgICAgICAgICAgIGZsb2F0IG9mZnNldCA9IGNvbXB1dGVVbmRlcmxpbmVP
ZmZzZXQobV9saW5lU3R5bGUudGV4dFVuZGVybGluZVBvc2l0aW9uKCksIG1fbGluZVN0eWxlLnRl
eHRVbmRlcmxpbmVPZmZzZXQoKSwgbV9saW5lU3R5bGUuZm9udE1ldHJpY3MoKSwgbV90ZXh0Qm94
LCBkZWZhdWx0R2FwKTsKICAgICAgICAgICAgIGZsb2F0IHdhdnlPZmZzZXQgPSBtX3N0eWxlcy51
bmRlcmxpbmVTdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpXYXZ5ID8gbV93YXZ5T2Zmc2V0
IDogMDsKICAgICAgICAgICAgIEZsb2F0UmVjdCByZWN0KGxvY2FsT3JpZ2luLCBGbG9hdFNpemUo
bV93aWR0aCwgdGV4dERlY29yYXRpb25UaGlja25lc3MpKTsKICAgICAgICAgICAgIHJlY3QubW92
ZSgwLCBvZmZzZXQgKyB3YXZ5T2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaAppbmRleCA3NzZlZTBiM2NmNjA3NjZlODc3NTg3NDEx
OGIzMGQyMDRkMzg2OTk2Li5lYWFkNDA4MzUxMGY4M2Q4YzRkNGIyYTlkMjI3YzUyOTVhN2RmMTQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWlu
dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRl
ci5oCkBAIC0yNCw3ICsyNCw3IEBACiAKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkZs
b2F0UG9pbnQuaCIKLSNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckJveC5oIgorI2luY2x1ZGUgIklu
bGluZUl0ZXJhdG9yVGV4dEJveC5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgi
CiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgogCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoK
ICAgICBzdHJ1Y3QgU3R5bGVzOwogICAgIFRleHREZWNvcmF0aW9uUGFpbnRlcihHcmFwaGljc0Nv
bnRleHQmLCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IGRlY29yYXRpb25zLCBjb25zdCBSZW5k
ZXJUZXh0JiwgYm9vbCBpc0ZpcnN0TGluZSwgY29uc3QgRm9udENhc2NhZGUmLCBzdGQ6Om9wdGlv
bmFsPFN0eWxlcz4gPSBzdGQ6Om51bGxvcHQpOwogICAgIAotICAgIHZvaWQgc2V0VGV4dEJveEl0
ZXJhdG9yKElubGluZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3IgdGV4dFJ1bikgeyBtX3RleHRS
dW4gPSB0ZXh0UnVuOyB9CisgICAgdm9pZCBzZXRUZXh0Qm94KElubGluZUl0ZXJhdG9yOjpUZXh0
Qm94SXRlcmF0b3IgdGV4dEJveCkgeyBtX3RleHRCb3ggPSB0ZXh0Qm94OyB9CiAgICAgdm9pZCBz
ZXRJc0hvcml6b250YWwoYm9vbCBpc0hvcml6b250YWwpIHsgbV9pc0hvcml6b250YWwgPSBpc0hv
cml6b250YWw7IH0KICAgICB2b2lkIHNldFdpZHRoKGZsb2F0IHdpZHRoKSB7IG1fd2lkdGggPSB3
aWR0aDsgfQogICAgIHZvaWQgc2V0VGV4dFNoYWRvdyhjb25zdCBTaGFkb3dEYXRhKiB0ZXh0U2hh
ZG93KSB7IG1fc2hhZG93ID0gdGV4dFNoYWRvdzsgfQpAQCAtNzksNyArNzksNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9pc0hvcml6b250YWwgeyB0cnVlIH07CiAgICAgY29uc3QgU2hhZG93RGF0
YSogbV9zaGFkb3cgeyBudWxscHRyIH07CiAgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyogbV9z
aGFkb3dDb2xvckZpbHRlciB7IG51bGxwdHIgfTsKLSAgICBJbmxpbmVJdGVyYXRvcjo6VGV4dEJv
eEl0ZXJhdG9yIG1fdGV4dFJ1bjsKKyAgICBJbmxpbmVJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9y
IG1fdGV4dEJveDsKICAgICBjb25zdCBGb250Q2FzY2FkZSYgbV9mb250OwogCiAgICAgU3R5bGVz
IG1fc3R5bGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5jcHAKaW5kZXggNTQ5ZGVkZDczZTMzNTJkNjdlNmMzNWUzNzgyNTQ3ODA2MTFjMGU5Mi4uMzhm
ZWFmNzZkOTBhZDg0OGRhYjExYWRjZjJiMWUxNWVlZTgxN2JlOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAj
aW5jbHVkZSAiRmxvYXRSb3VuZGVkUmVjdC5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAj
aW5jbHVkZSAiRm9udFNlbGVjdG9yLmgiCisjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JUZXh0Qm94
LmgiCiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveFN0eWxlLmgiCiAjaW5jbHVkZSAiUGFnaW5hdGlv
bi5oIgogI2luY2x1ZGUgIlF1b3Rlc0RhdGEuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Jbmxp
bmVUZXh0Qm94U3R5bGUuY3BwCmluZGV4IGM3YjFjNTE2M2ZlZTVmN2Q3ZjRkMTU1ODUyYWY1NmVl
NTIxNmVhMWUuLmI0YzRmYzRiOTUwOWZlNzkyMTZhZDMxNzNlMWZjZDM2NDVmNzc4YjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcApAQCAtMjksOCArMjks
OCBAQAogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAjaW5jbHVkZSAiSFRNTEFuY2hvckVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckJv
eC5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTGluZS5oIgorI2luY2x1ZGUgIklubGluZUl0
ZXJhdG9yVGV4dEJveC5oIgogI2luY2x1ZGUgIkxlZ2FjeUlubGluZVRleHRCb3guaCIKICNpbmNs
dWRlICJMZWdhY3lSb290SW5saW5lQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVySW5saW5lLmgiCg==
</data>
<flag name="commit-queue"
          id="463811"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440001</attachid>
            <date>2021-10-03 01:54:24 -0700</date>
            <delta_ts>2021-10-03 03:28:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231135-20211003115422.patch</filename>
            <type>text/plain</type>
            <size>96711</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNDQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWI0YjUyMGQ1NDg0Mjky
OGZlYzJhYjJlM2QyOTAyNWFmY2U1ODgzMS4uZDg2ZWVjMTVmMTM5N2EwMTVkYTFiYWNlMmYzMDQ4
NGI5YTc2ZmIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2MCBAQAorMjAyMS0xMC0wMyAgQW50
dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSW50ZWdyYXRp
b25dIE1vcmUgcnVuLT5ib3ggcmVuYW1pbmcgYW5kIG90aGVyIGl0ZXJhdG9yIGNsZWFudXBzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzExMzUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbHNvIG1vdmUg
VGV4dEJveEl0ZXJhdG9yIHRvIGEgZmlsZSBvZiBpdHMgb3duLgorCisgICAgICAgICogSGVhZGVy
cy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmxvY2FsQ2FyZXRSZWN0
Rm9yQ2hhcmFjdGVyT2Zmc2V0KToKKyAgICAgICAgKiBkb20vUG9zaXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6aGFzSW5saW5lUnVuKToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjp1
cHN0cmVhbSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6ZG93bnN0cmVhbSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpzZWFyY2hBaGVhZEZvckJldHRlck1hdGNoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjppbmxpbmVSdW5BbmRPZmZzZXQgY29uc3QpOgorICAg
ICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OmRlbGV0ZUluc2lnbmlmaWNhbnRUZXh0KToKKyAgICAg
ICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRl
cmF0b3I6OmhhbmRsZVRleHROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6
aGFuZGxlVGV4dFJ1bik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmhhbmRsZVRl
eHROb2RlRmlyc3RMZXR0ZXIpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmg6Cisg
ICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvcjo6Qm94SXRlcmF0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveEl0ZXJhdG9yOjpvcGVyYXRvcj09
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvcjo6
YXRFbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveDo6bGlu
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3I6
OnRyYXZlcnNlTmV4dE9uTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6
Qm94SXRlcmF0b3I6OnRyYXZlcnNlUHJldmlvdXNPbkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5saW5lSXRlcmF0b3I6OkJveEl0ZXJhdG9yOjp0cmF2ZXJzZU5leHRPbkxpbmVJZ25vcmluZ0xp
bmVCcmVhayk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3I6
OnRyYXZlcnNlUHJldmlvdXNPbkxpbmVJZ25vcmluZ0xpbmVCcmVhayk6CisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3I6OnRyYXZlcnNlTmV4dE9uTGluZUluTG9n
aWNhbE9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRv
cjo6dHJhdmVyc2VQcmV2aW91c09uTGluZUluTG9naWNhbE9yZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OklubGluZUl0ZXJhdG9yOjpib3hGb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRl
cmF0b3I6OkJveDo6bW9kZXJuUGF0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJ
dGVyYXRvcjo6Qm94OjpsZWdhY3lQYXRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZUl0ZXJhdG9yOjpUZXh0Qm94OjpuZXh0VGV4dFJ1biBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6VGV4dEJveDo6bmV4dFRleHRSdW5JblRleHRPcmRl
ciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6VGV4
dEJveDo6c2VsZWN0aW9uUmVjdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVJdGVyYXRvcjo6VGV4dEJveDo6aXNDb21iaW5lZFRleHQgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OlRleHRCb3g6OmZvbnRDYXNjYWRlIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94
SXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yOjp0cmF2ZXJzZU5leHRUZXh0UnVuKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3I6
OnRyYXZlcnNlTmV4dFRleHRSdW5JblRleHRPcmRlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVJdGVyYXRvcjo6Zmlyc3RUZXh0UnVuRm9yKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpmaXJzdFRleHRSdW5JblRleHRPcmRlckZvcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6dGV4dFJ1bkZvcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6dGV4dFJ1bnNGb3IpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OnJ1bkZvcik6IERlbGV0
ZWQuCisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3I6OkJveEl0ZXJhdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvcjo6b3BlcmF0
b3IqIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRv
cjo6b3BlcmF0b3ItPiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6
Qm94OjpsZWdhY3lJbmxpbmVCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRl
cmF0b3I6OkJveDo6aW5saW5lQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0
ZXJhdG9yOjpUZXh0Qm94OjpyZW5kZXJlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVJdGVyYXRvcjo6VGV4dEJveDo6bGVnYWN5SW5saW5lQm94IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3I6
OlRleHRCb3hJdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVy
YXRvcjo6VGV4dEJveEl0ZXJhdG9yOjpvcGVyYXRvcisrKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3I6Om9wZXJhdG9yKiBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6VGV4dEJveEl0ZXJh
dG9yOjpvcGVyYXRvci0+IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3I6OmdldCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6VGV4dFJ1blJhbmdlOjpUZXh0UnVuUmFuZ2UpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OlRleHRSdW5SYW5nZTo6
YmVnaW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6
OlRleHRSdW5SYW5nZTo6ZW5kIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oklu
bGluZUl0ZXJhdG9yOjpUZXh0Qm94OjpoYXNIeXBoZW4gY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OlRleHRCb3g6OlRleHRCb3gpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OlRleHRCb3g6OnRleHQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OlRleHRCb3g6OnN0YXJ0
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpUZXh0
Qm94OjplbmQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0
b3I6OlRleHRCb3g6Omxlbmd0aCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVJdGVyYXRvcjo6VGV4dEJveDo6b2Zmc2V0Rm9yUG9zaXRpb24gY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OlRleHRCb3g6OnBvc2l0aW9uRm9y
T2Zmc2V0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9y
OjpUZXh0Qm94OjpzZWxlY3RhYmxlUmFuZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SW5saW5lSXRlcmF0b3I6OlRleHRCb3g6OmNyZWF0ZVRleHRSdW4gY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoaXNUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW50ZWdy
YXRpb24vSW5saW5lSXRlcmF0b3JCb3hMZWdhY3lQYXRoLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVJdGVyYXRvcjo6Qm94TGVnYWN5UGF0aDo6Qm94TGVnYWN5UGF0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94TGVnYWN5UGF0aDo6dHJhdmVyc2VOZXh0VGV4dEJv
eCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94TGVnYWN5UGF0aDo6dHJh
dmVyc2VOZXh0VGV4dEJveEluVGV4dE9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0
ZXJhdG9yOjpCb3hMZWdhY3lQYXRoOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OklubGluZUl0ZXJhdG9yOjpCb3hMZWdhY3lQYXRoOjp0cmF2ZXJzZU5leHRJbmxpbmVCb3hJ
bkNhY2hlT3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveExlZ2Fj
eVBhdGg6OnRyYXZlcnNlUHJldmlvdXNJbmxpbmVCb3hJbkNhY2hlT3JkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveEl0ZXJhdG9yTGVnYWN5UGF0aDo6Qm94SXRlcmF0
b3JMZWdhY3lQYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9y
OjpCb3hJdGVyYXRvckxlZ2FjeVBhdGg6OmlzVGV4dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3JMZWdhY3lQYXRoOjpyZWN0IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVy
YXRvckxlZ2FjeVBhdGg6OmlzSG9yaXpvbnRhbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3JMZWdhY3lQYXRoOjpkaXJPdmVycmlk
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94
SXRlcmF0b3JMZWdhY3lQYXRoOjppc0xpbmVCcmVhayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3JMZWdhY3lQYXRoOjptaW5pbXVt
Q2FyZXRPZmZzZXQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRl
cmF0b3I6OkJveEl0ZXJhdG9yTGVnYWN5UGF0aDo6bWF4aW11bUNhcmV0T2Zmc2V0IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvckxl
Z2FjeVBhdGg6OmJpZGlMZXZlbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3JMZWdhY3lQYXRoOjpoYXNIeXBoZW4gY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveEl0ZXJhdG9yTGVn
YWN5UGF0aDo6dGV4dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJ
dGVyYXRvcjo6Qm94SXRlcmF0b3JMZWdhY3lQYXRoOjpzdGFydCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3JMZWdhY3lQYXRoOjpl
bmQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJv
eEl0ZXJhdG9yTGVnYWN5UGF0aDo6bGVuZ3RoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvckxlZ2FjeVBhdGg6Om9mZnNldEZvclBv
c2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9y
OjpCb3hJdGVyYXRvckxlZ2FjeVBhdGg6OnBvc2l0aW9uRm9yT2Zmc2V0IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvckxlZ2FjeVBh
dGg6OnNlbGVjdGFibGVSYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3JMZWdhY3lQYXRoOjpjcmVhdGVUZXh0UnVuIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRv
ckxlZ2FjeVBhdGg6OnJlbmRlcmVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvckxlZ2FjeVBhdGg6OnRyYXZlcnNlTmV4dFRleHRS
dW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveEl0ZXJh
dG9yTGVnYWN5UGF0aDo6dHJhdmVyc2VOZXh0VGV4dFJ1bkluVGV4dE9yZGVyKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvckxlZ2FjeVBhdGg6
OnRyYXZlcnNlTmV4dE9uTGluZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJ
dGVyYXRvcjo6Qm94SXRlcmF0b3JMZWdhY3lQYXRoOjp0cmF2ZXJzZVByZXZpb3VzT25MaW5lKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvckxl
Z2FjeVBhdGg6OnRyYXZlcnNlTmV4dE9uTGluZUluTG9naWNhbE9yZGVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvckxlZ2FjeVBhdGg6OnRy
YXZlcnNlUHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxPcmRlcik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3JMZWdhY3lQYXRoOjpvcGVyYXRvcj09
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJ
dGVyYXRvckxlZ2FjeVBhdGg6OmF0RW5kIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvckxlZ2FjeVBhdGg6OmxlZ2FjeUlubGluZUJv
eCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94
SXRlcmF0b3JMZWdhY3lQYXRoOjpyb290SW5saW5lQm94IGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvckxlZ2FjeVBhdGg6OmlubGlu
ZVRleHRCb3ggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0
b3I6OkJveEl0ZXJhdG9yTGVnYWN5UGF0aDo6aW5pdGlhbGl6ZUxvZ2ljYWxPcmRlckNhY2hlRm9y
TGluZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94SXRl
cmF0b3JMZWdhY3lQYXRoOjp0cmF2ZXJzZU5leHRJbmxpbmVCb3hJbkNhY2hlT3JkZXIpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveEl0ZXJhdG9yTGVnYWN5
UGF0aDo6dHJhdmVyc2VQcmV2aW91c0lubGluZUJveEluQ2FjaGVPcmRlcik6IERlbGV0ZWQuCisg
ICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94TW9kZXJuUGF0aC5o
OgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveE1vZGVyblBhdGg6OkJveE1v
ZGVyblBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveE1vZGVyblBh
dGg6OnRyYXZlcnNlTmV4dFRleHRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0
b3I6OkJveE1vZGVyblBhdGg6OnRyYXZlcnNlTmV4dFRleHRCb3hJblRleHRPcmRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94TW9kZXJuUGF0aDo6b3BlcmF0b3I9PSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3JNb2Rl
cm5QYXRoOjpCb3hJdGVyYXRvck1vZGVyblBhdGgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lSXRlcmF0b3I6OkJveEl0ZXJhdG9yTW9kZXJuUGF0aDo6aXNUZXh0IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvck1v
ZGVyblBhdGg6OnJlY3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5l
SXRlcmF0b3I6OkJveEl0ZXJhdG9yTW9kZXJuUGF0aDo6aXNIb3Jpem9udGFsIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvck1vZGVy
blBhdGg6OmRpck92ZXJyaWRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oklu
bGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvck1vZGVyblBhdGg6OmlzTGluZUJyZWFrIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvck1v
ZGVyblBhdGg6Om1pbmltdW1DYXJldE9mZnNldCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3JNb2Rlcm5QYXRoOjptYXhpbXVtQ2Fy
ZXRPZmZzZXQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0
b3I6OkJveEl0ZXJhdG9yTW9kZXJuUGF0aDo6YmlkaUxldmVsIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvck1vZGVyblBhdGg6Omhh
c0h5cGhlbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRv
cjo6Qm94SXRlcmF0b3JNb2Rlcm5QYXRoOjp0ZXh0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvck1vZGVyblBhdGg6OnN0YXJ0IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVy
YXRvck1vZGVyblBhdGg6OmVuZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3JNb2Rlcm5QYXRoOjpsZW5ndGggY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveEl0ZXJhdG9yTW9kZXJu
UGF0aDo6b2Zmc2V0Rm9yUG9zaXRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lSXRlcmF0b3I6OkJveEl0ZXJhdG9yTW9kZXJuUGF0aDo6cG9zaXRpb25Gb3JPZmZz
ZXQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJv
eEl0ZXJhdG9yTW9kZXJuUGF0aDo6c2VsZWN0YWJsZVJhbmdlIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvck1vZGVyblBhdGg6OmNy
ZWF0ZVRleHRSdW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRl
cmF0b3I6OkJveEl0ZXJhdG9yTW9kZXJuUGF0aDo6cmVuZGVyZXIgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveEl0ZXJhdG9yTW9kZXJuUGF0aDo6
dHJhdmVyc2VOZXh0VGV4dFJ1bik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJ
dGVyYXRvcjo6Qm94SXRlcmF0b3JNb2Rlcm5QYXRoOjp0cmF2ZXJzZU5leHRUZXh0UnVuSW5UZXh0
T3JkZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveEl0
ZXJhdG9yTW9kZXJuUGF0aDo6dHJhdmVyc2VOZXh0T25MaW5lKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvck1vZGVyblBhdGg6OnRyYXZlcnNl
UHJldmlvdXNPbkxpbmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0
b3I6OkJveEl0ZXJhdG9yTW9kZXJuUGF0aDo6dHJhdmVyc2VOZXh0T25MaW5lSW5Mb2dpY2FsT3Jk
ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveEl0ZXJh
dG9yTW9kZXJuUGF0aDo6dHJhdmVyc2VQcmV2aW91c09uTGluZUluTG9naWNhbE9yZGVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvck1vZGVy
blBhdGg6Om9wZXJhdG9yPT0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lSXRlcmF0b3I6OkJveEl0ZXJhdG9yTW9kZXJuUGF0aDo6YXRFbmQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveEl0ZXJhdG9yTW9kZXJuUGF0
aDo6Ym94IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9y
OjpCb3hJdGVyYXRvck1vZGVyblBhdGg6OmlubGluZUNvbnRlbnQgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveEl0ZXJhdG9yTW9kZXJuUGF0aDo6
dHJhdmVyc2VOZXh0TGVhZik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVy
YXRvcjo6Qm94SXRlcmF0b3JNb2Rlcm5QYXRoOjp0cmF2ZXJzZVByZXZpb3VzTGVhZik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3JNb2Rlcm5Q
YXRoOjpzZXRBdEVuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRv
cjo6Qm94SXRlcmF0b3JNb2Rlcm5QYXRoOjpib3hlcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3JNb2Rlcm5QYXRoOjpsaW5lIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0
b3JMaW5lTGVnYWN5UGF0aC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6Okxp
bmVJdGVyYXRvckxlZ2FjeVBhdGg6OmZpcnN0UnVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JMZWdhY3lQYXRoOjpsYXN0UnVuIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JMZWdhY3lQYXRo
Ojpsb2dpY2FsU3RhcnRSdW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0
b3I6OkxpbmVJdGVyYXRvckxlZ2FjeVBhdGg6OmxvZ2ljYWxFbmRSdW4gY29uc3QpOgorICAgICAg
ICAqIGxheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVNb2Rlcm5QYXRoLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yTW9kZXJuUGF0aDo6
Zmlyc3RSdW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVJ
dGVyYXRvck1vZGVyblBhdGg6Omxhc3RSdW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvck1vZGVyblBhdGg6OmxvZ2ljYWxTdGFydFJ1biBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yTW9kZXJu
UGF0aDo6bG9naWNhbEVuZFJ1biBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9u
L0lubGluZUl0ZXJhdG9yVGV4dEJveC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lSXRlcmF0b3I6OlRleHRCb3g6Om5leHRUZXh0Qm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94OjpuZXh0VGV4dEJveEluVGV4dE9yZGVyIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94OjpzZWxlY3Rpb25S
ZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94Ojpp
c0NvbWJpbmVkVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6
VGV4dEJveDo6Zm9udENhc2NhZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRl
cmF0b3I6OlRleHRCb3hJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3I6OnRyYXZlcnNlTmV4dFRleHRCb3gp
OgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvcjo6dHJh
dmVyc2VOZXh0VGV4dEJveEluVGV4dE9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0
ZXJhdG9yOjpmaXJzdFRleHRCb3hGb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0
b3I6OmZpcnN0VGV4dEJveEluVGV4dE9yZGVyRm9yKToKKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZUl0ZXJhdG9yOjp0ZXh0Qm94Rm9yKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9y
Ojp0ZXh0Qm94ZXNGb3IpOgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVy
YXRvclRleHRCb3guaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6
VGV4dEJveDo6cmVuZGVyZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0
b3I6OlRleHRCb3g6OmxlZ2FjeUlubGluZUJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvcjo6b3BlcmF0b3IrKyk6
CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yOjpvcGVy
YXRvciogY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OlRleHRCb3hJ
dGVyYXRvcjo6b3BlcmF0b3ItPiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVy
YXRvcjo6VGV4dEJveEl0ZXJhdG9yOjpnZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lSXRlcmF0b3I6OlRleHRCb3hSYW5nZTo6VGV4dEJveFJhbmdlKToKKyAgICAgICAgKFdlYkNv
cmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94UmFuZ2U6OmJlZ2luIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94UmFuZ2U6OmVuZCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6VGV4dEJveDo6aGFzSHlwaGVuIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94OjpUZXh0Qm94KToKKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94Ojp0ZXh0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94OjpzdGFydCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6VGV4dEJveDo6ZW5kIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94OjpsZW5ndGggY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OlRleHRCb3g6Om9mZnNldEZvclBvc2l0
aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94Ojpw
b3NpdGlvbkZvck9mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRv
cjo6VGV4dEJveDo6c2VsZWN0YWJsZVJhbmdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
bGluZUl0ZXJhdG9yOjpUZXh0Qm94OjpjcmVhdGVUZXh0UnVuIGNvbnN0KToKKyAgICAgICAgKGlz
VHlwZSk6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQ292
ZXJhZ2UuaDoKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25M
aW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5l
TGF5b3V0Ojp0ZXh0Qm94ZXNGb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50
ZWdyYXRpb246OkxpbmVMYXlvdXQ6OmJveEZvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6dGV4dFJ1bnNGb3IgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OnJ1bkZv
ciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uTGluZUxheW91dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9DYXJldFJlY3RDb21w
dXRhdGlvbi5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL0xlZ2FjeUlubGluZVRleHRCb3guaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvTGVnYWN5TGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzZXRMb2dpY2FsV2lkdGhGb3JUZXh0UnVuKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpnZXRMZWFk
aW5nQ29ybmVyIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmNvbGxlY3RTZWxlY3Rpb25HZW9tZXRyaWVz
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxpbmVCcmVhazo6bGluZXNCb3VuZGluZ0JveCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMaW5lQnJlYWs6OmFic29sdXRlUmVjdHMgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGluZUJyZWFrOjphYnNvbHV0ZVF1YWRzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxpbmVCcmVhazo6Y29sbGVjdFNlbGVjdGlvbkdlb21ldHJpZXMp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJSZXBsYWNlZDo6cG9zaXRpb25Gb3JQb2ludCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6YWJzb2x1
dGVSZWN0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojpjb2xsZWN0U2Vs
ZWN0aW9uR2VvbWV0cmllcyk6CisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0QWJzb2x1dGVRdWFk
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjphYnNvbHV0ZVF1YWRzRm9yUmFuZ2Ug
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6cG9zaXRpb25Gb3JQb2ludCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpmaXJzdFJ1bkxvY2F0aW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmxpbmVzQm91bmRpbmdCb3ggY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y29sbGVjdFNlbGVjdGlvbkdlb21ldHJpZXNG
b3JMaW5lQm94ZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y2FyZXRNaW5PZmZz
ZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y2FyZXRNYXhPZmZzZXQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y291bnRSZW5kZXJlZENoYXJh
Y3Rlck9mZnNldHNVbnRpbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjb250YWluc09mZnNl
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpoYXNSZW5kZXJlZFRleHQgY29uc3Qp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRyZWVBc1RleHQ6OndyaXRlUmVuZGVyT2JqZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OndyaXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dEJveFBhaW50ZXI6OlRleHRCb3hQYWludGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRCb3hQYWludGVyOjpwYWludERlY29yYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dEJveFBhaW50ZXI6OmNhbGN1bGF0ZVVuaW9uT2ZBbGxEb2N1bWVudE1hcmtl
ckJvdW5kcyk6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50VGV4dERlY29yYXRpb24pOgorICAgICAgICAq
IHJlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHREZWNvcmF0aW9uUGFpbnRlcjo6c2V0VGV4dEJveCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
RGVjb3JhdGlvblBhaW50ZXI6OnNldFRleHRCb3hJdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAg
ICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKiBzdHlsZS9Jbmxp
bmVUZXh0Qm94U3R5bGUuY3BwOgorCiAyMDIxLTEwLTAyICBBbnR0aSBLb2l2aXN0byAgPGFudHRp
QGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJbnRlZ3JhdGlvbl0gTW92ZSBpbmxpbmUgaXRl
cmF0b3JzIHRvIElubGluZUl0ZXJhdG9yIG5hbWVzcGFjZSBhbmQgcmVuYW1lIFJ1biogdG8gQm94
KgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UKaW5kZXggNWRiNjgyOTk1ODlmZGNiMjk5NzUyZTU4MjZkYzk5MzFl
NmVhMDFmNy4uMzk0Y2IzYmI2ZTFhMzI3MjQ5NTFiMjI2NTdlZDk1OTlmZDM3OGY4MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCkBAIC04MDEsNiArODAxLDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFN
RVdPUktfSEVBREVSUwogICAgIGxheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmUu
aAogICAgIGxheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVMZWdhY3lQYXRoLmgK
ICAgICBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lTW9kZXJuUGF0aC5oCisg
ICAgbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJveC5oCiAgICAgbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudC5oCiAgICAgbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZS5oCiAgICAgbGF5b3V0L2xheW91dHRy
ZWUvTGF5b3V0Qm94LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggNDQ3ZjFjNTNlY2ZhMTAwMDI2OWY4OGRk
YTA2MWY5NDA1MDMxYjc1NC4uZDRlYWVkZWYxZWE1MWRlOGIxMTE2ZDIwODdmMmM0MGY0NTExYmU3
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKQEAgLTE1MTIsNiArMTUxMiw3IEBAIGxheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL2ludmFsaWRhdGlvbi9JbmxpbmVJbnZhbGlkYXRpb24uY3BwCiBsYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS90ZXh0L1RleHRVdGlsLmNwcAogbGF5b3V0L2lu
dGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmNwcAogbGF5b3V0L2ludGVncmF0aW9uL0lubGlu
ZUl0ZXJhdG9yTGluZS5jcHAKK2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvclRleHRC
b3guY3BwCiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmNwcAog
bGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQ292ZXJhZ2UuY3BwCiBsYXlvdXQv
aW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50QnVpbGRlci5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBjMjM2ZDdhNDQ3YTNhYTUyMTE2NjYwYWYxZDFhZmFlZmU1Mzk2NDMwLi5lZDY1MGFlNjZjYWU1
OTQ4OTNjYzRhYzNiZDBiODFkYjY5YTlkMmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MjcxLDYgKzUyNzEsNyBAQAogCQlF
NDdDMzkzMjFGRTZFMTA1MDBCQkJDNkIgLyogUmVuZGVyVHJlZUJ1aWxkZXJMaXN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDdDMzkyODFGRTZFMERE
MDBCQkJDNkIgLyogUmVuZGVyVHJlZUJ1aWxkZXJMaXN0LmggKi87IH07CiAJCUU0N0MzOTMzMUZF
NkUxMDgwMEJCQkM2QiAvKiBSZW5kZXJUcmVlQnVpbGRlck11bHRpQ29sdW1uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDdDMzkyNzFGRTZFMERDMDBC
QkJDNkIgLyogUmVuZGVyVHJlZUJ1aWxkZXJNdWx0aUNvbHVtbi5oICovOyB9OwogCQlFNDdDRUJD
OTI3MDZFRjUyMDBCOEQ4RjUgLyogSW5saW5lV2Fsa2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDdDRUJDNzI3MDZFRjUxMDBCOEQ4RjUgLyogSW5s
aW5lV2Fsa2VyLmggKi87IH07CisJCUU0N0NFQkUxMjcwOTkxNkQwMEI4RDhGNSAvKiBJbmxpbmVJ
dGVyYXRvclRleHRCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEU0N0NFQkUwMjcwOTkxNkQwMEI4RDhGNSAvKiBJbmxpbmVJdGVyYXRvclRleHRCb3gu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDdF
Mjc2NTE2MDM2RUQyMDBFRTJBRkIgLyogRXh0ZW5zaW9uU3R5bGVTaGVldHMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0N0UyNzY0MTYwMzZFRDIwMEVF
MkFGQiAvKiBFeHRlbnNpb25TdHlsZVNoZWV0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0N0ZDOEEzMjVCODRENzIwMDU0OTVGQyAvKiBMb2Fk
U2NoZWR1bGluZ01vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEU0N0ZDOEExMjVCODRENzEwMDU0OTVGQyAvKiBMb2FkU2NoZWR1bGluZ01vZGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDgxMzdC
OTFEQjNCNTI2MDA1QzU5QkYgLyogU3R5bGVWYWxpZGl0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ4MTM3QjgxREIzQjUyNjAwNUM1OUJGIC8qIFN0
eWxlVmFsaWRpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtMTY1MzAsNiArMTY1MzEsOCBAQAogCQlFNDdDMzkyQjFGRTZFMERGMDBCQkJDNkIg
LyogUmVuZGVyVHJlZUJ1aWxkZXJMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbmRlclRyZWVCdWlsZGVyTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUU0N0MzOTJDMUZFNkUwREYwMEJCQkM2QiAvKiBSZW5kZXJUcmVlVXBkYXRlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJUcmVlVXBkYXRlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDdDRUJDNzI3MDZFRjUxMDBCOEQ4RjUgLyog
SW5saW5lV2Fsa2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElubGluZVdh
bGtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNDdDRUJERTI3MDk5MTY0MDBC
OEQ4RjUgLyogSW5saW5lSXRlcmF0b3JUZXh0Qm94LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElu
bGluZUl0ZXJhdG9yVGV4dEJveC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU0
N0NFQkUwMjcwOTkxNkQwMEI4RDhGNSAvKiBJbmxpbmVJdGVyYXRvclRleHRCb3guaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5saW5lSXRlcmF0b3JUZXh0Qm94Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0N0UyNzY0MTYwMzZFRDIwMEVFMkFGQiAvKiBFeHRl
bnNpb25TdHlsZVNoZWV0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeHRl
bnNpb25TdHlsZVNoZWV0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDdFMjc2
NzE2MDM2RURDMDBFRTJBRkIgLyogRXh0ZW5zaW9uU3R5bGVTaGVldHMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXh0ZW5zaW9uU3R5bGVTaGVldHMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDdGQzhBMTI1Qjg0RDcxMDA1NDk1RkMgLyogTG9h
ZFNjaGVkdWxpbmdNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvYWRT
Y2hlZHVsaW5nTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjk0OTgsNiAr
Mjk1MDEsOCBAQAogCQkJCUU0RDMzRjNGMjUyQzRCODIwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRv
ckxpbmUuaCAqLywKIAkJCQlFNEQzM0Y0MzI1MkM1MEUyMDA4MzdEMDUgLyogSW5saW5lSXRlcmF0
b3JMaW5lTGVnYWN5UGF0aC5oICovLAogCQkJCUU0RDMzRjQ1MjUyQzUwRkIwMDgzN0QwNSAvKiBJ
bmxpbmVJdGVyYXRvckxpbmVNb2Rlcm5QYXRoLmggKi8sCisJCQkJRTQ3Q0VCREUyNzA5OTE2NDAw
QjhEOEY1IC8qIElubGluZUl0ZXJhdG9yVGV4dEJveC5jcHAgKi8sCisJCQkJRTQ3Q0VCRTAyNzA5
OTE2RDAwQjhEOEY1IC8qIElubGluZUl0ZXJhdG9yVGV4dEJveC5oICovLAogCQkJCUU0MTgwMjU2
MjNENDU0QjUwMEZGQjA3MSAvKiBMYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuY3BwICovLAogCQkJ
CUU0MTgwMjUzMjNENDU0OUEwMEZGQjA3MSAvKiBMYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuaCAq
LywKIAkJCQlFNDAzQjc5RjI1MUIxMThCMDAxOUU4MDAgLyogTGF5b3V0SW50ZWdyYXRpb25Db3Zl
cmFnZS5jcHAgKi8sCkBAIC0zMzAxNyw2ICszMzAyMiw3IEBACiAJCQkJRTREMzNGNDEyNTJDNEI4
MzAwODM3RDA1IC8qIElubGluZUl0ZXJhdG9yTGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRE
MzNGNDQyNTJDNTBFMjAwODM3RDA1IC8qIElubGluZUl0ZXJhdG9yTGluZUxlZ2FjeVBhdGguaCBp
biBIZWFkZXJzICovLAogCQkJCUU0RDMzRjQ2MjUyQzUwRkMwMDgzN0QwNSAvKiBJbmxpbmVJdGVy
YXRvckxpbmVNb2Rlcm5QYXRoLmggaW4gSGVhZGVycyAqLywKKwkJCQlFNDdDRUJFMTI3MDk5MTZE
MDBCOEQ4RjUgLyogSW5saW5lSXRlcmF0b3JUZXh0Qm94LmggaW4gSGVhZGVycyAqLywKIAkJCQk2
RkFBRTcxMzI2QTI4MTRCMDBFMDc1MDIgLyogSW5saW5lTGV2ZWxCb3guaCBpbiBIZWFkZXJzICov
LAogCQkJCTZGMENENjk1MjI5RUQzMjcwMEM1OTk0RSAvKiBJbmxpbmVMaW5lLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk2RkIyNDAwNTIzREZGMTI4MDA3OTY0NTggLyogSW5saW5lTGluZUJveC5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
T2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcAppbmRleCA2MmQzMmU3NmEyYzM4OGM2Y2RkYThlNzYxMTQ3ZmFjMzg1NzlkM2VkLi4w
YTI3OWVjNTM5MmYyMWZkYzVkNTk5MTFlMjQxZGVhY2Q5OTg0Zjk2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTI5NDUsNyArMjk0NSw3
IEBAIExheW91dFJlY3QgQVhPYmplY3RDYWNoZTo6bG9jYWxDYXJldFJlY3RGb3JDaGFyYWN0ZXJP
ZmZzZXQoUmVuZGVyT2JqZWN0KiYgcmVuZGVyCiAgICAgaWYgKHJ1bkFuZE9mZnNldC5ydW4pCiAg
ICAgICAgIHJlbmRlcmVyID0gY29uc3RfY2FzdDxSZW5kZXJPYmplY3QqPigmcnVuQW5kT2Zmc2V0
LnJ1bi0+cmVuZGVyZXIoKSk7CiAKLSAgICBpZiAoaXM8UmVuZGVyTGluZUJyZWFrPihyZW5kZXJl
cikgJiYgSW5saW5lSXRlcmF0b3I6OnJ1bkZvcihkb3duY2FzdDxSZW5kZXJMaW5lQnJlYWs+KCpy
ZW5kZXJlcikpICE9IHJ1bkFuZE9mZnNldC5ydW4pCisgICAgaWYgKGlzPFJlbmRlckxpbmVCcmVh
az4ocmVuZGVyZXIpICYmIElubGluZUl0ZXJhdG9yOjpib3hGb3IoZG93bmNhc3Q8UmVuZGVyTGlu
ZUJyZWFrPigqcmVuZGVyZXIpKSAhPSBydW5BbmRPZmZzZXQucnVuKQogICAgICAgICByZXR1cm4g
SW50UmVjdCgpOwogCiAgICAgcmV0dXJuIGNvbXB1dGVMb2NhbENhcmV0UmVjdCgqcmVuZGVyZXIs
IHJ1bkFuZE9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAppbmRleCBiNmNlOTk1NzBhYmU5
Y2ZiZTNhYTJiNDk0NTNmOWEwMTdlNzM1NTcwLi4xY2MzZjVkNDIzN2YyZjYwNmI4ZGQyZWZlOWVm
YTYxNjZiNzJiZjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKQEAgLTM1LDggKzM1LDggQEAK
ICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAj
aW5jbHVkZSAiSFRNTFRhYmxlRWxlbWVudC5oIgotI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yQm94
LmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lLmgiCisjaW5jbHVkZSAiSW5saW5lSXRl
cmF0b3JUZXh0Qm94LmgiCiAjaW5jbHVkZSAiSW5saW5lUnVuQW5kT2Zmc2V0LmgiCiAjaW5jbHVk
ZSAiTGVnYWN5SW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTY5LDEx
ICs2OSwxMSBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBzdGF0aWMgYm9vbCBoYXNJ
bmxpbmVSdW4oUmVuZGVyT2JqZWN0JiByZW5kZXJlcikKIHsKLSAgICBpZiAoaXM8UmVuZGVyQm94
PihyZW5kZXJlcikgJiYgSW5saW5lSXRlcmF0b3I6OnJ1bkZvcihkb3duY2FzdDxSZW5kZXJCb3g+
KHJlbmRlcmVyKSkpCisgICAgaWYgKGlzPFJlbmRlckJveD4ocmVuZGVyZXIpICYmIElubGluZUl0
ZXJhdG9yOjpib3hGb3IoZG93bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJlcikpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICBpZiAoaXM8UmVuZGVyVGV4dD4ocmVuZGVyZXIpICYmIElubGluZUl0
ZXJhdG9yOjpmaXJzdFRleHRSdW5Gb3IoZG93bmNhc3Q8UmVuZGVyVGV4dD4ocmVuZGVyZXIpKSkK
KyAgICBpZiAoaXM8UmVuZGVyVGV4dD4ocmVuZGVyZXIpICYmIElubGluZUl0ZXJhdG9yOjpmaXJz
dFRleHRCb3hGb3IoZG93bmNhc3Q8UmVuZGVyVGV4dD4ocmVuZGVyZXIpKSkKICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgaWYgKGlzPFJlbmRlckxpbmVCcmVhaz4ocmVuZGVyZXIpICYmIElubGlu
ZUl0ZXJhdG9yOjpydW5Gb3IoZG93bmNhc3Q8UmVuZGVyTGluZUJyZWFrPihyZW5kZXJlcikpKQor
ICAgIGlmIChpczxSZW5kZXJMaW5lQnJlYWs+KHJlbmRlcmVyKSAmJiBJbmxpbmVJdGVyYXRvcjo6
Ym94Rm9yKGRvd25jYXN0PFJlbmRlckxpbmVCcmVhaz4ocmVuZGVyZXIpKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtNzM5LDcgKzczOSw3IEBAIFBvc2l0
aW9uIFBvc2l0aW9uOjp1cHN0cmVhbShFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGUgcnVsZSkg
Y29uc3QKICAgICAgICAgaWYgKGlzPFJlbmRlclRleHQ+KCpyZW5kZXJlcikpIHsKICAgICAgICAg
ICAgIGF1dG8mIHRleHRSZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclRleHQ+KCpyZW5kZXJlcik7
CiAKLSAgICAgICAgICAgIGF1dG8gZmlyc3RUZXh0UnVuID0gSW5saW5lSXRlcmF0b3I6OmZpcnN0
VGV4dFJ1bkluVGV4dE9yZGVyRm9yKHRleHRSZW5kZXJlcik7CisgICAgICAgICAgICBhdXRvIGZp
cnN0VGV4dFJ1biA9IElubGluZUl0ZXJhdG9yOjpmaXJzdFRleHRCb3hJblRleHRPcmRlckZvcih0
ZXh0UmVuZGVyZXIpOwogICAgICAgICAgICAgaWYgKCFmaXJzdFRleHRSdW4pCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAKQEAgLTc1Nyw3ICs3NTcsNyBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6
dXBzdHJlYW0oRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlIHJ1bGUpIGNvbnN0CiAgICAgICAg
ICAgICAgICAgaWYgKHRleHRPZmZzZXQgPiBydW4tPnN0YXJ0KCkgJiYgdGV4dE9mZnNldCA8PSBy
dW4tPmVuZCgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudFBvc2l0aW9uOwog
Ci0gICAgICAgICAgICAgICAgYXV0byBuZXh0UnVuID0gcnVuLT5uZXh0VGV4dFJ1bkluVGV4dE9y
ZGVyKCk7CisgICAgICAgICAgICAgICAgYXV0byBuZXh0UnVuID0gcnVuLT5uZXh0VGV4dEJveElu
VGV4dE9yZGVyKCk7CiAgICAgICAgICAgICAgICAgaWYgKHRleHRPZmZzZXQgPT0gcnVuLT5lbmQo
KSArIDEgJiYgbmV4dFJ1biAmJiBydW4tPmxpbmUoKSAhPSBuZXh0UnVuLT5saW5lKCkpCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50UG9zaXRpb247CiAKQEAgLTg0Niw3ICs4NDYs
NyBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6ZG93bnN0cmVhbShFZGl0aW5nQm91bmRhcnlDcm9zc2lu
Z1J1bGUgcnVsZSkgY29uc3QKICAgICAgICAgaWYgKGlzPFJlbmRlclRleHQ+KCpyZW5kZXJlcikp
IHsKICAgICAgICAgICAgIGF1dG8mIHRleHRSZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclRleHQ+
KCpyZW5kZXJlcik7CiAKLSAgICAgICAgICAgIGF1dG8gZmlyc3RUZXh0UnVuID0gSW5saW5lSXRl
cmF0b3I6OmZpcnN0VGV4dFJ1bkluVGV4dE9yZGVyRm9yKHRleHRSZW5kZXJlcik7CisgICAgICAg
ICAgICBhdXRvIGZpcnN0VGV4dFJ1biA9IElubGluZUl0ZXJhdG9yOjpmaXJzdFRleHRCb3hJblRl
eHRPcmRlckZvcih0ZXh0UmVuZGVyZXIpOwogICAgICAgICAgICAgaWYgKCFmaXJzdFRleHRSdW4p
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTg2Myw3ICs4NjMsNyBAQCBQb3NpdGlv
biBQb3NpdGlvbjo6ZG93bnN0cmVhbShFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGUgcnVsZSkg
Y29uc3QKICAgICAgICAgICAgICAgICBpZiAodGV4dE9mZnNldCA+PSBydW4tPnN0YXJ0KCkgJiYg
dGV4dE9mZnNldCA8IHJ1bi0+ZW5kKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjdXJy
ZW50UG9zaXRpb247CiAKLSAgICAgICAgICAgICAgICBhdXRvIG5leHRSdW4gPSBydW4tPm5leHRU
ZXh0UnVuSW5UZXh0T3JkZXIoKTsKKyAgICAgICAgICAgICAgICBhdXRvIG5leHRSdW4gPSBydW4t
Pm5leHRUZXh0Qm94SW5UZXh0T3JkZXIoKTsKICAgICAgICAgICAgICAgICBpZiAodGV4dE9mZnNl
dCA9PSBydW4tPmVuZCgpICYmIG5leHRSdW4gJiYgcnVuLT5saW5lKCkgIT0gbmV4dFJ1bi0+bGlu
ZSgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudFBvc2l0aW9uOwogCkBAIC0x
MTcyLDcgKzExNzIsNyBAQCBzdGF0aWMgSW5saW5lSXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvciBz
ZWFyY2hBaGVhZEZvckJldHRlck1hdGNoKFJlbmRlclRleHQmIHJlbgogICAgICAgICBpZiAoaXNO
b25UZXh0TGVhZkNoaWxkKCpuZXh0KSkKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAg
IGlmIChpczxSZW5kZXJUZXh0PigqbmV4dCkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHJ1biA9
IElubGluZUl0ZXJhdG9yOjpmaXJzdFRleHRSdW5JblRleHRPcmRlckZvcihkb3duY2FzdDxSZW5k
ZXJUZXh0PigqbmV4dCkpKQorICAgICAgICAgICAgaWYgKGF1dG8gcnVuID0gSW5saW5lSXRlcmF0
b3I6OmZpcnN0VGV4dEJveEluVGV4dE9yZGVyRm9yKGRvd25jYXN0PFJlbmRlclRleHQ+KCpuZXh0
KSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJ1bjsKICAgICAgICAgfQogICAgIH0KQEAgLTEy
MTUsMTEgKzEyMTUsMTEgQEAgSW5saW5lUnVuQW5kT2Zmc2V0IFBvc2l0aW9uOjppbmxpbmVSdW5B
bmRPZmZzZXQoQWZmaW5pdHkgYWZmaW5pdHksIFRleHREaXJlY3Rpb24KICAgICBpZiAocmVuZGVy
ZXItPmlzQlIoKSkgewogICAgICAgICBhdXRvJiBsaW5lQnJlYWtSZW5kZXJlciA9IGRvd25jYXN0
PFJlbmRlckxpbmVCcmVhaz4oKnJlbmRlcmVyKTsKICAgICAgICAgaWYgKCFjYXJldE9mZnNldCkK
LSAgICAgICAgICAgIHJ1biA9IElubGluZUl0ZXJhdG9yOjpydW5Gb3IobGluZUJyZWFrUmVuZGVy
ZXIpOworICAgICAgICAgICAgcnVuID0gSW5saW5lSXRlcmF0b3I6OmJveEZvcihsaW5lQnJlYWtS
ZW5kZXJlcik7CiAgICAgfSBlbHNlIGlmIChpczxSZW5kZXJUZXh0PigqcmVuZGVyZXIpKSB7CiAg
ICAgICAgIGF1dG8mIHRleHRSZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclRleHQ+KCpyZW5kZXJl
cik7CiAKLSAgICAgICAgYXV0byB0ZXh0UnVuID0gSW5saW5lSXRlcmF0b3I6OmZpcnN0VGV4dFJ1
bkZvcih0ZXh0UmVuZGVyZXIpOworICAgICAgICBhdXRvIHRleHRSdW4gPSBJbmxpbmVJdGVyYXRv
cjo6Zmlyc3RUZXh0Qm94Rm9yKHRleHRSZW5kZXJlcik7CiAgICAgICAgIElubGluZUl0ZXJhdG9y
OjpUZXh0Qm94SXRlcmF0b3IgY2FuZGlkYXRlOwogCiAgICAgICAgIGZvciAoOyB0ZXh0UnVuOyAr
K3RleHRSdW4pIHsKQEAgLTEyNDcsNyArMTI0Nyw3IEBAIElubGluZVJ1bkFuZE9mZnNldCBQb3Np
dGlvbjo6aW5saW5lUnVuQW5kT2Zmc2V0KEFmZmluaXR5IGFmZmluaXR5LCBUZXh0RGlyZWN0aW9u
CiAgICAgICAgICAgICBjYW5kaWRhdGUgPSB0ZXh0UnVuOwogICAgICAgICB9CiAKLSAgICAgICAg
aWYgKGNhbmRpZGF0ZSAmJiAhY2FuZGlkYXRlLT5uZXh0VGV4dFJ1bigpICYmIGFmZmluaXR5ID09
IEFmZmluaXR5OjpEb3duc3RyZWFtKSB7CisgICAgICAgIGlmIChjYW5kaWRhdGUgJiYgIWNhbmRp
ZGF0ZS0+bmV4dFRleHRCb3goKSAmJiBhZmZpbml0eSA9PSBBZmZpbml0eTo6RG93bnN0cmVhbSkg
ewogICAgICAgICAgICAgdGV4dFJ1biA9IHNlYXJjaEFoZWFkRm9yQmV0dGVyTWF0Y2godGV4dFJl
bmRlcmVyKTsKICAgICAgICAgICAgIGlmICh0ZXh0UnVuKQogICAgICAgICAgICAgICAgIGNhcmV0
T2Zmc2V0ID0gdGV4dFJ1bi0+bWluaW11bUNhcmV0T2Zmc2V0KCk7CkBAIC0xMjcwLDcgKzEyNzAs
NyBAQCBJbmxpbmVSdW5BbmRPZmZzZXQgUG9zaXRpb246OmlubGluZVJ1bkFuZE9mZnNldChBZmZp
bml0eSBhZmZpbml0eSwgVGV4dERpcmVjdGlvbgogICAgICAgICAgICAgcmV0dXJuIGVxdWl2YWxl
bnQuaW5saW5lUnVuQW5kT2Zmc2V0KEFmZmluaXR5OjpVcHN0cmVhbSwgcHJpbWFyeURpcmVjdGlv
bik7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGlzPFJlbmRlckJveD4oKnJlbmRlcmVyKSkgewot
ICAgICAgICAgICAgcnVuID0gSW5saW5lSXRlcmF0b3I6OnJ1bkZvcihkb3duY2FzdDxSZW5kZXJC
b3g+KCpyZW5kZXJlcikpOworICAgICAgICAgICAgcnVuID0gSW5saW5lSXRlcmF0b3I6OmJveEZv
cihkb3duY2FzdDxSZW5kZXJCb3g+KCpyZW5kZXJlcikpOwogICAgICAgICAgICAgaWYgKHJ1biAm
JiBjYXJldE9mZnNldCA+IHJ1bi0+bWluaW11bUNhcmV0T2Zmc2V0KCkgJiYgY2FyZXRPZmZzZXQg
PCBydW4tPm1heGltdW1DYXJldE9mZnNldCgpKQogICAgICAgICAgICAgICAgIHJldHVybiB7IHJ1
biwgY2FyZXRPZmZzZXQgfTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAppbmRleCAzYTZlNGVhNzQ0MDYyZGZmZDY0YTI2YmM2
MmVmMmNkODRlNjcyMGRlLi41OGQ3NTNiMjNkNjNiODcyOTU5MDA3YzVhNzA5NjczOTdjODg3ODRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5k
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNw
cApAQCAtMTAxNiw3ICsxMDE2LDcgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6ZGVsZXRl
SW5zaWduaWZpY2FudFRleHQoVGV4dCYgdGV4dE5vZGUsIHVuc2lnbmVkIHN0YXIKICAgICAgICAg
aWYgKCF0ZXh0UmVuZGVyZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0byBy
dW4gPSBJbmxpbmVJdGVyYXRvcjo6Zmlyc3RUZXh0UnVuSW5UZXh0T3JkZXJGb3IoKnRleHRSZW5k
ZXJlcik7CisgICAgICAgIGF1dG8gcnVuID0gSW5saW5lSXRlcmF0b3I6OmZpcnN0VGV4dEJveElu
VGV4dE9yZGVyRm9yKCp0ZXh0UmVuZGVyZXIpOwogICAgICAgICBpZiAoIXJ1bikgewogICAgICAg
ICAgICAgd2hvbGVUZXh0Tm9kZUlzRW1wdHkgPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMTA1MSw3ICsxMDUxLDcgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6ZGVsZXRlSW5z
aWduaWZpY2FudFRleHQoVGV4dCYgdGV4dE5vZGUsIHVuc2lnbmVkIHN0YXIKIAogICAgICAgICAg
ICAgcHJldmlvdXNSdW4gPSBydW47CiAgICAgICAgICAgICBpZiAocnVuKQotICAgICAgICAgICAg
ICAgIHJ1bi50cmF2ZXJzZU5leHRUZXh0UnVuSW5UZXh0T3JkZXIoKTsKKyAgICAgICAgICAgICAg
ICBydW4udHJhdmVyc2VOZXh0VGV4dEJveEluVGV4dE9yZGVyKCk7CiAgICAgICAgIH0KICAgICB9
OwogICAgIGRldGVybWluZVJlbW92YWxNb2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJ
dGVyYXRvci5jcHAKaW5kZXggZGZkNmNiNWIxNWU1MWRmZWJkOTA3NDRiMzYyOGI5MGNiYmU2NDUx
ZC4uNTMyNjk1YThmOGU2NjM1MDc4ZTMyMGQ0YWE1ODM0MGU3N2MwMzhkNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcApAQCAtNTgwLDcgKzU4MCw3IEBAIGJvb2wgVGV4
dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSgpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
IAotICAgIG1fdGV4dFJ1biA9IElubGluZUl0ZXJhdG9yOjpmaXJzdFRleHRSdW5JblRleHRPcmRl
ckZvcihyZW5kZXJlcik7CisgICAgbV90ZXh0UnVuID0gSW5saW5lSXRlcmF0b3I6OmZpcnN0VGV4
dEJveEluVGV4dE9yZGVyRm9yKHJlbmRlcmVyKTsKIAogICAgIGJvb2wgc2hvdWxkSGFuZGxlRmly
c3RMZXR0ZXIgPSAhbV9oYW5kbGVkRmlyc3RMZXR0ZXIgJiYgaXM8UmVuZGVyVGV4dEZyYWdtZW50
PihyZW5kZXJlcikgJiYgIW1fb2Zmc2V0OwogICAgIGlmIChzaG91bGRIYW5kbGVGaXJzdExldHRl
cikKQEAgLTYwNyw3ICs2MDcsNyBAQCB2b2lkIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dFJ1bigp
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGZpcnN0VGV4dFJ1biA9IElubGlu
ZUl0ZXJhdG9yOjpmaXJzdFRleHRSdW5JblRleHRPcmRlckZvcihyZW5kZXJlcik7CisgICAgYXV0
byBmaXJzdFRleHRSdW4gPSBJbmxpbmVJdGVyYXRvcjo6Zmlyc3RUZXh0Qm94SW5UZXh0T3JkZXJG
b3IocmVuZGVyZXIpOwogCiAgICAgU3RyaW5nIHJlbmRlcmVyVGV4dCA9IHJlbmRlcmVyLnRleHQo
KTsKICAgICB1bnNpZ25lZCBzdGFydCA9IG1fb2Zmc2V0OwpAQCAtNjMzLDcgKzYzMyw3IEBAIHZv
aWQgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0UnVuKCkKICAgICAgICAgCiAgICAgICAgIC8vIERl
dGVybWluZSB3aGF0IHRoZSBuZXh0IHRleHQgcnVuIHdpbGwgYmUsIGJ1dCBkb24ndCBhZHZhbmNl
IHlldAogICAgICAgICBhdXRvIG5leHRUZXh0UnVuID0gbV90ZXh0UnVuOwotICAgICAgICBuZXh0
VGV4dFJ1bi50cmF2ZXJzZU5leHRUZXh0UnVuSW5UZXh0T3JkZXIoKTsKKyAgICAgICAgbmV4dFRl
eHRSdW4udHJhdmVyc2VOZXh0VGV4dEJveEluVGV4dE9yZGVyKCk7CiAKICAgICAgICAgaWYgKHJ1
blN0YXJ0IDwgcnVuRW5kKSB7CiAgICAgICAgICAgICBhdXRvIGlzTmV3bGluZU9yVGFiID0gWyZd
KFVDaGFyIGNoYXJhY3RlcikgewpAQCAtNzAxLDcgKzcwMSw3IEBAIHZvaWQgVGV4dEl0ZXJhdG9y
OjpoYW5kbGVUZXh0Tm9kZUZpcnN0TGV0dGVyKFJlbmRlclRleHRGcmFnbWVudCYgcmVuZGVyZXIp
CiAgICAgICAgIGlmIChhdXRvKiBmaXJzdExldHRlclRleHQgPSBmaXJzdFJlbmRlclRleHRJbkZp
cnN0TGV0dGVyKGZpcnN0TGV0dGVyKSkgewogICAgICAgICAgICAgbV9oYW5kbGVkRmlyc3RMZXR0
ZXIgPSB0cnVlOwogICAgICAgICAgICAgbV9yZW1haW5pbmdUZXh0UnVuID0gbV90ZXh0UnVuOwot
ICAgICAgICAgICAgbV90ZXh0UnVuID0gSW5saW5lSXRlcmF0b3I6OmZpcnN0VGV4dFJ1bkluVGV4
dE9yZGVyRm9yKCpmaXJzdExldHRlclRleHQpOworICAgICAgICAgICAgbV90ZXh0UnVuID0gSW5s
aW5lSXRlcmF0b3I6OmZpcnN0VGV4dEJveEluVGV4dE9yZGVyRm9yKCpmaXJzdExldHRlclRleHQp
OwogICAgICAgICAgICAgbV9maXJzdExldHRlclRleHQgPSBmaXJzdExldHRlclRleHQ7CiAgICAg
ICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVy
YXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAppbmRleCAzZmMy
N2EwOTdkMzlhYzg3YWI1Mzk1YjEyYmFiMzQ2YzFkNzdjMWU1Li45MDZkYTA2NTMxMzEwMTIzMjRj
NWNhNjk0NGJlNzM4OWFjNzlkMGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1RleHRJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9y
LmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkNoYXJhY3RlclJhbmdlLmgiCiAjaW5j
bHVkZSAiRmluZE9wdGlvbnMuaCIKLSNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckJveC5oIgorI2lu
Y2x1ZGUgIklubGluZUl0ZXJhdG9yVGV4dEJveC5oIgogI2luY2x1ZGUgIlNpbXBsZVJhbmdlLmgi
CiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yQmVoYXZpb3IuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5l
SXRlcmF0b3JCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGlu
ZUl0ZXJhdG9yQm94LmNwcAppbmRleCBhMmEzOWQzMTQxNjdlOGFmMzY4ZDg3NWRkZGI1NTg5Yzcx
MTZhODQ4Li5jZmYzOWYyMjA0OWU0NjRjYzc0Mjc5ZTY5MDUwOWNlOTRmYTY5NDcwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRv
ckJveC5jcHAKQEAgLTI2LDExICsyNiwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIklubGluZUl0ZXJhdG9yQm94LmgiCiAKLQogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTGlu
ZS5oIgorI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yVGV4dEJveC5oIgogI2luY2x1ZGUgIkxheW91
dEludGVncmF0aW9uTGluZUxheW91dC5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrRmxvdy5oIgot
I2luY2x1ZGUgIlJlbmRlckNvbWJpbmVUZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGluZUJyZWFr
LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogCkBAIC0zOCwyMyArMzcsMjMgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIElubGluZUl0ZXJhdG9yIHsKIAogQm94SXRlcmF0b3I6
OkJveEl0ZXJhdG9yKEJveDo6UGF0aFZhcmlhbnQmJiBwYXRoVmFyaWFudCkKLSAgICA6IG1fcnVu
KFdURk1vdmUocGF0aFZhcmlhbnQpKQorICAgIDogbV9ib3goV1RGTW92ZShwYXRoVmFyaWFudCkp
CiB7CiB9CiAKIEJveEl0ZXJhdG9yOjpCb3hJdGVyYXRvcihjb25zdCBCb3gmIHJ1bikKLSAgICA6
IG1fcnVuKHJ1bikKKyAgICA6IG1fYm94KHJ1bikKIHsKIH0KIAogYm9vbCBCb3hJdGVyYXRvcjo6
b3BlcmF0b3I9PShjb25zdCBCb3hJdGVyYXRvciYgb3RoZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fcnVuLm1fcGF0aFZhcmlhbnQgPT0gb3RoZXIubV9ydW4ubV9wYXRoVmFyaWFudDsKKyAgICBy
ZXR1cm4gbV9ib3gubV9wYXRoVmFyaWFudCA9PSBvdGhlci5tX2JveC5tX3BhdGhWYXJpYW50Owog
fQogCiBib29sIEJveEl0ZXJhdG9yOjphdEVuZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdURjo6
c3dpdGNoT24obV9ydW4ubV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgeworICAgIHJldHVy
biBXVEY6OnN3aXRjaE9uKG1fYm94Lm1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKICAg
ICAgICAgcmV0dXJuIHBhdGguYXRFbmQoKTsKICAgICB9KTsKIH0KQEAgLTgxLDExICs4MCwxMSBA
QCBCb3hJdGVyYXRvciBCb3g6OnByZXZpb3VzT25MaW5lSWdub3JpbmdMaW5lQnJlYWsoKSBjb25z
dAogCiBMaW5lSXRlcmF0b3IgQm94OjpsaW5lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gV1RGOjpz
d2l0Y2hPbihtX3BhdGhWYXJpYW50LCBbXShjb25zdCBCb3hJdGVyYXRvckxlZ2FjeVBhdGgmIHBh
dGgpIHsKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBbXShjb25zdCBC
b3hMZWdhY3lQYXRoJiBwYXRoKSB7CiAgICAgICAgIHJldHVybiBMaW5lSXRlcmF0b3IoTGluZUl0
ZXJhdG9yTGVnYWN5UGF0aCgmcGF0aC5yb290SW5saW5lQm94KCkpKTsKICAgICB9CiAjaWYgRU5B
QkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCi0gICAgLCBbXShjb25zdCBCb3hJdGVyYXRv
ck1vZGVyblBhdGgmIHBhdGgpIHsKKyAgICAsIFtdKGNvbnN0IEJveE1vZGVyblBhdGgmIHBhdGgp
IHsKICAgICAgICAgcmV0dXJuIExpbmVJdGVyYXRvcihMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoKHBh
dGguaW5saW5lQ29udGVudCgpLCBwYXRoLmJveCgpLmxpbmVJbmRleCgpKSk7CiAgICAgfQogI2Vu
ZGlmCkBAIC05Nyw0OSArOTYsNiBAQCBjb25zdCBSZW5kZXJTdHlsZSYgQm94OjpzdHlsZSgpIGNv
bnN0CiAgICAgcmV0dXJuIGxpbmUoKS0+aXNGaXJzdCgpID8gcmVuZGVyZXIoKS5maXJzdExpbmVT
dHlsZSgpIDogcmVuZGVyZXIoKS5zdHlsZSgpOwogfQogCi1UZXh0Qm94SXRlcmF0b3IgVGV4dEJv
eDo6bmV4dFRleHRSdW4oKSBjb25zdAotewotICAgIHJldHVybiBUZXh0Qm94SXRlcmF0b3IoKnRo
aXMpLnRyYXZlcnNlTmV4dFRleHRSdW4oKTsKLX0KLQotVGV4dEJveEl0ZXJhdG9yIFRleHRCb3g6
Om5leHRUZXh0UnVuSW5UZXh0T3JkZXIoKSBjb25zdAotewotICAgIHJldHVybiBUZXh0Qm94SXRl
cmF0b3IoKnRoaXMpLnRyYXZlcnNlTmV4dFRleHRSdW5JblRleHRPcmRlcigpOwotfQotCi1MYXlv
dXRSZWN0IFRleHRCb3g6OnNlbGVjdGlvblJlY3QodW5zaWduZWQgcmFuZ2VTdGFydCwgdW5zaWdu
ZWQgcmFuZ2VFbmQpIGNvbnN0Ci17Ci0gICAgYXV0byBbY2xhbXBlZFN0YXJ0LCBjbGFtcGVkRW5k
XSA9IHNlbGVjdGFibGVSYW5nZSgpLmNsYW1wKHJhbmdlU3RhcnQsIHJhbmdlRW5kKTsKLQotICAg
IGlmIChjbGFtcGVkU3RhcnQgPj0gY2xhbXBlZEVuZCAmJiAhKHJhbmdlU3RhcnQgPT0gcmFuZ2VF
bmQgJiYgcmFuZ2VTdGFydCA+PSBzdGFydCgpICYmIHJhbmdlU3RhcnQgPD0gZW5kKCkpKQotICAg
ICAgICByZXR1cm4geyB9OwotCi0gICAgYXV0byBzZWxlY3Rpb25Ub3AgPSBsaW5lKCktPnNlbGVj
dGlvblRvcCgpOwotICAgIGF1dG8gc2VsZWN0aW9uSGVpZ2h0ID0gbGluZSgpLT5zZWxlY3Rpb25I
ZWlnaHQoKTsKLQotICAgIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdCB7IGxvZ2ljYWxMZWZ0KCks
IHNlbGVjdGlvblRvcCwgbG9naWNhbFdpZHRoKCksIHNlbGVjdGlvbkhlaWdodCB9OwotCi0gICAg
VGV4dFJ1biB0ZXh0UnVuID0gY3JlYXRlVGV4dFJ1bigpOwotICAgIGlmIChjbGFtcGVkU3RhcnQg
fHwgY2xhbXBlZEVuZCAhPSB0ZXh0UnVuLmxlbmd0aCgpKQotICAgICAgICBmb250Q2FzY2FkZSgp
LmFkanVzdFNlbGVjdGlvblJlY3RGb3JUZXh0KHRleHRSdW4sIHNlbGVjdGlvblJlY3QsIGNsYW1w
ZWRTdGFydCwgY2xhbXBlZEVuZCk7Ci0KLSAgICByZXR1cm4gc25hcHBlZFNlbGVjdGlvblJlY3Qo
c2VsZWN0aW9uUmVjdCwgbG9naWNhbFJpZ2h0KCksIHNlbGVjdGlvblRvcCwgc2VsZWN0aW9uSGVp
Z2h0LCBpc0hvcml6b250YWwoKSk7Ci19Ci0KLWJvb2wgVGV4dEJveDo6aXNDb21iaW5lZFRleHQo
KSBjb25zdAotewotICAgIGF1dG8mIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKLSAgICBy
ZXR1cm4gaXM8UmVuZGVyQ29tYmluZVRleHQ+KHJlbmRlcmVyKSAmJiBkb3duY2FzdDxSZW5kZXJD
b21iaW5lVGV4dD4ocmVuZGVyZXIpLmlzQ29tYmluZWQoKTsKLX0KLQotY29uc3QgRm9udENhc2Nh
ZGUmIFRleHRCb3g6OmZvbnRDYXNjYWRlKCkgY29uc3QKLXsKLSAgICBpZiAoaXNDb21iaW5lZFRl
eHQoKSkKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckNvbWJpbmVUZXh0PihyZW5kZXJl
cigpKS50ZXh0Q29tYmluZUZvbnQoKTsKLQotICAgIHJldHVybiBzdHlsZSgpLmZvbnRDYXNjYWRl
KCk7Ci19Ci0KIFJlbmRlck9iamVjdDo6SGlnaGxpZ2h0U3RhdGUgQm94OjpzZWxlY3Rpb25TdGF0
ZSgpIGNvbnN0CiB7CiAgICAgaWYgKGlzVGV4dCgpKSB7CkBAIC0xNTAsMzUgKzEwNiw5IEBAIFJl
bmRlck9iamVjdDo6SGlnaGxpZ2h0U3RhdGUgQm94OjpzZWxlY3Rpb25TdGF0ZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIHJlbmRlcmVyKCkuc2VsZWN0aW9uU3RhdGUoKTsKIH0KIAotVGV4dEJveEl0ZXJh
dG9yOjpUZXh0Qm94SXRlcmF0b3IoQm94OjpQYXRoVmFyaWFudCYmIHBhdGhWYXJpYW50KQotICAg
IDogQm94SXRlcmF0b3IoV1RGTW92ZShwYXRoVmFyaWFudCkpCi17Ci19Ci0KLVRleHRCb3hJdGVy
YXRvcjo6VGV4dEJveEl0ZXJhdG9yKGNvbnN0IEJveCYgcnVuKQotICAgIDogQm94SXRlcmF0b3Io
cnVuKQotewotfQotCi1UZXh0Qm94SXRlcmF0b3ImIFRleHRCb3hJdGVyYXRvcjo6dHJhdmVyc2VO
ZXh0VGV4dFJ1bigpCi17Ci0gICAgV1RGOjpzd2l0Y2hPbihtX3J1bi5tX3BhdGhWYXJpYW50LCBb
XShhdXRvJiBwYXRoKSB7Ci0gICAgICAgIHBhdGgudHJhdmVyc2VOZXh0VGV4dFJ1bigpOwotICAg
IH0pOwotICAgIHJldHVybiAqdGhpczsKLX0KLQotVGV4dEJveEl0ZXJhdG9yJiBUZXh0Qm94SXRl
cmF0b3I6OnRyYXZlcnNlTmV4dFRleHRSdW5JblRleHRPcmRlcigpCi17Ci0gICAgV1RGOjpzd2l0
Y2hPbihtX3J1bi5tX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7Ci0gICAgICAgIHBhdGgu
dHJhdmVyc2VOZXh0VGV4dFJ1bkluVGV4dE9yZGVyKCk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuICp0
aGlzOwotfQotCiBCb3hJdGVyYXRvciYgQm94SXRlcmF0b3I6OnRyYXZlcnNlTmV4dE9uTGluZSgp
CiB7Ci0gICAgV1RGOjpzd2l0Y2hPbihtX3J1bi5tX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRo
KSB7CisgICAgV1RGOjpzd2l0Y2hPbihtX2JveC5tX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRo
KSB7CiAgICAgICAgIHBhdGgudHJhdmVyc2VOZXh0T25MaW5lKCk7CiAgICAgfSk7CiAgICAgcmV0
dXJuICp0aGlzOwpAQCAtMTg2LDcgKzExNiw3IEBAIEJveEl0ZXJhdG9yJiBCb3hJdGVyYXRvcjo6
dHJhdmVyc2VOZXh0T25MaW5lKCkKIAogQm94SXRlcmF0b3ImIEJveEl0ZXJhdG9yOjp0cmF2ZXJz
ZVByZXZpb3VzT25MaW5lKCkKIHsKLSAgICBXVEY6OnN3aXRjaE9uKG1fcnVuLm1fcGF0aFZhcmlh
bnQsIFtdKGF1dG8mIHBhdGgpIHsKKyAgICBXVEY6OnN3aXRjaE9uKG1fYm94Lm1fcGF0aFZhcmlh
bnQsIFtdKGF1dG8mIHBhdGgpIHsKICAgICAgICAgcGF0aC50cmF2ZXJzZVByZXZpb3VzT25MaW5l
KCk7CiAgICAgfSk7CiAgICAgcmV0dXJuICp0aGlzOwpAQCAtMTk2LDcgKzEyNiw3IEBAIEJveEl0
ZXJhdG9yJiBCb3hJdGVyYXRvcjo6dHJhdmVyc2VOZXh0T25MaW5lSWdub3JpbmdMaW5lQnJlYWso
KQogewogICAgIGRvIHsKICAgICAgICAgdHJhdmVyc2VOZXh0T25MaW5lKCk7Ci0gICAgfSB3aGls
ZSAoIWF0RW5kKCkgJiYgbV9ydW4uaXNMaW5lQnJlYWsoKSk7CisgICAgfSB3aGlsZSAoIWF0RW5k
KCkgJiYgbV9ib3guaXNMaW5lQnJlYWsoKSk7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCkBAIC0y
MDQsMTMgKzEzNCwxMyBAQCBCb3hJdGVyYXRvciYgQm94SXRlcmF0b3I6OnRyYXZlcnNlUHJldmlv
dXNPbkxpbmVJZ25vcmluZ0xpbmVCcmVhaygpCiB7CiAgICAgZG8gewogICAgICAgICB0cmF2ZXJz
ZVByZXZpb3VzT25MaW5lKCk7Ci0gICAgfSB3aGlsZSAoIWF0RW5kKCkgJiYgbV9ydW4uaXNMaW5l
QnJlYWsoKSk7CisgICAgfSB3aGlsZSAoIWF0RW5kKCkgJiYgbV9ib3guaXNMaW5lQnJlYWsoKSk7
CiAgICAgcmV0dXJuICp0aGlzOwogfQogCiBCb3hJdGVyYXRvciYgQm94SXRlcmF0b3I6OnRyYXZl
cnNlTmV4dE9uTGluZUluTG9naWNhbE9yZGVyKCkKIHsKLSAgICBXVEY6OnN3aXRjaE9uKG1fcnVu
Lm1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKKyAgICBXVEY6OnN3aXRjaE9uKG1fYm94
Lm1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKICAgICAgICAgcGF0aC50cmF2ZXJzZU5l
eHRPbkxpbmVJbkxvZ2ljYWxPcmRlcigpOwogICAgIH0pOwogICAgIHJldHVybiAqdGhpczsKQEAg
LTIxOCw5NiArMTQ4LDQ3IEBAIEJveEl0ZXJhdG9yJiBCb3hJdGVyYXRvcjo6dHJhdmVyc2VOZXh0
T25MaW5lSW5Mb2dpY2FsT3JkZXIoKQogCiBCb3hJdGVyYXRvciYgQm94SXRlcmF0b3I6OnRyYXZl
cnNlUHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxPcmRlcigpCiB7Ci0gICAgV1RGOjpzd2l0Y2hPbiht
X3J1bi5tX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7CisgICAgV1RGOjpzd2l0Y2hPbiht
X2JveC5tX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7CiAgICAgICAgIHBhdGgudHJhdmVy
c2VQcmV2aW91c09uTGluZUluTG9naWNhbE9yZGVyKCk7CiAgICAgfSk7CiAgICAgcmV0dXJuICp0
aGlzOwogfQogCi1UZXh0Qm94SXRlcmF0b3IgZmlyc3RUZXh0UnVuRm9yKGNvbnN0IFJlbmRlclRl
eHQmIHRleHQpCi17Ci0jaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCi0gICAg
aWYgKGF1dG8qIGxpbmVMYXlvdXQgPSBMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6Y29u
dGFpbmluZyh0ZXh0KSkKLSAgICAgICAgcmV0dXJuIGxpbmVMYXlvdXQtPnRleHRSdW5zRm9yKHRl
eHQpOwotI2VuZGlmCi0KLSAgICByZXR1cm4geyBCb3hJdGVyYXRvckxlZ2FjeVBhdGggeyB0ZXh0
LmZpcnN0VGV4dEJveCgpIH0gfTsKLX0KLQotVGV4dEJveEl0ZXJhdG9yIGZpcnN0VGV4dFJ1bklu
VGV4dE9yZGVyRm9yKGNvbnN0IFJlbmRlclRleHQmIHRleHQpCi17Ci0gICAgaWYgKHRleHQuZmly
c3RUZXh0Qm94KCkgJiYgdGV4dC5jb250YWluc1JldmVyc2VkVGV4dCgpKSB7Ci0gICAgICAgIFZl
Y3Rvcjxjb25zdCBMZWdhY3lJbmxpbmVCb3gqPiBzb3J0ZWRUZXh0Qm94ZXM7Ci0gICAgICAgIGZv
ciAoYXV0byogdGV4dEJveCA9IHRleHQuZmlyc3RUZXh0Qm94KCk7IHRleHRCb3g7IHRleHRCb3gg
PSB0ZXh0Qm94LT5uZXh0VGV4dEJveCgpKQotICAgICAgICAgICAgc29ydGVkVGV4dEJveGVzLmFw
cGVuZCh0ZXh0Qm94KTsKLSAgICAgICAgc3RkOjpzb3J0KHNvcnRlZFRleHRCb3hlcy5iZWdpbigp
LCBzb3J0ZWRUZXh0Qm94ZXMuZW5kKCksIFtdKGF1dG8qIGEsIGF1dG8qIGIpIHsKLSAgICAgICAg
ICAgIHJldHVybiBMZWdhY3lJbmxpbmVUZXh0Qm94Ojpjb21wYXJlQnlTdGFydChkb3duY2FzdDxM
ZWdhY3lJbmxpbmVUZXh0Qm94PihhKSwgZG93bmNhc3Q8TGVnYWN5SW5saW5lVGV4dEJveD4oYikp
OwotICAgICAgICB9KTsKLSAgICAgICAgYXV0byogZmlyc3QgPSBzb3J0ZWRUZXh0Qm94ZXNbMF07
Ci0gICAgICAgIHJldHVybiB7IEJveEl0ZXJhdG9yTGVnYWN5UGF0aCB7IGZpcnN0LCBXVEZNb3Zl
KHNvcnRlZFRleHRCb3hlcyksIDAgfSB9OwotICAgIH0KLQotICAgIHJldHVybiBmaXJzdFRleHRS
dW5Gb3IodGV4dCk7Ci19Ci0KLVRleHRCb3hJdGVyYXRvciB0ZXh0UnVuRm9yKGNvbnN0IExlZ2Fj
eUlubGluZVRleHRCb3gqIGxlZ2FjeUlubGluZVRleHRCb3gpCi17Ci0gICAgcmV0dXJuIHsgQm94
SXRlcmF0b3JMZWdhY3lQYXRoIHsgbGVnYWN5SW5saW5lVGV4dEJveCB9IH07Ci19Ci0KLSNpZiBF
TkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKLVRleHRCb3hJdGVyYXRvciB0ZXh0UnVu
Rm9yKGNvbnN0IExheW91dEludGVncmF0aW9uOjpJbmxpbmVDb250ZW50JiBjb250ZW50LCBjb25z
dCBJbmxpbmVEaXNwbGF5OjpCb3gmIGJveCkKLXsKLSAgICByZXR1cm4gdGV4dFJ1bkZvcihjb250
ZW50LCBjb250ZW50LmluZGV4Rm9yQm94KGJveCkpOwotfQotCi1UZXh0Qm94SXRlcmF0b3IgdGV4
dFJ1bkZvcihjb25zdCBMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVudCYgY29udGVudCwg
c2l6ZV90IGJveEluZGV4KQotewotICAgIEFTU0VSVChjb250ZW50LmJveGVzW2JveEluZGV4XS50
ZXh0KCkpOwotICAgIHJldHVybiB7IEJveEl0ZXJhdG9yTW9kZXJuUGF0aCB7IGNvbnRlbnQsIGJv
eEluZGV4IH0gfTsKLX0KLSNlbmRpZgotCi1UZXh0UnVuUmFuZ2UgdGV4dFJ1bnNGb3IoY29uc3Qg
UmVuZGVyVGV4dCYgdGV4dCkKLXsKLSAgICByZXR1cm4geyBmaXJzdFRleHRSdW5Gb3IodGV4dCkg
fTsKLX0KLQotQm94SXRlcmF0b3IgcnVuRm9yKGNvbnN0IFJlbmRlckxpbmVCcmVhayYgcmVuZGVy
ZXIpCitCb3hJdGVyYXRvciBib3hGb3IoY29uc3QgUmVuZGVyTGluZUJyZWFrJiByZW5kZXJlcikK
IHsKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKICAgICBpZiAoYXV0byog
bGluZUxheW91dCA9IExheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0Ojpjb250YWluaW5nKHJl
bmRlcmVyKSkKLSAgICAgICAgcmV0dXJuIGxpbmVMYXlvdXQtPnJ1bkZvcihyZW5kZXJlcik7Cisg
ICAgICAgIHJldHVybiBsaW5lTGF5b3V0LT5ib3hGb3IocmVuZGVyZXIpOwogI2VuZGlmCi0gICAg
cmV0dXJuIHsgQm94SXRlcmF0b3JMZWdhY3lQYXRoKHJlbmRlcmVyLmlubGluZUJveFdyYXBwZXIo
KSkgfTsKKyAgICByZXR1cm4geyBCb3hMZWdhY3lQYXRoKHJlbmRlcmVyLmlubGluZUJveFdyYXBw
ZXIoKSkgfTsKIH0KIAotQm94SXRlcmF0b3IgcnVuRm9yKGNvbnN0IFJlbmRlckJveCYgcmVuZGVy
ZXIpCitCb3hJdGVyYXRvciBib3hGb3IoY29uc3QgUmVuZGVyQm94JiByZW5kZXJlcikKIHsKICNp
ZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKICAgICBpZiAoYXV0byogbGluZUxh
eW91dCA9IExheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0Ojpjb250YWluaW5nKHJlbmRlcmVy
KSkKLSAgICAgICAgcmV0dXJuIGxpbmVMYXlvdXQtPnJ1bkZvcihyZW5kZXJlcik7CisgICAgICAg
IHJldHVybiBsaW5lTGF5b3V0LT5ib3hGb3IocmVuZGVyZXIpOwogI2VuZGlmCi0gICAgcmV0dXJu
IHsgQm94SXRlcmF0b3JMZWdhY3lQYXRoKHJlbmRlcmVyLmlubGluZUJveFdyYXBwZXIoKSkgfTsK
KyAgICByZXR1cm4geyBCb3hMZWdhY3lQYXRoKHJlbmRlcmVyLmlubGluZUJveFdyYXBwZXIoKSkg
fTsKIH0KIAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQotQm94SXRlcmF0
b3IgcnVuRm9yKGNvbnN0IExheW91dEludGVncmF0aW9uOjpJbmxpbmVDb250ZW50JiBjb250ZW50
LCBzaXplX3QgcnVuSW5kZXgpCitCb3hJdGVyYXRvciBib3hGb3IoY29uc3QgTGF5b3V0SW50ZWdy
YXRpb246OklubGluZUNvbnRlbnQmIGNvbnRlbnQsIHNpemVfdCBib3hJbmRleCkKIHsKLSAgICBy
ZXR1cm4geyBCb3hJdGVyYXRvck1vZGVyblBhdGggeyBjb250ZW50LCBydW5JbmRleCB9IH07Cisg
ICAgcmV0dXJuIHsgQm94TW9kZXJuUGF0aCB7IGNvbnRlbnQsIGJveEluZGV4IH0gfTsKIH0KICNl
bmRpZgogCiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCi1jb25zdCBCb3hJ
dGVyYXRvck1vZGVyblBhdGgmIEJveDo6bW9kZXJuUGF0aCgpIGNvbnN0Citjb25zdCBCb3hNb2Rl
cm5QYXRoJiBCb3g6Om1vZGVyblBhdGgoKSBjb25zdAogewotICAgIHJldHVybiBXVEY6OmdldDxC
b3hJdGVyYXRvck1vZGVyblBhdGg+KG1fcGF0aFZhcmlhbnQpOworICAgIHJldHVybiBXVEY6Omdl
dDxCb3hNb2Rlcm5QYXRoPihtX3BhdGhWYXJpYW50KTsKIH0KICNlbmRpZgogCi1jb25zdCBCb3hJ
dGVyYXRvckxlZ2FjeVBhdGgmIEJveDo6bGVnYWN5UGF0aCgpIGNvbnN0Citjb25zdCBCb3hMZWdh
Y3lQYXRoJiBCb3g6OmxlZ2FjeVBhdGgoKSBjb25zdAogewotICAgIHJldHVybiBXVEY6OmdldDxC
b3hJdGVyYXRvckxlZ2FjeVBhdGg+KG1fcGF0aFZhcmlhbnQpOworICAgIHJldHVybiBXVEY6Omdl
dDxCb3hMZWdhY3lQYXRoPihtX3BhdGhWYXJpYW50KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3guaAppbmRleCBl
NmUzMTAzNGI4ZTU2OTA3MDg3OTNkNmNmMTNhOTUwZTQ4MzI1OTQyLi43MzQ4YmFkMGIzMDRjZTY1
Yzg3NzI0MTM3NTA4MjY0MTQ5ZTQ3NjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3guaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00OSw5ICs0OSw5IEBAIGNsYXNz
IEJveCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgUGF0aFZhcmlhbnQgPSBWYXJpYW50PAogI2lmIEVO
QUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQotICAgICAgICBCb3hJdGVyYXRvck1vZGVy
blBhdGgsCisgICAgICAgIEJveE1vZGVyblBhdGgsCiAjZW5kaWYKLSAgICAgICAgQm94SXRlcmF0
b3JMZWdhY3lQYXRoCisgICAgICAgIEJveExlZ2FjeVBhdGgKICAgICA+OwogCiAgICAgQm94KFBh
dGhWYXJpYW50JiYpOwpAQCAtODUsMTEgKzg1LDEyIEBAIHB1YmxpYzoKICAgICBjb25zdCBSZW5k
ZXJPYmplY3QmIHJlbmRlcmVyKCkgY29uc3Q7CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
KCkgY29uc3Q7CiAKLSAgICAvLyBGb3IgaW50ZXJtZWRpYXRlIHBvcnRpbmcgc3RlcHMgb25seS4K
KyAgICAvLyBGSVhNRTogUmVtb3ZlLiBGb3IgaW50ZXJtZWRpYXRlIHBvcnRpbmcgc3RlcHMgb25s
eS4KICAgICBjb25zdCBMZWdhY3lJbmxpbmVCb3gqIGxlZ2FjeUlubGluZUJveCgpIGNvbnN0Owog
I2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogICAgIGNvbnN0IElubGluZURp
c3BsYXk6OkJveCogaW5saW5lQm94KCkgY29uc3Q7CiAjZW5kaWYKKyAgICAKICAgICBCb3hJdGVy
YXRvciBuZXh0T25MaW5lKCkgY29uc3Q7CiAgICAgQm94SXRlcmF0b3IgcHJldmlvdXNPbkxpbmUo
KSBjb25zdDsKICAgICBCb3hJdGVyYXRvciBuZXh0T25MaW5lSWdub3JpbmdMaW5lQnJlYWsoKSBj
b25zdDsKQEAgLTEwMyw0NSArMTA0LDE2IEBAIHByb3RlY3RlZDoKIAogICAgIC8vIFRvIGhlbHAg
d2l0aCBkZWJ1Z2dpbmcuCiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCi0g
ICAgY29uc3QgQm94SXRlcmF0b3JNb2Rlcm5QYXRoJiBtb2Rlcm5QYXRoKCkgY29uc3Q7CisgICAg
Y29uc3QgQm94TW9kZXJuUGF0aCYgbW9kZXJuUGF0aCgpIGNvbnN0OwogI2VuZGlmCi0gICAgY29u
c3QgQm94SXRlcmF0b3JMZWdhY3lQYXRoJiBsZWdhY3lQYXRoKCkgY29uc3Q7CisgICAgY29uc3Qg
Qm94TGVnYWN5UGF0aCYgbGVnYWN5UGF0aCgpIGNvbnN0OwogCiAgICAgUGF0aFZhcmlhbnQgbV9w
YXRoVmFyaWFudDsKIH07CiAKLWNsYXNzIFRleHRCb3ggOiBwdWJsaWMgQm94IHsKLXB1YmxpYzoK
LSAgICBUZXh0Qm94KFBhdGhWYXJpYW50JiYpOwotCi0gICAgYm9vbCBoYXNIeXBoZW4oKSBjb25z
dDsKLSAgICBTdHJpbmdWaWV3IHRleHQoKSBjb25zdDsKLQotICAgIHVuc2lnbmVkIHN0YXJ0KCkg
Y29uc3Q7Ci0gICAgdW5zaWduZWQgZW5kKCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgbGVuZ3RoKCkg
Y29uc3Q7Ci0KLSAgICB1bnNpZ25lZCBvZmZzZXRGb3JQb3NpdGlvbihmbG9hdCB4KSBjb25zdDsK
LSAgICBmbG9hdCBwb3NpdGlvbkZvck9mZnNldCh1bnNpZ25lZCkgY29uc3Q7Ci0KLSAgICBUZXh0
Qm94U2VsZWN0YWJsZVJhbmdlIHNlbGVjdGFibGVSYW5nZSgpIGNvbnN0OwotICAgIExheW91dFJl
Y3Qgc2VsZWN0aW9uUmVjdCh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kKSBjb25zdDsKLQot
ICAgIGJvb2wgaXNDb21iaW5lZFRleHQoKSBjb25zdDsKLSAgICBjb25zdCBGb250Q2FzY2FkZSYg
Zm9udENhc2NhZGUoKSBjb25zdDsKLQotICAgIFRleHRSdW4gY3JlYXRlVGV4dFJ1bigpIGNvbnN0
OwotCi0gICAgY29uc3QgUmVuZGVyVGV4dCYgcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBkb3du
Y2FzdDxSZW5kZXJUZXh0PihCb3g6OnJlbmRlcmVyKCkpOyB9Ci0gICAgY29uc3QgTGVnYWN5SW5s
aW5lVGV4dEJveCogbGVnYWN5SW5saW5lQm94KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8TGVn
YWN5SW5saW5lVGV4dEJveD4oQm94OjpsZWdhY3lJbmxpbmVCb3goKSk7IH0KLQotICAgIFRleHRC
b3hJdGVyYXRvciBuZXh0VGV4dFJ1bigpIGNvbnN0OwotICAgIFRleHRCb3hJdGVyYXRvciBuZXh0
VGV4dFJ1bkluVGV4dE9yZGVyKCkgY29uc3Q7Ci19OwotCiBjbGFzcyBCb3hJdGVyYXRvciB7CiBw
dWJsaWM6Ci0gICAgQm94SXRlcmF0b3IoKSA6IG1fcnVuKEJveEl0ZXJhdG9yTGVnYWN5UGF0aCB7
IG51bGxwdHIsIHsgfSB9KSB7IH07CisgICAgQm94SXRlcmF0b3IoKSA6IG1fYm94KEJveExlZ2Fj
eVBhdGggeyBudWxscHRyLCB7IH0gfSkgeyB9OwogICAgIEJveEl0ZXJhdG9yKEJveDo6UGF0aFZh
cmlhbnQmJik7CiAgICAgQm94SXRlcmF0b3IoY29uc3QgQm94Jik7CiAKQEAgLTE1Myw4ICsxMjUs
OCBAQCBwdWJsaWM6CiAgICAgYm9vbCBvcGVyYXRvcj09KEVuZEl0ZXJhdG9yKSBjb25zdCB7IHJl
dHVybiBhdEVuZCgpOyB9CiAgICAgYm9vbCBvcGVyYXRvciE9KEVuZEl0ZXJhdG9yKSBjb25zdCB7
IHJldHVybiAhYXRFbmQoKTsgfQogCi0gICAgY29uc3QgQm94JiBvcGVyYXRvciooKSBjb25zdCB7
IHJldHVybiBtX3J1bjsgfQotICAgIGNvbnN0IEJveCogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0
dXJuICZtX3J1bjsgfQorICAgIGNvbnN0IEJveCYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4g
bV9ib3g7IH0KKyAgICBjb25zdCBCb3gqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAmbV9i
b3g7IH0KIAogICAgIGJvb2wgYXRFbmQoKSBjb25zdDsKIApAQCAtMTY2LDYwICsxMzgsMTMgQEAg
cHVibGljOgogICAgIEJveEl0ZXJhdG9yJiB0cmF2ZXJzZVByZXZpb3VzT25MaW5lSW5Mb2dpY2Fs
T3JkZXIoKTsKIAogcHJvdGVjdGVkOgotICAgIEJveCBtX3J1bjsKLX07Ci0KLWNsYXNzIFRleHRC
b3hJdGVyYXRvciA6IHB1YmxpYyBCb3hJdGVyYXRvciB7Ci1wdWJsaWM6Ci0gICAgVGV4dEJveEl0
ZXJhdG9yKCkgeyB9Ci0gICAgVGV4dEJveEl0ZXJhdG9yKEJveDo6UGF0aFZhcmlhbnQmJik7Ci0g
ICAgVGV4dEJveEl0ZXJhdG9yKGNvbnN0IEJveCYpOwotCi0gICAgVGV4dEJveEl0ZXJhdG9yJiBv
cGVyYXRvcisrKCkgeyByZXR1cm4gdHJhdmVyc2VOZXh0VGV4dFJ1bigpOyB9Ci0KLSAgICBjb25z
dCBUZXh0Qm94JiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiBnZXQoKTsgfQotICAgIGNvbnN0
IFRleHRCb3gqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAmZ2V0KCk7IH0KLQotICAgIFRl
eHRCb3hJdGVyYXRvciYgdHJhdmVyc2VOZXh0VGV4dFJ1bigpOwotICAgIFRleHRCb3hJdGVyYXRv
ciYgdHJhdmVyc2VOZXh0VGV4dFJ1bkluVGV4dE9yZGVyKCk7Ci0KLXByaXZhdGU6Ci0gICAgQm94
SXRlcmF0b3ImIHRyYXZlcnNlTmV4dE9uTGluZSgpID0gZGVsZXRlOwotICAgIEJveEl0ZXJhdG9y
JiB0cmF2ZXJzZVByZXZpb3VzT25MaW5lKCkgPSBkZWxldGU7Ci0gICAgQm94SXRlcmF0b3ImIHRy
YXZlcnNlTmV4dE9uTGluZUlnbm9yaW5nTGluZUJyZWFrKCkgPSBkZWxldGU7Ci0gICAgQm94SXRl
cmF0b3ImIHRyYXZlcnNlUHJldmlvdXNPbkxpbmVJZ25vcmluZ0xpbmVCcmVhaygpID0gZGVsZXRl
OwotICAgIEJveEl0ZXJhdG9yJiB0cmF2ZXJzZU5leHRPbkxpbmVJbkxvZ2ljYWxPcmRlcigpID0g
ZGVsZXRlOwotICAgIEJveEl0ZXJhdG9yJiB0cmF2ZXJzZVByZXZpb3VzT25MaW5lSW5Mb2dpY2Fs
T3JkZXIoKSA9IGRlbGV0ZTsKLQotICAgIGNvbnN0IFRleHRCb3gmIGdldCgpIGNvbnN0IHsgcmV0
dXJuIGRvd25jYXN0PFRleHRCb3g+KG1fcnVuKTsgfQorICAgIEJveCBtX2JveDsKIH07CiAKLWNs
YXNzIFRleHRSdW5SYW5nZSB7Ci1wdWJsaWM6Ci0gICAgVGV4dFJ1blJhbmdlKFRleHRCb3hJdGVy
YXRvciBiZWdpbikKLSAgICAgICAgOiBtX2JlZ2luKGJlZ2luKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBUZXh0Qm94SXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX2JlZ2luOyB9Ci0gICAg
RW5kSXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4geyB9OyB9Ci0KLXByaXZhdGU6Ci0gICAg
VGV4dEJveEl0ZXJhdG9yIG1fYmVnaW47Ci19OwotCi1UZXh0Qm94SXRlcmF0b3IgZmlyc3RUZXh0
UnVuRm9yKGNvbnN0IFJlbmRlclRleHQmKTsKLVRleHRCb3hJdGVyYXRvciBmaXJzdFRleHRSdW5J
blRleHRPcmRlckZvcihjb25zdCBSZW5kZXJUZXh0Jik7Ci1UZXh0Qm94SXRlcmF0b3IgdGV4dFJ1
bkZvcihjb25zdCBMZWdhY3lJbmxpbmVUZXh0Qm94Kik7Ci0jaWYgRU5BQkxFKExBWU9VVF9GT1JN
QVRUSU5HX0NPTlRFWFQpCi1UZXh0Qm94SXRlcmF0b3IgdGV4dFJ1bkZvcihjb25zdCBMYXlvdXRJ
bnRlZ3JhdGlvbjo6SW5saW5lQ29udGVudCYsIGNvbnN0IElubGluZURpc3BsYXk6OkJveCYpOwot
VGV4dEJveEl0ZXJhdG9yIHRleHRSdW5Gb3IoY29uc3QgTGF5b3V0SW50ZWdyYXRpb246OklubGlu
ZUNvbnRlbnQmLCBzaXplX3QgcnVuSW5kZXgpOwotI2VuZGlmCi1UZXh0UnVuUmFuZ2UgdGV4dFJ1
bnNGb3IoY29uc3QgUmVuZGVyVGV4dCYpOwotQm94SXRlcmF0b3IgcnVuRm9yKGNvbnN0IFJlbmRl
ckxpbmVCcmVhayYpOwotQm94SXRlcmF0b3IgcnVuRm9yKGNvbnN0IFJlbmRlckJveCYpOworQm94
SXRlcmF0b3IgYm94Rm9yKGNvbnN0IFJlbmRlckxpbmVCcmVhayYpOworQm94SXRlcmF0b3IgYm94
Rm9yKGNvbnN0IFJlbmRlckJveCYpOwogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05U
RVhUKQotQm94SXRlcmF0b3IgcnVuRm9yKGNvbnN0IExheW91dEludGVncmF0aW9uOjpJbmxpbmVD
b250ZW50Jiwgc2l6ZV90IHJ1bkluZGV4KTsKK0JveEl0ZXJhdG9yIGJveEZvcihjb25zdCBMYXlv
dXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVudCYsIHNpemVfdCBib3hJbmRleCk7CiAjZW5kaWYK
IAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAg
LTI5NCw5NSArMjE5LDE5IEBAIGlubGluZSBjb25zdCBSZW5kZXJPYmplY3QmIEJveDo6cmVuZGVy
ZXIoKSBjb25zdAogCiBpbmxpbmUgY29uc3QgTGVnYWN5SW5saW5lQm94KiBCb3g6OmxlZ2FjeUlu
bGluZUJveCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEJveEl0
ZXJhdG9yTGVnYWN5UGF0aD4obV9wYXRoVmFyaWFudCkpCisgICAgaWYgKCFXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPEJveExlZ2FjeVBhdGg+KG1fcGF0aFZhcmlhbnQpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICByZXR1cm4gV1RGOjpnZXQ8Qm94SXRlcmF0b3JMZWdhY3lQYXRoPihtX3Bh
dGhWYXJpYW50KS5sZWdhY3lJbmxpbmVCb3goKTsKKyAgICByZXR1cm4gV1RGOjpnZXQ8Qm94TGVn
YWN5UGF0aD4obV9wYXRoVmFyaWFudCkubGVnYWN5SW5saW5lQm94KCk7CiB9CiAKICNpZiBFTkFC
TEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIGlubGluZSBjb25zdCBJbmxpbmVEaXNwbGF5
OjpCb3gqIEJveDo6aW5saW5lQm94KCkgY29uc3QKIHsKLSAgICBpZiAoIVdURjo6aG9sZHNfYWx0
ZXJuYXRpdmU8Qm94SXRlcmF0b3JNb2Rlcm5QYXRoPihtX3BhdGhWYXJpYW50KSkKKyAgICBpZiAo
IVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8Qm94TW9kZXJuUGF0aD4obV9wYXRoVmFyaWFudCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiAmV1RGOjpnZXQ8Qm94SXRlcmF0b3JN
b2Rlcm5QYXRoPihtX3BhdGhWYXJpYW50KS5ib3goKTsKKyAgICByZXR1cm4gJldURjo6Z2V0PEJv
eE1vZGVyblBhdGg+KG1fcGF0aFZhcmlhbnQpLmJveCgpOwogfQogI2VuZGlmCiAKLWlubGluZSBi
b29sIFRleHRCb3g6Omhhc0h5cGhlbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdURjo6c3dpdGNo
T24obV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgewotICAgICAgICByZXR1cm4gcGF0aC5o
YXNIeXBoZW4oKTsKLSAgICB9KTsKLX0KLQotaW5saW5lIFRleHRCb3g6OlRleHRCb3goUGF0aFZh
cmlhbnQmJiBwYXRoKQotICAgIDogQm94KFdURk1vdmUocGF0aCkpCi17Ci19Ci0KLWlubGluZSBT
dHJpbmdWaWV3IFRleHRCb3g6OnRleHQoKSBjb25zdAotewotICAgIHJldHVybiBXVEY6OnN3aXRj
aE9uKG1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKLSAgICAgICAgcmV0dXJuIHBhdGgu
dGV4dCgpOwotICAgIH0pOwotfQotCi1pbmxpbmUgdW5zaWduZWQgVGV4dEJveDo6c3RhcnQoKSBj
b25zdAotewotICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGF1dG8m
IHBhdGgpIHsKLSAgICAgICAgcmV0dXJuIHBhdGguc3RhcnQoKTsKLSAgICB9KTsKLX0KLQotaW5s
aW5lIHVuc2lnbmVkIFRleHRCb3g6OmVuZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdURjo6c3dp
dGNoT24obV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgewotICAgICAgICByZXR1cm4gcGF0
aC5lbmQoKTsKLSAgICB9KTsKLX0KLQotaW5saW5lIHVuc2lnbmVkIFRleHRCb3g6Omxlbmd0aCgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10oYXV0
byYgcGF0aCkgewotICAgICAgICByZXR1cm4gcGF0aC5sZW5ndGgoKTsKLSAgICB9KTsKLX0KLQot
aW5saW5lIHVuc2lnbmVkIFRleHRCb3g6Om9mZnNldEZvclBvc2l0aW9uKGZsb2F0IHgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgWyZdKGF1dG8mIHBh
dGgpIHsKLSAgICAgICAgcmV0dXJuIHBhdGgub2Zmc2V0Rm9yUG9zaXRpb24oeCk7Ci0gICAgfSk7
Ci19Ci0KLWlubGluZSBmbG9hdCBUZXh0Qm94Ojpwb3NpdGlvbkZvck9mZnNldCh1bnNpZ25lZCBv
ZmZzZXQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwg
WyZdKGF1dG8mIHBhdGgpIHsKLSAgICAgICAgcmV0dXJuIHBhdGgucG9zaXRpb25Gb3JPZmZzZXQo
b2Zmc2V0KTsKLSAgICB9KTsKLX0KLQotaW5saW5lIFRleHRCb3hTZWxlY3RhYmxlUmFuZ2UgVGV4
dEJveDo6c2VsZWN0YWJsZVJhbmdlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gV1RGOjpzd2l0Y2hP
bihtX3BhdGhWYXJpYW50LCBbJl0oYXV0byYgcGF0aCkgewotICAgICAgICByZXR1cm4gcGF0aC5z
ZWxlY3RhYmxlUmFuZ2UoKTsKLSAgICB9KTsKIH0KLQotaW5saW5lIFRleHRSdW4gVGV4dEJveDo6
Y3JlYXRlVGV4dFJ1bigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRo
VmFyaWFudCwgWyZdKGF1dG8mIHBhdGgpIHsKLSAgICAgICAgcmV0dXJuIHBhdGguY3JlYXRlVGV4
dFJ1bigpOwotICAgIH0pOwogfQotCi19Ci19Ci0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVH
SU4oV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OlRleHRCb3gpCi1zdGF0aWMgYm9vbCBpc1R5cGUo
Y29uc3QgV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveCYgcnVuKSB7IHJldHVybiBydW4uaXNU
ZXh0KCk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQotU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19CRUdJTihXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yKQot
c3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVy
YXRvciYgcnVuSXRlcmF0b3IpIHsgcmV0dXJuICFydW5JdGVyYXRvciB8fCBydW5JdGVyYXRvci0+
aXNUZXh0KCk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveExlZ2FjeVBh
dGguaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJv
eExlZ2FjeVBhdGguaAppbmRleCBkMjI0YzJhMjMwNjYzMjQyNWYzYzE2NmVlYzE1NDJjZjVmMjFl
YmI5Li43OTU4YmIyN2QyZDk3ZTgwMGEyODQzYzljNjFkMWM3NzNmNGU3MjRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3hMZWdh
Y3lQYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0
ZXJhdG9yQm94TGVnYWN5UGF0aC5oCkBAIC0zNSwxNiArMzUsMTYgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIG5hbWVzcGFjZSBJbmxpbmVJdGVyYXRvciB7CiAKLWNsYXNzIEJveEl0ZXJhdG9yTGVn
YWN5UGF0aCB7CitjbGFzcyBCb3hMZWdhY3lQYXRoIHsKIHB1YmxpYzoKLSAgICBCb3hJdGVyYXRv
ckxlZ2FjeVBhdGgoY29uc3QgTGVnYWN5SW5saW5lQm94KiBpbmxpbmVCb3gsIFZlY3Rvcjxjb25z
dCBMZWdhY3lJbmxpbmVCb3gqPiYmIHNvcnRlZElubGluZUJveGVzID0geyB9LCBzaXplX3Qgc29y
dGVkSW5saW5lQm94SW5kZXggPSAwKQorICAgIEJveExlZ2FjeVBhdGgoY29uc3QgTGVnYWN5SW5s
aW5lQm94KiBpbmxpbmVCb3gsIFZlY3Rvcjxjb25zdCBMZWdhY3lJbmxpbmVCb3gqPiYmIHNvcnRl
ZElubGluZUJveGVzID0geyB9LCBzaXplX3Qgc29ydGVkSW5saW5lQm94SW5kZXggPSAwKQogICAg
ICAgICA6IG1faW5saW5lQm94KGlubGluZUJveCkKICAgICAgICAgLCBtX2xvZ2ljYWxPcmRlckNh
Y2hlKFdURk1vdmUoc29ydGVkSW5saW5lQm94ZXMpKQogICAgICAgICAsIG1fbG9naWNhbE9yZGVy
Q2FjaGVJbmRleChzb3J0ZWRJbmxpbmVCb3hJbmRleCkKICAgICB7IH0KIAogICAgIGVudW0gY2xh
c3MgTG9naWNhbE9yZGVyIHsgU3RhcnQsIEVuZCB9OwotICAgIEJveEl0ZXJhdG9yTGVnYWN5UGF0
aChjb25zdCBMZWdhY3lSb290SW5saW5lQm94JiByb290LCBMb2dpY2FsT3JkZXIgb3JkZXIpCisg
ICAgQm94TGVnYWN5UGF0aChjb25zdCBMZWdhY3lSb290SW5saW5lQm94JiByb290LCBMb2dpY2Fs
T3JkZXIgb3JkZXIpCiAgICAgICAgIDogbV9sb2dpY2FsT3JkZXJDYWNoZShpbmxpbmVCb3hlc0lu
TG9naWNhbE9yZGVyKHJvb3QpKQogICAgIHsKICAgICAgICAgaWYgKCFtX2xvZ2ljYWxPcmRlckNh
Y2hlLmlzRW1wdHkoKSkgewpAQCAtODQsMTUgKzg0LDE1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIG1faW5saW5lQm94LT5yZW5kZXJlcigpOwogICAgIH0KIAotICAgIHZvaWQgdHJhdmVyc2VO
ZXh0VGV4dFJ1bigpIHsgbV9pbmxpbmVCb3ggPSBpbmxpbmVUZXh0Qm94KCktPm5leHRUZXh0Qm94
KCk7IH0KLSAgICB2b2lkIHRyYXZlcnNlTmV4dFRleHRSdW5JblRleHRPcmRlcigpCisgICAgdm9p
ZCB0cmF2ZXJzZU5leHRUZXh0Qm94KCkgeyBtX2lubGluZUJveCA9IGlubGluZVRleHRCb3goKS0+
bmV4dFRleHRCb3goKTsgfQorICAgIHZvaWQgdHJhdmVyc2VOZXh0VGV4dEJveEluVGV4dE9yZGVy
KCkKICAgICB7CiAgICAgICAgIGlmICghbV9sb2dpY2FsT3JkZXJDYWNoZS5pc0VtcHR5KCkpIHsK
ICAgICAgICAgICAgIHRyYXZlcnNlTmV4dElubGluZUJveEluQ2FjaGVPcmRlcigpOwogICAgICAg
ICAgICAgQVNTRVJUKCFtX2lubGluZUJveCB8fCBpczxMZWdhY3lJbmxpbmVUZXh0Qm94PihtX2lu
bGluZUJveCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIHRyYXZl
cnNlTmV4dFRleHRSdW4oKTsKKyAgICAgICAgdHJhdmVyc2VOZXh0VGV4dEJveCgpOwogICAgIH0K
IAogICAgIHZvaWQgdHJhdmVyc2VOZXh0T25MaW5lKCkKQEAgLTExNyw3ICsxMTcsNyBAQCBwdWJs
aWM6CiAgICAgICAgIHRyYXZlcnNlUHJldmlvdXNJbmxpbmVCb3hJbkNhY2hlT3JkZXIoKTsKICAg
ICB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQm94SXRlcmF0b3JMZWdhY3lQYXRoJiBv
dGhlcikgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVCb3ggPT0gb3RoZXIubV9pbmxpbmVCb3g7IH0K
KyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQm94TGVnYWN5UGF0aCYgb3RoZXIpIGNvbnN0IHsg
cmV0dXJuIG1faW5saW5lQm94ID09IG90aGVyLm1faW5saW5lQm94OyB9CiAKICAgICBib29sIGF0
RW5kKCkgY29uc3QgeyByZXR1cm4gIW1faW5saW5lQm94OyB9CiAKQEAgLTE1NCwxNCArMTU0LDE0
IEBAIHByaXZhdGU6CiB9OwogCiAKLWlubGluZSB2b2lkIEJveEl0ZXJhdG9yTGVnYWN5UGF0aDo6
dHJhdmVyc2VOZXh0SW5saW5lQm94SW5DYWNoZU9yZGVyKCkKK2lubGluZSB2b2lkIEJveExlZ2Fj
eVBhdGg6OnRyYXZlcnNlTmV4dElubGluZUJveEluQ2FjaGVPcmRlcigpCiB7CiAgICAgQVNTRVJU
KCFtX2xvZ2ljYWxPcmRlckNhY2hlLmlzRW1wdHkoKSk7CiAgICAgKyttX2xvZ2ljYWxPcmRlckNh
Y2hlSW5kZXg7CiAgICAgbV9pbmxpbmVCb3ggPSBtX2xvZ2ljYWxPcmRlckNhY2hlSW5kZXggPCBt
X2xvZ2ljYWxPcmRlckNhY2hlLnNpemUoKSA/IG1fbG9naWNhbE9yZGVyQ2FjaGVbbV9sb2dpY2Fs
T3JkZXJDYWNoZUluZGV4XSA6IG51bGxwdHI7CiB9CiAKLWlubGluZSB2b2lkIEJveEl0ZXJhdG9y
TGVnYWN5UGF0aDo6dHJhdmVyc2VQcmV2aW91c0lubGluZUJveEluQ2FjaGVPcmRlcigpCitpbmxp
bmUgdm9pZCBCb3hMZWdhY3lQYXRoOjp0cmF2ZXJzZVByZXZpb3VzSW5saW5lQm94SW5DYWNoZU9y
ZGVyKCkKIHsKICAgICBBU1NFUlQoIW1fbG9naWNhbE9yZGVyQ2FjaGUuaXNFbXB0eSgpKTsKICAg
ICBpZiAoIW1fbG9naWNhbE9yZGVyQ2FjaGVJbmRleCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94TW9kZXJuUGF0aC5oIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94TW9kZXJu
UGF0aC5oCmluZGV4IDVjMTlmMDFiNGUxOWJiYzVlNjE5OGY5Y2NmMTNhNmE5YjA2MzcyY2EuLjlj
MzY0NDAyZGZkMmNkZWNkN2E4Yjk5YzViYWVhNWY3ZTA2YjM3ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveE1vZGVyblBhdGgu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JC
b3hNb2Rlcm5QYXRoLmgKQEAgLTM0LDE0ICszNCwxNCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
bmFtZXNwYWNlIElubGluZUl0ZXJhdG9yIHsKIAotY2xhc3MgQm94SXRlcmF0b3JNb2Rlcm5QYXRo
IHsKK2NsYXNzIEJveE1vZGVyblBhdGggewogcHVibGljOgotICAgIEJveEl0ZXJhdG9yTW9kZXJu
UGF0aChjb25zdCBMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVudCYgaW5saW5lQ29udGVu
dCkKKyAgICBCb3hNb2Rlcm5QYXRoKGNvbnN0IExheW91dEludGVncmF0aW9uOjpJbmxpbmVDb250
ZW50JiBpbmxpbmVDb250ZW50KQogICAgICAgICA6IG1faW5saW5lQ29udGVudCgmaW5saW5lQ29u
dGVudCkKICAgICB7CiAgICAgICAgIHNldEF0RW5kKCk7CiAgICAgfQotICAgIEJveEl0ZXJhdG9y
TW9kZXJuUGF0aChjb25zdCBMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVudCYgaW5saW5l
Q29udGVudCwgc2l6ZV90IHN0YXJ0SW5kZXgpCisgICAgQm94TW9kZXJuUGF0aChjb25zdCBMYXlv
dXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVudCYgaW5saW5lQ29udGVudCwgc2l6ZV90IHN0YXJ0
SW5kZXgpCiAgICAgICAgIDogbV9pbmxpbmVDb250ZW50KCZpbmxpbmVDb250ZW50KQogICAgICAg
ICAsIG1fYm94SW5kZXgoc3RhcnRJbmRleCkKICAgICB7CkBAIC0xMTksNyArMTE5LDcgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gbV9pbmxpbmVDb250ZW50LT5yZW5kZXJlckZvckxheW91dEJv
eChib3goKS5sYXlvdXRCb3goKSk7CiAgICAgfQogCi0gICAgdm9pZCB0cmF2ZXJzZU5leHRUZXh0
UnVuKCkKKyAgICB2b2lkIHRyYXZlcnNlTmV4dFRleHRCb3goKQogICAgIHsKICAgICAgICAgQVNT
RVJUKCFhdEVuZCgpKTsKICAgICAgICAgQVNTRVJUKGJveCgpLnRleHQoKSk7CkBAIC0xMzQsMTAg
KzEzNCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChhdEVuZCgpIHx8IGJveCgpLnRleHQo
KSk7CiAgICAgfQogCi0gICAgdm9pZCB0cmF2ZXJzZU5leHRUZXh0UnVuSW5UZXh0T3JkZXIoKQor
ICAgIHZvaWQgdHJhdmVyc2VOZXh0VGV4dEJveEluVGV4dE9yZGVyKCkKICAgICB7CiAgICAgICAg
IC8vIEZJWE1FOiBObyBSVEwgaW4gTEZDLgotICAgICAgICB0cmF2ZXJzZU5leHRUZXh0UnVuKCk7
CisgICAgICAgIHRyYXZlcnNlTmV4dFRleHRCb3goKTsKICAgICB9CiAKICAgICB2b2lkIHRyYXZl
cnNlTmV4dE9uTGluZSgpCkBAIC0xNzQsNyArMTc0LDcgQEAgcHVibGljOgogICAgICAgICB0cmF2
ZXJzZVByZXZpb3VzT25MaW5lKCk7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEJveEl0ZXJhdG9yTW9kZXJuUGF0aCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lQ29u
dGVudCA9PSBvdGhlci5tX2lubGluZUNvbnRlbnQgJiYgbV9ib3hJbmRleCA9PSBvdGhlci5tX2Jv
eEluZGV4OyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJveE1vZGVyblBhdGgmIG90aGVy
KSBjb25zdCB7IHJldHVybiBtX2lubGluZUNvbnRlbnQgPT0gb3RoZXIubV9pbmxpbmVDb250ZW50
ICYmIG1fYm94SW5kZXggPT0gb3RoZXIubV9ib3hJbmRleDsgfQogCiAgICAgYm9vbCBhdEVuZCgp
IGNvbnN0IHsgcmV0dXJuIG1fYm94SW5kZXggPT0gYm94ZXMoKS5zaXplKCk7IH0KICAgICBjb25z
dCBJbmxpbmVEaXNwbGF5OjpCb3gmIGJveCgpIGNvbnN0IHsgcmV0dXJuIGJveGVzKClbbV9ib3hJ
bmRleF07IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9J
bmxpbmVJdGVyYXRvckxpbmVMZWdhY3lQYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50
ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lTGVnYWN5UGF0aC5oCmluZGV4IDkxMzhlNTE3Y2Ix
MzVkNDkzNDQ5M2M5ZDg4NzVhYWNhMzRjNTlmMjAuLmZhYzNhMjJlNzQ5NGQ0ZTQzMTIxOGZjZTg5
ZTc5YjQzMjRhOTNkMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3Jh
dGlvbi9JbmxpbmVJdGVyYXRvckxpbmVMZWdhY3lQYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZUxlZ2FjeVBhdGguaApAQCAtNzUs
MjUgKzc1LDI1IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgYXRFbmQoKSBjb25zdCB7IHJldHVybiAh
bV9yb290SW5saW5lQm94OyB9CiAKLSAgICBCb3hJdGVyYXRvckxlZ2FjeVBhdGggZmlyc3RSdW4o
KSBjb25zdAorICAgIEJveExlZ2FjeVBhdGggZmlyc3RSdW4oKSBjb25zdAogICAgIHsKICAgICAg
ICAgcmV0dXJuIHsgbV9yb290SW5saW5lQm94LT5maXJzdExlYWZEZXNjZW5kYW50KCkgfTsKICAg
ICB9CiAKLSAgICBCb3hJdGVyYXRvckxlZ2FjeVBhdGggbGFzdFJ1bigpIGNvbnN0CisgICAgQm94
TGVnYWN5UGF0aCBsYXN0UnVuKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiB7IG1fcm9v
dElubGluZUJveC0+bGFzdExlYWZEZXNjZW5kYW50KCkgfTsKICAgICB9CiAKIAotICAgIEJveEl0
ZXJhdG9yTGVnYWN5UGF0aCBsb2dpY2FsU3RhcnRSdW4oKSBjb25zdAorICAgIEJveExlZ2FjeVBh
dGggbG9naWNhbFN0YXJ0UnVuKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiB7ICptX3Jv
b3RJbmxpbmVCb3gsIEJveEl0ZXJhdG9yTGVnYWN5UGF0aDo6TG9naWNhbE9yZGVyOjpTdGFydCB9
OworICAgICAgICByZXR1cm4geyAqbV9yb290SW5saW5lQm94LCBCb3hMZWdhY3lQYXRoOjpMb2dp
Y2FsT3JkZXI6OlN0YXJ0IH07CiAgICAgfQogCi0gICAgQm94SXRlcmF0b3JMZWdhY3lQYXRoIGxv
Z2ljYWxFbmRSdW4oKSBjb25zdAorICAgIEJveExlZ2FjeVBhdGggbG9naWNhbEVuZFJ1bigpIGNv
bnN0CiAgICAgewotICAgICAgICByZXR1cm4geyAqbV9yb290SW5saW5lQm94LCBCb3hJdGVyYXRv
ckxlZ2FjeVBhdGg6OkxvZ2ljYWxPcmRlcjo6RW5kIH07CisgICAgICAgIHJldHVybiB7ICptX3Jv
b3RJbmxpbmVCb3gsIEJveExlZ2FjeVBhdGg6OkxvZ2ljYWxPcmRlcjo6RW5kIH07CiAgICAgfQog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L0lubGluZUl0ZXJhdG9yTGluZU1vZGVyblBhdGguaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVNb2Rlcm5QYXRoLmgKaW5kZXggY2QzODc5YjBh
NWU1ODRiNjcwYTRkODI5OWI3NWI0MTE2NmRmMWI3MC4uY2FmODI2Zjg1MWU0N2ZmZTdkNWEwZGFj
NTk1ZmU5ZGYzM2M0NWRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVn
cmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZU1vZGVyblBhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lTW9kZXJuUGF0aC5oCkBAIC0z
NCw3ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgSW5saW5lSXRlcmF0
b3IgewogCi1jbGFzcyBCb3hJdGVyYXRvck1vZGVyblBhdGg7CitjbGFzcyBCb3hNb2Rlcm5QYXRo
OwogCiBjbGFzcyBMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoIHsKIHB1YmxpYzoKQEAgLTk1LDMzICs5
NSwzMyBAQCBwdWJsaWM6CiAKICAgICBib29sIGF0RW5kKCkgY29uc3QgeyByZXR1cm4gbV9saW5l
SW5kZXggPT0gbGluZXMoKS5zaXplKCk7IH0KIAotICAgIEJveEl0ZXJhdG9yTW9kZXJuUGF0aCBm
aXJzdFJ1bigpIGNvbnN0CisgICAgQm94TW9kZXJuUGF0aCBmaXJzdFJ1bigpIGNvbnN0CiAgICAg
ewogICAgICAgICBpZiAoIWxpbmUoKS5ib3hDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIHsg
Km1faW5saW5lQ29udGVudCB9OwotICAgICAgICBhdXRvIHJ1bkl0ZXJhdG9yID0gQm94SXRlcmF0
b3JNb2Rlcm5QYXRoIHsgKm1faW5saW5lQ29udGVudCwgbGluZSgpLmZpcnN0Qm94SW5kZXgoKSB9
OworICAgICAgICBhdXRvIHJ1bkl0ZXJhdG9yID0gQm94TW9kZXJuUGF0aCB7ICptX2lubGluZUNv
bnRlbnQsIGxpbmUoKS5maXJzdEJveEluZGV4KCkgfTsKICAgICAgICAgaWYgKHJ1bkl0ZXJhdG9y
LmJveCgpLmlzSW5saW5lQm94KCkpCiAgICAgICAgICAgICBydW5JdGVyYXRvci50cmF2ZXJzZU5l
eHRPbkxpbmUoKTsKICAgICAgICAgcmV0dXJuIHJ1bkl0ZXJhdG9yOwogICAgIH0KIAotICAgIEJv
eEl0ZXJhdG9yTW9kZXJuUGF0aCBsYXN0UnVuKCkgY29uc3QKKyAgICBCb3hNb2Rlcm5QYXRoIGxh
c3RSdW4oKSBjb25zdAogICAgIHsKICAgICAgICAgYXV0byBib3hDb3VudCA9IGxpbmUoKS5ib3hD
b3VudCgpOwogICAgICAgICBpZiAoIWJveENvdW50KQogICAgICAgICAgICAgcmV0dXJuIHsgKm1f
aW5saW5lQ29udGVudCB9OwotICAgICAgICBhdXRvIHJ1bkl0ZXJhdG9yID0gQm94SXRlcmF0b3JN
b2Rlcm5QYXRoIHsgKm1faW5saW5lQ29udGVudCwgbGluZSgpLmZpcnN0Qm94SW5kZXgoKSArIGJv
eENvdW50IC0gMSB9OworICAgICAgICBhdXRvIHJ1bkl0ZXJhdG9yID0gQm94TW9kZXJuUGF0aCB7
ICptX2lubGluZUNvbnRlbnQsIGxpbmUoKS5maXJzdEJveEluZGV4KCkgKyBib3hDb3VudCAtIDEg
fTsKICAgICAgICAgaWYgKHJ1bkl0ZXJhdG9yLmJveCgpLmlzSW5saW5lQm94KCkpCiAgICAgICAg
ICAgICBydW5JdGVyYXRvci50cmF2ZXJzZVByZXZpb3VzT25MaW5lKCk7CiAgICAgICAgIHJldHVy
biBydW5JdGVyYXRvcjsKICAgICB9CiAKLSAgICBCb3hJdGVyYXRvck1vZGVyblBhdGggbG9naWNh
bFN0YXJ0UnVuKCkgY29uc3QKKyAgICBCb3hNb2Rlcm5QYXRoIGxvZ2ljYWxTdGFydFJ1bigpIGNv
bnN0CiAgICAgewogICAgICAgICByZXR1cm4gZmlyc3RSdW4oKTsKICAgICB9CiAKLSAgICBCb3hJ
dGVyYXRvck1vZGVyblBhdGggbG9naWNhbEVuZFJ1bigpIGNvbnN0CisgICAgQm94TW9kZXJuUGF0
aCBsb2dpY2FsRW5kUnVuKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBsYXN0UnVuKCk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lu
bGluZUl0ZXJhdG9yVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vSW5saW5lSXRlcmF0b3JUZXh0Qm94LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OGU5MmY5M2Q0MjMyZmE1
YmJmM2Y1MGYyM2NmZmQzMzc0YTNiODg2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJveC5jcHAKQEAgLTAsMCAr
MSwxNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJJbmxpbmVJdGVyYXRvclRleHRCb3guaCIKKworI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTGlu
ZS5oIgorI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9uTGluZUxheW91dC5oIgorI2luY2x1ZGUg
IlJlbmRlckNvbWJpbmVUZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJ
bmxpbmVJdGVyYXRvciB7CisKK1RleHRCb3hJdGVyYXRvciBUZXh0Qm94OjpuZXh0VGV4dEJveCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIFRleHRCb3hJdGVyYXRvcigqdGhpcykudHJhdmVyc2VOZXh0
VGV4dEJveCgpOworfQorCitUZXh0Qm94SXRlcmF0b3IgVGV4dEJveDo6bmV4dFRleHRCb3hJblRl
eHRPcmRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFRleHRCb3hJdGVyYXRvcigqdGhpcykudHJh
dmVyc2VOZXh0VGV4dEJveEluVGV4dE9yZGVyKCk7Cit9CisKK0xheW91dFJlY3QgVGV4dEJveDo6
c2VsZWN0aW9uUmVjdCh1bnNpZ25lZCByYW5nZVN0YXJ0LCB1bnNpZ25lZCByYW5nZUVuZCkgY29u
c3QKK3sKKyAgICBhdXRvIFtjbGFtcGVkU3RhcnQsIGNsYW1wZWRFbmRdID0gc2VsZWN0YWJsZVJh
bmdlKCkuY2xhbXAocmFuZ2VTdGFydCwgcmFuZ2VFbmQpOworCisgICAgaWYgKGNsYW1wZWRTdGFy
dCA+PSBjbGFtcGVkRW5kICYmICEocmFuZ2VTdGFydCA9PSByYW5nZUVuZCAmJiByYW5nZVN0YXJ0
ID49IHN0YXJ0KCkgJiYgcmFuZ2VTdGFydCA8PSBlbmQoKSkpCisgICAgICAgIHJldHVybiB7IH07
CisKKyAgICBhdXRvIHNlbGVjdGlvblRvcCA9IGxpbmUoKS0+c2VsZWN0aW9uVG9wKCk7CisgICAg
YXV0byBzZWxlY3Rpb25IZWlnaHQgPSBsaW5lKCktPnNlbGVjdGlvbkhlaWdodCgpOworCisgICAg
TGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0IHsgbG9naWNhbExlZnQoKSwgc2VsZWN0aW9uVG9wLCBs
b2dpY2FsV2lkdGgoKSwgc2VsZWN0aW9uSGVpZ2h0IH07CisKKyAgICBUZXh0UnVuIHRleHRSdW4g
PSBjcmVhdGVUZXh0UnVuKCk7CisgICAgaWYgKGNsYW1wZWRTdGFydCB8fCBjbGFtcGVkRW5kICE9
IHRleHRSdW4ubGVuZ3RoKCkpCisgICAgICAgIGZvbnRDYXNjYWRlKCkuYWRqdXN0U2VsZWN0aW9u
UmVjdEZvclRleHQodGV4dFJ1biwgc2VsZWN0aW9uUmVjdCwgY2xhbXBlZFN0YXJ0LCBjbGFtcGVk
RW5kKTsKKworICAgIHJldHVybiBzbmFwcGVkU2VsZWN0aW9uUmVjdChzZWxlY3Rpb25SZWN0LCBs
b2dpY2FsUmlnaHQoKSwgc2VsZWN0aW9uVG9wLCBzZWxlY3Rpb25IZWlnaHQsIGlzSG9yaXpvbnRh
bCgpKTsKK30KKworYm9vbCBUZXh0Qm94Ojppc0NvbWJpbmVkVGV4dCgpIGNvbnN0Cit7CisgICAg
YXV0byYgcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOworICAgIHJldHVybiBpczxSZW5kZXJD
b21iaW5lVGV4dD4ocmVuZGVyZXIpICYmIGRvd25jYXN0PFJlbmRlckNvbWJpbmVUZXh0PihyZW5k
ZXJlcikuaXNDb21iaW5lZCgpOworfQorCitjb25zdCBGb250Q2FzY2FkZSYgVGV4dEJveDo6Zm9u
dENhc2NhZGUoKSBjb25zdAoreworICAgIGlmIChpc0NvbWJpbmVkVGV4dCgpKQorICAgICAgICBy
ZXR1cm4gZG93bmNhc3Q8UmVuZGVyQ29tYmluZVRleHQ+KHJlbmRlcmVyKCkpLnRleHRDb21iaW5l
Rm9udCgpOworCisgICAgcmV0dXJuIHN0eWxlKCkuZm9udENhc2NhZGUoKTsKK30KKworVGV4dEJv
eEl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3IoQm94OjpQYXRoVmFyaWFudCYmIHBhdGhWYXJpYW50
KQorICAgIDogQm94SXRlcmF0b3IoV1RGTW92ZShwYXRoVmFyaWFudCkpCit7Cit9CisKK1RleHRC
b3hJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yKGNvbnN0IEJveCYgYm94KQorICAgIDogQm94SXRl
cmF0b3IoYm94KQoreworfQorCitUZXh0Qm94SXRlcmF0b3ImIFRleHRCb3hJdGVyYXRvcjo6dHJh
dmVyc2VOZXh0VGV4dEJveCgpCit7CisgICAgV1RGOjpzd2l0Y2hPbihtX2JveC5tX3BhdGhWYXJp
YW50LCBbXShhdXRvJiBwYXRoKSB7CisgICAgICAgIHBhdGgudHJhdmVyc2VOZXh0VGV4dEJveCgp
OworICAgIH0pOworICAgIHJldHVybiAqdGhpczsKK30KKworVGV4dEJveEl0ZXJhdG9yJiBUZXh0
Qm94SXRlcmF0b3I6OnRyYXZlcnNlTmV4dFRleHRCb3hJblRleHRPcmRlcigpCit7CisgICAgV1RG
Ojpzd2l0Y2hPbihtX2JveC5tX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7CisgICAgICAg
IHBhdGgudHJhdmVyc2VOZXh0VGV4dEJveEluVGV4dE9yZGVyKCk7CisgICAgfSk7CisgICAgcmV0
dXJuICp0aGlzOworfQorCitUZXh0Qm94SXRlcmF0b3IgZmlyc3RUZXh0Qm94Rm9yKGNvbnN0IFJl
bmRlclRleHQmIHRleHQpCit7CisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQp
CisgICAgaWYgKGF1dG8qIGxpbmVMYXlvdXQgPSBMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91
dDo6Y29udGFpbmluZyh0ZXh0KSkKKyAgICAgICAgcmV0dXJuIGxpbmVMYXlvdXQtPnRleHRCb3hl
c0Zvcih0ZXh0KTsKKyNlbmRpZgorCisgICAgcmV0dXJuIHsgQm94TGVnYWN5UGF0aCB7IHRleHQu
Zmlyc3RUZXh0Qm94KCkgfSB9OworfQorCitUZXh0Qm94SXRlcmF0b3IgZmlyc3RUZXh0Qm94SW5U
ZXh0T3JkZXJGb3IoY29uc3QgUmVuZGVyVGV4dCYgdGV4dCkKK3sKKyAgICBpZiAodGV4dC5maXJz
dFRleHRCb3goKSAmJiB0ZXh0LmNvbnRhaW5zUmV2ZXJzZWRUZXh0KCkpIHsKKyAgICAgICAgVmVj
dG9yPGNvbnN0IExlZ2FjeUlubGluZUJveCo+IHNvcnRlZFRleHRCb3hlczsKKyAgICAgICAgZm9y
IChhdXRvKiB0ZXh0Qm94ID0gdGV4dC5maXJzdFRleHRCb3goKTsgdGV4dEJveDsgdGV4dEJveCA9
IHRleHRCb3gtPm5leHRUZXh0Qm94KCkpCisgICAgICAgICAgICBzb3J0ZWRUZXh0Qm94ZXMuYXBw
ZW5kKHRleHRCb3gpOworICAgICAgICBzdGQ6OnNvcnQoc29ydGVkVGV4dEJveGVzLmJlZ2luKCks
IHNvcnRlZFRleHRCb3hlcy5lbmQoKSwgW10oYXV0byogYSwgYXV0byogYikgeworICAgICAgICAg
ICAgcmV0dXJuIExlZ2FjeUlubGluZVRleHRCb3g6OmNvbXBhcmVCeVN0YXJ0KGRvd25jYXN0PExl
Z2FjeUlubGluZVRleHRCb3g+KGEpLCBkb3duY2FzdDxMZWdhY3lJbmxpbmVUZXh0Qm94PihiKSk7
CisgICAgICAgIH0pOworICAgICAgICBhdXRvKiBmaXJzdCA9IHNvcnRlZFRleHRCb3hlc1swXTsK
KyAgICAgICAgcmV0dXJuIHsgQm94TGVnYWN5UGF0aCB7IGZpcnN0LCBXVEZNb3ZlKHNvcnRlZFRl
eHRCb3hlcyksIDAgfSB9OworICAgIH0KKworICAgIHJldHVybiBmaXJzdFRleHRCb3hGb3IodGV4
dCk7Cit9CisKK1RleHRCb3hJdGVyYXRvciB0ZXh0Qm94Rm9yKGNvbnN0IExlZ2FjeUlubGluZVRl
eHRCb3gqIGxlZ2FjeUlubGluZVRleHRCb3gpCit7CisgICAgcmV0dXJuIHsgQm94TGVnYWN5UGF0
aCB7IGxlZ2FjeUlubGluZVRleHRCb3ggfSB9OworfQorCisjaWYgRU5BQkxFKExBWU9VVF9GT1JN
QVRUSU5HX0NPTlRFWFQpCitUZXh0Qm94SXRlcmF0b3IgdGV4dEJveEZvcihjb25zdCBMYXlvdXRJ
bnRlZ3JhdGlvbjo6SW5saW5lQ29udGVudCYgY29udGVudCwgY29uc3QgSW5saW5lRGlzcGxheTo6
Qm94JiBib3gpCit7CisgICAgcmV0dXJuIHRleHRCb3hGb3IoY29udGVudCwgY29udGVudC5pbmRl
eEZvckJveChib3gpKTsKK30KKworVGV4dEJveEl0ZXJhdG9yIHRleHRCb3hGb3IoY29uc3QgTGF5
b3V0SW50ZWdyYXRpb246OklubGluZUNvbnRlbnQmIGNvbnRlbnQsIHNpemVfdCBib3hJbmRleCkK
K3sKKyAgICBBU1NFUlQoY29udGVudC5ib3hlc1tib3hJbmRleF0udGV4dCgpKTsKKyAgICByZXR1
cm4geyBCb3hNb2Rlcm5QYXRoIHsgY29udGVudCwgYm94SW5kZXggfSB9OworfQorI2VuZGlmCisK
K1RleHRCb3hSYW5nZSB0ZXh0Qm94ZXNGb3IoY29uc3QgUmVuZGVyVGV4dCYgdGV4dCkKK3sKKyAg
ICByZXR1cm4geyBmaXJzdFRleHRCb3hGb3IodGV4dCkgfTsKK30KKworfQorfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJv
eC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4
dEJveC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjE0NGNhMzVjM2IyOWExNjEzMDZjMDY5YTI1NWFkZjg5YmUzZTll
NzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24v
SW5saW5lSXRlcmF0b3JUZXh0Qm94LmgKQEAgLTAsMCArMSwxOTYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JCb3guaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSZW5kZXJMaW5lQnJlYWs7CitjbGFzcyBSZW5kZXJP
YmplY3Q7CitjbGFzcyBSZW5kZXJTdHlsZTsKK2NsYXNzIFJlbmRlclRleHQ7CisKK25hbWVzcGFj
ZSBJbmxpbmVJdGVyYXRvciB7CisKK2NsYXNzIFRleHRCb3ggOiBwdWJsaWMgQm94IHsKK3B1Ymxp
YzoKKyAgICBUZXh0Qm94KFBhdGhWYXJpYW50JiYpOworCisgICAgYm9vbCBoYXNIeXBoZW4oKSBj
b25zdDsKKyAgICBTdHJpbmdWaWV3IHRleHQoKSBjb25zdDsKKworICAgIHVuc2lnbmVkIHN0YXJ0
KCkgY29uc3Q7CisgICAgdW5zaWduZWQgZW5kKCkgY29uc3Q7CisgICAgdW5zaWduZWQgbGVuZ3Ro
KCkgY29uc3Q7CisKKyAgICB1bnNpZ25lZCBvZmZzZXRGb3JQb3NpdGlvbihmbG9hdCB4KSBjb25z
dDsKKyAgICBmbG9hdCBwb3NpdGlvbkZvck9mZnNldCh1bnNpZ25lZCkgY29uc3Q7CisKKyAgICBU
ZXh0Qm94U2VsZWN0YWJsZVJhbmdlIHNlbGVjdGFibGVSYW5nZSgpIGNvbnN0OworICAgIExheW91
dFJlY3Qgc2VsZWN0aW9uUmVjdCh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kKSBjb25zdDsK
KworICAgIGJvb2wgaXNDb21iaW5lZFRleHQoKSBjb25zdDsKKyAgICBjb25zdCBGb250Q2FzY2Fk
ZSYgZm9udENhc2NhZGUoKSBjb25zdDsKKworICAgIFRleHRSdW4gY3JlYXRlVGV4dFJ1bigpIGNv
bnN0OworCisgICAgY29uc3QgUmVuZGVyVGV4dCYgcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBk
b3duY2FzdDxSZW5kZXJUZXh0PihCb3g6OnJlbmRlcmVyKCkpOyB9CisKKyAgICAvLyBGSVhNRTog
UmVtb3ZlLiBGb3IgaW50ZXJtZWRpYXRlIHBvcnRpbmcgc3RlcHMgb25seS4KKyAgICBjb25zdCBM
ZWdhY3lJbmxpbmVUZXh0Qm94KiBsZWdhY3lJbmxpbmVCb3goKSBjb25zdCB7IHJldHVybiBkb3du
Y2FzdDxMZWdhY3lJbmxpbmVUZXh0Qm94PihCb3g6OmxlZ2FjeUlubGluZUJveCgpKTsgfQorCisg
ICAgVGV4dEJveEl0ZXJhdG9yIG5leHRUZXh0Qm94KCkgY29uc3Q7CisgICAgVGV4dEJveEl0ZXJh
dG9yIG5leHRUZXh0Qm94SW5UZXh0T3JkZXIoKSBjb25zdDsKK307CisKK2NsYXNzIFRleHRCb3hJ
dGVyYXRvciA6IHB1YmxpYyBCb3hJdGVyYXRvciB7CitwdWJsaWM6CisgICAgVGV4dEJveEl0ZXJh
dG9yKCkgeyB9CisgICAgVGV4dEJveEl0ZXJhdG9yKEJveDo6UGF0aFZhcmlhbnQmJik7CisgICAg
VGV4dEJveEl0ZXJhdG9yKGNvbnN0IEJveCYpOworCisgICAgVGV4dEJveEl0ZXJhdG9yJiBvcGVy
YXRvcisrKCkgeyByZXR1cm4gdHJhdmVyc2VOZXh0VGV4dEJveCgpOyB9CisKKyAgICBjb25zdCBU
ZXh0Qm94JiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiBnZXQoKTsgfQorICAgIGNvbnN0IFRl
eHRCb3gqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAmZ2V0KCk7IH0KKworICAgIFRleHRC
b3hJdGVyYXRvciYgdHJhdmVyc2VOZXh0VGV4dEJveCgpOworICAgIFRleHRCb3hJdGVyYXRvciYg
dHJhdmVyc2VOZXh0VGV4dEJveEluVGV4dE9yZGVyKCk7CisKK3ByaXZhdGU6CisgICAgQm94SXRl
cmF0b3ImIHRyYXZlcnNlTmV4dE9uTGluZSgpID0gZGVsZXRlOworICAgIEJveEl0ZXJhdG9yJiB0
cmF2ZXJzZVByZXZpb3VzT25MaW5lKCkgPSBkZWxldGU7CisgICAgQm94SXRlcmF0b3ImIHRyYXZl
cnNlTmV4dE9uTGluZUlnbm9yaW5nTGluZUJyZWFrKCkgPSBkZWxldGU7CisgICAgQm94SXRlcmF0
b3ImIHRyYXZlcnNlUHJldmlvdXNPbkxpbmVJZ25vcmluZ0xpbmVCcmVhaygpID0gZGVsZXRlOwor
ICAgIEJveEl0ZXJhdG9yJiB0cmF2ZXJzZU5leHRPbkxpbmVJbkxvZ2ljYWxPcmRlcigpID0gZGVs
ZXRlOworICAgIEJveEl0ZXJhdG9yJiB0cmF2ZXJzZVByZXZpb3VzT25MaW5lSW5Mb2dpY2FsT3Jk
ZXIoKSA9IGRlbGV0ZTsKKworICAgIGNvbnN0IFRleHRCb3gmIGdldCgpIGNvbnN0IHsgcmV0dXJu
IGRvd25jYXN0PFRleHRCb3g+KG1fYm94KTsgfQorfTsKKworY2xhc3MgVGV4dEJveFJhbmdlIHsK
K3B1YmxpYzoKKyAgICBUZXh0Qm94UmFuZ2UoVGV4dEJveEl0ZXJhdG9yIGJlZ2luKQorICAgICAg
ICA6IG1fYmVnaW4oYmVnaW4pCisgICAgeworICAgIH0KKworICAgIFRleHRCb3hJdGVyYXRvciBi
ZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fYmVnaW47IH0KKyAgICBFbmRJdGVyYXRvciBlbmQoKSBj
b25zdCB7IHJldHVybiB7IH07IH0KKworcHJpdmF0ZToKKyAgICBUZXh0Qm94SXRlcmF0b3IgbV9i
ZWdpbjsKK307CisKK1RleHRCb3hJdGVyYXRvciBmaXJzdFRleHRCb3hGb3IoY29uc3QgUmVuZGVy
VGV4dCYpOworVGV4dEJveEl0ZXJhdG9yIGZpcnN0VGV4dEJveEluVGV4dE9yZGVyRm9yKGNvbnN0
IFJlbmRlclRleHQmKTsKK1RleHRCb3hJdGVyYXRvciB0ZXh0Qm94Rm9yKGNvbnN0IExlZ2FjeUlu
bGluZVRleHRCb3gqKTsKKyNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKK1Rl
eHRCb3hJdGVyYXRvciB0ZXh0Qm94Rm9yKGNvbnN0IExheW91dEludGVncmF0aW9uOjpJbmxpbmVD
b250ZW50JiwgY29uc3QgSW5saW5lRGlzcGxheTo6Qm94Jik7CitUZXh0Qm94SXRlcmF0b3IgdGV4
dEJveEZvcihjb25zdCBMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVudCYsIHNpemVfdCBi
b3hJbmRleCk7CisjZW5kaWYKK1RleHRCb3hSYW5nZSB0ZXh0Qm94ZXNGb3IoY29uc3QgUmVuZGVy
VGV4dCYpOworCitpbmxpbmUgYm9vbCBUZXh0Qm94OjpoYXNIeXBoZW4oKSBjb25zdAoreworICAg
IHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKKyAg
ICAgICAgcmV0dXJuIHBhdGguaGFzSHlwaGVuKCk7CisgICAgfSk7Cit9CisKK2lubGluZSBUZXh0
Qm94OjpUZXh0Qm94KFBhdGhWYXJpYW50JiYgcGF0aCkKKyAgICA6IEJveChXVEZNb3ZlKHBhdGgp
KQoreworfQorCitpbmxpbmUgU3RyaW5nVmlldyBUZXh0Qm94Ojp0ZXh0KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7Cisg
ICAgICAgIHJldHVybiBwYXRoLnRleHQoKTsKKyAgICB9KTsKK30KKworaW5saW5lIHVuc2lnbmVk
IFRleHRCb3g6OnN0YXJ0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3Bh
dGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7CisgICAgICAgIHJldHVybiBwYXRoLnN0YXJ0KCk7
CisgICAgfSk7Cit9CisKK2lubGluZSB1bnNpZ25lZCBUZXh0Qm94OjplbmQoKSBjb25zdAorewor
ICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsK
KyAgICAgICAgcmV0dXJuIHBhdGguZW5kKCk7CisgICAgfSk7Cit9CisKK2lubGluZSB1bnNpZ25l
ZCBUZXh0Qm94OjpsZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1f
cGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuIHBhdGgubGVuZ3Ro
KCk7CisgICAgfSk7Cit9CisKK2lubGluZSB1bnNpZ25lZCBUZXh0Qm94OjpvZmZzZXRGb3JQb3Np
dGlvbihmbG9hdCB4KSBjb25zdAoreworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZh
cmlhbnQsIFsmXShhdXRvJiBwYXRoKSB7CisgICAgICAgIHJldHVybiBwYXRoLm9mZnNldEZvclBv
c2l0aW9uKHgpOworICAgIH0pOworfQorCitpbmxpbmUgZmxvYXQgVGV4dEJveDo6cG9zaXRpb25G
b3JPZmZzZXQodW5zaWduZWQgb2Zmc2V0KSBjb25zdAoreworICAgIHJldHVybiBXVEY6OnN3aXRj
aE9uKG1fcGF0aFZhcmlhbnQsIFsmXShhdXRvJiBwYXRoKSB7CisgICAgICAgIHJldHVybiBwYXRo
LnBvc2l0aW9uRm9yT2Zmc2V0KG9mZnNldCk7CisgICAgfSk7Cit9CisKK2lubGluZSBUZXh0Qm94
U2VsZWN0YWJsZVJhbmdlIFRleHRCb3g6OnNlbGVjdGFibGVSYW5nZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgWyZdKGF1dG8mIHBhdGgpIHsKKyAg
ICAgICAgcmV0dXJuIHBhdGguc2VsZWN0YWJsZVJhbmdlKCk7CisgICAgfSk7Cit9CisKK2lubGlu
ZSBUZXh0UnVuIFRleHRCb3g6OmNyZWF0ZVRleHRSdW4oKSBjb25zdAoreworICAgIHJldHVybiBX
VEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFsmXShhdXRvJiBwYXRoKSB7CisgICAgICAgIHJl
dHVybiBwYXRoLmNyZWF0ZVRleHRSdW4oKTsKKyAgICB9KTsKK30KKworfQorfQorCitTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94KQor
c3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3gmIGJv
eCkgeyByZXR1cm4gYm94LmlzVGV4dCgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgp
CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6
OlRleHRCb3hJdGVyYXRvcikKK3N0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpJbmxp
bmVJdGVyYXRvcjo6Qm94SXRlcmF0b3ImIGJveCkgeyByZXR1cm4gIWJveCB8fCBib3gtPmlzVGV4
dCgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Db3Zl
cmFnZS5oCmluZGV4IGJkMjM5YWRkMjRlYjM2MjllYzFiNTZjYTAyNzg2MWVkMDQ1MGIzZGYuLmYz
NjBlZDYxZGJlNzc5MzJlNWE4NjlkYTgxMjg3OTNkOTRkMzEwNGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9u
Q292ZXJhZ2UuaApAQCAtMzMsNiArMzMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBSZW5kZXJCbG9ja0Zsb3c7CitjbGFzcyBSZW5kZXJJbmxpbmU7CiAKIG5hbWVzcGFjZSBMYXlv
dXRJbnRlZ3JhdGlvbiB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRl
Z3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKaW5kZXgg
ZTZkYmVmZjQ5NmQ3YmM0MmJiYTE0ZWY1NzZlMDE0N2VkODM4ODJiYi4uNDg4N2FlZGRjMjE2ZTlj
NWFjYzY4M2VlMzcwOWE2M2YwZGFhMDAzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91
dC5jcHAKQEAgLTM5MSw3ICszOTEsNyBAQCBJbmxpbmVDb250ZW50JiBMaW5lTGF5b3V0OjplbnN1
cmVJbmxpbmVDb250ZW50KCkKICAgICByZXR1cm4gKm1faW5saW5lQ29udGVudDsKIH0KIAotSW5s
aW5lSXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvciBMaW5lTGF5b3V0Ojp0ZXh0UnVuc0Zvcihjb25z
dCBSZW5kZXJUZXh0JiByZW5kZXJUZXh0KSBjb25zdAorSW5saW5lSXRlcmF0b3I6OlRleHRCb3hJ
dGVyYXRvciBMaW5lTGF5b3V0Ojp0ZXh0Qm94ZXNGb3IoY29uc3QgUmVuZGVyVGV4dCYgcmVuZGVy
VGV4dCkgY29uc3QKIHsKICAgICBpZiAoIW1faW5saW5lQ29udGVudCkKICAgICAgICAgcmV0dXJu
IHsgfTsKQEAgLTQwMSwxMCArNDAxLDEwIEBAIElubGluZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0
b3IgTGluZUxheW91dDo6dGV4dFJ1bnNGb3IoY29uc3QgUmVuZGVyVGV4dCYgcmVuZGVyCiAgICAg
aWYgKCFmaXJzdEluZGV4KQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIElubGlu
ZUl0ZXJhdG9yOjp0ZXh0UnVuRm9yKCptX2lubGluZUNvbnRlbnQsICpmaXJzdEluZGV4KTsKKyAg
ICByZXR1cm4gSW5saW5lSXRlcmF0b3I6OnRleHRCb3hGb3IoKm1faW5saW5lQ29udGVudCwgKmZp
cnN0SW5kZXgpOwogfQogCi1JbmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3IgTGluZUxheW91dDo6
cnVuRm9yKGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlckVsZW1lbnQpIGNvbnN0CitJbmxpbmVJ
dGVyYXRvcjo6Qm94SXRlcmF0b3IgTGluZUxheW91dDo6Ym94Rm9yKGNvbnN0IFJlbmRlckVsZW1l
bnQmIHJlbmRlckVsZW1lbnQpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lubGluZUNvbnRlbnQpCiAg
ICAgICAgIHJldHVybiB7IH07CkBAIC00MTQsNyArNDE0LDcgQEAgSW5saW5lSXRlcmF0b3I6OkJv
eEl0ZXJhdG9yIExpbmVMYXlvdXQ6OnJ1bkZvcihjb25zdCBSZW5kZXJFbGVtZW50JiByZW5kZXJF
bGVtZW4KICAgICBpZiAoIWZpcnN0SW5kZXgpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBy
ZXR1cm4gSW5saW5lSXRlcmF0b3I6OnJ1bkZvcigqbV9pbmxpbmVDb250ZW50LCAqZmlyc3RJbmRl
eCk7CisgICAgcmV0dXJuIElubGluZUl0ZXJhdG9yOjpib3hGb3IoKm1faW5saW5lQ29udGVudCwg
KmZpcnN0SW5kZXgpOwogfQogCiBJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yIExpbmVMYXlv
dXQ6OmZpcnN0TGluZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmgKaW5kZXgg
YTMzZDA2ZWIzODg4MjM3MDY1MDI2ZjU0OTJlOTgxMTg1ZWUxYTVlMi4uOGNmM2E4NGUzZDA3ODhi
ZDJiOGQyY2Y5ZGI5YjMwZmVkOWVhYjRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQu
aApAQCAtMjgsOCArMjgsOCBAQAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhU
KQogCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCi0jaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JCb3gu
aCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmUuaCIKKyNpbmNsdWRlICJJbmxpbmVJdGVy
YXRvclRleHRCb3guaCIKICNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuaCIKICNp
bmNsdWRlICJMYXlvdXRQb2ludC5oIgogI2luY2x1ZGUgIkxheW91dFN0YXRlLmgiCkBAIC05Niw4
ICs5Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91
dFBvaW50JiBwYWludE9mZnNldCk7CiAgICAgYm9vbCBoaXRUZXN0KGNvbnN0IEhpdFRlc3RSZXF1
ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYsIGNvbnN0IExheW91
dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbik7CiAKLSAgICBJbmxpbmVJ
dGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yIHRleHRSdW5zRm9yKGNvbnN0IFJlbmRlclRleHQmKSBj
b25zdDsKLSAgICBJbmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3IgcnVuRm9yKGNvbnN0IFJlbmRl
ckVsZW1lbnQmKSBjb25zdDsKKyAgICBJbmxpbmVJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yIHRl
eHRCb3hlc0Zvcihjb25zdCBSZW5kZXJUZXh0JikgY29uc3Q7CisgICAgSW5saW5lSXRlcmF0b3I6
OkJveEl0ZXJhdG9yIGJveEZvcihjb25zdCBSZW5kZXJFbGVtZW50JikgY29uc3Q7CiAgICAgSW5s
aW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvciBmaXJzdExpbmUoKSBjb25zdDsKICAgICBJbmxpbmVJ
dGVyYXRvcjo6TGluZUl0ZXJhdG9yIGxhc3RMaW5lKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DYXJldFJlY3RDb21wdXRhdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvQ2FyZXRSZWN0Q29tcHV0YXRpb24uY3BwCmluZGV4IDk5ODA4Nzg0
MTg0M2U1ZTkzN2I2NzYwNTAwMzQyZWM1Y2NjYzRlMzIuLjNiNzAyYTk3ZjA0YTFkMDJkMThmNTM4
NDY2MmE1YjM3MzlmNDVmOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9D
YXJldFJlY3RDb21wdXRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Nh
cmV0UmVjdENvbXB1dGF0aW9uLmNwcApAQCAtMjcsOCArMjcsOCBAQAogI2luY2x1ZGUgIkNhcmV0
UmVjdENvbXB1dGF0aW9uLmgiCiAKICNpbmNsdWRlICJFZGl0aW5nLmgiCi0jaW5jbHVkZSAiSW5s
aW5lSXRlcmF0b3JCb3guaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmUuaCIKKyNpbmNs
dWRlICJJbmxpbmVJdGVyYXRvclRleHRCb3guaCIKICNpbmNsdWRlICJSZW5kZXJCbG9ja0Zsb3cu
aCIKICNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKICNpbmNsdWRlICJSZW5kZXJMaW5lQnJlYWsu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVUZXh0
Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lVGV4dEJveC5oCmlu
ZGV4IDhhNWNlZjYxZjY0MmMyYWU3YTYyZjJkOTYzZGU4M2I1NzExM2E4NWMuLjY0NGQ5MjViNGE1
MGE4NGEwYzMwY2VkNjQ1ZmU3YTgyOGNkZDJiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9MZWdhY3lJbmxpbmVUZXh0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0xlZ2FjeUlubGluZVRleHRCb3guaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBSZW5kZXJDb21iaW5lVGV4dDsKIAogbmFtZXNwYWNlIElubGluZUl0
ZXJhdG9yIHsKLWNsYXNzIEJveEl0ZXJhdG9yTGVnYWN5UGF0aDsKK2NsYXNzIEJveExlZ2FjeVBh
dGg7CiB9CiAKIGNsYXNzIExlZ2FjeUlubGluZVRleHRCb3ggOiBwdWJsaWMgTGVnYWN5SW5saW5l
Qm94IHsKQEAgLTE1NCw3ICsxNTQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNNYXJrZXJzKCkg
Y29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIElubGluZUl0ZXJhdG9yOjpCb3hJ
dGVyYXRvckxlZ2FjeVBhdGg7CisgICAgZnJpZW5kIGNsYXNzIElubGluZUl0ZXJhdG9yOjpCb3hM
ZWdhY3lQYXRoOwogICAgIGZyaWVuZCBjbGFzcyBUZXh0Qm94UGFpbnRlcjsKIAogICAgIGNvbnN0
IFJlbmRlckNvbWJpbmVUZXh0KiBjb21iaW5lZFRleHQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9MZWdhY3lMaW5lTGF5b3V0LmNwcAppbmRleCBlZThiMDQ0Y2E2OWQzZGFj
MmE1M2Y3YmU2ZDNlMmE4ODAxNTUxZGFkLi5lYTdlZTAwZDk2MWU1OTc5MmJlMWQwNGM1MzMzMTNh
OTlhZTRkMWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5TGlu
ZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUxpbmVMYXlv
dXQuY3BwCkBAIC01NDcsNyArNTQ3LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHNldExvZ2ljYWxX
aWR0aEZvclRleHRSdW4oTGVnYWN5Um9vdElubGluZUJveCogbGluZUJveCwgQmlkaVIKIAogICAg
IC8vIEluY2x1ZGUgdGV4dCBkZWNvcmF0aW9uIHZpc3VhbCBvdmVyZmxvdyBhcyBwYXJ0IG9mIHRo
ZSBnbHlwaCBvdmVyZmxvdy4KICAgICBpZiAoIXJlbmRlcmVyLnN0eWxlKCkudGV4dERlY29yYXRp
b25zSW5FZmZlY3QoKS5pc0VtcHR5KCkpCi0gICAgICAgIGdseXBoT3ZlcmZsb3cuZXh0ZW5kVG8o
dmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucyhydW4tPmJveCgpLT5saW5lU3R5bGUoKSwgSW5s
aW5lSXRlcmF0b3I6OnRleHRSdW5Gb3IoZG93bmNhc3Q8TGVnYWN5SW5saW5lVGV4dEJveD4ocnVu
LT5ib3goKSkpKSk7CisgICAgICAgIGdseXBoT3ZlcmZsb3cuZXh0ZW5kVG8odmlzdWFsT3ZlcmZs
b3dGb3JEZWNvcmF0aW9ucyhydW4tPmJveCgpLT5saW5lU3R5bGUoKSwgSW5saW5lSXRlcmF0b3I6
OnRleHRCb3hGb3IoZG93bmNhc3Q8TGVnYWN5SW5saW5lVGV4dEJveD4ocnVuLT5ib3goKSkpKSk7
CiAKICAgICBpZiAoIWdseXBoT3ZlcmZsb3cuaXNFbXB0eSgpKSB7CiAgICAgICAgIEFTU0VSVChy
dW4tPmJveCgpLT5iZWhhdmVzTGlrZVRleHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRWxlbWVudC5jcHAKaW5kZXggMDZjY2YwZmI4ZmY5ODFhMGRiYTc3N2U2MWVlMmM2Mjk4
YTIwNDQ0MC4uOTgyZmVjNDQwNjRlYzU4ZjVhNjJjYTZhOTAzYzcxNDIxNzVkZGY1YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcApAQCAtNDAsOCArNDAsOCBA
QAogI2luY2x1ZGUgIkhUTUxIdG1sRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckJv
eC5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTGluZS5oIgorI2luY2x1ZGUgIklubGluZUl0
ZXJhdG9yVGV4dEJveC5oIgogI2luY2x1ZGUgIkxlbmd0aEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC0xNjQ0LDEzICsxNjQ0LDEzIEBAIGJv
b2wgUmVuZGVyRWxlbWVudDo6Z2V0TGVhZGluZ0Nvcm5lcihGbG9hdFBvaW50JiBwb2ludCwgYm9v
bCYgaW5zaWRlRml4ZWQpIGNvbnN0CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fQogCi0gICAgICAgIGlmIChwLT5ub2RlKCkgJiYgcC0+bm9kZSgpID09IGVsZW1lbnQoKSAmJiBp
czxSZW5kZXJUZXh0PigqbykgJiYgIUlubGluZUl0ZXJhdG9yOjpmaXJzdFRleHRSdW5Gb3IoZG93
bmNhc3Q8UmVuZGVyVGV4dD4oKm8pKSkgeworICAgICAgICBpZiAocC0+bm9kZSgpICYmIHAtPm5v
ZGUoKSA9PSBlbGVtZW50KCkgJiYgaXM8UmVuZGVyVGV4dD4oKm8pICYmICFJbmxpbmVJdGVyYXRv
cjo6Zmlyc3RUZXh0Qm94Rm9yKGRvd25jYXN0PFJlbmRlclRleHQ+KCpvKSkpIHsKICAgICAgICAg
ICAgIC8vIGRvIG5vdGhpbmcgLSBza2lwIHVucmVuZGVyZWQgd2hpdGVzcGFjZSB0aGF0IGlzIGEg
Y2hpbGQgb3IgbmV4dCBzaWJsaW5nIG9mIHRoZSBhbmNob3IKICAgICAgICAgfSBlbHNlIGlmIChp
czxSZW5kZXJUZXh0PigqbykgfHwgby0+aXNSZXBsYWNlZCgpKSB7CiAgICAgICAgICAgICBwb2lu
dCA9IEZsb2F0UG9pbnQoKTsKICAgICAgICAgICAgIGlmIChpczxSZW5kZXJUZXh0PigqbykpIHsK
ICAgICAgICAgICAgICAgICBhdXRvJiB0ZXh0UmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJUZXh0
Pigqbyk7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8gcnVuID0gSW5saW5lSXRlcmF0b3I6OmZp
cnN0VGV4dFJ1bkZvcih0ZXh0UmVuZGVyZXIpKQorICAgICAgICAgICAgICAgIGlmIChhdXRvIHJ1
biA9IElubGluZUl0ZXJhdG9yOjpmaXJzdFRleHRCb3hGb3IodGV4dFJlbmRlcmVyKSkKICAgICAg
ICAgICAgICAgICAgICAgcG9pbnQubW92ZSh0ZXh0UmVuZGVyZXIubGluZXNCb3VuZGluZ0JveCgp
LngoKSwgcnVuLT5saW5lKCktPnRvcCgpKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXM8UmVu
ZGVyQm94PigqbykpCiAgICAgICAgICAgICAgICAgcG9pbnQubW92ZUJ5KGRvd25jYXN0PFJlbmRl
ckJveD4oKm8pLmxvY2F0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFn
ZS5jcHAKaW5kZXggYWMyNGM1NmFkYWVjMmI5MWZhMWZjZTM4NjVlNTcyZGUxZjU1OThhYy4uMGI5
ODNjZWNiOWJlMjlmMzg3OTk2ODBhNjE3ZGUxNjg4MDk3MzM1NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgUmVuZGVySW1h
Z2U6OmNvbGxlY3RTZWxlY3Rpb25HZW9tZXRyaWVzKFZlY3RvcjxTZWxlY3Rpb25HZW9tZXRyeT4m
IGdlb21ldHJpCiAgICAgYm9vbCBpc0ZpcnN0T25MaW5lID0gZmFsc2U7CiAgICAgYm9vbCBpc0xh
c3RPbkxpbmUgPSBmYWxzZTsKIAotICAgIGF1dG8gcnVuID0gSW5saW5lSXRlcmF0b3I6OnJ1bkZv
cigqdGhpcyk7CisgICAgYXV0byBydW4gPSBJbmxpbmVJdGVyYXRvcjo6Ym94Rm9yKCp0aGlzKTsK
ICAgICBpZiAoIXJ1bikgewogICAgICAgICAvLyBUaGlzIGlzIGEgYmxvY2sgaW1hZ2UuCiAgICAg
ICAgIGltYWdlUmVjdCA9IEludFJlY3QoMCwgMCwgd2lkdGgoKSwgaGVpZ2h0KCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcAppbmRleCA3MTg4MjYzMTA1
ZWI3ZjhkMDUzMzM0Mzg1NGUzMWMzODAyMDE1NzU4Li5jMWM5NWIxMDk0NDAyNDIwOTU0MTFhNWJl
NGM1OTg3M2ZhZmE5MDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGluZUJyZWFrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlu
ZUJyZWFrLmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJMaW5l
QnJlYWs6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kCiAK
IEludFJlY3QgUmVuZGVyTGluZUJyZWFrOjpsaW5lc0JvdW5kaW5nQm94KCkgY29uc3QKIHsKLSAg
ICBhdXRvIHJ1biA9IElubGluZUl0ZXJhdG9yOjpydW5Gb3IoKnRoaXMpOworICAgIGF1dG8gcnVu
ID0gSW5saW5lSXRlcmF0b3I6OmJveEZvcigqdGhpcyk7CiAgICAgaWYgKCFydW4pCiAgICAgICAg
IHJldHVybiB7IH07CiAKQEAgLTE1Myw3ICsxNTMsNyBAQCBJbnRSZWN0IFJlbmRlckxpbmVCcmVh
azo6bGluZXNCb3VuZGluZ0JveCgpIGNvbnN0CiAKIHZvaWQgUmVuZGVyTGluZUJyZWFrOjphYnNv
bHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1
bXVsYXRlZE9mZnNldCkgY29uc3QKIHsKLSAgICBhdXRvIGJveCA9IElubGluZUl0ZXJhdG9yOjpy
dW5Gb3IoKnRoaXMpOworICAgIGF1dG8gYm94ID0gSW5saW5lSXRlcmF0b3I6OmJveEZvcigqdGhp
cyk7CiAgICAgaWYgKCFib3gpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTYzLDcgKzE2Myw3IEBA
IHZvaWQgUmVuZGVyTGluZUJyZWFrOjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVj
dHMsIGNvbnN0IExheW91dFBvaW50JiBhCiAKIHZvaWQgUmVuZGVyTGluZUJyZWFrOjphYnNvbHV0
ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7
Ci0gICAgYXV0byBib3ggPSBJbmxpbmVJdGVyYXRvcjo6cnVuRm9yKCp0aGlzKTsKKyAgICBhdXRv
IGJveCA9IElubGluZUl0ZXJhdG9yOjpib3hGb3IoKnRoaXMpOwogICAgIGlmICghYm94KQogICAg
ICAgICByZXR1cm47CiAKQEAgLTE4MCw3ICsxODAsNyBAQCB2b2lkIFJlbmRlckxpbmVCcmVhazo6
dXBkYXRlRnJvbVN0eWxlKCkKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBSZW5kZXJM
aW5lQnJlYWs6OmNvbGxlY3RTZWxlY3Rpb25HZW9tZXRyaWVzKFZlY3RvcjxTZWxlY3Rpb25HZW9t
ZXRyeT4mIHJlY3RzLCB1bnNpZ25lZCwgdW5zaWduZWQpCiB7Ci0gICAgYXV0byBydW4gPSBJbmxp
bmVJdGVyYXRvcjo6cnVuRm9yKCp0aGlzKTsKKyAgICBhdXRvIHJ1biA9IElubGluZUl0ZXJhdG9y
Ojpib3hGb3IoKnRoaXMpOwogCiAgICAgaWYgKCFydW4pCiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCmluZGV4IDlkMjliNzNmNGRk
ZGZlNWU4ZjNlNjA0Zjk3ZjNkZjc4M2YyNTc1ZmEuLjdlZTk0NDI2Y2M1MmJhZGI0MGZmYzRjYjdj
ZmJkMTI3NzRiY2U3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSZXBsYWNlZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxh
Y2VkLmNwcApAQCAtNjg5LDcgKzY4OSw3IEBAIHZvaWQgUmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVQ
cmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkKIFZpc2libGVQb3NpdGlvbiBSZW5kZXJSZXBsYWNlZDo6
cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIGNvbnN0IFJlbmRlckZy
YWdtZW50Q29udGFpbmVyKiBmcmFnbWVudCkKIHsKICAgICBhdXRvIFt0b3AsIGJvdHRvbV0gPSBb
Jl0gewotICAgICAgICBpZiAoYXV0byBydW4gPSBJbmxpbmVJdGVyYXRvcjo6cnVuRm9yKCp0aGlz
KSkgeworICAgICAgICBpZiAoYXV0byBydW4gPSBJbmxpbmVJdGVyYXRvcjo6Ym94Rm9yKCp0aGlz
KSkgewogICAgICAgICAgICAgYXV0byBsaW5lID0gcnVuLT5saW5lKCk7CiAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3BhaXIobGluZS0+c2VsZWN0aW9uVG9wRm9ySGl0VGVzdGluZygpLCBs
aW5lLT5zZWxlY3Rpb25Cb3R0b20oKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0LmNwcAppbmRleCBmYzQ2ZDVkMGVmYWNlMjk5NDBjZjE2MjMyYmE0OWFkZTgz
Yjc5ZDhhLi5kYzUyZWYyMjFlMWFlZmFmNTI5NjdkY2QzMDNjZjM2M2I5OWUzYWU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCkBAIC0zNSw4ICszNSw4IEBACiAjaW5j
bHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1
ZGUgIkh5cGhlbmF0aW9uLmgiCi0jaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JCb3guaCIKICNpbmNs
dWRlICJJbmxpbmVJdGVyYXRvckxpbmUuaCIKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvclRleHRC
b3guaCIKICNpbmNsdWRlICJJbmxpbmVSdW5BbmRPZmZzZXQuaCIKICNpbmNsdWRlICJMYXlvdXRJ
bnRlZ3JhdGlvbkxpbmVMYXlvdXQuaCIKICNpbmNsdWRlICJMZWdhY3lFbGxpcHNpc0JveC5oIgpA
QCAtMzA3LDcgKzMwNyw3IEBAIFN0cmluZyBSZW5kZXJUZXh0OjpvcmlnaW5hbFRleHQoKSBjb25z
dAogCiB2b2lkIFJlbmRlclRleHQ6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0
cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdAogewotICAgIGZv
ciAoYXV0byYgcnVuIDogSW5saW5lSXRlcmF0b3I6OnRleHRSdW5zRm9yKCp0aGlzKSkgeworICAg
IGZvciAoYXV0byYgcnVuIDogSW5saW5lSXRlcmF0b3I6OnRleHRCb3hlc0ZvcigqdGhpcykpIHsK
ICAgICAgICAgYXV0byByZWN0ID0gcnVuLnJlY3QoKTsKICAgICAgICAgcmVjdHMuYXBwZW5kKGVu
Y2xvc2luZ0ludFJlY3QoRmxvYXRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0ICsgcmVjdC5sb2NhdGlv
bigpLCByZWN0LnNpemUoKSkpKTsKICAgICB9CkBAIC0zMjYsNyArMzI2LDcgQEAgVmVjdG9yPElu
dFJlY3Q+IFJlbmRlclRleHQ6OmFic29sdXRlUmVjdHNGb3JSYW5nZSh1bnNpZ25lZCBzdGFydCwg
dW5zaWduZWQgZW5kLAogLy8gRnVsbCBhbm5vdGF0aW9ucyBhcmUgYWRkZWQgaW4gdGhpcyBjbGFz
cy4KIHZvaWQgUmVuZGVyVGV4dDo6Y29sbGVjdFNlbGVjdGlvbkdlb21ldHJpZXMoVmVjdG9yPFNl
bGVjdGlvbkdlb21ldHJ5PiYgcmVjdHMsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQpCiB7
Ci0gICAgZm9yIChhdXRvIHJ1biA9IElubGluZUl0ZXJhdG9yOjpmaXJzdFRleHRSdW5Gb3IoKnRo
aXMpOyBydW47IHJ1biA9IHJ1bi50cmF2ZXJzZU5leHRUZXh0UnVuKCkpIHsKKyAgICBmb3IgKGF1
dG8gcnVuID0gSW5saW5lSXRlcmF0b3I6OmZpcnN0VGV4dEJveEZvcigqdGhpcyk7IHJ1bjsgcnVu
ID0gcnVuLnRyYXZlcnNlTmV4dFRleHRCb3goKSkgewogICAgICAgICBMYXlvdXRSZWN0IHJlY3Q7
CiAgICAgICAgIGlmIChzdGFydCA8PSBydW4tPnN0YXJ0KCkgJiYgcnVuLT5lbmQoKSA8PSBlbmQp
CiAgICAgICAgICAgICByZWN0ID0gcnVuLT5zZWxlY3Rpb25SZWN0KHN0YXJ0LCBlbmQpOwpAQCAt
NDI4LDcgKzQyOCw3IEBAIGVudW0gY2xhc3MgQ2xpcHBpbmdPcHRpb24geyBOb0NsaXBwaW5nLCBD
bGlwVG9FbGxpcHNpcyB9Owogc3RhdGljIFZlY3RvcjxGbG9hdFF1YWQ+IGNvbGxlY3RBYnNvbHV0
ZVF1YWRzKGNvbnN0IFJlbmRlclRleHQmIHRleHRSZW5kZXJlciwgYm9vbCogd2FzRml4ZWQsIENs
aXBwaW5nT3B0aW9uIGNsaXBwaW5nKQogewogICAgIFZlY3RvcjxGbG9hdFF1YWQ+IHF1YWRzOwot
ICAgIGZvciAoYXV0byYgcnVuIDogSW5saW5lSXRlcmF0b3I6OnRleHRSdW5zRm9yKHRleHRSZW5k
ZXJlcikpIHsKKyAgICBmb3IgKGF1dG8mIHJ1biA6IElubGluZUl0ZXJhdG9yOjp0ZXh0Qm94ZXNG
b3IodGV4dFJlbmRlcmVyKSkgewogICAgICAgICBhdXRvIGJvdW5kYXJpZXMgPSBib3VuZGFyaWVz
Rm9yVGV4dFJ1bihydW4pOwogCiAgICAgICAgIC8vIFNob3J0ZW4gdGhlIHdpZHRoIG9mIHRoaXMg
dGV4dCBib3ggaWYgaXQgZW5kcyBpbiBhbiBlbGxpcHNpcy4KQEAgLTQ5MCw3ICs0OTAsNyBAQCBW
ZWN0b3I8RmxvYXRRdWFkPiBSZW5kZXJUZXh0OjphYnNvbHV0ZVF1YWRzRm9yUmFuZ2UodW5zaWdu
ZWQgc3RhcnQsIHVuc2lnbmVkIGVuZAogICAgIGVuZCA9IHN0ZDo6bWluKGVuZCwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KElOVF9NQVgpKTsKIAogICAgIFZlY3RvcjxGbG9hdFF1YWQ+IHF1YWRzOwot
ICAgIGZvciAoYXV0byYgcnVuIDogSW5saW5lSXRlcmF0b3I6OnRleHRSdW5zRm9yKCp0aGlzKSkg
eworICAgIGZvciAoYXV0byYgcnVuIDogSW5saW5lSXRlcmF0b3I6OnRleHRCb3hlc0ZvcigqdGhp
cykpIHsKICAgICAgICAgaWYgKGlnbm9yZUVtcHR5VGV4dFNlbGVjdGlvbnMgJiYgIXJ1bi5zZWxl
Y3RhYmxlUmFuZ2UoKS5pbnRlcnNlY3RzKHN0YXJ0LCBlbmQpKQogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIGlmIChzdGFydCA8PSBydW4uc3RhcnQoKSAmJiBydW4uZW5kKCkgPD0gZW5k
KSB7CkBAIC02NTQsNyArNjU0LDcgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBjcmVhdGVWaXNp
YmxlUG9zaXRpb25BZnRlckFkanVzdGluZ09mZnNldEZvckJpRGkoY29uc3QgSW4KIAogVmlzaWJs
ZVBvc2l0aW9uIFJlbmRlclRleHQ6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQm
IHBvaW50LCBjb25zdCBSZW5kZXJGcmFnbWVudENvbnRhaW5lciopCiB7Ci0gICAgYXV0byBmaXJz
dFJ1biA9IElubGluZUl0ZXJhdG9yOjpmaXJzdFRleHRSdW5Gb3IoKnRoaXMpOworICAgIGF1dG8g
Zmlyc3RSdW4gPSBJbmxpbmVJdGVyYXRvcjo6Zmlyc3RUZXh0Qm94Rm9yKCp0aGlzKTsKIAogICAg
IGlmICghZmlyc3RSdW4gfHwgIXRleHQoKS5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGNyZWF0
ZVZpc2libGVQb3NpdGlvbigwLCBBZmZpbml0eTo6RG93bnN0cmVhbSk7CkBAIC02NjQsOSArNjY0
LDkgQEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRlclRleHQ6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3Qg
TGF5b3V0UG9pbnQmIHBvaW50LCBjb25zdCBSZW4KICAgICBib29sIGJsb2Nrc0FyZUZsaXBwZWQg
PSBzdHlsZSgpLmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCk7CiAKICAgICBJbmxpbmVJdGVy
YXRvcjo6VGV4dEJveEl0ZXJhdG9yIGxhc3RSdW47Ci0gICAgZm9yIChhdXRvIHJ1biA9IGZpcnN0
UnVuOyBydW47IHJ1bi50cmF2ZXJzZU5leHRUZXh0UnVuKCkpIHsKKyAgICBmb3IgKGF1dG8gcnVu
ID0gZmlyc3RSdW47IHJ1bjsgcnVuLnRyYXZlcnNlTmV4dFRleHRCb3goKSkgewogICAgICAgICBp
ZiAocnVuLT5pc0xpbmVCcmVhaygpICYmICFydW4tPnByZXZpb3VzT25MaW5lKCkgJiYgcnVuLT5u
ZXh0T25MaW5lKCkgJiYgIXJ1bi0+bmV4dE9uTGluZSgpLT5pc0xpbmVCcmVhaygpKQotICAgICAg
ICAgICAgcnVuLnRyYXZlcnNlTmV4dFRleHRSdW4oKTsKKyAgICAgICAgICAgIHJ1bi50cmF2ZXJz
ZU5leHRUZXh0Qm94KCk7CiAKICAgICAgICAgYXV0byBsaW5lID0gcnVuLT5saW5lKCk7CiAgICAg
ICAgIExheW91dFVuaXQgdG9wID0gc3RkOjptaW4obGluZS0+c2VsZWN0aW9uVG9wRm9ySGl0VGVz
dGluZygpLCBsaW5lLT50b3AoKSk7CkBAIC0xMjcyLDcgKzEyNzIsNyBAQCBWZWN0b3I8c3RkOjpw
YWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4+IFJlbmRlclRleHQ6OmRyYWdnZWRDb250ZW50UmFuZ2Vz
QmV0d2Vlbk9mZgogCiBJbnRQb2ludCBSZW5kZXJUZXh0OjpmaXJzdFJ1bkxvY2F0aW9uKCkgY29u
c3QKIHsKLSAgICBhdXRvIGZpcnN0ID0gSW5saW5lSXRlcmF0b3I6OmZpcnN0VGV4dFJ1bkZvcigq
dGhpcyk7CisgICAgYXV0byBmaXJzdCA9IElubGluZUl0ZXJhdG9yOjpmaXJzdFRleHRCb3hGb3Io
KnRoaXMpOwogICAgIGlmICghZmlyc3QpCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgcmV0dXJu
IEludFBvaW50KGZpcnN0LT5yZWN0KCkubG9jYXRpb24oKSk7CkBAIC0xNTc2LDcgKzE1NzYsNyBA
QCBmbG9hdCBSZW5kZXJUZXh0Ojp3aWR0aCh1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBsZW4sIGNv
bnN0IEZvbnRDYXNjYWRlJiBmLCBmbG9hdAogCiBJbnRSZWN0IFJlbmRlclRleHQ6OmxpbmVzQm91
bmRpbmdCb3goKSBjb25zdAogewotICAgIGF1dG8gZmlyc3QgPSBJbmxpbmVJdGVyYXRvcjo6Zmly
c3RUZXh0UnVuRm9yKCp0aGlzKTsKKyAgICBhdXRvIGZpcnN0ID0gSW5saW5lSXRlcmF0b3I6OmZp
cnN0VGV4dEJveEZvcigqdGhpcyk7CiAgICAgaWYgKCFmaXJzdCkKICAgICAgICAgcmV0dXJuIHsg
fTsKIApAQCAtMTYzNCw3ICsxNjM0LDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJUZXh0Ojpjb2xsZWN0
U2VsZWN0aW9uR2VvbWV0cmllc0ZvckxpbmVCb3hlcyhjb25zdCBSZW5kZXJMYXllck0KIAogICAg
IExheW91dFJlY3QgcmVzdWx0UmVjdDsKIAotICAgIGZvciAoYXV0byYgcnVuIDogSW5saW5lSXRl
cmF0b3I6OnRleHRSdW5zRm9yKCp0aGlzKSkgeworICAgIGZvciAoYXV0byYgcnVuIDogSW5saW5l
SXRlcmF0b3I6OnRleHRCb3hlc0ZvcigqdGhpcykpIHsKICAgICAgICAgTGF5b3V0UmVjdCByZWN0
OwogICAgICAgICByZWN0LnVuaXRlKHJ1bi5zZWxlY3Rpb25SZWN0KHN0YXJ0T2Zmc2V0LCBlbmRP
ZmZzZXQpKTsKICAgICAgICAgcmVjdC51bml0ZShlbGxpcHNpc1JlY3RGb3JUZXh0UnVuKHJ1biwg
c3RhcnRPZmZzZXQsIGVuZE9mZnNldCkpOwpAQCAtMTY2NCw3ICsxNjY0LDcgQEAgTGF5b3V0UmVj
dCBSZW5kZXJUZXh0OjpzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1v
ZGVsT2JqZWN0KiByZXAKIAogaW50IFJlbmRlclRleHQ6OmNhcmV0TWluT2Zmc2V0KCkgY29uc3QK
IHsKLSAgICBhdXRvIGZpcnN0ID0gSW5saW5lSXRlcmF0b3I6OmZpcnN0VGV4dFJ1bkZvcigqdGhp
cyk7CisgICAgYXV0byBmaXJzdCA9IElubGluZUl0ZXJhdG9yOjpmaXJzdFRleHRCb3hGb3IoKnRo
aXMpOwogICAgIGlmICghZmlyc3QpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0xNjc3LDcgKzE2
NzcsNyBAQCBpbnQgUmVuZGVyVGV4dDo6Y2FyZXRNaW5PZmZzZXQoKSBjb25zdAogCiBpbnQgUmVu
ZGVyVGV4dDo6Y2FyZXRNYXhPZmZzZXQoKSBjb25zdAogewotICAgIGF1dG8gZmlyc3QgPSBJbmxp
bmVJdGVyYXRvcjo6Zmlyc3RUZXh0UnVuRm9yKCp0aGlzKTsKKyAgICBhdXRvIGZpcnN0ID0gSW5s
aW5lSXRlcmF0b3I6OmZpcnN0VGV4dEJveEZvcigqdGhpcyk7CiAgICAgaWYgKCFmaXJzdCkKICAg
ICAgICAgcmV0dXJuIHRleHQoKS5sZW5ndGgoKTsKIApAQCAtMTY5MSw3ICsxNjkxLDcgQEAgaW50
IFJlbmRlclRleHQ6OmNhcmV0TWF4T2Zmc2V0KCkgY29uc3QKIHVuc2lnbmVkIFJlbmRlclRleHQ6
OmNvdW50UmVuZGVyZWRDaGFyYWN0ZXJPZmZzZXRzVW50aWwodW5zaWduZWQgb2Zmc2V0KSBjb25z
dAogewogICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7Ci0gICAgZm9yIChhdXRvJiBydW4gOiBJbmxp
bmVJdGVyYXRvcjo6dGV4dFJ1bnNGb3IoKnRoaXMpKSB7CisgICAgZm9yIChhdXRvJiBydW4gOiBJ
bmxpbmVJdGVyYXRvcjo6dGV4dEJveGVzRm9yKCp0aGlzKSkgewogICAgICAgICBhdXRvIHN0YXJ0
ID0gcnVuLnN0YXJ0KCk7CiAgICAgICAgIGF1dG8gbGVuZ3RoID0gcnVuLmxlbmd0aCgpOwogICAg
ICAgICBpZiAob2Zmc2V0IDwgc3RhcnQpCkBAIC0xNzA4LDcgKzE3MDgsNyBAQCB1bnNpZ25lZCBS
ZW5kZXJUZXh0Ojpjb3VudFJlbmRlcmVkQ2hhcmFjdGVyT2Zmc2V0c1VudGlsKHVuc2lnbmVkIG9m
ZnNldCkgY29uc3QKIGVudW0gY2xhc3MgT2Zmc2V0VHlwZSB7IENoYXJhY3RlciwgQ2FyZXQgfTsK
IHN0YXRpYyBib29sIGNvbnRhaW5zT2Zmc2V0KGNvbnN0IFJlbmRlclRleHQmIHRleHQsIHVuc2ln
bmVkIG9mZnNldCwgT2Zmc2V0VHlwZSB0eXBlKQogewotICAgIGZvciAoYXV0byBib3ggPSBJbmxp
bmVJdGVyYXRvcjo6Zmlyc3RUZXh0UnVuSW5UZXh0T3JkZXJGb3IodGV4dCk7IGJveDsgYm94LnRy
YXZlcnNlTmV4dFRleHRSdW5JblRleHRPcmRlcigpKSB7CisgICAgZm9yIChhdXRvIGJveCA9IElu
bGluZUl0ZXJhdG9yOjpmaXJzdFRleHRCb3hJblRleHRPcmRlckZvcih0ZXh0KTsgYm94OyBib3gu
dHJhdmVyc2VOZXh0VGV4dEJveEluVGV4dE9yZGVyKCkpIHsKICAgICAgICAgYXV0byBzdGFydCA9
IGJveC0+c3RhcnQoKTsKICAgICAgICAgaWYgKG9mZnNldCA8IHN0YXJ0KQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMTczNyw3ICsxNzM3LDcgQEAgYm9vbCBSZW5kZXJUZXh0Ojpjb250
YWluc0NhcmV0T2Zmc2V0KHVuc2lnbmVkIG9mZnNldCkgY29uc3QKIAogYm9vbCBSZW5kZXJUZXh0
OjpoYXNSZW5kZXJlZFRleHQoKSBjb25zdAogewotICAgIGZvciAoYXV0byYgYm94IDogSW5saW5l
SXRlcmF0b3I6OnRleHRSdW5zRm9yKCp0aGlzKSkgeworICAgIGZvciAoYXV0byYgYm94IDogSW5s
aW5lSXRlcmF0b3I6OnRleHRCb3hlc0ZvcigqdGhpcykpIHsKICAgICAgICAgaWYgKGJveC5sZW5n
dGgoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAppbmRleCBkMTBhNGQyODI4MDgwNzcwMDQ3
MGQ4Y2YzOWFlNzAwZTViNGI4MDY5Li5iNzgxNzMxYzgyZWVlYzkxNjQ3MDU4YTAxODkyZjYyZmJm
ODU0Mjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFz
VGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQu
Y3BwCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MU3BhbkVsZW1lbnQuaCIKLSNpbmNsdWRlICJJ
bmxpbmVJdGVyYXRvckJveC5oIgorI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yVGV4dEJveC5oIgog
I2luY2x1ZGUgIkxlZ2FjeUlubGluZVRleHRCb3guaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAj
aW5jbHVkZSAiUHJpbnRDb250ZXh0LmgiCkBAIC0yNDAsMTMgKzI0MCwxMyBAQCB2b2lkIFJlbmRl
clRyZWVBc1RleHQ6OndyaXRlUmVuZGVyT2JqZWN0KFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5k
ZXJPYmplY3QmIG8sCiAgICAgICAgIC8vIG1hbnkgdGVzdCByZXN1bHRzLgogICAgICAgICBjb25z
dCBSZW5kZXJUZXh0JiB0ZXh0ID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4obyk7CiAgICAgICAgIHIg
PSBJbnRSZWN0KHRleHQuZmlyc3RSdW5Mb2NhdGlvbigpLCB0ZXh0LmxpbmVzQm91bmRpbmdCb3go
KS5zaXplKCkpOwotICAgICAgICBpZiAoIUlubGluZUl0ZXJhdG9yOjpmaXJzdFRleHRSdW5Gb3Io
dGV4dCkpCisgICAgICAgIGlmICghSW5saW5lSXRlcmF0b3I6OmZpcnN0VGV4dEJveEZvcih0ZXh0
KSkKICAgICAgICAgICAgIGFkanVzdEZvclRhYmxlQ2VsbHMgPSBmYWxzZTsKICAgICB9IGVsc2Ug
aWYgKG8uaXNCUigpKSB7CiAgICAgICAgIGNvbnN0IFJlbmRlckxpbmVCcmVhayYgYnIgPSBkb3du
Y2FzdDxSZW5kZXJMaW5lQnJlYWs+KG8pOwogICAgICAgICBJbnRSZWN0IGxpbmVzQm94ID0gYnIu
bGluZXNCb3VuZGluZ0JveCgpOwogICAgICAgICByID0gSW50UmVjdChsaW5lc0JveC54KCksIGxp
bmVzQm94LnkoKSwgbGluZXNCb3gud2lkdGgoKSwgbGluZXNCb3guaGVpZ2h0KCkpOwotICAgICAg
ICBpZiAoIWJyLmlubGluZUJveFdyYXBwZXIoKSAmJiAhSW5saW5lSXRlcmF0b3I6OnJ1bkZvcihi
cikpCisgICAgICAgIGlmICghYnIuaW5saW5lQm94V3JhcHBlcigpICYmICFJbmxpbmVJdGVyYXRv
cjo6Ym94Rm9yKGJyKSkKICAgICAgICAgICAgIGFkanVzdEZvclRhYmxlQ2VsbHMgPSBmYWxzZTsK
ICAgICB9IGVsc2UgaWYgKGlzPFJlbmRlcklubGluZT4obykpIHsKICAgICAgICAgY29uc3QgUmVu
ZGVySW5saW5lJiBpbmxpbmVGbG93ID0gZG93bmNhc3Q8UmVuZGVySW5saW5lPihvKTsKQEAgLTYw
MSw3ICs2MDEsNyBAQCB2b2lkIHdyaXRlKFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJPYmpl
Y3QmIG8sIE9wdGlvblNldDxSZW5kZXJBc1RleHRGbGFnPiBiZQogCiAgICAgaWYgKGlzPFJlbmRl
clRleHQ+KG8pKSB7CiAgICAgICAgIGF1dG8mIHRleHQgPSBkb3duY2FzdDxSZW5kZXJUZXh0Pihv
KTsKLSAgICAgICAgZm9yIChhdXRvJiBydW4gOiBJbmxpbmVJdGVyYXRvcjo6dGV4dFJ1bnNGb3Io
dGV4dCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBydW4gOiBJbmxpbmVJdGVyYXRvcjo6dGV4dEJv
eGVzRm9yKHRleHQpKSB7CiAgICAgICAgICAgICB0cyA8PCBpbmRlbnQ7CiAgICAgICAgICAgICB3
cml0ZVRleHRSdW4odGV4dCwgcnVuKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9UZXh0Qm94UGFpbnRlci5jcHAKaW5kZXggMzIzZGUwOWYzYzZlNGJmZjdiODNlYWRjNWM0
YTA3M2E3MzkwNmQxMi4uODA3Njc5Njc0YjA5MjAzYzdhMzc0MTljODJjNTYzZmFmNGM0M2Q0NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwCkBAIC0yOSw3
ICsyOSw2IEBACiAjaW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnRSZWdpb24uaCIK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckJv
eC5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTGluZS5oIgogI2luY2x1ZGUgIkxlZ2FjeUlu
bGluZVRleHRCb3guaCIKICNpbmNsdWRlICJQYWludEluZm8uaCIKQEAgLTQ1LDE0ICs0NCwxNCBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBUZXh0Qm94UGFpbnRlcjo6VGV4dEJveFBhaW50ZXIo
Y29uc3QgTGVnYWN5SW5saW5lVGV4dEJveCYgdGV4dEJveCwgUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKLSAgICA6IFRleHRCb3hQYWludGVyKElu
bGluZUl0ZXJhdG9yOjp0ZXh0UnVuRm9yKCZ0ZXh0Qm94KSwgcGFpbnRJbmZvLCBwYWludE9mZnNl
dCkKKyAgICA6IFRleHRCb3hQYWludGVyKElubGluZUl0ZXJhdG9yOjp0ZXh0Qm94Rm9yKCZ0ZXh0
Qm94KSwgcGFpbnRJbmZvLCBwYWludE9mZnNldCkKIHsKICAgICBtX2VtcGhhc2lzTWFya0V4aXN0
c0FuZElzQWJvdmUgPSB0ZXh0Qm94LmVtcGhhc2lzTWFya0V4aXN0c0FuZElzQWJvdmUobV9zdHls
ZSk7CiB9CiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIFRleHRCb3hQ
YWludGVyOjpUZXh0Qm94UGFpbnRlcihjb25zdCBMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29u
dGVudCYgaW5saW5lQ29udGVudCwgY29uc3QgSW5saW5lRGlzcGxheTo6Qm94JiBib3gsIFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCi0gICAgOiBU
ZXh0Qm94UGFpbnRlcihJbmxpbmVJdGVyYXRvcjo6dGV4dFJ1bkZvcihpbmxpbmVDb250ZW50LCBi
b3gpLCBwYWludEluZm8sIHBhaW50T2Zmc2V0KQorICAgIDogVGV4dEJveFBhaW50ZXIoSW5saW5l
SXRlcmF0b3I6OnRleHRCb3hGb3IoaW5saW5lQ29udGVudCwgYm94KSwgcGFpbnRJbmZvLCBwYWlu
dE9mZnNldCkKIHsKIH0KICNlbmRpZgpAQCAtMzcyLDcgKzM3MSw3IEBAIHZvaWQgVGV4dEJveFBh
aW50ZXI6OnBhaW50RGVjb3JhdGlvbihjb25zdCBTdHlsZWRNYXJrZWRUZXh0JiBtYXJrZWRUZXh0
LCBjb25zdCBGCiAgICAgYXV0byB0ZXh0RGVjb3JhdGlvbnMgPSBtX3N0eWxlLnRleHREZWNvcmF0
aW9uc0luRWZmZWN0KCk7CiAgICAgdGV4dERlY29yYXRpb25zLmFkZChUZXh0RGVjb3JhdGlvblBh
aW50ZXI6OnRleHREZWNvcmF0aW9uc0luRWZmZWN0Rm9yU3R5bGUobWFya2VkVGV4dC5zdHlsZS50
ZXh0RGVjb3JhdGlvblN0eWxlcykpOwogICAgIFRleHREZWNvcmF0aW9uUGFpbnRlciBkZWNvcmF0
aW9uUGFpbnRlciB7IGNvbnRleHQsIHRleHREZWNvcmF0aW9ucywgbV9yZW5kZXJlciwgbV9pc0Zp
cnN0TGluZSwgZm9udCwgbWFya2VkVGV4dC5zdHlsZS50ZXh0RGVjb3JhdGlvblN0eWxlcyB9Owot
ICAgIGRlY29yYXRpb25QYWludGVyLnNldFRleHRCb3hJdGVyYXRvcihtX3RleHRCb3gpOworICAg
IGRlY29yYXRpb25QYWludGVyLnNldFRleHRCb3gobV90ZXh0Qm94KTsKICAgICBkZWNvcmF0aW9u
UGFpbnRlci5zZXRXaWR0aChzbmFwcGVkU2VsZWN0aW9uUmVjdC53aWR0aCgpKTsKICAgICBkZWNv
cmF0aW9uUGFpbnRlci5zZXRJc0hvcml6b250YWwodGV4dEJveCgpLmlzSG9yaXpvbnRhbCgpKTsK
ICAgICBpZiAobWFya2VkVGV4dC5zdHlsZS50ZXh0U2hhZG93KSB7CkBAIC00OTUsNyArNDk0LDcg
QEAgRmxvYXRSZWN0IFRleHRCb3hQYWludGVyOjpjYWxjdWxhdGVVbmlvbk9mQWxsRG9jdW1lbnRN
YXJrZXJCb3VuZHMoY29uc3QgTGVnYWN5SW4KICAgICBGbG9hdFJlY3QgcmVzdWx0OwogICAgIGF1
dG8gbWFya2VkVGV4dHMgPSBNYXJrZWRUZXh0Ojpjb2xsZWN0Rm9yRG9jdW1lbnRNYXJrZXJzKHRl
eHRCb3gucmVuZGVyZXIoKSwgdGV4dEJveC5zZWxlY3RhYmxlUmFuZ2UoKSwgTWFya2VkVGV4dDo6
UGFpbnRQaGFzZTo6RGVjb3JhdGlvbik7CiAgICAgZm9yIChhdXRvJiBtYXJrZWRUZXh0IDogTWFy
a2VkVGV4dDo6c3ViZGl2aWRlKG1hcmtlZFRleHRzLCBNYXJrZWRUZXh0OjpPdmVybGFwU3RyYXRl
Z3k6OkZyb250bW9zdCkpCi0gICAgICAgIHJlc3VsdCA9IHVuaW9uUmVjdChyZXN1bHQsIGNhbGN1
bGF0ZURvY3VtZW50TWFya2VyQm91bmRzKElubGluZUl0ZXJhdG9yOjp0ZXh0UnVuRm9yKCZ0ZXh0
Qm94KSwgbWFya2VkVGV4dCkpOworICAgICAgICByZXN1bHQgPSB1bmlvblJlY3QocmVzdWx0LCBj
YWxjdWxhdGVEb2N1bWVudE1hcmtlckJvdW5kcyhJbmxpbmVJdGVyYXRvcjo6dGV4dEJveEZvcigm
dGV4dEJveCksIG1hcmtlZFRleHQpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5oCmluZGV4IDExZDc3Mjk5MWY0MTA1ZjIz
MTUzYjQwODJkYmExMDdjOWM5ZTBlMzQuLmFmOGQwZWVjMTBjNzcwZGI4MDgxY2UxYzU4MjExMjQ5
YmQwMjE4MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFp
bnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5oCkBA
IC0yNSw3ICsyNSw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgot
I2luY2x1ZGUgIklubGluZUl0ZXJhdG9yQm94LmgiCisjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JU
ZXh0Qm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiVGV4dEJveFNl
bGVjdGFibGVSYW5nZS5oIgogI2luY2x1ZGUgIlRleHRSdW4uaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHAKaW5kZXggN2Y2MDNhODdj
NzVkZWE5NTg4MmRjMDVlMTEyOGE3ZjFhOWZiMzQ0Ny4uYjU5NmQzZTA3MGE2YWFjN2Q2MjE5MmEx
MWIxMjE5YWJhZDdkNmViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Rl
eHREZWNvcmF0aW9uUGFpbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Rl
eHREZWNvcmF0aW9uUGFpbnRlci5jcHAKQEAgLTI4OCw3ICsyODgsNyBAQCB2b2lkIFRleHREZWNv
cmF0aW9uUGFpbnRlcjo6cGFpbnRUZXh0RGVjb3JhdGlvbihjb25zdCBUZXh0UnVuJiB0ZXh0UnVu
LCBjb25zdCBGbAogICAgICAgICBpZiAobV9kZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3Jh
dGlvbjo6VW5kZXJsaW5lKSkgewogICAgICAgICAgICAgZmxvYXQgdGV4dERlY29yYXRpb25CYXNl
Rm9udFNpemUgPSAxNjsKICAgICAgICAgICAgIGF1dG8gZGVmYXVsdEdhcCA9IG1fbGluZVN0eWxl
LmNvbXB1dGVkRm9udFNpemUoKSAvIHRleHREZWNvcmF0aW9uQmFzZUZvbnRTaXplOwotICAgICAg
ICAgICAgZmxvYXQgb2Zmc2V0ID0gY29tcHV0ZVVuZGVybGluZU9mZnNldChtX2xpbmVTdHlsZS50
ZXh0VW5kZXJsaW5lUG9zaXRpb24oKSwgbV9saW5lU3R5bGUudGV4dFVuZGVybGluZU9mZnNldCgp
LCBtX2xpbmVTdHlsZS5mb250TWV0cmljcygpLCBtX3RleHRSdW4sIGRlZmF1bHRHYXApOworICAg
ICAgICAgICAgZmxvYXQgb2Zmc2V0ID0gY29tcHV0ZVVuZGVybGluZU9mZnNldChtX2xpbmVTdHls
ZS50ZXh0VW5kZXJsaW5lUG9zaXRpb24oKSwgbV9saW5lU3R5bGUudGV4dFVuZGVybGluZU9mZnNl
dCgpLCBtX2xpbmVTdHlsZS5mb250TWV0cmljcygpLCBtX3RleHRCb3gsIGRlZmF1bHRHYXApOwog
ICAgICAgICAgICAgZmxvYXQgd2F2eU9mZnNldCA9IG1fc3R5bGVzLnVuZGVybGluZVN0eWxlID09
IFRleHREZWNvcmF0aW9uU3R5bGU6OldhdnkgPyBtX3dhdnlPZmZzZXQgOiAwOwogICAgICAgICAg
ICAgRmxvYXRSZWN0IHJlY3QobG9jYWxPcmlnaW4sIEZsb2F0U2l6ZShtX3dpZHRoLCB0ZXh0RGVj
b3JhdGlvblRoaWNrbmVzcykpOwogICAgICAgICAgICAgcmVjdC5tb3ZlKDAsIG9mZnNldCArIHdh
dnlPZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNv
cmF0aW9uUGFpbnRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9u
UGFpbnRlci5oCmluZGV4IDc3NmVlMGIzY2Y2MDc2NmU4Nzc1ODc0MTE4YjMwZDIwNGQzODY5OTYu
LmVhYWQ0MDgzNTEwZjgzZDhjNGQ0YjJhOWQyMjdjNTI5NWE3ZGYxNDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmgKQEAgLTI0LDcgKzI0
LDcgQEAKIAogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgotI2lu
Y2x1ZGUgIklubGluZUl0ZXJhdG9yQm94LmgiCisjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JUZXh0
Qm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKICNpbmNsdWRlIDx3dGYv
T3B0aW9uU2V0Lmg+CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHN0cnVjdCBTdHls
ZXM7CiAgICAgVGV4dERlY29yYXRpb25QYWludGVyKEdyYXBoaWNzQ29udGV4dCYsIE9wdGlvblNl
dDxUZXh0RGVjb3JhdGlvbj4gZGVjb3JhdGlvbnMsIGNvbnN0IFJlbmRlclRleHQmLCBib29sIGlz
Rmlyc3RMaW5lLCBjb25zdCBGb250Q2FzY2FkZSYsIHN0ZDo6b3B0aW9uYWw8U3R5bGVzPiA9IHN0
ZDo6bnVsbG9wdCk7CiAgICAgCi0gICAgdm9pZCBzZXRUZXh0Qm94SXRlcmF0b3IoSW5saW5lSXRl
cmF0b3I6OlRleHRCb3hJdGVyYXRvciB0ZXh0UnVuKSB7IG1fdGV4dFJ1biA9IHRleHRSdW47IH0K
KyAgICB2b2lkIHNldFRleHRCb3goSW5saW5lSXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvciB0ZXh0
Qm94KSB7IG1fdGV4dEJveCA9IHRleHRCb3g7IH0KICAgICB2b2lkIHNldElzSG9yaXpvbnRhbChi
b29sIGlzSG9yaXpvbnRhbCkgeyBtX2lzSG9yaXpvbnRhbCA9IGlzSG9yaXpvbnRhbDsgfQogICAg
IHZvaWQgc2V0V2lkdGgoZmxvYXQgd2lkdGgpIHsgbV93aWR0aCA9IHdpZHRoOyB9CiAgICAgdm9p
ZCBzZXRUZXh0U2hhZG93KGNvbnN0IFNoYWRvd0RhdGEqIHRleHRTaGFkb3cpIHsgbV9zaGFkb3cg
PSB0ZXh0U2hhZG93OyB9CkBAIC03OSw3ICs3OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lz
SG9yaXpvbnRhbCB7IHRydWUgfTsKICAgICBjb25zdCBTaGFkb3dEYXRhKiBtX3NoYWRvdyB7IG51
bGxwdHIgfTsKICAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiBtX3NoYWRvd0NvbG9yRmlsdGVy
IHsgbnVsbHB0ciB9OwotICAgIElubGluZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3IgbV90ZXh0
UnVuOworICAgIElubGluZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3IgbV90ZXh0Qm94OwogICAg
IGNvbnN0IEZvbnRDYXNjYWRlJiBtX2ZvbnQ7CiAKICAgICBTdHlsZXMgbV9zdHlsZXM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCA1NDlk
ZWRkNzNlMzM1MmQ2N2U2YzM1ZTM3ODI1NDc4MDYxMWMwZTkyLi4zOGZlYWY3NmQ5MGFkODQ4ZGFi
MTFhZGNmMmIxZTE1ZWVlODE3YmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJGbG9hdFJv
dW5kZWRSZWN0LmgiCiAjaW5jbHVkZSAiRm9udENhc2NhZGUuaCIKICNpbmNsdWRlICJGb250U2Vs
ZWN0b3IuaCIKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvclRleHRCb3guaCIKICNpbmNsdWRlICJJ
bmxpbmVUZXh0Qm94U3R5bGUuaCIKICNpbmNsdWRlICJQYWdpbmF0aW9uLmgiCiAjaW5jbHVkZSAi
UXVvdGVzRGF0YS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4
dEJveFN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5j
cHAKaW5kZXggYzdiMWM1MTYzZmVlNWY3ZDdmNGQxNTU4NTJhZjU2ZWU1MjE2ZWExZS4uYjRjNGZj
NGI5NTA5ZmU3OTIxNmFkMzE3M2UxZmNkMzY0NWY3NzhiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwCkBAIC0yOSw4ICsyOSw4IEBACiAjaW5jbHVkZSAi
Rm9udENhc2NhZGUuaCIKICNpbmNsdWRlICJIVE1MQW5jaG9yRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxOYW1lcy5oIgotI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yQm94LmgiCiAjaW5jbHVkZSAi
SW5saW5lSXRlcmF0b3JMaW5lLmgiCisjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JUZXh0Qm94Lmgi
CiAjaW5jbHVkZSAiTGVnYWN5SW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkxlZ2FjeVJvb3RJ
bmxpbmVCb3guaCIKICNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440002</attachid>
            <date>2021-10-03 03:28:53 -0700</date>
            <delta_ts>2021-10-03 06:59:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231135-20211003132851.patch</filename>
            <type>text/plain</type>
            <size>96800</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNDQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWI0YjUyMGQ1NDg0Mjky
OGZlYzJhYjJlM2QyOTAyNWFmY2U1ODgzMS4uZDg2ZWVjMTVmMTM5N2EwMTVkYTFiYWNlMmYzMDQ4
NGI5YTc2ZmIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2MCBAQAorMjAyMS0xMC0wMyAgQW50
dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSW50ZWdyYXRp
b25dIE1vcmUgcnVuLT5ib3ggcmVuYW1pbmcgYW5kIG90aGVyIGl0ZXJhdG9yIGNsZWFudXBzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzExMzUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbHNvIG1vdmUg
VGV4dEJveEl0ZXJhdG9yIHRvIGEgZmlsZSBvZiBpdHMgb3duLgorCisgICAgICAgICogSGVhZGVy
cy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmxvY2FsQ2FyZXRSZWN0
Rm9yQ2hhcmFjdGVyT2Zmc2V0KToKKyAgICAgICAgKiBkb20vUG9zaXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6aGFzSW5saW5lUnVuKToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjp1
cHN0cmVhbSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6ZG93bnN0cmVhbSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpzZWFyY2hBaGVhZEZvckJldHRlck1hdGNoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjppbmxpbmVSdW5BbmRPZmZzZXQgY29uc3QpOgorICAg
ICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OmRlbGV0ZUluc2lnbmlmaWNhbnRUZXh0KToKKyAgICAg
ICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRl
cmF0b3I6OmhhbmRsZVRleHROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6
aGFuZGxlVGV4dFJ1bik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmhhbmRsZVRl
eHROb2RlRmlyc3RMZXR0ZXIpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmg6Cisg
ICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvcjo6Qm94SXRlcmF0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveEl0ZXJhdG9yOjpvcGVyYXRvcj09
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvcjo6
YXRFbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveDo6bGlu
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3I6
OnRyYXZlcnNlTmV4dE9uTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6
Qm94SXRlcmF0b3I6OnRyYXZlcnNlUHJldmlvdXNPbkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5saW5lSXRlcmF0b3I6OkJveEl0ZXJhdG9yOjp0cmF2ZXJzZU5leHRPbkxpbmVJZ25vcmluZ0xp
bmVCcmVhayk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3I6
OnRyYXZlcnNlUHJldmlvdXNPbkxpbmVJZ25vcmluZ0xpbmVCcmVhayk6CisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3I6OnRyYXZlcnNlTmV4dE9uTGluZUluTG9n
aWNhbE9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRv
cjo6dHJhdmVyc2VQcmV2aW91c09uTGluZUluTG9naWNhbE9yZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OklubGluZUl0ZXJhdG9yOjpib3hGb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRl
cmF0b3I6OkJveDo6bW9kZXJuUGF0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJ
dGVyYXRvcjo6Qm94OjpsZWdhY3lQYXRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZUl0ZXJhdG9yOjpUZXh0Qm94OjpuZXh0VGV4dFJ1biBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6VGV4dEJveDo6bmV4dFRleHRSdW5JblRleHRPcmRl
ciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6VGV4
dEJveDo6c2VsZWN0aW9uUmVjdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVJdGVyYXRvcjo6VGV4dEJveDo6aXNDb21iaW5lZFRleHQgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OlRleHRCb3g6OmZvbnRDYXNjYWRlIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94
SXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yOjp0cmF2ZXJzZU5leHRUZXh0UnVuKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3I6
OnRyYXZlcnNlTmV4dFRleHRSdW5JblRleHRPcmRlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVJdGVyYXRvcjo6Zmlyc3RUZXh0UnVuRm9yKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpmaXJzdFRleHRSdW5JblRleHRPcmRlckZvcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6dGV4dFJ1bkZvcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6dGV4dFJ1bnNGb3IpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OnJ1bkZvcik6IERlbGV0
ZWQuCisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3I6OkJveEl0ZXJhdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvcjo6b3BlcmF0
b3IqIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRv
cjo6b3BlcmF0b3ItPiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6
Qm94OjpsZWdhY3lJbmxpbmVCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRl
cmF0b3I6OkJveDo6aW5saW5lQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0
ZXJhdG9yOjpUZXh0Qm94OjpyZW5kZXJlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVJdGVyYXRvcjo6VGV4dEJveDo6bGVnYWN5SW5saW5lQm94IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3I6
OlRleHRCb3hJdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVy
YXRvcjo6VGV4dEJveEl0ZXJhdG9yOjpvcGVyYXRvcisrKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3I6Om9wZXJhdG9yKiBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6VGV4dEJveEl0ZXJh
dG9yOjpvcGVyYXRvci0+IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3I6OmdldCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6VGV4dFJ1blJhbmdlOjpUZXh0UnVuUmFuZ2UpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OlRleHRSdW5SYW5nZTo6
YmVnaW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6
OlRleHRSdW5SYW5nZTo6ZW5kIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oklu
bGluZUl0ZXJhdG9yOjpUZXh0Qm94OjpoYXNIeXBoZW4gY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OlRleHRCb3g6OlRleHRCb3gpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OlRleHRCb3g6OnRleHQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OlRleHRCb3g6OnN0YXJ0
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpUZXh0
Qm94OjplbmQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0
b3I6OlRleHRCb3g6Omxlbmd0aCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVJdGVyYXRvcjo6VGV4dEJveDo6b2Zmc2V0Rm9yUG9zaXRpb24gY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OlRleHRCb3g6OnBvc2l0aW9uRm9y
T2Zmc2V0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9y
OjpUZXh0Qm94OjpzZWxlY3RhYmxlUmFuZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SW5saW5lSXRlcmF0b3I6OlRleHRCb3g6OmNyZWF0ZVRleHRSdW4gY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoaXNUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW50ZWdy
YXRpb24vSW5saW5lSXRlcmF0b3JCb3hMZWdhY3lQYXRoLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVJdGVyYXRvcjo6Qm94TGVnYWN5UGF0aDo6Qm94TGVnYWN5UGF0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94TGVnYWN5UGF0aDo6dHJhdmVyc2VOZXh0VGV4dEJv
eCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94TGVnYWN5UGF0aDo6dHJh
dmVyc2VOZXh0VGV4dEJveEluVGV4dE9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0
ZXJhdG9yOjpCb3hMZWdhY3lQYXRoOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OklubGluZUl0ZXJhdG9yOjpCb3hMZWdhY3lQYXRoOjp0cmF2ZXJzZU5leHRJbmxpbmVCb3hJ
bkNhY2hlT3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveExlZ2Fj
eVBhdGg6OnRyYXZlcnNlUHJldmlvdXNJbmxpbmVCb3hJbkNhY2hlT3JkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveEl0ZXJhdG9yTGVnYWN5UGF0aDo6Qm94SXRlcmF0
b3JMZWdhY3lQYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9y
OjpCb3hJdGVyYXRvckxlZ2FjeVBhdGg6OmlzVGV4dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3JMZWdhY3lQYXRoOjpyZWN0IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVy
YXRvckxlZ2FjeVBhdGg6OmlzSG9yaXpvbnRhbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3JMZWdhY3lQYXRoOjpkaXJPdmVycmlk
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94
SXRlcmF0b3JMZWdhY3lQYXRoOjppc0xpbmVCcmVhayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3JMZWdhY3lQYXRoOjptaW5pbXVt
Q2FyZXRPZmZzZXQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRl
cmF0b3I6OkJveEl0ZXJhdG9yTGVnYWN5UGF0aDo6bWF4aW11bUNhcmV0T2Zmc2V0IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvckxl
Z2FjeVBhdGg6OmJpZGlMZXZlbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3JMZWdhY3lQYXRoOjpoYXNIeXBoZW4gY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveEl0ZXJhdG9yTGVn
YWN5UGF0aDo6dGV4dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJ
dGVyYXRvcjo6Qm94SXRlcmF0b3JMZWdhY3lQYXRoOjpzdGFydCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3JMZWdhY3lQYXRoOjpl
bmQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJv
eEl0ZXJhdG9yTGVnYWN5UGF0aDo6bGVuZ3RoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvckxlZ2FjeVBhdGg6Om9mZnNldEZvclBv
c2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9y
OjpCb3hJdGVyYXRvckxlZ2FjeVBhdGg6OnBvc2l0aW9uRm9yT2Zmc2V0IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvckxlZ2FjeVBh
dGg6OnNlbGVjdGFibGVSYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3JMZWdhY3lQYXRoOjpjcmVhdGVUZXh0UnVuIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRv
ckxlZ2FjeVBhdGg6OnJlbmRlcmVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvckxlZ2FjeVBhdGg6OnRyYXZlcnNlTmV4dFRleHRS
dW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveEl0ZXJh
dG9yTGVnYWN5UGF0aDo6dHJhdmVyc2VOZXh0VGV4dFJ1bkluVGV4dE9yZGVyKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvckxlZ2FjeVBhdGg6
OnRyYXZlcnNlTmV4dE9uTGluZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJ
dGVyYXRvcjo6Qm94SXRlcmF0b3JMZWdhY3lQYXRoOjp0cmF2ZXJzZVByZXZpb3VzT25MaW5lKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvckxl
Z2FjeVBhdGg6OnRyYXZlcnNlTmV4dE9uTGluZUluTG9naWNhbE9yZGVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvckxlZ2FjeVBhdGg6OnRy
YXZlcnNlUHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxPcmRlcik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3JMZWdhY3lQYXRoOjpvcGVyYXRvcj09
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJ
dGVyYXRvckxlZ2FjeVBhdGg6OmF0RW5kIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvckxlZ2FjeVBhdGg6OmxlZ2FjeUlubGluZUJv
eCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94
SXRlcmF0b3JMZWdhY3lQYXRoOjpyb290SW5saW5lQm94IGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvckxlZ2FjeVBhdGg6OmlubGlu
ZVRleHRCb3ggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0
b3I6OkJveEl0ZXJhdG9yTGVnYWN5UGF0aDo6aW5pdGlhbGl6ZUxvZ2ljYWxPcmRlckNhY2hlRm9y
TGluZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94SXRl
cmF0b3JMZWdhY3lQYXRoOjp0cmF2ZXJzZU5leHRJbmxpbmVCb3hJbkNhY2hlT3JkZXIpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveEl0ZXJhdG9yTGVnYWN5
UGF0aDo6dHJhdmVyc2VQcmV2aW91c0lubGluZUJveEluQ2FjaGVPcmRlcik6IERlbGV0ZWQuCisg
ICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94TW9kZXJuUGF0aC5o
OgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveE1vZGVyblBhdGg6OkJveE1v
ZGVyblBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveE1vZGVyblBh
dGg6OnRyYXZlcnNlTmV4dFRleHRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0
b3I6OkJveE1vZGVyblBhdGg6OnRyYXZlcnNlTmV4dFRleHRCb3hJblRleHRPcmRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94TW9kZXJuUGF0aDo6b3BlcmF0b3I9PSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3JNb2Rl
cm5QYXRoOjpCb3hJdGVyYXRvck1vZGVyblBhdGgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lSXRlcmF0b3I6OkJveEl0ZXJhdG9yTW9kZXJuUGF0aDo6aXNUZXh0IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvck1v
ZGVyblBhdGg6OnJlY3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5l
SXRlcmF0b3I6OkJveEl0ZXJhdG9yTW9kZXJuUGF0aDo6aXNIb3Jpem9udGFsIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvck1vZGVy
blBhdGg6OmRpck92ZXJyaWRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oklu
bGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvck1vZGVyblBhdGg6OmlzTGluZUJyZWFrIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvck1v
ZGVyblBhdGg6Om1pbmltdW1DYXJldE9mZnNldCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3JNb2Rlcm5QYXRoOjptYXhpbXVtQ2Fy
ZXRPZmZzZXQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0
b3I6OkJveEl0ZXJhdG9yTW9kZXJuUGF0aDo6YmlkaUxldmVsIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvck1vZGVyblBhdGg6Omhh
c0h5cGhlbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRv
cjo6Qm94SXRlcmF0b3JNb2Rlcm5QYXRoOjp0ZXh0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvck1vZGVyblBhdGg6OnN0YXJ0IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVy
YXRvck1vZGVyblBhdGg6OmVuZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3JNb2Rlcm5QYXRoOjpsZW5ndGggY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveEl0ZXJhdG9yTW9kZXJu
UGF0aDo6b2Zmc2V0Rm9yUG9zaXRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lSXRlcmF0b3I6OkJveEl0ZXJhdG9yTW9kZXJuUGF0aDo6cG9zaXRpb25Gb3JPZmZz
ZXQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJv
eEl0ZXJhdG9yTW9kZXJuUGF0aDo6c2VsZWN0YWJsZVJhbmdlIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvck1vZGVyblBhdGg6OmNy
ZWF0ZVRleHRSdW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRl
cmF0b3I6OkJveEl0ZXJhdG9yTW9kZXJuUGF0aDo6cmVuZGVyZXIgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveEl0ZXJhdG9yTW9kZXJuUGF0aDo6
dHJhdmVyc2VOZXh0VGV4dFJ1bik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJ
dGVyYXRvcjo6Qm94SXRlcmF0b3JNb2Rlcm5QYXRoOjp0cmF2ZXJzZU5leHRUZXh0UnVuSW5UZXh0
T3JkZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveEl0
ZXJhdG9yTW9kZXJuUGF0aDo6dHJhdmVyc2VOZXh0T25MaW5lKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvck1vZGVyblBhdGg6OnRyYXZlcnNl
UHJldmlvdXNPbkxpbmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0
b3I6OkJveEl0ZXJhdG9yTW9kZXJuUGF0aDo6dHJhdmVyc2VOZXh0T25MaW5lSW5Mb2dpY2FsT3Jk
ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveEl0ZXJh
dG9yTW9kZXJuUGF0aDo6dHJhdmVyc2VQcmV2aW91c09uTGluZUluTG9naWNhbE9yZGVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvck1vZGVy
blBhdGg6Om9wZXJhdG9yPT0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lSXRlcmF0b3I6OkJveEl0ZXJhdG9yTW9kZXJuUGF0aDo6YXRFbmQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveEl0ZXJhdG9yTW9kZXJuUGF0
aDo6Ym94IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9y
OjpCb3hJdGVyYXRvck1vZGVyblBhdGg6OmlubGluZUNvbnRlbnQgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveEl0ZXJhdG9yTW9kZXJuUGF0aDo6
dHJhdmVyc2VOZXh0TGVhZik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVy
YXRvcjo6Qm94SXRlcmF0b3JNb2Rlcm5QYXRoOjp0cmF2ZXJzZVByZXZpb3VzTGVhZik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3JNb2Rlcm5Q
YXRoOjpzZXRBdEVuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRv
cjo6Qm94SXRlcmF0b3JNb2Rlcm5QYXRoOjpib3hlcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3JNb2Rlcm5QYXRoOjpsaW5lIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0
b3JMaW5lTGVnYWN5UGF0aC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6Okxp
bmVJdGVyYXRvckxlZ2FjeVBhdGg6OmZpcnN0UnVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JMZWdhY3lQYXRoOjpsYXN0UnVuIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3JMZWdhY3lQYXRo
Ojpsb2dpY2FsU3RhcnRSdW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0
b3I6OkxpbmVJdGVyYXRvckxlZ2FjeVBhdGg6OmxvZ2ljYWxFbmRSdW4gY29uc3QpOgorICAgICAg
ICAqIGxheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVNb2Rlcm5QYXRoLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yTW9kZXJuUGF0aDo6
Zmlyc3RSdW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVJ
dGVyYXRvck1vZGVyblBhdGg6Omxhc3RSdW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvck1vZGVyblBhdGg6OmxvZ2ljYWxTdGFydFJ1biBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yTW9kZXJu
UGF0aDo6bG9naWNhbEVuZFJ1biBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9u
L0lubGluZUl0ZXJhdG9yVGV4dEJveC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lSXRlcmF0b3I6OlRleHRCb3g6Om5leHRUZXh0Qm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94OjpuZXh0VGV4dEJveEluVGV4dE9yZGVyIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94OjpzZWxlY3Rpb25S
ZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94Ojpp
c0NvbWJpbmVkVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6
VGV4dEJveDo6Zm9udENhc2NhZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRl
cmF0b3I6OlRleHRCb3hJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3I6OnRyYXZlcnNlTmV4dFRleHRCb3gp
OgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvcjo6dHJh
dmVyc2VOZXh0VGV4dEJveEluVGV4dE9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0
ZXJhdG9yOjpmaXJzdFRleHRCb3hGb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0
b3I6OmZpcnN0VGV4dEJveEluVGV4dE9yZGVyRm9yKToKKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZUl0ZXJhdG9yOjp0ZXh0Qm94Rm9yKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9y
Ojp0ZXh0Qm94ZXNGb3IpOgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVy
YXRvclRleHRCb3guaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6
VGV4dEJveDo6cmVuZGVyZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0
b3I6OlRleHRCb3g6OmxlZ2FjeUlubGluZUJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvcjo6b3BlcmF0b3IrKyk6
CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yOjpvcGVy
YXRvciogY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OlRleHRCb3hJ
dGVyYXRvcjo6b3BlcmF0b3ItPiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVy
YXRvcjo6VGV4dEJveEl0ZXJhdG9yOjpnZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lSXRlcmF0b3I6OlRleHRCb3hSYW5nZTo6VGV4dEJveFJhbmdlKToKKyAgICAgICAgKFdlYkNv
cmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94UmFuZ2U6OmJlZ2luIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94UmFuZ2U6OmVuZCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6VGV4dEJveDo6aGFzSHlwaGVuIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94OjpUZXh0Qm94KToKKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94Ojp0ZXh0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94OjpzdGFydCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6VGV4dEJveDo6ZW5kIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94OjpsZW5ndGggY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OlRleHRCb3g6Om9mZnNldEZvclBvc2l0
aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpUZXh0Qm94Ojpw
b3NpdGlvbkZvck9mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRv
cjo6VGV4dEJveDo6c2VsZWN0YWJsZVJhbmdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
bGluZUl0ZXJhdG9yOjpUZXh0Qm94OjpjcmVhdGVUZXh0UnVuIGNvbnN0KToKKyAgICAgICAgKGlz
VHlwZSk6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQ292
ZXJhZ2UuaDoKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25M
aW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5l
TGF5b3V0Ojp0ZXh0Qm94ZXNGb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50
ZWdyYXRpb246OkxpbmVMYXlvdXQ6OmJveEZvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6dGV4dFJ1bnNGb3IgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OnJ1bkZv
ciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uTGluZUxheW91dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9DYXJldFJlY3RDb21w
dXRhdGlvbi5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL0xlZ2FjeUlubGluZVRleHRCb3guaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvTGVnYWN5TGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzZXRMb2dpY2FsV2lkdGhGb3JUZXh0UnVuKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpnZXRMZWFk
aW5nQ29ybmVyIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmNvbGxlY3RTZWxlY3Rpb25HZW9tZXRyaWVz
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxpbmVCcmVhazo6bGluZXNCb3VuZGluZ0JveCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMaW5lQnJlYWs6OmFic29sdXRlUmVjdHMgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGluZUJyZWFrOjphYnNvbHV0ZVF1YWRzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxpbmVCcmVhazo6Y29sbGVjdFNlbGVjdGlvbkdlb21ldHJpZXMp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJSZXBsYWNlZDo6cG9zaXRpb25Gb3JQb2ludCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6YWJzb2x1
dGVSZWN0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojpjb2xsZWN0U2Vs
ZWN0aW9uR2VvbWV0cmllcyk6CisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0QWJzb2x1dGVRdWFk
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjphYnNvbHV0ZVF1YWRzRm9yUmFuZ2Ug
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6cG9zaXRpb25Gb3JQb2ludCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpmaXJzdFJ1bkxvY2F0aW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmxpbmVzQm91bmRpbmdCb3ggY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y29sbGVjdFNlbGVjdGlvbkdlb21ldHJpZXNG
b3JMaW5lQm94ZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y2FyZXRNaW5PZmZz
ZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y2FyZXRNYXhPZmZzZXQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y291bnRSZW5kZXJlZENoYXJh
Y3Rlck9mZnNldHNVbnRpbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjb250YWluc09mZnNl
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpoYXNSZW5kZXJlZFRleHQgY29uc3Qp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRyZWVBc1RleHQ6OndyaXRlUmVuZGVyT2JqZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OndyaXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dEJveFBhaW50ZXI6OlRleHRCb3hQYWludGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRCb3hQYWludGVyOjpwYWludERlY29yYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dEJveFBhaW50ZXI6OmNhbGN1bGF0ZVVuaW9uT2ZBbGxEb2N1bWVudE1hcmtl
ckJvdW5kcyk6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50VGV4dERlY29yYXRpb24pOgorICAgICAgICAq
IHJlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHREZWNvcmF0aW9uUGFpbnRlcjo6c2V0VGV4dEJveCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
RGVjb3JhdGlvblBhaW50ZXI6OnNldFRleHRCb3hJdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAg
ICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKiBzdHlsZS9Jbmxp
bmVUZXh0Qm94U3R5bGUuY3BwOgorCiAyMDIxLTEwLTAyICBBbnR0aSBLb2l2aXN0byAgPGFudHRp
QGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJbnRlZ3JhdGlvbl0gTW92ZSBpbmxpbmUgaXRl
cmF0b3JzIHRvIElubGluZUl0ZXJhdG9yIG5hbWVzcGFjZSBhbmQgcmVuYW1lIFJ1biogdG8gQm94
KgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UKaW5kZXggNWRiNjgyOTk1ODlmZGNiMjk5NzUyZTU4MjZkYzk5MzFl
NmVhMDFmNy4uMzk0Y2IzYmI2ZTFhMzI3MjQ5NTFiMjI2NTdlZDk1OTlmZDM3OGY4MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCkBAIC04MDEsNiArODAxLDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFN
RVdPUktfSEVBREVSUwogICAgIGxheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmUu
aAogICAgIGxheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVMZWdhY3lQYXRoLmgK
ICAgICBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lTW9kZXJuUGF0aC5oCisg
ICAgbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJveC5oCiAgICAgbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudC5oCiAgICAgbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZS5oCiAgICAgbGF5b3V0L2xheW91dHRy
ZWUvTGF5b3V0Qm94LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggNDQ3ZjFjNTNlY2ZhMTAwMDI2OWY4OGRk
YTA2MWY5NDA1MDMxYjc1NC4uZDRlYWVkZWYxZWE1MWRlOGIxMTE2ZDIwODdmMmM0MGY0NTExYmU3
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKQEAgLTE1MTIsNiArMTUxMiw3IEBAIGxheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL2ludmFsaWRhdGlvbi9JbmxpbmVJbnZhbGlkYXRpb24uY3BwCiBsYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS90ZXh0L1RleHRVdGlsLmNwcAogbGF5b3V0L2lu
dGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmNwcAogbGF5b3V0L2ludGVncmF0aW9uL0lubGlu
ZUl0ZXJhdG9yTGluZS5jcHAKK2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvclRleHRC
b3guY3BwCiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmNwcAog
bGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQ292ZXJhZ2UuY3BwCiBsYXlvdXQv
aW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50QnVpbGRlci5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBjMjM2ZDdhNDQ3YTNhYTUyMTE2NjYwYWYxZDFhZmFlZmU1Mzk2NDMwLi5lZDY1MGFlNjZjYWU1
OTQ4OTNjYzRhYzNiZDBiODFkYjY5YTlkMmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MjcxLDYgKzUyNzEsNyBAQAogCQlF
NDdDMzkzMjFGRTZFMTA1MDBCQkJDNkIgLyogUmVuZGVyVHJlZUJ1aWxkZXJMaXN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDdDMzkyODFGRTZFMERE
MDBCQkJDNkIgLyogUmVuZGVyVHJlZUJ1aWxkZXJMaXN0LmggKi87IH07CiAJCUU0N0MzOTMzMUZF
NkUxMDgwMEJCQkM2QiAvKiBSZW5kZXJUcmVlQnVpbGRlck11bHRpQ29sdW1uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDdDMzkyNzFGRTZFMERDMDBC
QkJDNkIgLyogUmVuZGVyVHJlZUJ1aWxkZXJNdWx0aUNvbHVtbi5oICovOyB9OwogCQlFNDdDRUJD
OTI3MDZFRjUyMDBCOEQ4RjUgLyogSW5saW5lV2Fsa2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDdDRUJDNzI3MDZFRjUxMDBCOEQ4RjUgLyogSW5s
aW5lV2Fsa2VyLmggKi87IH07CisJCUU0N0NFQkUxMjcwOTkxNkQwMEI4RDhGNSAvKiBJbmxpbmVJ
dGVyYXRvclRleHRCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEU0N0NFQkUwMjcwOTkxNkQwMEI4RDhGNSAvKiBJbmxpbmVJdGVyYXRvclRleHRCb3gu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDdF
Mjc2NTE2MDM2RUQyMDBFRTJBRkIgLyogRXh0ZW5zaW9uU3R5bGVTaGVldHMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0N0UyNzY0MTYwMzZFRDIwMEVF
MkFGQiAvKiBFeHRlbnNpb25TdHlsZVNoZWV0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0N0ZDOEEzMjVCODRENzIwMDU0OTVGQyAvKiBMb2Fk
U2NoZWR1bGluZ01vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEU0N0ZDOEExMjVCODRENzEwMDU0OTVGQyAvKiBMb2FkU2NoZWR1bGluZ01vZGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDgxMzdC
OTFEQjNCNTI2MDA1QzU5QkYgLyogU3R5bGVWYWxpZGl0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ4MTM3QjgxREIzQjUyNjAwNUM1OUJGIC8qIFN0
eWxlVmFsaWRpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtMTY1MzAsNiArMTY1MzEsOCBAQAogCQlFNDdDMzkyQjFGRTZFMERGMDBCQkJDNkIg
LyogUmVuZGVyVHJlZUJ1aWxkZXJMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbmRlclRyZWVCdWlsZGVyTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUU0N0MzOTJDMUZFNkUwREYwMEJCQkM2QiAvKiBSZW5kZXJUcmVlVXBkYXRlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJUcmVlVXBkYXRlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDdDRUJDNzI3MDZFRjUxMDBCOEQ4RjUgLyog
SW5saW5lV2Fsa2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElubGluZVdh
bGtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNDdDRUJERTI3MDk5MTY0MDBC
OEQ4RjUgLyogSW5saW5lSXRlcmF0b3JUZXh0Qm94LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElu
bGluZUl0ZXJhdG9yVGV4dEJveC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU0
N0NFQkUwMjcwOTkxNkQwMEI4RDhGNSAvKiBJbmxpbmVJdGVyYXRvclRleHRCb3guaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5saW5lSXRlcmF0b3JUZXh0Qm94Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0N0UyNzY0MTYwMzZFRDIwMEVFMkFGQiAvKiBFeHRl
bnNpb25TdHlsZVNoZWV0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeHRl
bnNpb25TdHlsZVNoZWV0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDdFMjc2
NzE2MDM2RURDMDBFRTJBRkIgLyogRXh0ZW5zaW9uU3R5bGVTaGVldHMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXh0ZW5zaW9uU3R5bGVTaGVldHMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDdGQzhBMTI1Qjg0RDcxMDA1NDk1RkMgLyogTG9h
ZFNjaGVkdWxpbmdNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvYWRT
Y2hlZHVsaW5nTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjk0OTgsNiAr
Mjk1MDEsOCBAQAogCQkJCUU0RDMzRjNGMjUyQzRCODIwMDgzN0QwNSAvKiBJbmxpbmVJdGVyYXRv
ckxpbmUuaCAqLywKIAkJCQlFNEQzM0Y0MzI1MkM1MEUyMDA4MzdEMDUgLyogSW5saW5lSXRlcmF0
b3JMaW5lTGVnYWN5UGF0aC5oICovLAogCQkJCUU0RDMzRjQ1MjUyQzUwRkIwMDgzN0QwNSAvKiBJ
bmxpbmVJdGVyYXRvckxpbmVNb2Rlcm5QYXRoLmggKi8sCisJCQkJRTQ3Q0VCREUyNzA5OTE2NDAw
QjhEOEY1IC8qIElubGluZUl0ZXJhdG9yVGV4dEJveC5jcHAgKi8sCisJCQkJRTQ3Q0VCRTAyNzA5
OTE2RDAwQjhEOEY1IC8qIElubGluZUl0ZXJhdG9yVGV4dEJveC5oICovLAogCQkJCUU0MTgwMjU2
MjNENDU0QjUwMEZGQjA3MSAvKiBMYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuY3BwICovLAogCQkJ
CUU0MTgwMjUzMjNENDU0OUEwMEZGQjA3MSAvKiBMYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuaCAq
LywKIAkJCQlFNDAzQjc5RjI1MUIxMThCMDAxOUU4MDAgLyogTGF5b3V0SW50ZWdyYXRpb25Db3Zl
cmFnZS5jcHAgKi8sCkBAIC0zMzAxNyw2ICszMzAyMiw3IEBACiAJCQkJRTREMzNGNDEyNTJDNEI4
MzAwODM3RDA1IC8qIElubGluZUl0ZXJhdG9yTGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRE
MzNGNDQyNTJDNTBFMjAwODM3RDA1IC8qIElubGluZUl0ZXJhdG9yTGluZUxlZ2FjeVBhdGguaCBp
biBIZWFkZXJzICovLAogCQkJCUU0RDMzRjQ2MjUyQzUwRkMwMDgzN0QwNSAvKiBJbmxpbmVJdGVy
YXRvckxpbmVNb2Rlcm5QYXRoLmggaW4gSGVhZGVycyAqLywKKwkJCQlFNDdDRUJFMTI3MDk5MTZE
MDBCOEQ4RjUgLyogSW5saW5lSXRlcmF0b3JUZXh0Qm94LmggaW4gSGVhZGVycyAqLywKIAkJCQk2
RkFBRTcxMzI2QTI4MTRCMDBFMDc1MDIgLyogSW5saW5lTGV2ZWxCb3guaCBpbiBIZWFkZXJzICov
LAogCQkJCTZGMENENjk1MjI5RUQzMjcwMEM1OTk0RSAvKiBJbmxpbmVMaW5lLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk2RkIyNDAwNTIzREZGMTI4MDA3OTY0NTggLyogSW5saW5lTGluZUJveC5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
T2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcAppbmRleCA2MmQzMmU3NmEyYzM4OGM2Y2RkYThlNzYxMTQ3ZmFjMzg1NzlkM2VkLi4w
YTI3OWVjNTM5MmYyMWZkYzVkNTk5MTFlMjQxZGVhY2Q5OTg0Zjk2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTI5NDUsNyArMjk0NSw3
IEBAIExheW91dFJlY3QgQVhPYmplY3RDYWNoZTo6bG9jYWxDYXJldFJlY3RGb3JDaGFyYWN0ZXJP
ZmZzZXQoUmVuZGVyT2JqZWN0KiYgcmVuZGVyCiAgICAgaWYgKHJ1bkFuZE9mZnNldC5ydW4pCiAg
ICAgICAgIHJlbmRlcmVyID0gY29uc3RfY2FzdDxSZW5kZXJPYmplY3QqPigmcnVuQW5kT2Zmc2V0
LnJ1bi0+cmVuZGVyZXIoKSk7CiAKLSAgICBpZiAoaXM8UmVuZGVyTGluZUJyZWFrPihyZW5kZXJl
cikgJiYgSW5saW5lSXRlcmF0b3I6OnJ1bkZvcihkb3duY2FzdDxSZW5kZXJMaW5lQnJlYWs+KCpy
ZW5kZXJlcikpICE9IHJ1bkFuZE9mZnNldC5ydW4pCisgICAgaWYgKGlzPFJlbmRlckxpbmVCcmVh
az4ocmVuZGVyZXIpICYmIElubGluZUl0ZXJhdG9yOjpib3hGb3IoZG93bmNhc3Q8UmVuZGVyTGlu
ZUJyZWFrPigqcmVuZGVyZXIpKSAhPSBydW5BbmRPZmZzZXQucnVuKQogICAgICAgICByZXR1cm4g
SW50UmVjdCgpOwogCiAgICAgcmV0dXJuIGNvbXB1dGVMb2NhbENhcmV0UmVjdCgqcmVuZGVyZXIs
IHJ1bkFuZE9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAppbmRleCBiNmNlOTk1NzBhYmU5
Y2ZiZTNhYTJiNDk0NTNmOWEwMTdlNzM1NTcwLi4xY2MzZjVkNDIzN2YyZjYwNmI4ZGQyZWZlOWVm
YTYxNjZiNzJiZjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKQEAgLTM1LDggKzM1LDggQEAK
ICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAj
aW5jbHVkZSAiSFRNTFRhYmxlRWxlbWVudC5oIgotI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yQm94
LmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lLmgiCisjaW5jbHVkZSAiSW5saW5lSXRl
cmF0b3JUZXh0Qm94LmgiCiAjaW5jbHVkZSAiSW5saW5lUnVuQW5kT2Zmc2V0LmgiCiAjaW5jbHVk
ZSAiTGVnYWN5SW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTY5LDEx
ICs2OSwxMSBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBzdGF0aWMgYm9vbCBoYXNJ
bmxpbmVSdW4oUmVuZGVyT2JqZWN0JiByZW5kZXJlcikKIHsKLSAgICBpZiAoaXM8UmVuZGVyQm94
PihyZW5kZXJlcikgJiYgSW5saW5lSXRlcmF0b3I6OnJ1bkZvcihkb3duY2FzdDxSZW5kZXJCb3g+
KHJlbmRlcmVyKSkpCisgICAgaWYgKGlzPFJlbmRlckJveD4ocmVuZGVyZXIpICYmIElubGluZUl0
ZXJhdG9yOjpib3hGb3IoZG93bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJlcikpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICBpZiAoaXM8UmVuZGVyVGV4dD4ocmVuZGVyZXIpICYmIElubGluZUl0
ZXJhdG9yOjpmaXJzdFRleHRSdW5Gb3IoZG93bmNhc3Q8UmVuZGVyVGV4dD4ocmVuZGVyZXIpKSkK
KyAgICBpZiAoaXM8UmVuZGVyVGV4dD4ocmVuZGVyZXIpICYmIElubGluZUl0ZXJhdG9yOjpmaXJz
dFRleHRCb3hGb3IoZG93bmNhc3Q8UmVuZGVyVGV4dD4ocmVuZGVyZXIpKSkKICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgaWYgKGlzPFJlbmRlckxpbmVCcmVhaz4ocmVuZGVyZXIpICYmIElubGlu
ZUl0ZXJhdG9yOjpydW5Gb3IoZG93bmNhc3Q8UmVuZGVyTGluZUJyZWFrPihyZW5kZXJlcikpKQor
ICAgIGlmIChpczxSZW5kZXJMaW5lQnJlYWs+KHJlbmRlcmVyKSAmJiBJbmxpbmVJdGVyYXRvcjo6
Ym94Rm9yKGRvd25jYXN0PFJlbmRlckxpbmVCcmVhaz4ocmVuZGVyZXIpKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtNzM5LDcgKzczOSw3IEBAIFBvc2l0
aW9uIFBvc2l0aW9uOjp1cHN0cmVhbShFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGUgcnVsZSkg
Y29uc3QKICAgICAgICAgaWYgKGlzPFJlbmRlclRleHQ+KCpyZW5kZXJlcikpIHsKICAgICAgICAg
ICAgIGF1dG8mIHRleHRSZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclRleHQ+KCpyZW5kZXJlcik7
CiAKLSAgICAgICAgICAgIGF1dG8gZmlyc3RUZXh0UnVuID0gSW5saW5lSXRlcmF0b3I6OmZpcnN0
VGV4dFJ1bkluVGV4dE9yZGVyRm9yKHRleHRSZW5kZXJlcik7CisgICAgICAgICAgICBhdXRvIGZp
cnN0VGV4dFJ1biA9IElubGluZUl0ZXJhdG9yOjpmaXJzdFRleHRCb3hJblRleHRPcmRlckZvcih0
ZXh0UmVuZGVyZXIpOwogICAgICAgICAgICAgaWYgKCFmaXJzdFRleHRSdW4pCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAKQEAgLTc1Nyw3ICs3NTcsNyBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6
dXBzdHJlYW0oRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlIHJ1bGUpIGNvbnN0CiAgICAgICAg
ICAgICAgICAgaWYgKHRleHRPZmZzZXQgPiBydW4tPnN0YXJ0KCkgJiYgdGV4dE9mZnNldCA8PSBy
dW4tPmVuZCgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudFBvc2l0aW9uOwog
Ci0gICAgICAgICAgICAgICAgYXV0byBuZXh0UnVuID0gcnVuLT5uZXh0VGV4dFJ1bkluVGV4dE9y
ZGVyKCk7CisgICAgICAgICAgICAgICAgYXV0byBuZXh0UnVuID0gcnVuLT5uZXh0VGV4dEJveElu
VGV4dE9yZGVyKCk7CiAgICAgICAgICAgICAgICAgaWYgKHRleHRPZmZzZXQgPT0gcnVuLT5lbmQo
KSArIDEgJiYgbmV4dFJ1biAmJiBydW4tPmxpbmUoKSAhPSBuZXh0UnVuLT5saW5lKCkpCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50UG9zaXRpb247CiAKQEAgLTg0Niw3ICs4NDYs
NyBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6ZG93bnN0cmVhbShFZGl0aW5nQm91bmRhcnlDcm9zc2lu
Z1J1bGUgcnVsZSkgY29uc3QKICAgICAgICAgaWYgKGlzPFJlbmRlclRleHQ+KCpyZW5kZXJlcikp
IHsKICAgICAgICAgICAgIGF1dG8mIHRleHRSZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclRleHQ+
KCpyZW5kZXJlcik7CiAKLSAgICAgICAgICAgIGF1dG8gZmlyc3RUZXh0UnVuID0gSW5saW5lSXRl
cmF0b3I6OmZpcnN0VGV4dFJ1bkluVGV4dE9yZGVyRm9yKHRleHRSZW5kZXJlcik7CisgICAgICAg
ICAgICBhdXRvIGZpcnN0VGV4dFJ1biA9IElubGluZUl0ZXJhdG9yOjpmaXJzdFRleHRCb3hJblRl
eHRPcmRlckZvcih0ZXh0UmVuZGVyZXIpOwogICAgICAgICAgICAgaWYgKCFmaXJzdFRleHRSdW4p
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTg2Myw3ICs4NjMsNyBAQCBQb3NpdGlv
biBQb3NpdGlvbjo6ZG93bnN0cmVhbShFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGUgcnVsZSkg
Y29uc3QKICAgICAgICAgICAgICAgICBpZiAodGV4dE9mZnNldCA+PSBydW4tPnN0YXJ0KCkgJiYg
dGV4dE9mZnNldCA8IHJ1bi0+ZW5kKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjdXJy
ZW50UG9zaXRpb247CiAKLSAgICAgICAgICAgICAgICBhdXRvIG5leHRSdW4gPSBydW4tPm5leHRU
ZXh0UnVuSW5UZXh0T3JkZXIoKTsKKyAgICAgICAgICAgICAgICBhdXRvIG5leHRSdW4gPSBydW4t
Pm5leHRUZXh0Qm94SW5UZXh0T3JkZXIoKTsKICAgICAgICAgICAgICAgICBpZiAodGV4dE9mZnNl
dCA9PSBydW4tPmVuZCgpICYmIG5leHRSdW4gJiYgcnVuLT5saW5lKCkgIT0gbmV4dFJ1bi0+bGlu
ZSgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudFBvc2l0aW9uOwogCkBAIC0x
MTcyLDcgKzExNzIsNyBAQCBzdGF0aWMgSW5saW5lSXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvciBz
ZWFyY2hBaGVhZEZvckJldHRlck1hdGNoKFJlbmRlclRleHQmIHJlbgogICAgICAgICBpZiAoaXNO
b25UZXh0TGVhZkNoaWxkKCpuZXh0KSkKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAg
IGlmIChpczxSZW5kZXJUZXh0PigqbmV4dCkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHJ1biA9
IElubGluZUl0ZXJhdG9yOjpmaXJzdFRleHRSdW5JblRleHRPcmRlckZvcihkb3duY2FzdDxSZW5k
ZXJUZXh0PigqbmV4dCkpKQorICAgICAgICAgICAgaWYgKGF1dG8gcnVuID0gSW5saW5lSXRlcmF0
b3I6OmZpcnN0VGV4dEJveEluVGV4dE9yZGVyRm9yKGRvd25jYXN0PFJlbmRlclRleHQ+KCpuZXh0
KSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJ1bjsKICAgICAgICAgfQogICAgIH0KQEAgLTEy
MTUsMTEgKzEyMTUsMTEgQEAgSW5saW5lUnVuQW5kT2Zmc2V0IFBvc2l0aW9uOjppbmxpbmVSdW5B
bmRPZmZzZXQoQWZmaW5pdHkgYWZmaW5pdHksIFRleHREaXJlY3Rpb24KICAgICBpZiAocmVuZGVy
ZXItPmlzQlIoKSkgewogICAgICAgICBhdXRvJiBsaW5lQnJlYWtSZW5kZXJlciA9IGRvd25jYXN0
PFJlbmRlckxpbmVCcmVhaz4oKnJlbmRlcmVyKTsKICAgICAgICAgaWYgKCFjYXJldE9mZnNldCkK
LSAgICAgICAgICAgIHJ1biA9IElubGluZUl0ZXJhdG9yOjpydW5Gb3IobGluZUJyZWFrUmVuZGVy
ZXIpOworICAgICAgICAgICAgcnVuID0gSW5saW5lSXRlcmF0b3I6OmJveEZvcihsaW5lQnJlYWtS
ZW5kZXJlcik7CiAgICAgfSBlbHNlIGlmIChpczxSZW5kZXJUZXh0PigqcmVuZGVyZXIpKSB7CiAg
ICAgICAgIGF1dG8mIHRleHRSZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclRleHQ+KCpyZW5kZXJl
cik7CiAKLSAgICAgICAgYXV0byB0ZXh0UnVuID0gSW5saW5lSXRlcmF0b3I6OmZpcnN0VGV4dFJ1
bkZvcih0ZXh0UmVuZGVyZXIpOworICAgICAgICBhdXRvIHRleHRSdW4gPSBJbmxpbmVJdGVyYXRv
cjo6Zmlyc3RUZXh0Qm94Rm9yKHRleHRSZW5kZXJlcik7CiAgICAgICAgIElubGluZUl0ZXJhdG9y
OjpUZXh0Qm94SXRlcmF0b3IgY2FuZGlkYXRlOwogCiAgICAgICAgIGZvciAoOyB0ZXh0UnVuOyAr
K3RleHRSdW4pIHsKQEAgLTEyNDcsNyArMTI0Nyw3IEBAIElubGluZVJ1bkFuZE9mZnNldCBQb3Np
dGlvbjo6aW5saW5lUnVuQW5kT2Zmc2V0KEFmZmluaXR5IGFmZmluaXR5LCBUZXh0RGlyZWN0aW9u
CiAgICAgICAgICAgICBjYW5kaWRhdGUgPSB0ZXh0UnVuOwogICAgICAgICB9CiAKLSAgICAgICAg
aWYgKGNhbmRpZGF0ZSAmJiAhY2FuZGlkYXRlLT5uZXh0VGV4dFJ1bigpICYmIGFmZmluaXR5ID09
IEFmZmluaXR5OjpEb3duc3RyZWFtKSB7CisgICAgICAgIGlmIChjYW5kaWRhdGUgJiYgIWNhbmRp
ZGF0ZS0+bmV4dFRleHRCb3goKSAmJiBhZmZpbml0eSA9PSBBZmZpbml0eTo6RG93bnN0cmVhbSkg
ewogICAgICAgICAgICAgdGV4dFJ1biA9IHNlYXJjaEFoZWFkRm9yQmV0dGVyTWF0Y2godGV4dFJl
bmRlcmVyKTsKICAgICAgICAgICAgIGlmICh0ZXh0UnVuKQogICAgICAgICAgICAgICAgIGNhcmV0
T2Zmc2V0ID0gdGV4dFJ1bi0+bWluaW11bUNhcmV0T2Zmc2V0KCk7CkBAIC0xMjcwLDcgKzEyNzAs
NyBAQCBJbmxpbmVSdW5BbmRPZmZzZXQgUG9zaXRpb246OmlubGluZVJ1bkFuZE9mZnNldChBZmZp
bml0eSBhZmZpbml0eSwgVGV4dERpcmVjdGlvbgogICAgICAgICAgICAgcmV0dXJuIGVxdWl2YWxl
bnQuaW5saW5lUnVuQW5kT2Zmc2V0KEFmZmluaXR5OjpVcHN0cmVhbSwgcHJpbWFyeURpcmVjdGlv
bik7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGlzPFJlbmRlckJveD4oKnJlbmRlcmVyKSkgewot
ICAgICAgICAgICAgcnVuID0gSW5saW5lSXRlcmF0b3I6OnJ1bkZvcihkb3duY2FzdDxSZW5kZXJC
b3g+KCpyZW5kZXJlcikpOworICAgICAgICAgICAgcnVuID0gSW5saW5lSXRlcmF0b3I6OmJveEZv
cihkb3duY2FzdDxSZW5kZXJCb3g+KCpyZW5kZXJlcikpOwogICAgICAgICAgICAgaWYgKHJ1biAm
JiBjYXJldE9mZnNldCA+IHJ1bi0+bWluaW11bUNhcmV0T2Zmc2V0KCkgJiYgY2FyZXRPZmZzZXQg
PCBydW4tPm1heGltdW1DYXJldE9mZnNldCgpKQogICAgICAgICAgICAgICAgIHJldHVybiB7IHJ1
biwgY2FyZXRPZmZzZXQgfTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAppbmRleCAzYTZlNGVhNzQ0MDYyZGZmZDY0YTI2YmM2
MmVmMmNkODRlNjcyMGRlLi41OGQ3NTNiMjNkNjNiODcyOTU5MDA3YzVhNzA5NjczOTdjODg3ODRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5k
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNw
cApAQCAtMTAxNiw3ICsxMDE2LDcgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6ZGVsZXRl
SW5zaWduaWZpY2FudFRleHQoVGV4dCYgdGV4dE5vZGUsIHVuc2lnbmVkIHN0YXIKICAgICAgICAg
aWYgKCF0ZXh0UmVuZGVyZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0byBy
dW4gPSBJbmxpbmVJdGVyYXRvcjo6Zmlyc3RUZXh0UnVuSW5UZXh0T3JkZXJGb3IoKnRleHRSZW5k
ZXJlcik7CisgICAgICAgIGF1dG8gcnVuID0gSW5saW5lSXRlcmF0b3I6OmZpcnN0VGV4dEJveElu
VGV4dE9yZGVyRm9yKCp0ZXh0UmVuZGVyZXIpOwogICAgICAgICBpZiAoIXJ1bikgewogICAgICAg
ICAgICAgd2hvbGVUZXh0Tm9kZUlzRW1wdHkgPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMTA1MSw3ICsxMDUxLDcgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6ZGVsZXRlSW5z
aWduaWZpY2FudFRleHQoVGV4dCYgdGV4dE5vZGUsIHVuc2lnbmVkIHN0YXIKIAogICAgICAgICAg
ICAgcHJldmlvdXNSdW4gPSBydW47CiAgICAgICAgICAgICBpZiAocnVuKQotICAgICAgICAgICAg
ICAgIHJ1bi50cmF2ZXJzZU5leHRUZXh0UnVuSW5UZXh0T3JkZXIoKTsKKyAgICAgICAgICAgICAg
ICBydW4udHJhdmVyc2VOZXh0VGV4dEJveEluVGV4dE9yZGVyKCk7CiAgICAgICAgIH0KICAgICB9
OwogICAgIGRldGVybWluZVJlbW92YWxNb2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJ
dGVyYXRvci5jcHAKaW5kZXggZGZkNmNiNWIxNWU1MWRmZWJkOTA3NDRiMzYyOGI5MGNiYmU2NDUx
ZC4uNTMyNjk1YThmOGU2NjM1MDc4ZTMyMGQ0YWE1ODM0MGU3N2MwMzhkNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcApAQCAtNTgwLDcgKzU4MCw3IEBAIGJvb2wgVGV4
dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSgpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
IAotICAgIG1fdGV4dFJ1biA9IElubGluZUl0ZXJhdG9yOjpmaXJzdFRleHRSdW5JblRleHRPcmRl
ckZvcihyZW5kZXJlcik7CisgICAgbV90ZXh0UnVuID0gSW5saW5lSXRlcmF0b3I6OmZpcnN0VGV4
dEJveEluVGV4dE9yZGVyRm9yKHJlbmRlcmVyKTsKIAogICAgIGJvb2wgc2hvdWxkSGFuZGxlRmly
c3RMZXR0ZXIgPSAhbV9oYW5kbGVkRmlyc3RMZXR0ZXIgJiYgaXM8UmVuZGVyVGV4dEZyYWdtZW50
PihyZW5kZXJlcikgJiYgIW1fb2Zmc2V0OwogICAgIGlmIChzaG91bGRIYW5kbGVGaXJzdExldHRl
cikKQEAgLTYwNyw3ICs2MDcsNyBAQCB2b2lkIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dFJ1bigp
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGZpcnN0VGV4dFJ1biA9IElubGlu
ZUl0ZXJhdG9yOjpmaXJzdFRleHRSdW5JblRleHRPcmRlckZvcihyZW5kZXJlcik7CisgICAgYXV0
byBmaXJzdFRleHRSdW4gPSBJbmxpbmVJdGVyYXRvcjo6Zmlyc3RUZXh0Qm94SW5UZXh0T3JkZXJG
b3IocmVuZGVyZXIpOwogCiAgICAgU3RyaW5nIHJlbmRlcmVyVGV4dCA9IHJlbmRlcmVyLnRleHQo
KTsKICAgICB1bnNpZ25lZCBzdGFydCA9IG1fb2Zmc2V0OwpAQCAtNjMzLDcgKzYzMyw3IEBAIHZv
aWQgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0UnVuKCkKICAgICAgICAgCiAgICAgICAgIC8vIERl
dGVybWluZSB3aGF0IHRoZSBuZXh0IHRleHQgcnVuIHdpbGwgYmUsIGJ1dCBkb24ndCBhZHZhbmNl
IHlldAogICAgICAgICBhdXRvIG5leHRUZXh0UnVuID0gbV90ZXh0UnVuOwotICAgICAgICBuZXh0
VGV4dFJ1bi50cmF2ZXJzZU5leHRUZXh0UnVuSW5UZXh0T3JkZXIoKTsKKyAgICAgICAgbmV4dFRl
eHRSdW4udHJhdmVyc2VOZXh0VGV4dEJveEluVGV4dE9yZGVyKCk7CiAKICAgICAgICAgaWYgKHJ1
blN0YXJ0IDwgcnVuRW5kKSB7CiAgICAgICAgICAgICBhdXRvIGlzTmV3bGluZU9yVGFiID0gWyZd
KFVDaGFyIGNoYXJhY3RlcikgewpAQCAtNzAxLDcgKzcwMSw3IEBAIHZvaWQgVGV4dEl0ZXJhdG9y
OjpoYW5kbGVUZXh0Tm9kZUZpcnN0TGV0dGVyKFJlbmRlclRleHRGcmFnbWVudCYgcmVuZGVyZXIp
CiAgICAgICAgIGlmIChhdXRvKiBmaXJzdExldHRlclRleHQgPSBmaXJzdFJlbmRlclRleHRJbkZp
cnN0TGV0dGVyKGZpcnN0TGV0dGVyKSkgewogICAgICAgICAgICAgbV9oYW5kbGVkRmlyc3RMZXR0
ZXIgPSB0cnVlOwogICAgICAgICAgICAgbV9yZW1haW5pbmdUZXh0UnVuID0gbV90ZXh0UnVuOwot
ICAgICAgICAgICAgbV90ZXh0UnVuID0gSW5saW5lSXRlcmF0b3I6OmZpcnN0VGV4dFJ1bkluVGV4
dE9yZGVyRm9yKCpmaXJzdExldHRlclRleHQpOworICAgICAgICAgICAgbV90ZXh0UnVuID0gSW5s
aW5lSXRlcmF0b3I6OmZpcnN0VGV4dEJveEluVGV4dE9yZGVyRm9yKCpmaXJzdExldHRlclRleHQp
OwogICAgICAgICAgICAgbV9maXJzdExldHRlclRleHQgPSBmaXJzdExldHRlclRleHQ7CiAgICAg
ICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVy
YXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAppbmRleCAzZmMy
N2EwOTdkMzlhYzg3YWI1Mzk1YjEyYmFiMzQ2YzFkNzdjMWU1Li45MDZkYTA2NTMxMzEwMTIzMjRj
NWNhNjk0NGJlNzM4OWFjNzlkMGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1RleHRJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9y
LmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkNoYXJhY3RlclJhbmdlLmgiCiAjaW5j
bHVkZSAiRmluZE9wdGlvbnMuaCIKLSNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckJveC5oIgorI2lu
Y2x1ZGUgIklubGluZUl0ZXJhdG9yVGV4dEJveC5oIgogI2luY2x1ZGUgIlNpbXBsZVJhbmdlLmgi
CiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yQmVoYXZpb3IuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5l
SXRlcmF0b3JCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGlu
ZUl0ZXJhdG9yQm94LmNwcAppbmRleCBhMmEzOWQzMTQxNjdlOGFmMzY4ZDg3NWRkZGI1NTg5Yzcx
MTZhODQ4Li5jZmYzOWYyMjA0OWU0NjRjYzc0Mjc5ZTY5MDUwOWNlOTRmYTY5NDcwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRv
ckJveC5jcHAKQEAgLTI2LDExICsyNiwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIklubGluZUl0ZXJhdG9yQm94LmgiCiAKLQogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTGlu
ZS5oIgorI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yVGV4dEJveC5oIgogI2luY2x1ZGUgIkxheW91
dEludGVncmF0aW9uTGluZUxheW91dC5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrRmxvdy5oIgot
I2luY2x1ZGUgIlJlbmRlckNvbWJpbmVUZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGluZUJyZWFr
LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogCkBAIC0zOCwyMyArMzcsMjMgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIElubGluZUl0ZXJhdG9yIHsKIAogQm94SXRlcmF0b3I6
OkJveEl0ZXJhdG9yKEJveDo6UGF0aFZhcmlhbnQmJiBwYXRoVmFyaWFudCkKLSAgICA6IG1fcnVu
KFdURk1vdmUocGF0aFZhcmlhbnQpKQorICAgIDogbV9ib3goV1RGTW92ZShwYXRoVmFyaWFudCkp
CiB7CiB9CiAKIEJveEl0ZXJhdG9yOjpCb3hJdGVyYXRvcihjb25zdCBCb3gmIHJ1bikKLSAgICA6
IG1fcnVuKHJ1bikKKyAgICA6IG1fYm94KHJ1bikKIHsKIH0KIAogYm9vbCBCb3hJdGVyYXRvcjo6
b3BlcmF0b3I9PShjb25zdCBCb3hJdGVyYXRvciYgb3RoZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fcnVuLm1fcGF0aFZhcmlhbnQgPT0gb3RoZXIubV9ydW4ubV9wYXRoVmFyaWFudDsKKyAgICBy
ZXR1cm4gbV9ib3gubV9wYXRoVmFyaWFudCA9PSBvdGhlci5tX2JveC5tX3BhdGhWYXJpYW50Owog
fQogCiBib29sIEJveEl0ZXJhdG9yOjphdEVuZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdURjo6
c3dpdGNoT24obV9ydW4ubV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgeworICAgIHJldHVy
biBXVEY6OnN3aXRjaE9uKG1fYm94Lm1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKICAg
ICAgICAgcmV0dXJuIHBhdGguYXRFbmQoKTsKICAgICB9KTsKIH0KQEAgLTgxLDExICs4MCwxMSBA
QCBCb3hJdGVyYXRvciBCb3g6OnByZXZpb3VzT25MaW5lSWdub3JpbmdMaW5lQnJlYWsoKSBjb25z
dAogCiBMaW5lSXRlcmF0b3IgQm94OjpsaW5lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gV1RGOjpz
d2l0Y2hPbihtX3BhdGhWYXJpYW50LCBbXShjb25zdCBCb3hJdGVyYXRvckxlZ2FjeVBhdGgmIHBh
dGgpIHsKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBbXShjb25zdCBC
b3hMZWdhY3lQYXRoJiBwYXRoKSB7CiAgICAgICAgIHJldHVybiBMaW5lSXRlcmF0b3IoTGluZUl0
ZXJhdG9yTGVnYWN5UGF0aCgmcGF0aC5yb290SW5saW5lQm94KCkpKTsKICAgICB9CiAjaWYgRU5B
QkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCi0gICAgLCBbXShjb25zdCBCb3hJdGVyYXRv
ck1vZGVyblBhdGgmIHBhdGgpIHsKKyAgICAsIFtdKGNvbnN0IEJveE1vZGVyblBhdGgmIHBhdGgp
IHsKICAgICAgICAgcmV0dXJuIExpbmVJdGVyYXRvcihMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoKHBh
dGguaW5saW5lQ29udGVudCgpLCBwYXRoLmJveCgpLmxpbmVJbmRleCgpKSk7CiAgICAgfQogI2Vu
ZGlmCkBAIC05Nyw0OSArOTYsNiBAQCBjb25zdCBSZW5kZXJTdHlsZSYgQm94OjpzdHlsZSgpIGNv
bnN0CiAgICAgcmV0dXJuIGxpbmUoKS0+aXNGaXJzdCgpID8gcmVuZGVyZXIoKS5maXJzdExpbmVT
dHlsZSgpIDogcmVuZGVyZXIoKS5zdHlsZSgpOwogfQogCi1UZXh0Qm94SXRlcmF0b3IgVGV4dEJv
eDo6bmV4dFRleHRSdW4oKSBjb25zdAotewotICAgIHJldHVybiBUZXh0Qm94SXRlcmF0b3IoKnRo
aXMpLnRyYXZlcnNlTmV4dFRleHRSdW4oKTsKLX0KLQotVGV4dEJveEl0ZXJhdG9yIFRleHRCb3g6
Om5leHRUZXh0UnVuSW5UZXh0T3JkZXIoKSBjb25zdAotewotICAgIHJldHVybiBUZXh0Qm94SXRl
cmF0b3IoKnRoaXMpLnRyYXZlcnNlTmV4dFRleHRSdW5JblRleHRPcmRlcigpOwotfQotCi1MYXlv
dXRSZWN0IFRleHRCb3g6OnNlbGVjdGlvblJlY3QodW5zaWduZWQgcmFuZ2VTdGFydCwgdW5zaWdu
ZWQgcmFuZ2VFbmQpIGNvbnN0Ci17Ci0gICAgYXV0byBbY2xhbXBlZFN0YXJ0LCBjbGFtcGVkRW5k
XSA9IHNlbGVjdGFibGVSYW5nZSgpLmNsYW1wKHJhbmdlU3RhcnQsIHJhbmdlRW5kKTsKLQotICAg
IGlmIChjbGFtcGVkU3RhcnQgPj0gY2xhbXBlZEVuZCAmJiAhKHJhbmdlU3RhcnQgPT0gcmFuZ2VF
bmQgJiYgcmFuZ2VTdGFydCA+PSBzdGFydCgpICYmIHJhbmdlU3RhcnQgPD0gZW5kKCkpKQotICAg
ICAgICByZXR1cm4geyB9OwotCi0gICAgYXV0byBzZWxlY3Rpb25Ub3AgPSBsaW5lKCktPnNlbGVj
dGlvblRvcCgpOwotICAgIGF1dG8gc2VsZWN0aW9uSGVpZ2h0ID0gbGluZSgpLT5zZWxlY3Rpb25I
ZWlnaHQoKTsKLQotICAgIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdCB7IGxvZ2ljYWxMZWZ0KCks
IHNlbGVjdGlvblRvcCwgbG9naWNhbFdpZHRoKCksIHNlbGVjdGlvbkhlaWdodCB9OwotCi0gICAg
VGV4dFJ1biB0ZXh0UnVuID0gY3JlYXRlVGV4dFJ1bigpOwotICAgIGlmIChjbGFtcGVkU3RhcnQg
fHwgY2xhbXBlZEVuZCAhPSB0ZXh0UnVuLmxlbmd0aCgpKQotICAgICAgICBmb250Q2FzY2FkZSgp
LmFkanVzdFNlbGVjdGlvblJlY3RGb3JUZXh0KHRleHRSdW4sIHNlbGVjdGlvblJlY3QsIGNsYW1w
ZWRTdGFydCwgY2xhbXBlZEVuZCk7Ci0KLSAgICByZXR1cm4gc25hcHBlZFNlbGVjdGlvblJlY3Qo
c2VsZWN0aW9uUmVjdCwgbG9naWNhbFJpZ2h0KCksIHNlbGVjdGlvblRvcCwgc2VsZWN0aW9uSGVp
Z2h0LCBpc0hvcml6b250YWwoKSk7Ci19Ci0KLWJvb2wgVGV4dEJveDo6aXNDb21iaW5lZFRleHQo
KSBjb25zdAotewotICAgIGF1dG8mIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKLSAgICBy
ZXR1cm4gaXM8UmVuZGVyQ29tYmluZVRleHQ+KHJlbmRlcmVyKSAmJiBkb3duY2FzdDxSZW5kZXJD
b21iaW5lVGV4dD4ocmVuZGVyZXIpLmlzQ29tYmluZWQoKTsKLX0KLQotY29uc3QgRm9udENhc2Nh
ZGUmIFRleHRCb3g6OmZvbnRDYXNjYWRlKCkgY29uc3QKLXsKLSAgICBpZiAoaXNDb21iaW5lZFRl
eHQoKSkKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckNvbWJpbmVUZXh0PihyZW5kZXJl
cigpKS50ZXh0Q29tYmluZUZvbnQoKTsKLQotICAgIHJldHVybiBzdHlsZSgpLmZvbnRDYXNjYWRl
KCk7Ci19Ci0KIFJlbmRlck9iamVjdDo6SGlnaGxpZ2h0U3RhdGUgQm94OjpzZWxlY3Rpb25TdGF0
ZSgpIGNvbnN0CiB7CiAgICAgaWYgKGlzVGV4dCgpKSB7CkBAIC0xNTAsMzUgKzEwNiw5IEBAIFJl
bmRlck9iamVjdDo6SGlnaGxpZ2h0U3RhdGUgQm94OjpzZWxlY3Rpb25TdGF0ZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIHJlbmRlcmVyKCkuc2VsZWN0aW9uU3RhdGUoKTsKIH0KIAotVGV4dEJveEl0ZXJh
dG9yOjpUZXh0Qm94SXRlcmF0b3IoQm94OjpQYXRoVmFyaWFudCYmIHBhdGhWYXJpYW50KQotICAg
IDogQm94SXRlcmF0b3IoV1RGTW92ZShwYXRoVmFyaWFudCkpCi17Ci19Ci0KLVRleHRCb3hJdGVy
YXRvcjo6VGV4dEJveEl0ZXJhdG9yKGNvbnN0IEJveCYgcnVuKQotICAgIDogQm94SXRlcmF0b3Io
cnVuKQotewotfQotCi1UZXh0Qm94SXRlcmF0b3ImIFRleHRCb3hJdGVyYXRvcjo6dHJhdmVyc2VO
ZXh0VGV4dFJ1bigpCi17Ci0gICAgV1RGOjpzd2l0Y2hPbihtX3J1bi5tX3BhdGhWYXJpYW50LCBb
XShhdXRvJiBwYXRoKSB7Ci0gICAgICAgIHBhdGgudHJhdmVyc2VOZXh0VGV4dFJ1bigpOwotICAg
IH0pOwotICAgIHJldHVybiAqdGhpczsKLX0KLQotVGV4dEJveEl0ZXJhdG9yJiBUZXh0Qm94SXRl
cmF0b3I6OnRyYXZlcnNlTmV4dFRleHRSdW5JblRleHRPcmRlcigpCi17Ci0gICAgV1RGOjpzd2l0
Y2hPbihtX3J1bi5tX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7Ci0gICAgICAgIHBhdGgu
dHJhdmVyc2VOZXh0VGV4dFJ1bkluVGV4dE9yZGVyKCk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuICp0
aGlzOwotfQotCiBCb3hJdGVyYXRvciYgQm94SXRlcmF0b3I6OnRyYXZlcnNlTmV4dE9uTGluZSgp
CiB7Ci0gICAgV1RGOjpzd2l0Y2hPbihtX3J1bi5tX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRo
KSB7CisgICAgV1RGOjpzd2l0Y2hPbihtX2JveC5tX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRo
KSB7CiAgICAgICAgIHBhdGgudHJhdmVyc2VOZXh0T25MaW5lKCk7CiAgICAgfSk7CiAgICAgcmV0
dXJuICp0aGlzOwpAQCAtMTg2LDcgKzExNiw3IEBAIEJveEl0ZXJhdG9yJiBCb3hJdGVyYXRvcjo6
dHJhdmVyc2VOZXh0T25MaW5lKCkKIAogQm94SXRlcmF0b3ImIEJveEl0ZXJhdG9yOjp0cmF2ZXJz
ZVByZXZpb3VzT25MaW5lKCkKIHsKLSAgICBXVEY6OnN3aXRjaE9uKG1fcnVuLm1fcGF0aFZhcmlh
bnQsIFtdKGF1dG8mIHBhdGgpIHsKKyAgICBXVEY6OnN3aXRjaE9uKG1fYm94Lm1fcGF0aFZhcmlh
bnQsIFtdKGF1dG8mIHBhdGgpIHsKICAgICAgICAgcGF0aC50cmF2ZXJzZVByZXZpb3VzT25MaW5l
KCk7CiAgICAgfSk7CiAgICAgcmV0dXJuICp0aGlzOwpAQCAtMTk2LDcgKzEyNiw3IEBAIEJveEl0
ZXJhdG9yJiBCb3hJdGVyYXRvcjo6dHJhdmVyc2VOZXh0T25MaW5lSWdub3JpbmdMaW5lQnJlYWso
KQogewogICAgIGRvIHsKICAgICAgICAgdHJhdmVyc2VOZXh0T25MaW5lKCk7Ci0gICAgfSB3aGls
ZSAoIWF0RW5kKCkgJiYgbV9ydW4uaXNMaW5lQnJlYWsoKSk7CisgICAgfSB3aGlsZSAoIWF0RW5k
KCkgJiYgbV9ib3guaXNMaW5lQnJlYWsoKSk7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCkBAIC0y
MDQsMTMgKzEzNCwxMyBAQCBCb3hJdGVyYXRvciYgQm94SXRlcmF0b3I6OnRyYXZlcnNlUHJldmlv
dXNPbkxpbmVJZ25vcmluZ0xpbmVCcmVhaygpCiB7CiAgICAgZG8gewogICAgICAgICB0cmF2ZXJz
ZVByZXZpb3VzT25MaW5lKCk7Ci0gICAgfSB3aGlsZSAoIWF0RW5kKCkgJiYgbV9ydW4uaXNMaW5l
QnJlYWsoKSk7CisgICAgfSB3aGlsZSAoIWF0RW5kKCkgJiYgbV9ib3guaXNMaW5lQnJlYWsoKSk7
CiAgICAgcmV0dXJuICp0aGlzOwogfQogCiBCb3hJdGVyYXRvciYgQm94SXRlcmF0b3I6OnRyYXZl
cnNlTmV4dE9uTGluZUluTG9naWNhbE9yZGVyKCkKIHsKLSAgICBXVEY6OnN3aXRjaE9uKG1fcnVu
Lm1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKKyAgICBXVEY6OnN3aXRjaE9uKG1fYm94
Lm1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKICAgICAgICAgcGF0aC50cmF2ZXJzZU5l
eHRPbkxpbmVJbkxvZ2ljYWxPcmRlcigpOwogICAgIH0pOwogICAgIHJldHVybiAqdGhpczsKQEAg
LTIxOCw5NiArMTQ4LDQ3IEBAIEJveEl0ZXJhdG9yJiBCb3hJdGVyYXRvcjo6dHJhdmVyc2VOZXh0
T25MaW5lSW5Mb2dpY2FsT3JkZXIoKQogCiBCb3hJdGVyYXRvciYgQm94SXRlcmF0b3I6OnRyYXZl
cnNlUHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxPcmRlcigpCiB7Ci0gICAgV1RGOjpzd2l0Y2hPbiht
X3J1bi5tX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7CisgICAgV1RGOjpzd2l0Y2hPbiht
X2JveC5tX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7CiAgICAgICAgIHBhdGgudHJhdmVy
c2VQcmV2aW91c09uTGluZUluTG9naWNhbE9yZGVyKCk7CiAgICAgfSk7CiAgICAgcmV0dXJuICp0
aGlzOwogfQogCi1UZXh0Qm94SXRlcmF0b3IgZmlyc3RUZXh0UnVuRm9yKGNvbnN0IFJlbmRlclRl
eHQmIHRleHQpCi17Ci0jaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCi0gICAg
aWYgKGF1dG8qIGxpbmVMYXlvdXQgPSBMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6Y29u
dGFpbmluZyh0ZXh0KSkKLSAgICAgICAgcmV0dXJuIGxpbmVMYXlvdXQtPnRleHRSdW5zRm9yKHRl
eHQpOwotI2VuZGlmCi0KLSAgICByZXR1cm4geyBCb3hJdGVyYXRvckxlZ2FjeVBhdGggeyB0ZXh0
LmZpcnN0VGV4dEJveCgpIH0gfTsKLX0KLQotVGV4dEJveEl0ZXJhdG9yIGZpcnN0VGV4dFJ1bklu
VGV4dE9yZGVyRm9yKGNvbnN0IFJlbmRlclRleHQmIHRleHQpCi17Ci0gICAgaWYgKHRleHQuZmly
c3RUZXh0Qm94KCkgJiYgdGV4dC5jb250YWluc1JldmVyc2VkVGV4dCgpKSB7Ci0gICAgICAgIFZl
Y3Rvcjxjb25zdCBMZWdhY3lJbmxpbmVCb3gqPiBzb3J0ZWRUZXh0Qm94ZXM7Ci0gICAgICAgIGZv
ciAoYXV0byogdGV4dEJveCA9IHRleHQuZmlyc3RUZXh0Qm94KCk7IHRleHRCb3g7IHRleHRCb3gg
PSB0ZXh0Qm94LT5uZXh0VGV4dEJveCgpKQotICAgICAgICAgICAgc29ydGVkVGV4dEJveGVzLmFw
cGVuZCh0ZXh0Qm94KTsKLSAgICAgICAgc3RkOjpzb3J0KHNvcnRlZFRleHRCb3hlcy5iZWdpbigp
LCBzb3J0ZWRUZXh0Qm94ZXMuZW5kKCksIFtdKGF1dG8qIGEsIGF1dG8qIGIpIHsKLSAgICAgICAg
ICAgIHJldHVybiBMZWdhY3lJbmxpbmVUZXh0Qm94Ojpjb21wYXJlQnlTdGFydChkb3duY2FzdDxM
ZWdhY3lJbmxpbmVUZXh0Qm94PihhKSwgZG93bmNhc3Q8TGVnYWN5SW5saW5lVGV4dEJveD4oYikp
OwotICAgICAgICB9KTsKLSAgICAgICAgYXV0byogZmlyc3QgPSBzb3J0ZWRUZXh0Qm94ZXNbMF07
Ci0gICAgICAgIHJldHVybiB7IEJveEl0ZXJhdG9yTGVnYWN5UGF0aCB7IGZpcnN0LCBXVEZNb3Zl
KHNvcnRlZFRleHRCb3hlcyksIDAgfSB9OwotICAgIH0KLQotICAgIHJldHVybiBmaXJzdFRleHRS
dW5Gb3IodGV4dCk7Ci19Ci0KLVRleHRCb3hJdGVyYXRvciB0ZXh0UnVuRm9yKGNvbnN0IExlZ2Fj
eUlubGluZVRleHRCb3gqIGxlZ2FjeUlubGluZVRleHRCb3gpCi17Ci0gICAgcmV0dXJuIHsgQm94
SXRlcmF0b3JMZWdhY3lQYXRoIHsgbGVnYWN5SW5saW5lVGV4dEJveCB9IH07Ci19Ci0KLSNpZiBF
TkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKLVRleHRCb3hJdGVyYXRvciB0ZXh0UnVu
Rm9yKGNvbnN0IExheW91dEludGVncmF0aW9uOjpJbmxpbmVDb250ZW50JiBjb250ZW50LCBjb25z
dCBJbmxpbmVEaXNwbGF5OjpCb3gmIGJveCkKLXsKLSAgICByZXR1cm4gdGV4dFJ1bkZvcihjb250
ZW50LCBjb250ZW50LmluZGV4Rm9yQm94KGJveCkpOwotfQotCi1UZXh0Qm94SXRlcmF0b3IgdGV4
dFJ1bkZvcihjb25zdCBMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVudCYgY29udGVudCwg
c2l6ZV90IGJveEluZGV4KQotewotICAgIEFTU0VSVChjb250ZW50LmJveGVzW2JveEluZGV4XS50
ZXh0KCkpOwotICAgIHJldHVybiB7IEJveEl0ZXJhdG9yTW9kZXJuUGF0aCB7IGNvbnRlbnQsIGJv
eEluZGV4IH0gfTsKLX0KLSNlbmRpZgotCi1UZXh0UnVuUmFuZ2UgdGV4dFJ1bnNGb3IoY29uc3Qg
UmVuZGVyVGV4dCYgdGV4dCkKLXsKLSAgICByZXR1cm4geyBmaXJzdFRleHRSdW5Gb3IodGV4dCkg
fTsKLX0KLQotQm94SXRlcmF0b3IgcnVuRm9yKGNvbnN0IFJlbmRlckxpbmVCcmVhayYgcmVuZGVy
ZXIpCitCb3hJdGVyYXRvciBib3hGb3IoY29uc3QgUmVuZGVyTGluZUJyZWFrJiByZW5kZXJlcikK
IHsKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKICAgICBpZiAoYXV0byog
bGluZUxheW91dCA9IExheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0Ojpjb250YWluaW5nKHJl
bmRlcmVyKSkKLSAgICAgICAgcmV0dXJuIGxpbmVMYXlvdXQtPnJ1bkZvcihyZW5kZXJlcik7Cisg
ICAgICAgIHJldHVybiBsaW5lTGF5b3V0LT5ib3hGb3IocmVuZGVyZXIpOwogI2VuZGlmCi0gICAg
cmV0dXJuIHsgQm94SXRlcmF0b3JMZWdhY3lQYXRoKHJlbmRlcmVyLmlubGluZUJveFdyYXBwZXIo
KSkgfTsKKyAgICByZXR1cm4geyBCb3hMZWdhY3lQYXRoKHJlbmRlcmVyLmlubGluZUJveFdyYXBw
ZXIoKSkgfTsKIH0KIAotQm94SXRlcmF0b3IgcnVuRm9yKGNvbnN0IFJlbmRlckJveCYgcmVuZGVy
ZXIpCitCb3hJdGVyYXRvciBib3hGb3IoY29uc3QgUmVuZGVyQm94JiByZW5kZXJlcikKIHsKICNp
ZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKICAgICBpZiAoYXV0byogbGluZUxh
eW91dCA9IExheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0Ojpjb250YWluaW5nKHJlbmRlcmVy
KSkKLSAgICAgICAgcmV0dXJuIGxpbmVMYXlvdXQtPnJ1bkZvcihyZW5kZXJlcik7CisgICAgICAg
IHJldHVybiBsaW5lTGF5b3V0LT5ib3hGb3IocmVuZGVyZXIpOwogI2VuZGlmCi0gICAgcmV0dXJu
IHsgQm94SXRlcmF0b3JMZWdhY3lQYXRoKHJlbmRlcmVyLmlubGluZUJveFdyYXBwZXIoKSkgfTsK
KyAgICByZXR1cm4geyBCb3hMZWdhY3lQYXRoKHJlbmRlcmVyLmlubGluZUJveFdyYXBwZXIoKSkg
fTsKIH0KIAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQotQm94SXRlcmF0
b3IgcnVuRm9yKGNvbnN0IExheW91dEludGVncmF0aW9uOjpJbmxpbmVDb250ZW50JiBjb250ZW50
LCBzaXplX3QgcnVuSW5kZXgpCitCb3hJdGVyYXRvciBib3hGb3IoY29uc3QgTGF5b3V0SW50ZWdy
YXRpb246OklubGluZUNvbnRlbnQmIGNvbnRlbnQsIHNpemVfdCBib3hJbmRleCkKIHsKLSAgICBy
ZXR1cm4geyBCb3hJdGVyYXRvck1vZGVyblBhdGggeyBjb250ZW50LCBydW5JbmRleCB9IH07Cisg
ICAgcmV0dXJuIHsgQm94TW9kZXJuUGF0aCB7IGNvbnRlbnQsIGJveEluZGV4IH0gfTsKIH0KICNl
bmRpZgogCiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCi1jb25zdCBCb3hJ
dGVyYXRvck1vZGVyblBhdGgmIEJveDo6bW9kZXJuUGF0aCgpIGNvbnN0Citjb25zdCBCb3hNb2Rl
cm5QYXRoJiBCb3g6Om1vZGVyblBhdGgoKSBjb25zdAogewotICAgIHJldHVybiBXVEY6OmdldDxC
b3hJdGVyYXRvck1vZGVyblBhdGg+KG1fcGF0aFZhcmlhbnQpOworICAgIHJldHVybiBXVEY6Omdl
dDxCb3hNb2Rlcm5QYXRoPihtX3BhdGhWYXJpYW50KTsKIH0KICNlbmRpZgogCi1jb25zdCBCb3hJ
dGVyYXRvckxlZ2FjeVBhdGgmIEJveDo6bGVnYWN5UGF0aCgpIGNvbnN0Citjb25zdCBCb3hMZWdh
Y3lQYXRoJiBCb3g6OmxlZ2FjeVBhdGgoKSBjb25zdAogewotICAgIHJldHVybiBXVEY6OmdldDxC
b3hJdGVyYXRvckxlZ2FjeVBhdGg+KG1fcGF0aFZhcmlhbnQpOworICAgIHJldHVybiBXVEY6Omdl
dDxCb3hMZWdhY3lQYXRoPihtX3BhdGhWYXJpYW50KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3guaAppbmRleCBl
NmUzMTAzNGI4ZTU2OTA3MDg3OTNkNmNmMTNhOTUwZTQ4MzI1OTQyLi44MjZhNjhjY2UzZTJjMDk3
ZTNiYzk4ZmM5MWNhNDc1YTFiM2I1NGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3guaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNSw3ICszNSw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlbmRlckxpbmVCcmVhazsKIGNsYXNzIFJlbmRlck9iamVj
dDsKIGNsYXNzIFJlbmRlclN0eWxlOwotY2xhc3MgUmVuZGVyVGV4dDsKIAogbmFtZXNwYWNlIElu
bGluZUl0ZXJhdG9yIHsKIApAQCAtNDksOSArNDgsOSBAQCBjbGFzcyBCb3ggewogcHVibGljOgog
ICAgIHVzaW5nIFBhdGhWYXJpYW50ID0gVmFyaWFudDwKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1B
VFRJTkdfQ09OVEVYVCkKLSAgICAgICAgQm94SXRlcmF0b3JNb2Rlcm5QYXRoLAorICAgICAgICBC
b3hNb2Rlcm5QYXRoLAogI2VuZGlmCi0gICAgICAgIEJveEl0ZXJhdG9yTGVnYWN5UGF0aAorICAg
ICAgICBCb3hMZWdhY3lQYXRoCiAgICAgPjsKIAogICAgIEJveChQYXRoVmFyaWFudCYmKTsKQEAg
LTg1LDExICs4NCwxMiBAQCBwdWJsaWM6CiAgICAgY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJl
cigpIGNvbnN0OwogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSgpIGNvbnN0OwogCi0gICAg
Ly8gRm9yIGludGVybWVkaWF0ZSBwb3J0aW5nIHN0ZXBzIG9ubHkuCisgICAgLy8gRklYTUU6IFJl
bW92ZS4gRm9yIGludGVybWVkaWF0ZSBwb3J0aW5nIHN0ZXBzIG9ubHkuCiAgICAgY29uc3QgTGVn
YWN5SW5saW5lQm94KiBsZWdhY3lJbmxpbmVCb3goKSBjb25zdDsKICNpZiBFTkFCTEUoTEFZT1VU
X0ZPUk1BVFRJTkdfQ09OVEVYVCkKICAgICBjb25zdCBJbmxpbmVEaXNwbGF5OjpCb3gqIGlubGlu
ZUJveCgpIGNvbnN0OwogI2VuZGlmCisKICAgICBCb3hJdGVyYXRvciBuZXh0T25MaW5lKCkgY29u
c3Q7CiAgICAgQm94SXRlcmF0b3IgcHJldmlvdXNPbkxpbmUoKSBjb25zdDsKICAgICBCb3hJdGVy
YXRvciBuZXh0T25MaW5lSWdub3JpbmdMaW5lQnJlYWsoKSBjb25zdDsKQEAgLTEwMyw0NSArMTAz
LDE2IEBAIHByb3RlY3RlZDoKIAogICAgIC8vIFRvIGhlbHAgd2l0aCBkZWJ1Z2dpbmcuCiAjaWYg
RU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCi0gICAgY29uc3QgQm94SXRlcmF0b3JN
b2Rlcm5QYXRoJiBtb2Rlcm5QYXRoKCkgY29uc3Q7CisgICAgY29uc3QgQm94TW9kZXJuUGF0aCYg
bW9kZXJuUGF0aCgpIGNvbnN0OwogI2VuZGlmCi0gICAgY29uc3QgQm94SXRlcmF0b3JMZWdhY3lQ
YXRoJiBsZWdhY3lQYXRoKCkgY29uc3Q7CisgICAgY29uc3QgQm94TGVnYWN5UGF0aCYgbGVnYWN5
UGF0aCgpIGNvbnN0OwogCiAgICAgUGF0aFZhcmlhbnQgbV9wYXRoVmFyaWFudDsKIH07CiAKLWNs
YXNzIFRleHRCb3ggOiBwdWJsaWMgQm94IHsKLXB1YmxpYzoKLSAgICBUZXh0Qm94KFBhdGhWYXJp
YW50JiYpOwotCi0gICAgYm9vbCBoYXNIeXBoZW4oKSBjb25zdDsKLSAgICBTdHJpbmdWaWV3IHRl
eHQoKSBjb25zdDsKLQotICAgIHVuc2lnbmVkIHN0YXJ0KCkgY29uc3Q7Ci0gICAgdW5zaWduZWQg
ZW5kKCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7Ci0KLSAgICB1bnNpZ25l
ZCBvZmZzZXRGb3JQb3NpdGlvbihmbG9hdCB4KSBjb25zdDsKLSAgICBmbG9hdCBwb3NpdGlvbkZv
ck9mZnNldCh1bnNpZ25lZCkgY29uc3Q7Ci0KLSAgICBUZXh0Qm94U2VsZWN0YWJsZVJhbmdlIHNl
bGVjdGFibGVSYW5nZSgpIGNvbnN0OwotICAgIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdCh1bnNp
Z25lZCBzdGFydCwgdW5zaWduZWQgZW5kKSBjb25zdDsKLQotICAgIGJvb2wgaXNDb21iaW5lZFRl
eHQoKSBjb25zdDsKLSAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udENhc2NhZGUoKSBjb25zdDsK
LQotICAgIFRleHRSdW4gY3JlYXRlVGV4dFJ1bigpIGNvbnN0OwotCi0gICAgY29uc3QgUmVuZGVy
VGV4dCYgcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxSZW5kZXJUZXh0PihCb3g6
OnJlbmRlcmVyKCkpOyB9Ci0gICAgY29uc3QgTGVnYWN5SW5saW5lVGV4dEJveCogbGVnYWN5SW5s
aW5lQm94KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8TGVnYWN5SW5saW5lVGV4dEJveD4oQm94
OjpsZWdhY3lJbmxpbmVCb3goKSk7IH0KLQotICAgIFRleHRCb3hJdGVyYXRvciBuZXh0VGV4dFJ1
bigpIGNvbnN0OwotICAgIFRleHRCb3hJdGVyYXRvciBuZXh0VGV4dFJ1bkluVGV4dE9yZGVyKCkg
Y29uc3Q7Ci19OwotCiBjbGFzcyBCb3hJdGVyYXRvciB7CiBwdWJsaWM6Ci0gICAgQm94SXRlcmF0
b3IoKSA6IG1fcnVuKEJveEl0ZXJhdG9yTGVnYWN5UGF0aCB7IG51bGxwdHIsIHsgfSB9KSB7IH07
CisgICAgQm94SXRlcmF0b3IoKSA6IG1fYm94KEJveExlZ2FjeVBhdGggeyBudWxscHRyLCB7IH0g
fSkgeyB9OwogICAgIEJveEl0ZXJhdG9yKEJveDo6UGF0aFZhcmlhbnQmJik7CiAgICAgQm94SXRl
cmF0b3IoY29uc3QgQm94Jik7CiAKQEAgLTE1Myw4ICsxMjQsOCBAQCBwdWJsaWM6CiAgICAgYm9v
bCBvcGVyYXRvcj09KEVuZEl0ZXJhdG9yKSBjb25zdCB7IHJldHVybiBhdEVuZCgpOyB9CiAgICAg
Ym9vbCBvcGVyYXRvciE9KEVuZEl0ZXJhdG9yKSBjb25zdCB7IHJldHVybiAhYXRFbmQoKTsgfQog
Ci0gICAgY29uc3QgQm94JiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiBtX3J1bjsgfQotICAg
IGNvbnN0IEJveCogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuICZtX3J1bjsgfQorICAgIGNv
bnN0IEJveCYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gbV9ib3g7IH0KKyAgICBjb25zdCBC
b3gqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAmbV9ib3g7IH0KIAogICAgIGJvb2wgYXRF
bmQoKSBjb25zdDsKIApAQCAtMTY2LDYwICsxMzcsMTMgQEAgcHVibGljOgogICAgIEJveEl0ZXJh
dG9yJiB0cmF2ZXJzZVByZXZpb3VzT25MaW5lSW5Mb2dpY2FsT3JkZXIoKTsKIAogcHJvdGVjdGVk
OgotICAgIEJveCBtX3J1bjsKKyAgICBCb3ggbV9ib3g7CiB9OwogCi1jbGFzcyBUZXh0Qm94SXRl
cmF0b3IgOiBwdWJsaWMgQm94SXRlcmF0b3IgewotcHVibGljOgotICAgIFRleHRCb3hJdGVyYXRv
cigpIHsgfQotICAgIFRleHRCb3hJdGVyYXRvcihCb3g6OlBhdGhWYXJpYW50JiYpOwotICAgIFRl
eHRCb3hJdGVyYXRvcihjb25zdCBCb3gmKTsKLQotICAgIFRleHRCb3hJdGVyYXRvciYgb3BlcmF0
b3IrKygpIHsgcmV0dXJuIHRyYXZlcnNlTmV4dFRleHRSdW4oKTsgfQotCi0gICAgY29uc3QgVGV4
dEJveCYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gZ2V0KCk7IH0KLSAgICBjb25zdCBUZXh0
Qm94KiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gJmdldCgpOyB9Ci0KLSAgICBUZXh0Qm94
SXRlcmF0b3ImIHRyYXZlcnNlTmV4dFRleHRSdW4oKTsKLSAgICBUZXh0Qm94SXRlcmF0b3ImIHRy
YXZlcnNlTmV4dFRleHRSdW5JblRleHRPcmRlcigpOwotCi1wcml2YXRlOgotICAgIEJveEl0ZXJh
dG9yJiB0cmF2ZXJzZU5leHRPbkxpbmUoKSA9IGRlbGV0ZTsKLSAgICBCb3hJdGVyYXRvciYgdHJh
dmVyc2VQcmV2aW91c09uTGluZSgpID0gZGVsZXRlOwotICAgIEJveEl0ZXJhdG9yJiB0cmF2ZXJz
ZU5leHRPbkxpbmVJZ25vcmluZ0xpbmVCcmVhaygpID0gZGVsZXRlOwotICAgIEJveEl0ZXJhdG9y
JiB0cmF2ZXJzZVByZXZpb3VzT25MaW5lSWdub3JpbmdMaW5lQnJlYWsoKSA9IGRlbGV0ZTsKLSAg
ICBCb3hJdGVyYXRvciYgdHJhdmVyc2VOZXh0T25MaW5lSW5Mb2dpY2FsT3JkZXIoKSA9IGRlbGV0
ZTsKLSAgICBCb3hJdGVyYXRvciYgdHJhdmVyc2VQcmV2aW91c09uTGluZUluTG9naWNhbE9yZGVy
KCkgPSBkZWxldGU7Ci0KLSAgICBjb25zdCBUZXh0Qm94JiBnZXQoKSBjb25zdCB7IHJldHVybiBk
b3duY2FzdDxUZXh0Qm94PihtX3J1bik7IH0KLX07Ci0KLWNsYXNzIFRleHRSdW5SYW5nZSB7Ci1w
dWJsaWM6Ci0gICAgVGV4dFJ1blJhbmdlKFRleHRCb3hJdGVyYXRvciBiZWdpbikKLSAgICAgICAg
OiBtX2JlZ2luKGJlZ2luKQotICAgIHsKLSAgICB9Ci0KLSAgICBUZXh0Qm94SXRlcmF0b3IgYmVn
aW4oKSBjb25zdCB7IHJldHVybiBtX2JlZ2luOyB9Ci0gICAgRW5kSXRlcmF0b3IgZW5kKCkgY29u
c3QgeyByZXR1cm4geyB9OyB9Ci0KLXByaXZhdGU6Ci0gICAgVGV4dEJveEl0ZXJhdG9yIG1fYmVn
aW47Ci19OwotCi1UZXh0Qm94SXRlcmF0b3IgZmlyc3RUZXh0UnVuRm9yKGNvbnN0IFJlbmRlclRl
eHQmKTsKLVRleHRCb3hJdGVyYXRvciBmaXJzdFRleHRSdW5JblRleHRPcmRlckZvcihjb25zdCBS
ZW5kZXJUZXh0Jik7Ci1UZXh0Qm94SXRlcmF0b3IgdGV4dFJ1bkZvcihjb25zdCBMZWdhY3lJbmxp
bmVUZXh0Qm94Kik7Ci0jaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCi1UZXh0
Qm94SXRlcmF0b3IgdGV4dFJ1bkZvcihjb25zdCBMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29u
dGVudCYsIGNvbnN0IElubGluZURpc3BsYXk6OkJveCYpOwotVGV4dEJveEl0ZXJhdG9yIHRleHRS
dW5Gb3IoY29uc3QgTGF5b3V0SW50ZWdyYXRpb246OklubGluZUNvbnRlbnQmLCBzaXplX3QgcnVu
SW5kZXgpOwotI2VuZGlmCi1UZXh0UnVuUmFuZ2UgdGV4dFJ1bnNGb3IoY29uc3QgUmVuZGVyVGV4
dCYpOwotQm94SXRlcmF0b3IgcnVuRm9yKGNvbnN0IFJlbmRlckxpbmVCcmVhayYpOwotQm94SXRl
cmF0b3IgcnVuRm9yKGNvbnN0IFJlbmRlckJveCYpOworQm94SXRlcmF0b3IgYm94Rm9yKGNvbnN0
IFJlbmRlckxpbmVCcmVhayYpOworQm94SXRlcmF0b3IgYm94Rm9yKGNvbnN0IFJlbmRlckJveCYp
OwogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQotQm94SXRlcmF0b3IgcnVu
Rm9yKGNvbnN0IExheW91dEludGVncmF0aW9uOjpJbmxpbmVDb250ZW50Jiwgc2l6ZV90IHJ1bklu
ZGV4KTsKK0JveEl0ZXJhdG9yIGJveEZvcihjb25zdCBMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5l
Q29udGVudCYsIHNpemVfdCBib3hJbmRleCk7CiAjZW5kaWYKIAogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTI5NCw5NSArMjE4LDE5IEBAIGlu
bGluZSBjb25zdCBSZW5kZXJPYmplY3QmIEJveDo6cmVuZGVyZXIoKSBjb25zdAogCiBpbmxpbmUg
Y29uc3QgTGVnYWN5SW5saW5lQm94KiBCb3g6OmxlZ2FjeUlubGluZUJveCgpIGNvbnN0CiB7Ci0g
ICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEJveEl0ZXJhdG9yTGVnYWN5UGF0aD4obV9w
YXRoVmFyaWFudCkpCisgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEJveExlZ2FjeVBh
dGg+KG1fcGF0aFZhcmlhbnQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4g
V1RGOjpnZXQ8Qm94SXRlcmF0b3JMZWdhY3lQYXRoPihtX3BhdGhWYXJpYW50KS5sZWdhY3lJbmxp
bmVCb3goKTsKKyAgICByZXR1cm4gV1RGOjpnZXQ8Qm94TGVnYWN5UGF0aD4obV9wYXRoVmFyaWFu
dCkubGVnYWN5SW5saW5lQm94KCk7CiB9CiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdf
Q09OVEVYVCkKIGlubGluZSBjb25zdCBJbmxpbmVEaXNwbGF5OjpCb3gqIEJveDo6aW5saW5lQm94
KCkgY29uc3QKIHsKLSAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8Qm94SXRlcmF0b3JN
b2Rlcm5QYXRoPihtX3BhdGhWYXJpYW50KSkKKyAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8Qm94TW9kZXJuUGF0aD4obV9wYXRoVmFyaWFudCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiAmV1RGOjpnZXQ8Qm94SXRlcmF0b3JNb2Rlcm5QYXRoPihtX3BhdGhWYXJp
YW50KS5ib3goKTsKKyAgICByZXR1cm4gJldURjo6Z2V0PEJveE1vZGVyblBhdGg+KG1fcGF0aFZh
cmlhbnQpLmJveCgpOwogfQogI2VuZGlmCiAKLWlubGluZSBib29sIFRleHRCb3g6Omhhc0h5cGhl
bigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10o
YXV0byYgcGF0aCkgewotICAgICAgICByZXR1cm4gcGF0aC5oYXNIeXBoZW4oKTsKLSAgICB9KTsK
LX0KLQotaW5saW5lIFRleHRCb3g6OlRleHRCb3goUGF0aFZhcmlhbnQmJiBwYXRoKQotICAgIDog
Qm94KFdURk1vdmUocGF0aCkpCi17CiB9Ci0KLWlubGluZSBTdHJpbmdWaWV3IFRleHRCb3g6OnRl
eHQoKSBjb25zdAotewotICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtd
KGF1dG8mIHBhdGgpIHsKLSAgICAgICAgcmV0dXJuIHBhdGgudGV4dCgpOwotICAgIH0pOwogfQot
Ci1pbmxpbmUgdW5zaWduZWQgVGV4dEJveDo6c3RhcnQoKSBjb25zdAotewotICAgIHJldHVybiBX
VEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKLSAgICAgICAgcmV0
dXJuIHBhdGguc3RhcnQoKTsKLSAgICB9KTsKLX0KLQotaW5saW5lIHVuc2lnbmVkIFRleHRCb3g6
OmVuZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwg
W10oYXV0byYgcGF0aCkgewotICAgICAgICByZXR1cm4gcGF0aC5lbmQoKTsKLSAgICB9KTsKLX0K
LQotaW5saW5lIHVuc2lnbmVkIFRleHRCb3g6Omxlbmd0aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgewotICAgICAgICBy
ZXR1cm4gcGF0aC5sZW5ndGgoKTsKLSAgICB9KTsKLX0KLQotaW5saW5lIHVuc2lnbmVkIFRleHRC
b3g6Om9mZnNldEZvclBvc2l0aW9uKGZsb2F0IHgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdURjo6
c3dpdGNoT24obV9wYXRoVmFyaWFudCwgWyZdKGF1dG8mIHBhdGgpIHsKLSAgICAgICAgcmV0dXJu
IHBhdGgub2Zmc2V0Rm9yUG9zaXRpb24oeCk7Ci0gICAgfSk7Ci19Ci0KLWlubGluZSBmbG9hdCBU
ZXh0Qm94Ojpwb3NpdGlvbkZvck9mZnNldCh1bnNpZ25lZCBvZmZzZXQpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgWyZdKGF1dG8mIHBhdGgpIHsKLSAg
ICAgICAgcmV0dXJuIHBhdGgucG9zaXRpb25Gb3JPZmZzZXQob2Zmc2V0KTsKLSAgICB9KTsKLX0K
LQotaW5saW5lIFRleHRCb3hTZWxlY3RhYmxlUmFuZ2UgVGV4dEJveDo6c2VsZWN0YWJsZVJhbmdl
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBbJl0o
YXV0byYgcGF0aCkgewotICAgICAgICByZXR1cm4gcGF0aC5zZWxlY3RhYmxlUmFuZ2UoKTsKLSAg
ICB9KTsKLX0KLQotaW5saW5lIFRleHRSdW4gVGV4dEJveDo6Y3JlYXRlVGV4dFJ1bigpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgWyZdKGF1dG8mIHBh
dGgpIHsKLSAgICAgICAgcmV0dXJuIHBhdGguY3JlYXRlVGV4dFJ1bigpOwotICAgIH0pOwotfQot
Ci19Ci19Ci0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6SW5saW5lSXRl
cmF0b3I6OlRleHRCb3gpCi1zdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6SW5saW5l
SXRlcmF0b3I6OkJveCYgcnVuKSB7IHJldHVybiBydW4uaXNUZXh0KCk7IH0KLVNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfRU5EKCkKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3Jl
OjpJbmxpbmVJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yKQotc3RhdGljIGJvb2wgaXNUeXBlKGNv
bnN0IFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvciYgcnVuSXRlcmF0b3IpIHsg
cmV0dXJuICFydW5JdGVyYXRvciB8fCBydW5JdGVyYXRvci0+aXNUZXh0KCk7IH0KLVNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveExlZ2FjeVBhdGguaCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveExlZ2FjeVBhdGguaAppbmRleCBk
MjI0YzJhMjMwNjYzMjQyNWYzYzE2NmVlYzE1NDJjZjVmMjFlYmI5Li43OTU4YmIyN2QyZDk3ZTgw
MGEyODQzYzljNjFkMWM3NzNmNGU3MjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3hMZWdhY3lQYXRoLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94TGVnYWN5UGF0aC5o
CkBAIC0zNSwxNiArMzUsMTYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBJbmxp
bmVJdGVyYXRvciB7CiAKLWNsYXNzIEJveEl0ZXJhdG9yTGVnYWN5UGF0aCB7CitjbGFzcyBCb3hM
ZWdhY3lQYXRoIHsKIHB1YmxpYzoKLSAgICBCb3hJdGVyYXRvckxlZ2FjeVBhdGgoY29uc3QgTGVn
YWN5SW5saW5lQm94KiBpbmxpbmVCb3gsIFZlY3Rvcjxjb25zdCBMZWdhY3lJbmxpbmVCb3gqPiYm
IHNvcnRlZElubGluZUJveGVzID0geyB9LCBzaXplX3Qgc29ydGVkSW5saW5lQm94SW5kZXggPSAw
KQorICAgIEJveExlZ2FjeVBhdGgoY29uc3QgTGVnYWN5SW5saW5lQm94KiBpbmxpbmVCb3gsIFZl
Y3Rvcjxjb25zdCBMZWdhY3lJbmxpbmVCb3gqPiYmIHNvcnRlZElubGluZUJveGVzID0geyB9LCBz
aXplX3Qgc29ydGVkSW5saW5lQm94SW5kZXggPSAwKQogICAgICAgICA6IG1faW5saW5lQm94KGlu
bGluZUJveCkKICAgICAgICAgLCBtX2xvZ2ljYWxPcmRlckNhY2hlKFdURk1vdmUoc29ydGVkSW5s
aW5lQm94ZXMpKQogICAgICAgICAsIG1fbG9naWNhbE9yZGVyQ2FjaGVJbmRleChzb3J0ZWRJbmxp
bmVCb3hJbmRleCkKICAgICB7IH0KIAogICAgIGVudW0gY2xhc3MgTG9naWNhbE9yZGVyIHsgU3Rh
cnQsIEVuZCB9OwotICAgIEJveEl0ZXJhdG9yTGVnYWN5UGF0aChjb25zdCBMZWdhY3lSb290SW5s
aW5lQm94JiByb290LCBMb2dpY2FsT3JkZXIgb3JkZXIpCisgICAgQm94TGVnYWN5UGF0aChjb25z
dCBMZWdhY3lSb290SW5saW5lQm94JiByb290LCBMb2dpY2FsT3JkZXIgb3JkZXIpCiAgICAgICAg
IDogbV9sb2dpY2FsT3JkZXJDYWNoZShpbmxpbmVCb3hlc0luTG9naWNhbE9yZGVyKHJvb3QpKQog
ICAgIHsKICAgICAgICAgaWYgKCFtX2xvZ2ljYWxPcmRlckNhY2hlLmlzRW1wdHkoKSkgewpAQCAt
ODQsMTUgKzg0LDE1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1faW5saW5lQm94LT5yZW5k
ZXJlcigpOwogICAgIH0KIAotICAgIHZvaWQgdHJhdmVyc2VOZXh0VGV4dFJ1bigpIHsgbV9pbmxp
bmVCb3ggPSBpbmxpbmVUZXh0Qm94KCktPm5leHRUZXh0Qm94KCk7IH0KLSAgICB2b2lkIHRyYXZl
cnNlTmV4dFRleHRSdW5JblRleHRPcmRlcigpCisgICAgdm9pZCB0cmF2ZXJzZU5leHRUZXh0Qm94
KCkgeyBtX2lubGluZUJveCA9IGlubGluZVRleHRCb3goKS0+bmV4dFRleHRCb3goKTsgfQorICAg
IHZvaWQgdHJhdmVyc2VOZXh0VGV4dEJveEluVGV4dE9yZGVyKCkKICAgICB7CiAgICAgICAgIGlm
ICghbV9sb2dpY2FsT3JkZXJDYWNoZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIHRyYXZlcnNl
TmV4dElubGluZUJveEluQ2FjaGVPcmRlcigpOwogICAgICAgICAgICAgQVNTRVJUKCFtX2lubGlu
ZUJveCB8fCBpczxMZWdhY3lJbmxpbmVUZXh0Qm94PihtX2lubGluZUJveCkpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIHRyYXZlcnNlTmV4dFRleHRSdW4oKTsKKyAg
ICAgICAgdHJhdmVyc2VOZXh0VGV4dEJveCgpOwogICAgIH0KIAogICAgIHZvaWQgdHJhdmVyc2VO
ZXh0T25MaW5lKCkKQEAgLTExNyw3ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHRyYXZlcnNl
UHJldmlvdXNJbmxpbmVCb3hJbkNhY2hlT3JkZXIoKTsKICAgICB9CiAKLSAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgQm94SXRlcmF0b3JMZWdhY3lQYXRoJiBvdGhlcikgY29uc3QgeyByZXR1cm4g
bV9pbmxpbmVCb3ggPT0gb3RoZXIubV9pbmxpbmVCb3g7IH0KKyAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgQm94TGVnYWN5UGF0aCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lQm94ID09
IG90aGVyLm1faW5saW5lQm94OyB9CiAKICAgICBib29sIGF0RW5kKCkgY29uc3QgeyByZXR1cm4g
IW1faW5saW5lQm94OyB9CiAKQEAgLTE1NCwxNCArMTU0LDE0IEBAIHByaXZhdGU6CiB9OwogCiAK
LWlubGluZSB2b2lkIEJveEl0ZXJhdG9yTGVnYWN5UGF0aDo6dHJhdmVyc2VOZXh0SW5saW5lQm94
SW5DYWNoZU9yZGVyKCkKK2lubGluZSB2b2lkIEJveExlZ2FjeVBhdGg6OnRyYXZlcnNlTmV4dElu
bGluZUJveEluQ2FjaGVPcmRlcigpCiB7CiAgICAgQVNTRVJUKCFtX2xvZ2ljYWxPcmRlckNhY2hl
LmlzRW1wdHkoKSk7CiAgICAgKyttX2xvZ2ljYWxPcmRlckNhY2hlSW5kZXg7CiAgICAgbV9pbmxp
bmVCb3ggPSBtX2xvZ2ljYWxPcmRlckNhY2hlSW5kZXggPCBtX2xvZ2ljYWxPcmRlckNhY2hlLnNp
emUoKSA/IG1fbG9naWNhbE9yZGVyQ2FjaGVbbV9sb2dpY2FsT3JkZXJDYWNoZUluZGV4XSA6IG51
bGxwdHI7CiB9CiAKLWlubGluZSB2b2lkIEJveEl0ZXJhdG9yTGVnYWN5UGF0aDo6dHJhdmVyc2VQ
cmV2aW91c0lubGluZUJveEluQ2FjaGVPcmRlcigpCitpbmxpbmUgdm9pZCBCb3hMZWdhY3lQYXRo
Ojp0cmF2ZXJzZVByZXZpb3VzSW5saW5lQm94SW5DYWNoZU9yZGVyKCkKIHsKICAgICBBU1NFUlQo
IW1fbG9naWNhbE9yZGVyQ2FjaGUuaXNFbXB0eSgpKTsKICAgICBpZiAoIW1fbG9naWNhbE9yZGVy
Q2FjaGVJbmRleCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0
aW9uL0lubGluZUl0ZXJhdG9yQm94TW9kZXJuUGF0aC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94TW9kZXJuUGF0aC5oCmluZGV4IDVjMTlmMDFi
NGUxOWJiYzVlNjE5OGY5Y2NmMTNhNmE5YjA2MzcyY2EuLjljMzY0NDAyZGZkMmNkZWNkN2E4Yjk5
YzViYWVhNWY3ZTA2YjM3ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRl
Z3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveE1vZGVyblBhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3hNb2Rlcm5QYXRoLmgKQEAgLTM0
LDE0ICszNCwxNCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIElubGluZUl0ZXJh
dG9yIHsKIAotY2xhc3MgQm94SXRlcmF0b3JNb2Rlcm5QYXRoIHsKK2NsYXNzIEJveE1vZGVyblBh
dGggewogcHVibGljOgotICAgIEJveEl0ZXJhdG9yTW9kZXJuUGF0aChjb25zdCBMYXlvdXRJbnRl
Z3JhdGlvbjo6SW5saW5lQ29udGVudCYgaW5saW5lQ29udGVudCkKKyAgICBCb3hNb2Rlcm5QYXRo
KGNvbnN0IExheW91dEludGVncmF0aW9uOjpJbmxpbmVDb250ZW50JiBpbmxpbmVDb250ZW50KQog
ICAgICAgICA6IG1faW5saW5lQ29udGVudCgmaW5saW5lQ29udGVudCkKICAgICB7CiAgICAgICAg
IHNldEF0RW5kKCk7CiAgICAgfQotICAgIEJveEl0ZXJhdG9yTW9kZXJuUGF0aChjb25zdCBMYXlv
dXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVudCYgaW5saW5lQ29udGVudCwgc2l6ZV90IHN0YXJ0
SW5kZXgpCisgICAgQm94TW9kZXJuUGF0aChjb25zdCBMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5l
Q29udGVudCYgaW5saW5lQ29udGVudCwgc2l6ZV90IHN0YXJ0SW5kZXgpCiAgICAgICAgIDogbV9p
bmxpbmVDb250ZW50KCZpbmxpbmVDb250ZW50KQogICAgICAgICAsIG1fYm94SW5kZXgoc3RhcnRJ
bmRleCkKICAgICB7CkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
bV9pbmxpbmVDb250ZW50LT5yZW5kZXJlckZvckxheW91dEJveChib3goKS5sYXlvdXRCb3goKSk7
CiAgICAgfQogCi0gICAgdm9pZCB0cmF2ZXJzZU5leHRUZXh0UnVuKCkKKyAgICB2b2lkIHRyYXZl
cnNlTmV4dFRleHRCb3goKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFhdEVuZCgpKTsKICAgICAg
ICAgQVNTRVJUKGJveCgpLnRleHQoKSk7CkBAIC0xMzQsMTAgKzEzNCwxMCBAQCBwdWJsaWM6CiAg
ICAgICAgIEFTU0VSVChhdEVuZCgpIHx8IGJveCgpLnRleHQoKSk7CiAgICAgfQogCi0gICAgdm9p
ZCB0cmF2ZXJzZU5leHRUZXh0UnVuSW5UZXh0T3JkZXIoKQorICAgIHZvaWQgdHJhdmVyc2VOZXh0
VGV4dEJveEluVGV4dE9yZGVyKCkKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBObyBSVEwgaW4g
TEZDLgotICAgICAgICB0cmF2ZXJzZU5leHRUZXh0UnVuKCk7CisgICAgICAgIHRyYXZlcnNlTmV4
dFRleHRCb3goKTsKICAgICB9CiAKICAgICB2b2lkIHRyYXZlcnNlTmV4dE9uTGluZSgpCkBAIC0x
NzQsNyArMTc0LDcgQEAgcHVibGljOgogICAgICAgICB0cmF2ZXJzZVByZXZpb3VzT25MaW5lKCk7
CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJveEl0ZXJhdG9yTW9kZXJuUGF0
aCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lQ29udGVudCA9PSBvdGhlci5tX2lubGlu
ZUNvbnRlbnQgJiYgbV9ib3hJbmRleCA9PSBvdGhlci5tX2JveEluZGV4OyB9CisgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEJveE1vZGVyblBhdGgmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2lu
bGluZUNvbnRlbnQgPT0gb3RoZXIubV9pbmxpbmVDb250ZW50ICYmIG1fYm94SW5kZXggPT0gb3Ro
ZXIubV9ib3hJbmRleDsgfQogCiAgICAgYm9vbCBhdEVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94
SW5kZXggPT0gYm94ZXMoKS5zaXplKCk7IH0KICAgICBjb25zdCBJbmxpbmVEaXNwbGF5OjpCb3gm
IGJveCgpIGNvbnN0IHsgcmV0dXJuIGJveGVzKClbbV9ib3hJbmRleF07IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVMZWdh
Y3lQYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0
b3JMaW5lTGVnYWN5UGF0aC5oCmluZGV4IDkxMzhlNTE3Y2IxMzVkNDkzNDQ5M2M5ZDg4NzVhYWNh
MzRjNTlmMjAuLmZhYzNhMjJlNzQ5NGQ0ZTQzMTIxOGZjZTg5ZTc5YjQzMjRhOTNkMDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxp
bmVMZWdhY3lQYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lu
bGluZUl0ZXJhdG9yTGluZUxlZ2FjeVBhdGguaApAQCAtNzUsMjUgKzc1LDI1IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgYXRFbmQoKSBjb25zdCB7IHJldHVybiAhbV9yb290SW5saW5lQm94OyB9CiAK
LSAgICBCb3hJdGVyYXRvckxlZ2FjeVBhdGggZmlyc3RSdW4oKSBjb25zdAorICAgIEJveExlZ2Fj
eVBhdGggZmlyc3RSdW4oKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIHsgbV9yb290SW5s
aW5lQm94LT5maXJzdExlYWZEZXNjZW5kYW50KCkgfTsKICAgICB9CiAKLSAgICBCb3hJdGVyYXRv
ckxlZ2FjeVBhdGggbGFzdFJ1bigpIGNvbnN0CisgICAgQm94TGVnYWN5UGF0aCBsYXN0UnVuKCkg
Y29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiB7IG1fcm9vdElubGluZUJveC0+bGFzdExlYWZE
ZXNjZW5kYW50KCkgfTsKICAgICB9CiAKIAotICAgIEJveEl0ZXJhdG9yTGVnYWN5UGF0aCBsb2dp
Y2FsU3RhcnRSdW4oKSBjb25zdAorICAgIEJveExlZ2FjeVBhdGggbG9naWNhbFN0YXJ0UnVuKCkg
Y29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiB7ICptX3Jvb3RJbmxpbmVCb3gsIEJveEl0ZXJh
dG9yTGVnYWN5UGF0aDo6TG9naWNhbE9yZGVyOjpTdGFydCB9OworICAgICAgICByZXR1cm4geyAq
bV9yb290SW5saW5lQm94LCBCb3hMZWdhY3lQYXRoOjpMb2dpY2FsT3JkZXI6OlN0YXJ0IH07CiAg
ICAgfQogCi0gICAgQm94SXRlcmF0b3JMZWdhY3lQYXRoIGxvZ2ljYWxFbmRSdW4oKSBjb25zdAor
ICAgIEJveExlZ2FjeVBhdGggbG9naWNhbEVuZFJ1bigpIGNvbnN0CiAgICAgewotICAgICAgICBy
ZXR1cm4geyAqbV9yb290SW5saW5lQm94LCBCb3hJdGVyYXRvckxlZ2FjeVBhdGg6OkxvZ2ljYWxP
cmRlcjo6RW5kIH07CisgICAgICAgIHJldHVybiB7ICptX3Jvb3RJbmxpbmVCb3gsIEJveExlZ2Fj
eVBhdGg6OkxvZ2ljYWxPcmRlcjo6RW5kIH07CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZU1v
ZGVyblBhdGguaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVy
YXRvckxpbmVNb2Rlcm5QYXRoLmgKaW5kZXggY2QzODc5YjBhNWU1ODRiNjcwYTRkODI5OWI3NWI0
MTE2NmRmMWI3MC4uY2FmODI2Zjg1MWU0N2ZmZTdkNWEwZGFjNTk1ZmU5ZGYzM2M0NWRlMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9y
TGluZU1vZGVyblBhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24v
SW5saW5lSXRlcmF0b3JMaW5lTW9kZXJuUGF0aC5oCkBAIC0zNCw3ICszNCw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgSW5saW5lSXRlcmF0b3IgewogCi1jbGFzcyBCb3hJdGVy
YXRvck1vZGVyblBhdGg7CitjbGFzcyBCb3hNb2Rlcm5QYXRoOwogCiBjbGFzcyBMaW5lSXRlcmF0
b3JNb2Rlcm5QYXRoIHsKIHB1YmxpYzoKQEAgLTk1LDMzICs5NSwzMyBAQCBwdWJsaWM6CiAKICAg
ICBib29sIGF0RW5kKCkgY29uc3QgeyByZXR1cm4gbV9saW5lSW5kZXggPT0gbGluZXMoKS5zaXpl
KCk7IH0KIAotICAgIEJveEl0ZXJhdG9yTW9kZXJuUGF0aCBmaXJzdFJ1bigpIGNvbnN0CisgICAg
Qm94TW9kZXJuUGF0aCBmaXJzdFJ1bigpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIWxpbmUo
KS5ib3hDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIHsgKm1faW5saW5lQ29udGVudCB9Owot
ICAgICAgICBhdXRvIHJ1bkl0ZXJhdG9yID0gQm94SXRlcmF0b3JNb2Rlcm5QYXRoIHsgKm1faW5s
aW5lQ29udGVudCwgbGluZSgpLmZpcnN0Qm94SW5kZXgoKSB9OworICAgICAgICBhdXRvIHJ1bkl0
ZXJhdG9yID0gQm94TW9kZXJuUGF0aCB7ICptX2lubGluZUNvbnRlbnQsIGxpbmUoKS5maXJzdEJv
eEluZGV4KCkgfTsKICAgICAgICAgaWYgKHJ1bkl0ZXJhdG9yLmJveCgpLmlzSW5saW5lQm94KCkp
CiAgICAgICAgICAgICBydW5JdGVyYXRvci50cmF2ZXJzZU5leHRPbkxpbmUoKTsKICAgICAgICAg
cmV0dXJuIHJ1bkl0ZXJhdG9yOwogICAgIH0KIAotICAgIEJveEl0ZXJhdG9yTW9kZXJuUGF0aCBs
YXN0UnVuKCkgY29uc3QKKyAgICBCb3hNb2Rlcm5QYXRoIGxhc3RSdW4oKSBjb25zdAogICAgIHsK
ICAgICAgICAgYXV0byBib3hDb3VudCA9IGxpbmUoKS5ib3hDb3VudCgpOwogICAgICAgICBpZiAo
IWJveENvdW50KQogICAgICAgICAgICAgcmV0dXJuIHsgKm1faW5saW5lQ29udGVudCB9OwotICAg
ICAgICBhdXRvIHJ1bkl0ZXJhdG9yID0gQm94SXRlcmF0b3JNb2Rlcm5QYXRoIHsgKm1faW5saW5l
Q29udGVudCwgbGluZSgpLmZpcnN0Qm94SW5kZXgoKSArIGJveENvdW50IC0gMSB9OworICAgICAg
ICBhdXRvIHJ1bkl0ZXJhdG9yID0gQm94TW9kZXJuUGF0aCB7ICptX2lubGluZUNvbnRlbnQsIGxp
bmUoKS5maXJzdEJveEluZGV4KCkgKyBib3hDb3VudCAtIDEgfTsKICAgICAgICAgaWYgKHJ1bkl0
ZXJhdG9yLmJveCgpLmlzSW5saW5lQm94KCkpCiAgICAgICAgICAgICBydW5JdGVyYXRvci50cmF2
ZXJzZVByZXZpb3VzT25MaW5lKCk7CiAgICAgICAgIHJldHVybiBydW5JdGVyYXRvcjsKICAgICB9
CiAKLSAgICBCb3hJdGVyYXRvck1vZGVyblBhdGggbG9naWNhbFN0YXJ0UnVuKCkgY29uc3QKKyAg
ICBCb3hNb2Rlcm5QYXRoIGxvZ2ljYWxTdGFydFJ1bigpIGNvbnN0CiAgICAgewogICAgICAgICBy
ZXR1cm4gZmlyc3RSdW4oKTsKICAgICB9CiAKLSAgICBCb3hJdGVyYXRvck1vZGVyblBhdGggbG9n
aWNhbEVuZFJ1bigpIGNvbnN0CisgICAgQm94TW9kZXJuUGF0aCBsb2dpY2FsRW5kUnVuKCkgY29u
c3QKICAgICB7CiAgICAgICAgIHJldHVybiBsYXN0UnVuKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJveC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JUZXh0
Qm94LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41OGU5MmY5M2Q0MjMyZmE1YmJmM2Y1MGYyM2NmZmQzMzc0YTNi
ODg2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L0lubGluZUl0ZXJhdG9yVGV4dEJveC5jcHAKQEAgLTAsMCArMSwxNTUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvclRleHRC
b3guaCIKKworI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTGluZS5oIgorI2luY2x1ZGUgIkxheW91
dEludGVncmF0aW9uTGluZUxheW91dC5oIgorI2luY2x1ZGUgIlJlbmRlckNvbWJpbmVUZXh0Lmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJbmxpbmVJdGVyYXRvciB7CisKK1Rl
eHRCb3hJdGVyYXRvciBUZXh0Qm94OjpuZXh0VGV4dEJveCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IFRleHRCb3hJdGVyYXRvcigqdGhpcykudHJhdmVyc2VOZXh0VGV4dEJveCgpOworfQorCitUZXh0
Qm94SXRlcmF0b3IgVGV4dEJveDo6bmV4dFRleHRCb3hJblRleHRPcmRlcigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIFRleHRCb3hJdGVyYXRvcigqdGhpcykudHJhdmVyc2VOZXh0VGV4dEJveEluVGV4
dE9yZGVyKCk7Cit9CisKK0xheW91dFJlY3QgVGV4dEJveDo6c2VsZWN0aW9uUmVjdCh1bnNpZ25l
ZCByYW5nZVN0YXJ0LCB1bnNpZ25lZCByYW5nZUVuZCkgY29uc3QKK3sKKyAgICBhdXRvIFtjbGFt
cGVkU3RhcnQsIGNsYW1wZWRFbmRdID0gc2VsZWN0YWJsZVJhbmdlKCkuY2xhbXAocmFuZ2VTdGFy
dCwgcmFuZ2VFbmQpOworCisgICAgaWYgKGNsYW1wZWRTdGFydCA+PSBjbGFtcGVkRW5kICYmICEo
cmFuZ2VTdGFydCA9PSByYW5nZUVuZCAmJiByYW5nZVN0YXJ0ID49IHN0YXJ0KCkgJiYgcmFuZ2VT
dGFydCA8PSBlbmQoKSkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIHNlbGVjdGlv
blRvcCA9IGxpbmUoKS0+c2VsZWN0aW9uVG9wKCk7CisgICAgYXV0byBzZWxlY3Rpb25IZWlnaHQg
PSBsaW5lKCktPnNlbGVjdGlvbkhlaWdodCgpOworCisgICAgTGF5b3V0UmVjdCBzZWxlY3Rpb25S
ZWN0IHsgbG9naWNhbExlZnQoKSwgc2VsZWN0aW9uVG9wLCBsb2dpY2FsV2lkdGgoKSwgc2VsZWN0
aW9uSGVpZ2h0IH07CisKKyAgICBUZXh0UnVuIHRleHRSdW4gPSBjcmVhdGVUZXh0UnVuKCk7Cisg
ICAgaWYgKGNsYW1wZWRTdGFydCB8fCBjbGFtcGVkRW5kICE9IHRleHRSdW4ubGVuZ3RoKCkpCisg
ICAgICAgIGZvbnRDYXNjYWRlKCkuYWRqdXN0U2VsZWN0aW9uUmVjdEZvclRleHQodGV4dFJ1biwg
c2VsZWN0aW9uUmVjdCwgY2xhbXBlZFN0YXJ0LCBjbGFtcGVkRW5kKTsKKworICAgIHJldHVybiBz
bmFwcGVkU2VsZWN0aW9uUmVjdChzZWxlY3Rpb25SZWN0LCBsb2dpY2FsUmlnaHQoKSwgc2VsZWN0
aW9uVG9wLCBzZWxlY3Rpb25IZWlnaHQsIGlzSG9yaXpvbnRhbCgpKTsKK30KKworYm9vbCBUZXh0
Qm94Ojppc0NvbWJpbmVkVGV4dCgpIGNvbnN0Cit7CisgICAgYXV0byYgcmVuZGVyZXIgPSB0aGlz
LT5yZW5kZXJlcigpOworICAgIHJldHVybiBpczxSZW5kZXJDb21iaW5lVGV4dD4ocmVuZGVyZXIp
ICYmIGRvd25jYXN0PFJlbmRlckNvbWJpbmVUZXh0PihyZW5kZXJlcikuaXNDb21iaW5lZCgpOwor
fQorCitjb25zdCBGb250Q2FzY2FkZSYgVGV4dEJveDo6Zm9udENhc2NhZGUoKSBjb25zdAorewor
ICAgIGlmIChpc0NvbWJpbmVkVGV4dCgpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVy
Q29tYmluZVRleHQ+KHJlbmRlcmVyKCkpLnRleHRDb21iaW5lRm9udCgpOworCisgICAgcmV0dXJu
IHN0eWxlKCkuZm9udENhc2NhZGUoKTsKK30KKworVGV4dEJveEl0ZXJhdG9yOjpUZXh0Qm94SXRl
cmF0b3IoQm94OjpQYXRoVmFyaWFudCYmIHBhdGhWYXJpYW50KQorICAgIDogQm94SXRlcmF0b3Io
V1RGTW92ZShwYXRoVmFyaWFudCkpCit7Cit9CisKK1RleHRCb3hJdGVyYXRvcjo6VGV4dEJveEl0
ZXJhdG9yKGNvbnN0IEJveCYgYm94KQorICAgIDogQm94SXRlcmF0b3IoYm94KQoreworfQorCitU
ZXh0Qm94SXRlcmF0b3ImIFRleHRCb3hJdGVyYXRvcjo6dHJhdmVyc2VOZXh0VGV4dEJveCgpCit7
CisgICAgV1RGOjpzd2l0Y2hPbihtX2JveC5tX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7
CisgICAgICAgIHBhdGgudHJhdmVyc2VOZXh0VGV4dEJveCgpOworICAgIH0pOworICAgIHJldHVy
biAqdGhpczsKK30KKworVGV4dEJveEl0ZXJhdG9yJiBUZXh0Qm94SXRlcmF0b3I6OnRyYXZlcnNl
TmV4dFRleHRCb3hJblRleHRPcmRlcigpCit7CisgICAgV1RGOjpzd2l0Y2hPbihtX2JveC5tX3Bh
dGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7CisgICAgICAgIHBhdGgudHJhdmVyc2VOZXh0VGV4
dEJveEluVGV4dE9yZGVyKCk7CisgICAgfSk7CisgICAgcmV0dXJuICp0aGlzOworfQorCitUZXh0
Qm94SXRlcmF0b3IgZmlyc3RUZXh0Qm94Rm9yKGNvbnN0IFJlbmRlclRleHQmIHRleHQpCit7Cisj
aWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisgICAgaWYgKGF1dG8qIGxpbmVM
YXlvdXQgPSBMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6Y29udGFpbmluZyh0ZXh0KSkK
KyAgICAgICAgcmV0dXJuIGxpbmVMYXlvdXQtPnRleHRCb3hlc0Zvcih0ZXh0KTsKKyNlbmRpZgor
CisgICAgcmV0dXJuIHsgQm94TGVnYWN5UGF0aCB7IHRleHQuZmlyc3RUZXh0Qm94KCkgfSB9Owor
fQorCitUZXh0Qm94SXRlcmF0b3IgZmlyc3RUZXh0Qm94SW5UZXh0T3JkZXJGb3IoY29uc3QgUmVu
ZGVyVGV4dCYgdGV4dCkKK3sKKyAgICBpZiAodGV4dC5maXJzdFRleHRCb3goKSAmJiB0ZXh0LmNv
bnRhaW5zUmV2ZXJzZWRUZXh0KCkpIHsKKyAgICAgICAgVmVjdG9yPGNvbnN0IExlZ2FjeUlubGlu
ZUJveCo+IHNvcnRlZFRleHRCb3hlczsKKyAgICAgICAgZm9yIChhdXRvKiB0ZXh0Qm94ID0gdGV4
dC5maXJzdFRleHRCb3goKTsgdGV4dEJveDsgdGV4dEJveCA9IHRleHRCb3gtPm5leHRUZXh0Qm94
KCkpCisgICAgICAgICAgICBzb3J0ZWRUZXh0Qm94ZXMuYXBwZW5kKHRleHRCb3gpOworICAgICAg
ICBzdGQ6OnNvcnQoc29ydGVkVGV4dEJveGVzLmJlZ2luKCksIHNvcnRlZFRleHRCb3hlcy5lbmQo
KSwgW10oYXV0byogYSwgYXV0byogYikgeworICAgICAgICAgICAgcmV0dXJuIExlZ2FjeUlubGlu
ZVRleHRCb3g6OmNvbXBhcmVCeVN0YXJ0KGRvd25jYXN0PExlZ2FjeUlubGluZVRleHRCb3g+KGEp
LCBkb3duY2FzdDxMZWdhY3lJbmxpbmVUZXh0Qm94PihiKSk7CisgICAgICAgIH0pOworICAgICAg
ICBhdXRvKiBmaXJzdCA9IHNvcnRlZFRleHRCb3hlc1swXTsKKyAgICAgICAgcmV0dXJuIHsgQm94
TGVnYWN5UGF0aCB7IGZpcnN0LCBXVEZNb3ZlKHNvcnRlZFRleHRCb3hlcyksIDAgfSB9OworICAg
IH0KKworICAgIHJldHVybiBmaXJzdFRleHRCb3hGb3IodGV4dCk7Cit9CisKK1RleHRCb3hJdGVy
YXRvciB0ZXh0Qm94Rm9yKGNvbnN0IExlZ2FjeUlubGluZVRleHRCb3gqIGxlZ2FjeUlubGluZVRl
eHRCb3gpCit7CisgICAgcmV0dXJuIHsgQm94TGVnYWN5UGF0aCB7IGxlZ2FjeUlubGluZVRleHRC
b3ggfSB9OworfQorCisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCitUZXh0
Qm94SXRlcmF0b3IgdGV4dEJveEZvcihjb25zdCBMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29u
dGVudCYgY29udGVudCwgY29uc3QgSW5saW5lRGlzcGxheTo6Qm94JiBib3gpCit7CisgICAgcmV0
dXJuIHRleHRCb3hGb3IoY29udGVudCwgY29udGVudC5pbmRleEZvckJveChib3gpKTsKK30KKwor
VGV4dEJveEl0ZXJhdG9yIHRleHRCb3hGb3IoY29uc3QgTGF5b3V0SW50ZWdyYXRpb246OklubGlu
ZUNvbnRlbnQmIGNvbnRlbnQsIHNpemVfdCBib3hJbmRleCkKK3sKKyAgICBBU1NFUlQoY29udGVu
dC5ib3hlc1tib3hJbmRleF0udGV4dCgpKTsKKyAgICByZXR1cm4geyBCb3hNb2Rlcm5QYXRoIHsg
Y29udGVudCwgYm94SW5kZXggfSB9OworfQorI2VuZGlmCisKK1RleHRCb3hSYW5nZSB0ZXh0Qm94
ZXNGb3IoY29uc3QgUmVuZGVyVGV4dCYgdGV4dCkKK3sKKyAgICByZXR1cm4geyBmaXJzdFRleHRC
b3hGb3IodGV4dCkgfTsKK30KKworfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJveC5oIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yVGV4dEJveC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0
ZTgwMmY4Yzg3OThiNDcwMzdjM2Q2ZGE5ZmRjZTQxZTU1ZDkyZGIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JUZXh0Qm94
LmgKQEAgLTAsMCArMSwxOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiSW5saW5lSXRlcmF0b3JCb3guaCIKKyNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIElubGluZUl0ZXJhdG9yIHsKKworY2xh
c3MgVGV4dEJveCA6IHB1YmxpYyBCb3ggeworcHVibGljOgorICAgIFRleHRCb3goUGF0aFZhcmlh
bnQmJik7CisKKyAgICBib29sIGhhc0h5cGhlbigpIGNvbnN0OworICAgIFN0cmluZ1ZpZXcgdGV4
dCgpIGNvbnN0OworCisgICAgdW5zaWduZWQgc3RhcnQoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBl
bmQoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKKworICAgIHVuc2lnbmVk
IG9mZnNldEZvclBvc2l0aW9uKGZsb2F0IHgpIGNvbnN0OworICAgIGZsb2F0IHBvc2l0aW9uRm9y
T2Zmc2V0KHVuc2lnbmVkKSBjb25zdDsKKworICAgIFRleHRCb3hTZWxlY3RhYmxlUmFuZ2Ugc2Vs
ZWN0YWJsZVJhbmdlKCkgY29uc3Q7CisgICAgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0KHVuc2ln
bmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQpIGNvbnN0OworCisgICAgYm9vbCBpc0NvbWJpbmVkVGV4
dCgpIGNvbnN0OworICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250Q2FzY2FkZSgpIGNvbnN0Owor
CisgICAgVGV4dFJ1biBjcmVhdGVUZXh0UnVuKCkgY29uc3Q7CisKKyAgICBjb25zdCBSZW5kZXJU
ZXh0JiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PFJlbmRlclRleHQ+KEJveDo6
cmVuZGVyZXIoKSk7IH0KKworICAgIC8vIEZJWE1FOiBSZW1vdmUuIEZvciBpbnRlcm1lZGlhdGUg
cG9ydGluZyBzdGVwcyBvbmx5LgorICAgIGNvbnN0IExlZ2FjeUlubGluZVRleHRCb3gqIGxlZ2Fj
eUlubGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PExlZ2FjeUlubGluZVRleHRCb3g+
KEJveDo6bGVnYWN5SW5saW5lQm94KCkpOyB9CisKKyAgICBUZXh0Qm94SXRlcmF0b3IgbmV4dFRl
eHRCb3goKSBjb25zdDsKKyAgICBUZXh0Qm94SXRlcmF0b3IgbmV4dFRleHRCb3hJblRleHRPcmRl
cigpIGNvbnN0OworfTsKKworY2xhc3MgVGV4dEJveEl0ZXJhdG9yIDogcHVibGljIEJveEl0ZXJh
dG9yIHsKK3B1YmxpYzoKKyAgICBUZXh0Qm94SXRlcmF0b3IoKSB7IH0KKyAgICBUZXh0Qm94SXRl
cmF0b3IoQm94OjpQYXRoVmFyaWFudCYmKTsKKyAgICBUZXh0Qm94SXRlcmF0b3IoY29uc3QgQm94
Jik7CisKKyAgICBUZXh0Qm94SXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7IHJldHVybiB0cmF2ZXJz
ZU5leHRUZXh0Qm94KCk7IH0KKworICAgIGNvbnN0IFRleHRCb3gmIG9wZXJhdG9yKigpIGNvbnN0
IHsgcmV0dXJuIGdldCgpOyB9CisgICAgY29uc3QgVGV4dEJveCogb3BlcmF0b3ItPigpIGNvbnN0
IHsgcmV0dXJuICZnZXQoKTsgfQorCisgICAgVGV4dEJveEl0ZXJhdG9yJiB0cmF2ZXJzZU5leHRU
ZXh0Qm94KCk7CisgICAgVGV4dEJveEl0ZXJhdG9yJiB0cmF2ZXJzZU5leHRUZXh0Qm94SW5UZXh0
T3JkZXIoKTsKKworcHJpdmF0ZToKKyAgICBCb3hJdGVyYXRvciYgdHJhdmVyc2VOZXh0T25MaW5l
KCkgPSBkZWxldGU7CisgICAgQm94SXRlcmF0b3ImIHRyYXZlcnNlUHJldmlvdXNPbkxpbmUoKSA9
IGRlbGV0ZTsKKyAgICBCb3hJdGVyYXRvciYgdHJhdmVyc2VOZXh0T25MaW5lSWdub3JpbmdMaW5l
QnJlYWsoKSA9IGRlbGV0ZTsKKyAgICBCb3hJdGVyYXRvciYgdHJhdmVyc2VQcmV2aW91c09uTGlu
ZUlnbm9yaW5nTGluZUJyZWFrKCkgPSBkZWxldGU7CisgICAgQm94SXRlcmF0b3ImIHRyYXZlcnNl
TmV4dE9uTGluZUluTG9naWNhbE9yZGVyKCkgPSBkZWxldGU7CisgICAgQm94SXRlcmF0b3ImIHRy
YXZlcnNlUHJldmlvdXNPbkxpbmVJbkxvZ2ljYWxPcmRlcigpID0gZGVsZXRlOworCisgICAgY29u
c3QgVGV4dEJveCYgZ2V0KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8VGV4dEJveD4obV9ib3gp
OyB9Cit9OworCitjbGFzcyBUZXh0Qm94UmFuZ2UgeworcHVibGljOgorICAgIFRleHRCb3hSYW5n
ZShUZXh0Qm94SXRlcmF0b3IgYmVnaW4pCisgICAgICAgIDogbV9iZWdpbihiZWdpbikKKyAgICB7
CisgICAgfQorCisgICAgVGV4dEJveEl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9i
ZWdpbjsgfQorICAgIEVuZEl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIHsgfTsgfQorCitw
cml2YXRlOgorICAgIFRleHRCb3hJdGVyYXRvciBtX2JlZ2luOworfTsKKworVGV4dEJveEl0ZXJh
dG9yIGZpcnN0VGV4dEJveEZvcihjb25zdCBSZW5kZXJUZXh0Jik7CitUZXh0Qm94SXRlcmF0b3Ig
Zmlyc3RUZXh0Qm94SW5UZXh0T3JkZXJGb3IoY29uc3QgUmVuZGVyVGV4dCYpOworVGV4dEJveEl0
ZXJhdG9yIHRleHRCb3hGb3IoY29uc3QgTGVnYWN5SW5saW5lVGV4dEJveCopOworI2lmIEVOQUJM
RShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQorVGV4dEJveEl0ZXJhdG9yIHRleHRCb3hGb3Io
Y29uc3QgTGF5b3V0SW50ZWdyYXRpb246OklubGluZUNvbnRlbnQmLCBjb25zdCBJbmxpbmVEaXNw
bGF5OjpCb3gmKTsKK1RleHRCb3hJdGVyYXRvciB0ZXh0Qm94Rm9yKGNvbnN0IExheW91dEludGVn
cmF0aW9uOjpJbmxpbmVDb250ZW50Jiwgc2l6ZV90IGJveEluZGV4KTsKKyNlbmRpZgorVGV4dEJv
eFJhbmdlIHRleHRCb3hlc0Zvcihjb25zdCBSZW5kZXJUZXh0Jik7CisKK2lubGluZSBib29sIFRl
eHRCb3g6Omhhc0h5cGhlbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9w
YXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgeworICAgICAgICByZXR1cm4gcGF0aC5oYXNIeXBo
ZW4oKTsKKyAgICB9KTsKK30KKworaW5saW5lIFRleHRCb3g6OlRleHRCb3goUGF0aFZhcmlhbnQm
JiBwYXRoKQorICAgIDogQm94KFdURk1vdmUocGF0aCkpCit7Cit9CisKK2lubGluZSBTdHJpbmdW
aWV3IFRleHRCb3g6OnRleHQoKSBjb25zdAoreworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1f
cGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuIHBhdGgudGV4dCgp
OworICAgIH0pOworfQorCitpbmxpbmUgdW5zaWduZWQgVGV4dEJveDo6c3RhcnQoKSBjb25zdAor
eworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgp
IHsKKyAgICAgICAgcmV0dXJuIHBhdGguc3RhcnQoKTsKKyAgICB9KTsKK30KKworaW5saW5lIHVu
c2lnbmVkIFRleHRCb3g6OmVuZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24o
bV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgeworICAgICAgICByZXR1cm4gcGF0aC5lbmQo
KTsKKyAgICB9KTsKK30KKworaW5saW5lIHVuc2lnbmVkIFRleHRCb3g6Omxlbmd0aCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0
aCkgeworICAgICAgICByZXR1cm4gcGF0aC5sZW5ndGgoKTsKKyAgICB9KTsKK30KKworaW5saW5l
IHVuc2lnbmVkIFRleHRCb3g6Om9mZnNldEZvclBvc2l0aW9uKGZsb2F0IHgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgWyZdKGF1dG8mIHBhdGgpIHsK
KyAgICAgICAgcmV0dXJuIHBhdGgub2Zmc2V0Rm9yUG9zaXRpb24oeCk7CisgICAgfSk7Cit9CisK
K2lubGluZSBmbG9hdCBUZXh0Qm94Ojpwb3NpdGlvbkZvck9mZnNldCh1bnNpZ25lZCBvZmZzZXQp
IGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgWyZdKGF1
dG8mIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuIHBhdGgucG9zaXRpb25Gb3JPZmZzZXQob2Zmc2V0
KTsKKyAgICB9KTsKK30KKworaW5saW5lIFRleHRCb3hTZWxlY3RhYmxlUmFuZ2UgVGV4dEJveDo6
c2VsZWN0YWJsZVJhbmdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3Bh
dGhWYXJpYW50LCBbJl0oYXV0byYgcGF0aCkgeworICAgICAgICByZXR1cm4gcGF0aC5zZWxlY3Rh
YmxlUmFuZ2UoKTsKKyAgICB9KTsKK30KKworaW5saW5lIFRleHRSdW4gVGV4dEJveDo6Y3JlYXRl
VGV4dFJ1bigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFu
dCwgWyZdKGF1dG8mIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuIHBhdGguY3JlYXRlVGV4dFJ1bigp
OworICAgIH0pOworfQorCit9Cit9CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2Vi
Q29yZTo6SW5saW5lSXRlcmF0b3I6OlRleHRCb3gpCitzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3Qg
V2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveCYgYm94KSB7IHJldHVybiBib3guaXNUZXh0KCk7
IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19CRUdJTihXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yKQorc3RhdGlj
IGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvciYg
Ym94KSB7IHJldHVybiAhYm94IHx8IGJveC0+aXNUZXh0KCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfRU5EKCkKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0
aW9uL0xheW91dEludGVncmF0aW9uQ292ZXJhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmgKaW5kZXggYmQyMzlhZGQyNGVi
MzYyOWVjMWI1NmNhMDI3ODYxZWQwNDUwYjNkZi4uZjM2MGVkNjFkYmU3NzkzMmU1YTg2OWRhODEy
ODc5M2Q5NGQzMTA0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0
aW9uL0xheW91dEludGVncmF0aW9uQ292ZXJhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5oCkBAIC0zMyw2ICszMyw3
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlckJsb2NrRmxvdzsKK2NsYXNz
IFJlbmRlcklubGluZTsKIAogbmFtZXNwYWNlIExheW91dEludGVncmF0aW9uIHsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9u
TGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcAppbmRleCBlNmRiZWZmNDk2ZDdiYzQyYmJhMTRlZjU3
NmUwMTQ3ZWQ4Mzg4MmJiLi40ODg3YWVkZGMyMTZlOWM1YWNjNjgzZWUzNzA5YTYzZjBkYWEwMDM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50
ZWdyYXRpb25MaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcApAQCAtMzkxLDcgKzM5MSw3IEBA
IElubGluZUNvbnRlbnQmIExpbmVMYXlvdXQ6OmVuc3VyZUlubGluZUNvbnRlbnQoKQogICAgIHJl
dHVybiAqbV9pbmxpbmVDb250ZW50OwogfQogCi1JbmxpbmVJdGVyYXRvcjo6VGV4dEJveEl0ZXJh
dG9yIExpbmVMYXlvdXQ6OnRleHRSdW5zRm9yKGNvbnN0IFJlbmRlclRleHQmIHJlbmRlclRleHQp
IGNvbnN0CitJbmxpbmVJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yIExpbmVMYXlvdXQ6OnRleHRC
b3hlc0Zvcihjb25zdCBSZW5kZXJUZXh0JiByZW5kZXJUZXh0KSBjb25zdAogewogICAgIGlmICgh
bV9pbmxpbmVDb250ZW50KQogICAgICAgICByZXR1cm4geyB9OwpAQCAtNDAxLDEwICs0MDEsMTAg
QEAgSW5saW5lSXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvciBMaW5lTGF5b3V0Ojp0ZXh0UnVuc0Zv
cihjb25zdCBSZW5kZXJUZXh0JiByZW5kZXIKICAgICBpZiAoIWZpcnN0SW5kZXgpCiAgICAgICAg
IHJldHVybiB7IH07CiAKLSAgICByZXR1cm4gSW5saW5lSXRlcmF0b3I6OnRleHRSdW5Gb3IoKm1f
aW5saW5lQ29udGVudCwgKmZpcnN0SW5kZXgpOworICAgIHJldHVybiBJbmxpbmVJdGVyYXRvcjo6
dGV4dEJveEZvcigqbV9pbmxpbmVDb250ZW50LCAqZmlyc3RJbmRleCk7CiB9CiAKLUlubGluZUl0
ZXJhdG9yOjpCb3hJdGVyYXRvciBMaW5lTGF5b3V0OjpydW5Gb3IoY29uc3QgUmVuZGVyRWxlbWVu
dCYgcmVuZGVyRWxlbWVudCkgY29uc3QKK0lubGluZUl0ZXJhdG9yOjpCb3hJdGVyYXRvciBMaW5l
TGF5b3V0Ojpib3hGb3IoY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZGVyRWxlbWVudCkgY29uc3QK
IHsKICAgICBpZiAoIW1faW5saW5lQ29udGVudCkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTQx
NCw3ICs0MTQsNyBAQCBJbmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3IgTGluZUxheW91dDo6cnVu
Rm9yKGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlckVsZW1lbgogICAgIGlmICghZmlyc3RJbmRl
eCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIHJldHVybiBJbmxpbmVJdGVyYXRvcjo6cnVu
Rm9yKCptX2lubGluZUNvbnRlbnQsICpmaXJzdEluZGV4KTsKKyAgICByZXR1cm4gSW5saW5lSXRl
cmF0b3I6OmJveEZvcigqbV9pbmxpbmVDb250ZW50LCAqZmlyc3RJbmRleCk7CiB9CiAKIElubGlu
ZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3IgTGluZUxheW91dDo6Zmlyc3RMaW5lKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3Jh
dGlvbkxpbmVMYXlvdXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlv
dXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaAppbmRleCBhMzNkMDZlYjM4ODgyMzcwNjUwMjZmNTQ5
MmU5ODExODVlZTFhNWUyLi44Y2YzYTg0ZTNkMDc4OGJkMmI4ZDJjZjlkYjliMzBmZWQ5ZWFiNGIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50
ZWdyYXRpb25MaW5lTGF5b3V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0
aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5oCkBAIC0yOCw4ICsyOCw4IEBACiAjaWYg
RU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAKICNpbmNsdWRlICJGbG9hdFJlY3Qu
aCIKLSNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckJveC5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJh
dG9yTGluZS5oIgorI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yVGV4dEJveC5oIgogI2luY2x1ZGUg
IkxheW91dEludGVncmF0aW9uQm94VHJlZS5oIgogI2luY2x1ZGUgIkxheW91dFBvaW50LmgiCiAj
aW5jbHVkZSAiTGF5b3V0U3RhdGUuaCIKQEAgLTk2LDggKzk2LDggQEAgcHVibGljOgogICAgIHZv
aWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KTsKICAg
ICBib29sIGhpdFRlc3QoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29u
c3QgSGl0VGVzdExvY2F0aW9uJiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0
LCBIaXRUZXN0QWN0aW9uKTsKIAotICAgIElubGluZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3Ig
dGV4dFJ1bnNGb3IoY29uc3QgUmVuZGVyVGV4dCYpIGNvbnN0OwotICAgIElubGluZUl0ZXJhdG9y
OjpCb3hJdGVyYXRvciBydW5Gb3IoY29uc3QgUmVuZGVyRWxlbWVudCYpIGNvbnN0OworICAgIElu
bGluZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3IgdGV4dEJveGVzRm9yKGNvbnN0IFJlbmRlclRl
eHQmKSBjb25zdDsKKyAgICBJbmxpbmVJdGVyYXRvcjo6Qm94SXRlcmF0b3IgYm94Rm9yKGNvbnN0
IFJlbmRlckVsZW1lbnQmKSBjb25zdDsKICAgICBJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9y
IGZpcnN0TGluZSgpIGNvbnN0OwogICAgIElubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3IgbGFz
dExpbmUoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Nh
cmV0UmVjdENvbXB1dGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DYXJldFJl
Y3RDb21wdXRhdGlvbi5jcHAKaW5kZXggOTk4MDg3ODQxODQzZTVlOTM3YjY3NjA1MDAzNDJlYzVj
Y2NjNGUzMi4uM2I3MDJhOTdmMDRhMWQwMmQxOGY1Mzg0NjYyYTViMzczOWY0NWY5NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NhcmV0UmVjdENvbXB1dGF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2FyZXRSZWN0Q29tcHV0YXRpb24uY3BwCkBA
IC0yNyw4ICsyNyw4IEBACiAjaW5jbHVkZSAiQ2FyZXRSZWN0Q29tcHV0YXRpb24uaCIKIAogI2lu
Y2x1ZGUgIkVkaXRpbmcuaCIKLSNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckJveC5oIgogI2luY2x1
ZGUgIklubGluZUl0ZXJhdG9yTGluZS5oIgorI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yVGV4dEJv
eC5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrRmxvdy5oIgogI2luY2x1ZGUgIlJlbmRlcklubGlu
ZS5oIgogI2luY2x1ZGUgIlJlbmRlckxpbmVCcmVhay5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZVRleHRCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9MZWdhY3lJbmxpbmVUZXh0Qm94LmgKaW5kZXggOGE1Y2VmNjFmNjQyYzJhZTdhNjJm
MmQ5NjNkZTgzYjU3MTEzYTg1Yy4uNjQ0ZDkyNWI0YTUwYTg0YTBjMzBjZWQ2NDVmZTdhODI4Y2Rk
MmJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZVRl
eHRCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lVGV4dEJv
eC5oCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlbmRlckNv
bWJpbmVUZXh0OwogCiBuYW1lc3BhY2UgSW5saW5lSXRlcmF0b3IgewotY2xhc3MgQm94SXRlcmF0
b3JMZWdhY3lQYXRoOworY2xhc3MgQm94TGVnYWN5UGF0aDsKIH0KIAogY2xhc3MgTGVnYWN5SW5s
aW5lVGV4dEJveCA6IHB1YmxpYyBMZWdhY3lJbmxpbmVCb3ggewpAQCAtMTU0LDcgKzE1NCw3IEBA
IHB1YmxpYzoKICAgICBib29sIGhhc01hcmtlcnMoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBm
cmllbmQgY2xhc3MgSW5saW5lSXRlcmF0b3I6OkJveEl0ZXJhdG9yTGVnYWN5UGF0aDsKKyAgICBm
cmllbmQgY2xhc3MgSW5saW5lSXRlcmF0b3I6OkJveExlZ2FjeVBhdGg7CiAgICAgZnJpZW5kIGNs
YXNzIFRleHRCb3hQYWludGVyOwogCiAgICAgY29uc3QgUmVuZGVyQ29tYmluZVRleHQqIGNvbWJp
bmVkVGV4dCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xl
Z2FjeUxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUxpbmVM
YXlvdXQuY3BwCmluZGV4IGVlOGIwNDRjYTY5ZDNkYWMyYTUzZjdiZTZkM2UyYTg4MDE1NTFkYWQu
LmVhN2VlMDBkOTYxZTU5NzkyYmUxZDA0YzUzMzMxM2E5OWFlNGQxYmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5TGluZUxheW91dC5jcHAKQEAgLTU0Nyw3ICs1NDcsNyBA
QCBzdGF0aWMgaW5saW5lIHZvaWQgc2V0TG9naWNhbFdpZHRoRm9yVGV4dFJ1bihMZWdhY3lSb290
SW5saW5lQm94KiBsaW5lQm94LCBCaWRpUgogCiAgICAgLy8gSW5jbHVkZSB0ZXh0IGRlY29yYXRp
b24gdmlzdWFsIG92ZXJmbG93IGFzIHBhcnQgb2YgdGhlIGdseXBoIG92ZXJmbG93LgogICAgIGlm
ICghcmVuZGVyZXIuc3R5bGUoKS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpLmlzRW1wdHkoKSkK
LSAgICAgICAgZ2x5cGhPdmVyZmxvdy5leHRlbmRUbyh2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRp
b25zKHJ1bi0+Ym94KCktPmxpbmVTdHlsZSgpLCBJbmxpbmVJdGVyYXRvcjo6dGV4dFJ1bkZvcihk
b3duY2FzdDxMZWdhY3lJbmxpbmVUZXh0Qm94PihydW4tPmJveCgpKSkpKTsKKyAgICAgICAgZ2x5
cGhPdmVyZmxvdy5leHRlbmRUbyh2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKHJ1bi0+Ym94
KCktPmxpbmVTdHlsZSgpLCBJbmxpbmVJdGVyYXRvcjo6dGV4dEJveEZvcihkb3duY2FzdDxMZWdh
Y3lJbmxpbmVUZXh0Qm94PihydW4tPmJveCgpKSkpKTsKIAogICAgIGlmICghZ2x5cGhPdmVyZmxv
dy5pc0VtcHR5KCkpIHsKICAgICAgICAgQVNTRVJUKHJ1bi0+Ym94KCktPmJlaGF2ZXNMaWtlVGV4
dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAppbmRleCAw
NmNjZjBmYjhmZjk4MWEwZGJhNzc3ZTYxZWUyYzYyOThhMjA0NDQwLi45ODJmZWM0NDA2NGVjNThm
NWE2MmNhNmE5MDNjNzE0MjE3NWRkZjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuY3BwCkBAIC00MCw4ICs0MCw4IEBACiAjaW5jbHVkZSAiSFRNTEh0bWxFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgotI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yQm94LmgiCiAjaW5jbHVkZSAiSW5saW5lSXRl
cmF0b3JMaW5lLmgiCisjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JUZXh0Qm94LmgiCiAjaW5jbHVk
ZSAiTGVuZ3RoRnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBh
Z2UuaCIKQEAgLTE2NDQsMTMgKzE2NDQsMTMgQEAgYm9vbCBSZW5kZXJFbGVtZW50OjpnZXRMZWFk
aW5nQ29ybmVyKEZsb2F0UG9pbnQmIHBvaW50LCBib29sJiBpbnNpZGVGaXhlZCkgY29uc3QKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHAtPm5vZGUo
KSAmJiBwLT5ub2RlKCkgPT0gZWxlbWVudCgpICYmIGlzPFJlbmRlclRleHQ+KCpvKSAmJiAhSW5s
aW5lSXRlcmF0b3I6OmZpcnN0VGV4dFJ1bkZvcihkb3duY2FzdDxSZW5kZXJUZXh0PigqbykpKSB7
CisgICAgICAgIGlmIChwLT5ub2RlKCkgJiYgcC0+bm9kZSgpID09IGVsZW1lbnQoKSAmJiBpczxS
ZW5kZXJUZXh0PigqbykgJiYgIUlubGluZUl0ZXJhdG9yOjpmaXJzdFRleHRCb3hGb3IoZG93bmNh
c3Q8UmVuZGVyVGV4dD4oKm8pKSkgewogICAgICAgICAgICAgLy8gZG8gbm90aGluZyAtIHNraXAg
dW5yZW5kZXJlZCB3aGl0ZXNwYWNlIHRoYXQgaXMgYSBjaGlsZCBvciBuZXh0IHNpYmxpbmcgb2Yg
dGhlIGFuY2hvcgogICAgICAgICB9IGVsc2UgaWYgKGlzPFJlbmRlclRleHQ+KCpvKSB8fCBvLT5p
c1JlcGxhY2VkKCkpIHsKICAgICAgICAgICAgIHBvaW50ID0gRmxvYXRQb2ludCgpOwogICAgICAg
ICAgICAgaWYgKGlzPFJlbmRlclRleHQ+KCpvKSkgewogICAgICAgICAgICAgICAgIGF1dG8mIHRl
eHRSZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclRleHQ+KCpvKTsKLSAgICAgICAgICAgICAgICBp
ZiAoYXV0byBydW4gPSBJbmxpbmVJdGVyYXRvcjo6Zmlyc3RUZXh0UnVuRm9yKHRleHRSZW5kZXJl
cikpCisgICAgICAgICAgICAgICAgaWYgKGF1dG8gcnVuID0gSW5saW5lSXRlcmF0b3I6OmZpcnN0
VGV4dEJveEZvcih0ZXh0UmVuZGVyZXIpKQogICAgICAgICAgICAgICAgICAgICBwb2ludC5tb3Zl
KHRleHRSZW5kZXJlci5saW5lc0JvdW5kaW5nQm94KCkueCgpLCBydW4tPmxpbmUoKS0+dG9wKCkp
OwogICAgICAgICAgICAgfSBlbHNlIGlmIChpczxSZW5kZXJCb3g+KCpvKSkKICAgICAgICAgICAg
ICAgICBwb2ludC5tb3ZlQnkoZG93bmNhc3Q8UmVuZGVyQm94PigqbykubG9jYXRpb24oKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRleCBhYzI0YzU2YWRhZWMy
YjkxZmExZmNlMzg2NWU1NzJkZTFmNTU5OGFjLi4wYjk4M2NlY2I5YmUyOWYzODc5OTY4MGE2MTdk
ZTE2ODgwOTczMzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAK
QEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6Y29sbGVjdFNlbGVjdGlvbkdlb21l
dHJpZXMoVmVjdG9yPFNlbGVjdGlvbkdlb21ldHJ5PiYgZ2VvbWV0cmkKICAgICBib29sIGlzRmly
c3RPbkxpbmUgPSBmYWxzZTsKICAgICBib29sIGlzTGFzdE9uTGluZSA9IGZhbHNlOwogCi0gICAg
YXV0byBydW4gPSBJbmxpbmVJdGVyYXRvcjo6cnVuRm9yKCp0aGlzKTsKKyAgICBhdXRvIHJ1biA9
IElubGluZUl0ZXJhdG9yOjpib3hGb3IoKnRoaXMpOwogICAgIGlmICghcnVuKSB7CiAgICAgICAg
IC8vIFRoaXMgaXMgYSBibG9jayBpbWFnZS4KICAgICAgICAgaW1hZ2VSZWN0ID0gSW50UmVjdCgw
LCAwLCB3aWR0aCgpLCBoZWlnaHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaW5lQnJlYWsuY3BwCmluZGV4IDcxODgyNjMxMDVlYjdmOGQwNTMzMzQzODU0ZTMxYzM4MDIw
MTU3NTguLmMxYzk1YjEwOTQ0MDI0MjA5NTQxMWE1YmU0YzU5ODczZmFmYTkwMTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCkBAIC0xNDQsNyArMTQ0
LDcgQEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRlckxpbmVCcmVhazo6cG9zaXRpb25Gb3JQb2ludChj
b25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFJlbmQKIAogSW50UmVjdCBSZW5kZXJMaW5lQnJlYWs6
OmxpbmVzQm91bmRpbmdCb3goKSBjb25zdAogewotICAgIGF1dG8gcnVuID0gSW5saW5lSXRlcmF0
b3I6OnJ1bkZvcigqdGhpcyk7CisgICAgYXV0byBydW4gPSBJbmxpbmVJdGVyYXRvcjo6Ym94Rm9y
KCp0aGlzKTsKICAgICBpZiAoIXJ1bikKICAgICAgICAgcmV0dXJuIHsgfTsKIApAQCAtMTUzLDcg
KzE1Myw3IEBAIEludFJlY3QgUmVuZGVyTGluZUJyZWFrOjpsaW5lc0JvdW5kaW5nQm94KCkgY29u
c3QKIAogdm9pZCBSZW5kZXJMaW5lQnJlYWs6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+
JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdAogewot
ICAgIGF1dG8gYm94ID0gSW5saW5lSXRlcmF0b3I6OnJ1bkZvcigqdGhpcyk7CisgICAgYXV0byBi
b3ggPSBJbmxpbmVJdGVyYXRvcjo6Ym94Rm9yKCp0aGlzKTsKICAgICBpZiAoIWJveCkKICAgICAg
ICAgcmV0dXJuOwogCkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBSZW5kZXJMaW5lQnJlYWs6OmFi
c29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGEK
IAogdm9pZCBSZW5kZXJMaW5lQnJlYWs6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4m
IHF1YWRzLCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKLSAgICBhdXRvIGJveCA9IElubGluZUl0
ZXJhdG9yOjpydW5Gb3IoKnRoaXMpOworICAgIGF1dG8gYm94ID0gSW5saW5lSXRlcmF0b3I6OmJv
eEZvcigqdGhpcyk7CiAgICAgaWYgKCFib3gpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTgwLDcg
KzE4MCw3IEBAIHZvaWQgUmVuZGVyTGluZUJyZWFrOjp1cGRhdGVGcm9tU3R5bGUoKQogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIFJlbmRlckxpbmVCcmVhazo6Y29sbGVjdFNlbGVjdGlv
bkdlb21ldHJpZXMoVmVjdG9yPFNlbGVjdGlvbkdlb21ldHJ5PiYgcmVjdHMsIHVuc2lnbmVkLCB1
bnNpZ25lZCkKIHsKLSAgICBhdXRvIHJ1biA9IElubGluZUl0ZXJhdG9yOjpydW5Gb3IoKnRoaXMp
OworICAgIGF1dG8gcnVuID0gSW5saW5lSXRlcmF0b3I6OmJveEZvcigqdGhpcyk7CiAKICAgICBp
ZiAoIXJ1bikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSZXBsYWNlZC5jcHAKaW5kZXggOWQyOWI3M2Y0ZGRkZmU1ZThmM2U2MDRmOTdmM2RmNzgzZjI1
NzVmYS4uN2VlOTQ0MjZjYzUyYmFkYjQwZmZjNGNiN2NmYmQxMjc3NGJjZTczYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCkBAIC02ODksNyArNjg5LDcg
QEAgdm9pZCBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKQog
VmlzaWJsZVBvc2l0aW9uIFJlbmRlclJlcGxhY2VkOjpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExh
eW91dFBvaW50JiBwb2ludCwgY29uc3QgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqIGZyYWdtZW50
KQogewogICAgIGF1dG8gW3RvcCwgYm90dG9tXSA9IFsmXSB7Ci0gICAgICAgIGlmIChhdXRvIHJ1
biA9IElubGluZUl0ZXJhdG9yOjpydW5Gb3IoKnRoaXMpKSB7CisgICAgICAgIGlmIChhdXRvIHJ1
biA9IElubGluZUl0ZXJhdG9yOjpib3hGb3IoKnRoaXMpKSB7CiAgICAgICAgICAgICBhdXRvIGxp
bmUgPSBydW4tPmxpbmUoKTsKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihsaW5l
LT5zZWxlY3Rpb25Ub3BGb3JIaXRUZXN0aW5nKCksIGxpbmUtPnNlbGVjdGlvbkJvdHRvbSgpKTsK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4IGZj
NDZkNWQwZWZhY2UyOTk0MGNmMTYyMzJiYTQ5YWRlODNiNzlkOGEuLmRjNTJlZjIyMWUxYWVmYWY1
Mjk2N2RjZDMwM2NmMzYzYjk5ZTNhZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dC5jcHAKQEAgLTM1LDggKzM1LDggQEAKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNs
dWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSHlwaGVuYXRpb24uaCIKLSNpbmNs
dWRlICJJbmxpbmVJdGVyYXRvckJveC5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTGluZS5o
IgorI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yVGV4dEJveC5oIgogI2luY2x1ZGUgIklubGluZVJ1
bkFuZE9mZnNldC5oIgogI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9uTGluZUxheW91dC5oIgog
I2luY2x1ZGUgIkxlZ2FjeUVsbGlwc2lzQm94LmgiCkBAIC0zMDcsNyArMzA3LDcgQEAgU3RyaW5n
IFJlbmRlclRleHQ6Om9yaWdpbmFsVGV4dCgpIGNvbnN0CiAKIHZvaWQgUmVuZGVyVGV4dDo6YWJz
b2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWNj
dW11bGF0ZWRPZmZzZXQpIGNvbnN0CiB7Ci0gICAgZm9yIChhdXRvJiBydW4gOiBJbmxpbmVJdGVy
YXRvcjo6dGV4dFJ1bnNGb3IoKnRoaXMpKSB7CisgICAgZm9yIChhdXRvJiBydW4gOiBJbmxpbmVJ
dGVyYXRvcjo6dGV4dEJveGVzRm9yKCp0aGlzKSkgewogICAgICAgICBhdXRvIHJlY3QgPSBydW4u
cmVjdCgpOwogICAgICAgICByZWN0cy5hcHBlbmQoZW5jbG9zaW5nSW50UmVjdChGbG9hdFJlY3Qo
YWNjdW11bGF0ZWRPZmZzZXQgKyByZWN0LmxvY2F0aW9uKCksIHJlY3Quc2l6ZSgpKSkpOwogICAg
IH0KQEAgLTMyNiw3ICszMjYsNyBAQCBWZWN0b3I8SW50UmVjdD4gUmVuZGVyVGV4dDo6YWJzb2x1
dGVSZWN0c0ZvclJhbmdlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQsCiAvLyBGdWxsIGFu
bm90YXRpb25zIGFyZSBhZGRlZCBpbiB0aGlzIGNsYXNzLgogdm9pZCBSZW5kZXJUZXh0Ojpjb2xs
ZWN0U2VsZWN0aW9uR2VvbWV0cmllcyhWZWN0b3I8U2VsZWN0aW9uR2VvbWV0cnk+JiByZWN0cywg
dW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCkKIHsKLSAgICBmb3IgKGF1dG8gcnVuID0gSW5s
aW5lSXRlcmF0b3I6OmZpcnN0VGV4dFJ1bkZvcigqdGhpcyk7IHJ1bjsgcnVuID0gcnVuLnRyYXZl
cnNlTmV4dFRleHRSdW4oKSkgeworICAgIGZvciAoYXV0byBydW4gPSBJbmxpbmVJdGVyYXRvcjo6
Zmlyc3RUZXh0Qm94Rm9yKCp0aGlzKTsgcnVuOyBydW4gPSBydW4udHJhdmVyc2VOZXh0VGV4dEJv
eCgpKSB7CiAgICAgICAgIExheW91dFJlY3QgcmVjdDsKICAgICAgICAgaWYgKHN0YXJ0IDw9IHJ1
bi0+c3RhcnQoKSAmJiBydW4tPmVuZCgpIDw9IGVuZCkKICAgICAgICAgICAgIHJlY3QgPSBydW4t
PnNlbGVjdGlvblJlY3Qoc3RhcnQsIGVuZCk7CkBAIC00MjgsNyArNDI4LDcgQEAgZW51bSBjbGFz
cyBDbGlwcGluZ09wdGlvbiB7IE5vQ2xpcHBpbmcsIENsaXBUb0VsbGlwc2lzIH07CiBzdGF0aWMg
VmVjdG9yPEZsb2F0UXVhZD4gY29sbGVjdEFic29sdXRlUXVhZHMoY29uc3QgUmVuZGVyVGV4dCYg
dGV4dFJlbmRlcmVyLCBib29sKiB3YXNGaXhlZCwgQ2xpcHBpbmdPcHRpb24gY2xpcHBpbmcpCiB7
CiAgICAgVmVjdG9yPEZsb2F0UXVhZD4gcXVhZHM7Ci0gICAgZm9yIChhdXRvJiBydW4gOiBJbmxp
bmVJdGVyYXRvcjo6dGV4dFJ1bnNGb3IodGV4dFJlbmRlcmVyKSkgeworICAgIGZvciAoYXV0byYg
cnVuIDogSW5saW5lSXRlcmF0b3I6OnRleHRCb3hlc0Zvcih0ZXh0UmVuZGVyZXIpKSB7CiAgICAg
ICAgIGF1dG8gYm91bmRhcmllcyA9IGJvdW5kYXJpZXNGb3JUZXh0UnVuKHJ1bik7CiAKICAgICAg
ICAgLy8gU2hvcnRlbiB0aGUgd2lkdGggb2YgdGhpcyB0ZXh0IGJveCBpZiBpdCBlbmRzIGluIGFu
IGVsbGlwc2lzLgpAQCAtNDkwLDcgKzQ5MCw3IEBAIFZlY3RvcjxGbG9hdFF1YWQ+IFJlbmRlclRl
eHQ6OmFic29sdXRlUXVhZHNGb3JSYW5nZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kCiAg
ICAgZW5kID0gc3RkOjptaW4oZW5kLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSU5UX01BWCkpOwog
CiAgICAgVmVjdG9yPEZsb2F0UXVhZD4gcXVhZHM7Ci0gICAgZm9yIChhdXRvJiBydW4gOiBJbmxp
bmVJdGVyYXRvcjo6dGV4dFJ1bnNGb3IoKnRoaXMpKSB7CisgICAgZm9yIChhdXRvJiBydW4gOiBJ
bmxpbmVJdGVyYXRvcjo6dGV4dEJveGVzRm9yKCp0aGlzKSkgewogICAgICAgICBpZiAoaWdub3Jl
RW1wdHlUZXh0U2VsZWN0aW9ucyAmJiAhcnVuLnNlbGVjdGFibGVSYW5nZSgpLmludGVyc2VjdHMo
c3RhcnQsIGVuZCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKHN0YXJ0IDw9
IHJ1bi5zdGFydCgpICYmIHJ1bi5lbmQoKSA8PSBlbmQpIHsKQEAgLTY1NCw3ICs2NTQsNyBAQCBz
dGF0aWMgVmlzaWJsZVBvc2l0aW9uIGNyZWF0ZVZpc2libGVQb3NpdGlvbkFmdGVyQWRqdXN0aW5n
T2Zmc2V0Rm9yQmlEaShjb25zdCBJbgogCiBWaXNpYmxlUG9zaXRpb24gUmVuZGVyVGV4dDo6cG9z
aXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIGNvbnN0IFJlbmRlckZyYWdt
ZW50Q29udGFpbmVyKikKIHsKLSAgICBhdXRvIGZpcnN0UnVuID0gSW5saW5lSXRlcmF0b3I6OmZp
cnN0VGV4dFJ1bkZvcigqdGhpcyk7CisgICAgYXV0byBmaXJzdFJ1biA9IElubGluZUl0ZXJhdG9y
OjpmaXJzdFRleHRCb3hGb3IoKnRoaXMpOwogCiAgICAgaWYgKCFmaXJzdFJ1biB8fCAhdGV4dCgp
Lmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9uKDAsIEFmZmlu
aXR5OjpEb3duc3RyZWFtKTsKQEAgLTY2NCw5ICs2NjQsOSBAQCBWaXNpYmxlUG9zaXRpb24gUmVu
ZGVyVGV4dDo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIGNvbnN0
IFJlbgogICAgIGJvb2wgYmxvY2tzQXJlRmxpcHBlZCA9IHN0eWxlKCkuaXNGbGlwcGVkQmxvY2tz
V3JpdGluZ01vZGUoKTsKIAogICAgIElubGluZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3IgbGFz
dFJ1bjsKLSAgICBmb3IgKGF1dG8gcnVuID0gZmlyc3RSdW47IHJ1bjsgcnVuLnRyYXZlcnNlTmV4
dFRleHRSdW4oKSkgeworICAgIGZvciAoYXV0byBydW4gPSBmaXJzdFJ1bjsgcnVuOyBydW4udHJh
dmVyc2VOZXh0VGV4dEJveCgpKSB7CiAgICAgICAgIGlmIChydW4tPmlzTGluZUJyZWFrKCkgJiYg
IXJ1bi0+cHJldmlvdXNPbkxpbmUoKSAmJiBydW4tPm5leHRPbkxpbmUoKSAmJiAhcnVuLT5uZXh0
T25MaW5lKCktPmlzTGluZUJyZWFrKCkpCi0gICAgICAgICAgICBydW4udHJhdmVyc2VOZXh0VGV4
dFJ1bigpOworICAgICAgICAgICAgcnVuLnRyYXZlcnNlTmV4dFRleHRCb3goKTsKIAogICAgICAg
ICBhdXRvIGxpbmUgPSBydW4tPmxpbmUoKTsKICAgICAgICAgTGF5b3V0VW5pdCB0b3AgPSBzdGQ6
Om1pbihsaW5lLT5zZWxlY3Rpb25Ub3BGb3JIaXRUZXN0aW5nKCksIGxpbmUtPnRvcCgpKTsKQEAg
LTEyNzIsNyArMTI3Miw3IEBAIFZlY3RvcjxzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPj4g
UmVuZGVyVGV4dDo6ZHJhZ2dlZENvbnRlbnRSYW5nZXNCZXR3ZWVuT2ZmCiAKIEludFBvaW50IFJl
bmRlclRleHQ6OmZpcnN0UnVuTG9jYXRpb24oKSBjb25zdAogewotICAgIGF1dG8gZmlyc3QgPSBJ
bmxpbmVJdGVyYXRvcjo6Zmlyc3RUZXh0UnVuRm9yKCp0aGlzKTsKKyAgICBhdXRvIGZpcnN0ID0g
SW5saW5lSXRlcmF0b3I6OmZpcnN0VGV4dEJveEZvcigqdGhpcyk7CiAgICAgaWYgKCFmaXJzdCkK
ICAgICAgICAgcmV0dXJuIHsgfTsKICAgICByZXR1cm4gSW50UG9pbnQoZmlyc3QtPnJlY3QoKS5s
b2NhdGlvbigpKTsKQEAgLTE1NzYsNyArMTU3Niw3IEBAIGZsb2F0IFJlbmRlclRleHQ6OndpZHRo
KHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbiwgY29uc3QgRm9udENhc2NhZGUmIGYsIGZsb2F0
CiAKIEludFJlY3QgUmVuZGVyVGV4dDo6bGluZXNCb3VuZGluZ0JveCgpIGNvbnN0CiB7Ci0gICAg
YXV0byBmaXJzdCA9IElubGluZUl0ZXJhdG9yOjpmaXJzdFRleHRSdW5Gb3IoKnRoaXMpOworICAg
IGF1dG8gZmlyc3QgPSBJbmxpbmVJdGVyYXRvcjo6Zmlyc3RUZXh0Qm94Rm9yKCp0aGlzKTsKICAg
ICBpZiAoIWZpcnN0KQogICAgICAgICByZXR1cm4geyB9OwogCkBAIC0xNjM0LDcgKzE2MzQsNyBA
QCBMYXlvdXRSZWN0IFJlbmRlclRleHQ6OmNvbGxlY3RTZWxlY3Rpb25HZW9tZXRyaWVzRm9yTGlu
ZUJveGVzKGNvbnN0IFJlbmRlckxheWVyTQogCiAgICAgTGF5b3V0UmVjdCByZXN1bHRSZWN0Owog
Ci0gICAgZm9yIChhdXRvJiBydW4gOiBJbmxpbmVJdGVyYXRvcjo6dGV4dFJ1bnNGb3IoKnRoaXMp
KSB7CisgICAgZm9yIChhdXRvJiBydW4gOiBJbmxpbmVJdGVyYXRvcjo6dGV4dEJveGVzRm9yKCp0
aGlzKSkgewogICAgICAgICBMYXlvdXRSZWN0IHJlY3Q7CiAgICAgICAgIHJlY3QudW5pdGUocnVu
LnNlbGVjdGlvblJlY3Qoc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkpOwogICAgICAgICByZWN0LnVu
aXRlKGVsbGlwc2lzUmVjdEZvclRleHRSdW4ocnVuLCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KSk7
CkBAIC0xNjY0LDcgKzE2NjQsNyBAQCBMYXlvdXRSZWN0IFJlbmRlclRleHQ6OnNlbGVjdGlvblJl
Y3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcAogCiBpbnQgUmVu
ZGVyVGV4dDo6Y2FyZXRNaW5PZmZzZXQoKSBjb25zdAogewotICAgIGF1dG8gZmlyc3QgPSBJbmxp
bmVJdGVyYXRvcjo6Zmlyc3RUZXh0UnVuRm9yKCp0aGlzKTsKKyAgICBhdXRvIGZpcnN0ID0gSW5s
aW5lSXRlcmF0b3I6OmZpcnN0VGV4dEJveEZvcigqdGhpcyk7CiAgICAgaWYgKCFmaXJzdCkKICAg
ICAgICAgcmV0dXJuIDA7CiAKQEAgLTE2NzcsNyArMTY3Nyw3IEBAIGludCBSZW5kZXJUZXh0Ojpj
YXJldE1pbk9mZnNldCgpIGNvbnN0CiAKIGludCBSZW5kZXJUZXh0OjpjYXJldE1heE9mZnNldCgp
IGNvbnN0CiB7Ci0gICAgYXV0byBmaXJzdCA9IElubGluZUl0ZXJhdG9yOjpmaXJzdFRleHRSdW5G
b3IoKnRoaXMpOworICAgIGF1dG8gZmlyc3QgPSBJbmxpbmVJdGVyYXRvcjo6Zmlyc3RUZXh0Qm94
Rm9yKCp0aGlzKTsKICAgICBpZiAoIWZpcnN0KQogICAgICAgICByZXR1cm4gdGV4dCgpLmxlbmd0
aCgpOwogCkBAIC0xNjkxLDcgKzE2OTEsNyBAQCBpbnQgUmVuZGVyVGV4dDo6Y2FyZXRNYXhPZmZz
ZXQoKSBjb25zdAogdW5zaWduZWQgUmVuZGVyVGV4dDo6Y291bnRSZW5kZXJlZENoYXJhY3Rlck9m
ZnNldHNVbnRpbCh1bnNpZ25lZCBvZmZzZXQpIGNvbnN0CiB7CiAgICAgdW5zaWduZWQgcmVzdWx0
ID0gMDsKLSAgICBmb3IgKGF1dG8mIHJ1biA6IElubGluZUl0ZXJhdG9yOjp0ZXh0UnVuc0Zvcigq
dGhpcykpIHsKKyAgICBmb3IgKGF1dG8mIHJ1biA6IElubGluZUl0ZXJhdG9yOjp0ZXh0Qm94ZXNG
b3IoKnRoaXMpKSB7CiAgICAgICAgIGF1dG8gc3RhcnQgPSBydW4uc3RhcnQoKTsKICAgICAgICAg
YXV0byBsZW5ndGggPSBydW4ubGVuZ3RoKCk7CiAgICAgICAgIGlmIChvZmZzZXQgPCBzdGFydCkK
QEAgLTE3MDgsNyArMTcwOCw3IEBAIHVuc2lnbmVkIFJlbmRlclRleHQ6OmNvdW50UmVuZGVyZWRD
aGFyYWN0ZXJPZmZzZXRzVW50aWwodW5zaWduZWQgb2Zmc2V0KSBjb25zdAogZW51bSBjbGFzcyBP
ZmZzZXRUeXBlIHsgQ2hhcmFjdGVyLCBDYXJldCB9Owogc3RhdGljIGJvb2wgY29udGFpbnNPZmZz
ZXQoY29uc3QgUmVuZGVyVGV4dCYgdGV4dCwgdW5zaWduZWQgb2Zmc2V0LCBPZmZzZXRUeXBlIHR5
cGUpCiB7Ci0gICAgZm9yIChhdXRvIGJveCA9IElubGluZUl0ZXJhdG9yOjpmaXJzdFRleHRSdW5J
blRleHRPcmRlckZvcih0ZXh0KTsgYm94OyBib3gudHJhdmVyc2VOZXh0VGV4dFJ1bkluVGV4dE9y
ZGVyKCkpIHsKKyAgICBmb3IgKGF1dG8gYm94ID0gSW5saW5lSXRlcmF0b3I6OmZpcnN0VGV4dEJv
eEluVGV4dE9yZGVyRm9yKHRleHQpOyBib3g7IGJveC50cmF2ZXJzZU5leHRUZXh0Qm94SW5UZXh0
T3JkZXIoKSkgewogICAgICAgICBhdXRvIHN0YXJ0ID0gYm94LT5zdGFydCgpOwogICAgICAgICBp
ZiAob2Zmc2V0IDwgc3RhcnQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNzM3LDcg
KzE3MzcsNyBAQCBib29sIFJlbmRlclRleHQ6OmNvbnRhaW5zQ2FyZXRPZmZzZXQodW5zaWduZWQg
b2Zmc2V0KSBjb25zdAogCiBib29sIFJlbmRlclRleHQ6Omhhc1JlbmRlcmVkVGV4dCgpIGNvbnN0
CiB7Ci0gICAgZm9yIChhdXRvJiBib3ggOiBJbmxpbmVJdGVyYXRvcjo6dGV4dFJ1bnNGb3IoKnRo
aXMpKSB7CisgICAgZm9yIChhdXRvJiBib3ggOiBJbmxpbmVJdGVyYXRvcjo6dGV4dEJveGVzRm9y
KCp0aGlzKSkgewogICAgICAgICBpZiAoYm94Lmxlbmd0aCgpKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRyZWVBc1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1Rl
eHQuY3BwCmluZGV4IGQxMGE0ZDI4MjgwODA3NzAwNDcwZDhjZjM5YWU3MDBlNWI0YjgwNjkuLmI3
ODE3MzFjODJlZWVjOTE2NDcwNThhMDE4OTJmNjJmYmY4NTQyOTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKICNp
bmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUg
IkhUTUxTcGFuRWxlbWVudC5oIgotI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yQm94LmgiCisjaW5j
bHVkZSAiSW5saW5lSXRlcmF0b3JUZXh0Qm94LmgiCiAjaW5jbHVkZSAiTGVnYWN5SW5saW5lVGV4
dEJveC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQcmludENvbnRleHQuaCIK
QEAgLTI0MCwxMyArMjQwLDEzIEBAIHZvaWQgUmVuZGVyVHJlZUFzVGV4dDo6d3JpdGVSZW5kZXJP
YmplY3QoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlck9iamVjdCYgbywKICAgICAgICAgLy8g
bWFueSB0ZXN0IHJlc3VsdHMuCiAgICAgICAgIGNvbnN0IFJlbmRlclRleHQmIHRleHQgPSBkb3du
Y2FzdDxSZW5kZXJUZXh0PihvKTsKICAgICAgICAgciA9IEludFJlY3QodGV4dC5maXJzdFJ1bkxv
Y2F0aW9uKCksIHRleHQubGluZXNCb3VuZGluZ0JveCgpLnNpemUoKSk7Ci0gICAgICAgIGlmICgh
SW5saW5lSXRlcmF0b3I6OmZpcnN0VGV4dFJ1bkZvcih0ZXh0KSkKKyAgICAgICAgaWYgKCFJbmxp
bmVJdGVyYXRvcjo6Zmlyc3RUZXh0Qm94Rm9yKHRleHQpKQogICAgICAgICAgICAgYWRqdXN0Rm9y
VGFibGVDZWxscyA9IGZhbHNlOwogICAgIH0gZWxzZSBpZiAoby5pc0JSKCkpIHsKICAgICAgICAg
Y29uc3QgUmVuZGVyTGluZUJyZWFrJiBiciA9IGRvd25jYXN0PFJlbmRlckxpbmVCcmVhaz4obyk7
CiAgICAgICAgIEludFJlY3QgbGluZXNCb3ggPSBici5saW5lc0JvdW5kaW5nQm94KCk7CiAgICAg
ICAgIHIgPSBJbnRSZWN0KGxpbmVzQm94LngoKSwgbGluZXNCb3gueSgpLCBsaW5lc0JveC53aWR0
aCgpLCBsaW5lc0JveC5oZWlnaHQoKSk7Ci0gICAgICAgIGlmICghYnIuaW5saW5lQm94V3JhcHBl
cigpICYmICFJbmxpbmVJdGVyYXRvcjo6cnVuRm9yKGJyKSkKKyAgICAgICAgaWYgKCFici5pbmxp
bmVCb3hXcmFwcGVyKCkgJiYgIUlubGluZUl0ZXJhdG9yOjpib3hGb3IoYnIpKQogICAgICAgICAg
ICAgYWRqdXN0Rm9yVGFibGVDZWxscyA9IGZhbHNlOwogICAgIH0gZWxzZSBpZiAoaXM8UmVuZGVy
SW5saW5lPihvKSkgewogICAgICAgICBjb25zdCBSZW5kZXJJbmxpbmUmIGlubGluZUZsb3cgPSBk
b3duY2FzdDxSZW5kZXJJbmxpbmU+KG8pOwpAQCAtNjAxLDcgKzYwMSw3IEBAIHZvaWQgd3JpdGUo
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlck9iamVjdCYgbywgT3B0aW9uU2V0PFJlbmRlckFz
VGV4dEZsYWc+IGJlCiAKICAgICBpZiAoaXM8UmVuZGVyVGV4dD4obykpIHsKICAgICAgICAgYXV0
byYgdGV4dCA9IGRvd25jYXN0PFJlbmRlclRleHQ+KG8pOwotICAgICAgICBmb3IgKGF1dG8mIHJ1
biA6IElubGluZUl0ZXJhdG9yOjp0ZXh0UnVuc0Zvcih0ZXh0KSkgeworICAgICAgICBmb3IgKGF1
dG8mIHJ1biA6IElubGluZUl0ZXJhdG9yOjp0ZXh0Qm94ZXNGb3IodGV4dCkpIHsKICAgICAgICAg
ICAgIHRzIDw8IGluZGVudDsKICAgICAgICAgICAgIHdyaXRlVGV4dFJ1bih0ZXh0LCBydW4pOwog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBh
aW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcApp
bmRleCAzMjNkZTA5ZjNjNmU0YmZmN2I4M2VhZGM1YzRhMDczYTczOTA2ZDEyLi44MDc2Nzk2NzRi
MDkyMDNjN2EzNzQxOWM4MmM1NjNmYWY0YzQzZDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9UZXh0Qm94UGFpbnRlci5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJFZGl0
b3IuaCIKICNpbmNsdWRlICJFdmVudFJlZ2lvbi5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dC5oIgotI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yQm94LmgiCiAjaW5jbHVkZSAiSW5saW5lSXRl
cmF0b3JMaW5lLmgiCiAjaW5jbHVkZSAiTGVnYWN5SW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUg
IlBhaW50SW5mby5oIgpAQCAtNDUsMTQgKzQ0LDE0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFRleHRCb3hQYWludGVyOjpUZXh0Qm94UGFpbnRlcihjb25zdCBMZWdhY3lJbmxpbmVUZXh0Qm94
JiB0ZXh0Qm94LCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50
T2Zmc2V0KQotICAgIDogVGV4dEJveFBhaW50ZXIoSW5saW5lSXRlcmF0b3I6OnRleHRSdW5Gb3Io
JnRleHRCb3gpLCBwYWludEluZm8sIHBhaW50T2Zmc2V0KQorICAgIDogVGV4dEJveFBhaW50ZXIo
SW5saW5lSXRlcmF0b3I6OnRleHRCb3hGb3IoJnRleHRCb3gpLCBwYWludEluZm8sIHBhaW50T2Zm
c2V0KQogewogICAgIG1fZW1waGFzaXNNYXJrRXhpc3RzQW5kSXNBYm92ZSA9IHRleHRCb3guZW1w
aGFzaXNNYXJrRXhpc3RzQW5kSXNBYm92ZShtX3N0eWxlKTsKIH0KIAogI2lmIEVOQUJMRShMQVlP
VVRfRk9STUFUVElOR19DT05URVhUKQogVGV4dEJveFBhaW50ZXI6OlRleHRCb3hQYWludGVyKGNv
bnN0IExheW91dEludGVncmF0aW9uOjpJbmxpbmVDb250ZW50JiBpbmxpbmVDb250ZW50LCBjb25z
dCBJbmxpbmVEaXNwbGF5OjpCb3gmIGJveCwgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvaW50JiBwYWludE9mZnNldCkKLSAgICA6IFRleHRCb3hQYWludGVyKElubGluZUl0ZXJh
dG9yOjp0ZXh0UnVuRm9yKGlubGluZUNvbnRlbnQsIGJveCksIHBhaW50SW5mbywgcGFpbnRPZmZz
ZXQpCisgICAgOiBUZXh0Qm94UGFpbnRlcihJbmxpbmVJdGVyYXRvcjo6dGV4dEJveEZvcihpbmxp
bmVDb250ZW50LCBib3gpLCBwYWludEluZm8sIHBhaW50T2Zmc2V0KQogewogfQogI2VuZGlmCkBA
IC0zNzIsNyArMzcxLDcgQEAgdm9pZCBUZXh0Qm94UGFpbnRlcjo6cGFpbnREZWNvcmF0aW9uKGNv
bnN0IFN0eWxlZE1hcmtlZFRleHQmIG1hcmtlZFRleHQsIGNvbnN0IEYKICAgICBhdXRvIHRleHRE
ZWNvcmF0aW9ucyA9IG1fc3R5bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKTsKICAgICB0ZXh0
RGVjb3JhdGlvbnMuYWRkKFRleHREZWNvcmF0aW9uUGFpbnRlcjo6dGV4dERlY29yYXRpb25zSW5F
ZmZlY3RGb3JTdHlsZShtYXJrZWRUZXh0LnN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGVzKSk7CiAg
ICAgVGV4dERlY29yYXRpb25QYWludGVyIGRlY29yYXRpb25QYWludGVyIHsgY29udGV4dCwgdGV4
dERlY29yYXRpb25zLCBtX3JlbmRlcmVyLCBtX2lzRmlyc3RMaW5lLCBmb250LCBtYXJrZWRUZXh0
LnN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGVzIH07Ci0gICAgZGVjb3JhdGlvblBhaW50ZXIuc2V0
VGV4dEJveEl0ZXJhdG9yKG1fdGV4dEJveCk7CisgICAgZGVjb3JhdGlvblBhaW50ZXIuc2V0VGV4
dEJveChtX3RleHRCb3gpOwogICAgIGRlY29yYXRpb25QYWludGVyLnNldFdpZHRoKHNuYXBwZWRT
ZWxlY3Rpb25SZWN0LndpZHRoKCkpOwogICAgIGRlY29yYXRpb25QYWludGVyLnNldElzSG9yaXpv
bnRhbCh0ZXh0Qm94KCkuaXNIb3Jpem9udGFsKCkpOwogICAgIGlmIChtYXJrZWRUZXh0LnN0eWxl
LnRleHRTaGFkb3cpIHsKQEAgLTQ5NSw3ICs0OTQsNyBAQCBGbG9hdFJlY3QgVGV4dEJveFBhaW50
ZXI6OmNhbGN1bGF0ZVVuaW9uT2ZBbGxEb2N1bWVudE1hcmtlckJvdW5kcyhjb25zdCBMZWdhY3lJ
bgogICAgIEZsb2F0UmVjdCByZXN1bHQ7CiAgICAgYXV0byBtYXJrZWRUZXh0cyA9IE1hcmtlZFRl
eHQ6OmNvbGxlY3RGb3JEb2N1bWVudE1hcmtlcnModGV4dEJveC5yZW5kZXJlcigpLCB0ZXh0Qm94
LnNlbGVjdGFibGVSYW5nZSgpLCBNYXJrZWRUZXh0OjpQYWludFBoYXNlOjpEZWNvcmF0aW9uKTsK
ICAgICBmb3IgKGF1dG8mIG1hcmtlZFRleHQgOiBNYXJrZWRUZXh0OjpzdWJkaXZpZGUobWFya2Vk
VGV4dHMsIE1hcmtlZFRleHQ6Ok92ZXJsYXBTdHJhdGVneTo6RnJvbnRtb3N0KSkKLSAgICAgICAg
cmVzdWx0ID0gdW5pb25SZWN0KHJlc3VsdCwgY2FsY3VsYXRlRG9jdW1lbnRNYXJrZXJCb3VuZHMo
SW5saW5lSXRlcmF0b3I6OnRleHRSdW5Gb3IoJnRleHRCb3gpLCBtYXJrZWRUZXh0KSk7CisgICAg
ICAgIHJlc3VsdCA9IHVuaW9uUmVjdChyZXN1bHQsIGNhbGN1bGF0ZURvY3VtZW50TWFya2VyQm91
bmRzKElubGluZUl0ZXJhdG9yOjp0ZXh0Qm94Rm9yKCZ0ZXh0Qm94KSwgbWFya2VkVGV4dCkpOwog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9UZXh0Qm94UGFpbnRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQ
YWludGVyLmgKaW5kZXggMTFkNzcyOTkxZjQxMDVmMjMxNTNiNDA4MmRiYTEwN2M5YzllMGUzNC4u
YWY4ZDBlZWMxMGM3NzBkYjgwODFjZTFjNTgyMTEyNDliZDAyMTgxMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmgKQEAgLTI1LDcgKzI1LDcgQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCi0jaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JC
b3guaCIKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvclRleHRCb3guaCIKICNpbmNsdWRlICJSZW5k
ZXJPYmplY3QuaCIKICNpbmNsdWRlICJUZXh0Qm94U2VsZWN0YWJsZVJhbmdlLmgiCiAjaW5jbHVk
ZSAiVGV4dFJ1bi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRE
ZWNvcmF0aW9uUGFpbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29y
YXRpb25QYWludGVyLmNwcAppbmRleCA3ZjYwM2E4N2M3NWRlYTk1ODgyZGMwNWUxMTI4YTdmMWE5
ZmIzNDQ3Li5iNTk2ZDNlMDcwYTZhYWM3ZDYyMTkyYTExYjEyMTlhYmFkN2Q2ZWI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcApA
QCAtMjg4LDcgKzI4OCw3IEBAIHZvaWQgVGV4dERlY29yYXRpb25QYWludGVyOjpwYWludFRleHRE
ZWNvcmF0aW9uKGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IEZsCiAgICAgICAgIGlmICht
X2RlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUpKSB7CiAgICAg
ICAgICAgICBmbG9hdCB0ZXh0RGVjb3JhdGlvbkJhc2VGb250U2l6ZSA9IDE2OwogICAgICAgICAg
ICAgYXV0byBkZWZhdWx0R2FwID0gbV9saW5lU3R5bGUuY29tcHV0ZWRGb250U2l6ZSgpIC8gdGV4
dERlY29yYXRpb25CYXNlRm9udFNpemU7Ci0gICAgICAgICAgICBmbG9hdCBvZmZzZXQgPSBjb21w
dXRlVW5kZXJsaW5lT2Zmc2V0KG1fbGluZVN0eWxlLnRleHRVbmRlcmxpbmVQb3NpdGlvbigpLCBt
X2xpbmVTdHlsZS50ZXh0VW5kZXJsaW5lT2Zmc2V0KCksIG1fbGluZVN0eWxlLmZvbnRNZXRyaWNz
KCksIG1fdGV4dFJ1biwgZGVmYXVsdEdhcCk7CisgICAgICAgICAgICBmbG9hdCBvZmZzZXQgPSBj
b21wdXRlVW5kZXJsaW5lT2Zmc2V0KG1fbGluZVN0eWxlLnRleHRVbmRlcmxpbmVQb3NpdGlvbigp
LCBtX2xpbmVTdHlsZS50ZXh0VW5kZXJsaW5lT2Zmc2V0KCksIG1fbGluZVN0eWxlLmZvbnRNZXRy
aWNzKCksIG1fdGV4dEJveCwgZGVmYXVsdEdhcCk7CiAgICAgICAgICAgICBmbG9hdCB3YXZ5T2Zm
c2V0ID0gbV9zdHlsZXMudW5kZXJsaW5lU3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZTo6V2F2
eSA/IG1fd2F2eU9mZnNldCA6IDA7CiAgICAgICAgICAgICBGbG9hdFJlY3QgcmVjdChsb2NhbE9y
aWdpbiwgRmxvYXRTaXplKG1fd2lkdGgsIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzKSk7CiAgICAg
ICAgICAgICByZWN0Lm1vdmUoMCwgb2Zmc2V0ICsgd2F2eU9mZnNldCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmgKaW5kZXggNzc2ZWUwYjNj
ZjYwNzY2ZTg3NzU4NzQxMThiMzBkMjA0ZDM4Njk5Ni4uZWFhZDQwODM1MTBmODNkOGM0ZDRiMmE5
ZDIyN2M1Mjk1YTdkZjE0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Rl
eHREZWNvcmF0aW9uUGFpbnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0
RGVjb3JhdGlvblBhaW50ZXIuaApAQCAtMjQsNyArMjQsNyBAQAogCiAjaW5jbHVkZSAiQ29sb3Iu
aCIKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCi0jaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JCb3gu
aCIKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvclRleHRCb3guaCIKICNpbmNsdWRlICJSZW5kZXJT
dHlsZUNvbnN0YW50cy5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KIApAQCAtNDYsNyAr
NDYsNyBAQCBwdWJsaWM6CiAgICAgc3RydWN0IFN0eWxlczsKICAgICBUZXh0RGVjb3JhdGlvblBh
aW50ZXIoR3JhcGhpY3NDb250ZXh0JiwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiBkZWNvcmF0
aW9ucywgY29uc3QgUmVuZGVyVGV4dCYsIGJvb2wgaXNGaXJzdExpbmUsIGNvbnN0IEZvbnRDYXNj
YWRlJiwgc3RkOjpvcHRpb25hbDxTdHlsZXM+ID0gc3RkOjpudWxsb3B0KTsKICAgICAKLSAgICB2
b2lkIHNldFRleHRCb3hJdGVyYXRvcihJbmxpbmVJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yIHRl
eHRSdW4pIHsgbV90ZXh0UnVuID0gdGV4dFJ1bjsgfQorICAgIHZvaWQgc2V0VGV4dEJveChJbmxp
bmVJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yIHRleHRCb3gpIHsgbV90ZXh0Qm94ID0gdGV4dEJv
eDsgfQogICAgIHZvaWQgc2V0SXNIb3Jpem9udGFsKGJvb2wgaXNIb3Jpem9udGFsKSB7IG1faXNI
b3Jpem9udGFsID0gaXNIb3Jpem9udGFsOyB9CiAgICAgdm9pZCBzZXRXaWR0aChmbG9hdCB3aWR0
aCkgeyBtX3dpZHRoID0gd2lkdGg7IH0KICAgICB2b2lkIHNldFRleHRTaGFkb3coY29uc3QgU2hh
ZG93RGF0YSogdGV4dFNoYWRvdykgeyBtX3NoYWRvdyA9IHRleHRTaGFkb3c7IH0KQEAgLTc5LDcg
Kzc5LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNIb3Jpem9udGFsIHsgdHJ1ZSB9OwogICAg
IGNvbnN0IFNoYWRvd0RhdGEqIG1fc2hhZG93IHsgbnVsbHB0ciB9OwogICAgIGNvbnN0IEZpbHRl
ck9wZXJhdGlvbnMqIG1fc2hhZG93Q29sb3JGaWx0ZXIgeyBudWxscHRyIH07Ci0gICAgSW5saW5l
SXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvciBtX3RleHRSdW47CisgICAgSW5saW5lSXRlcmF0b3I6
OlRleHRCb3hJdGVyYXRvciBtX3RleHRCb3g7CiAgICAgY29uc3QgRm9udENhc2NhZGUmIG1fZm9u
dDsKIAogICAgIFN0eWxlcyBtX3N0eWxlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IDU0OWRlZGQ3M2UzMzUyZDY3ZTZjMzVlMzc4MjU0
NzgwNjExYzBlOTIuLjM4ZmVhZjc2ZDkwYWQ4NDhkYWIxMWFkY2YyYjFlMTVlZWU4MTdiZTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAt
MzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkZsb2F0Um91bmRlZFJlY3QuaCIKICNpbmNsdWRlICJG
b250Q2FzY2FkZS5oIgogI2luY2x1ZGUgIkZvbnRTZWxlY3Rvci5oIgorI2luY2x1ZGUgIklubGlu
ZUl0ZXJhdG9yVGV4dEJveC5oIgogI2luY2x1ZGUgIklubGluZVRleHRCb3hTdHlsZS5oIgogI2lu
Y2x1ZGUgIlBhZ2luYXRpb24uaCIKICNpbmNsdWRlICJRdW90ZXNEYXRhLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcAppbmRleCBjN2IxYzUxNjNmZWU1Zjdk
N2Y0ZDE1NTg1MmFmNTZlZTUyMTZlYTFlLi5iNGM0ZmM0Yjk1MDlmZTc5MjE2YWQzMTczZTFmY2Qz
NjQ1Zjc3OGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94
U3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5j
cHAKQEAgLTI5LDggKzI5LDggQEAKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUg
IkhUTUxBbmNob3JFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0jaW5jbHVkZSAi
SW5saW5lSXRlcmF0b3JCb3guaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmUuaCIKKyNp
bmNsdWRlICJJbmxpbmVJdGVyYXRvclRleHRCb3guaCIKICNpbmNsdWRlICJMZWdhY3lJbmxpbmVU
ZXh0Qm94LmgiCiAjaW5jbHVkZSAiTGVnYWN5Um9vdElubGluZUJveC5oIgogI2luY2x1ZGUgIlJl
bmRlcklubGluZS5oIgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>