<?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>227067</bug_id>
          
          <creation_ts>2021-06-16 07:17:06 -0700</creation_ts>
          <short_desc>[css-scroll-snap] Remove ENABLE_SCROLL_SNAP compile-time option</short_desc>
          <delta_ts>2021-06-24 03:49:43 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Scrolling</component>
          <version>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>
          
          <blocked>221461</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jamesr</cc>
    
    <cc>jbedard</cc>
    
    <cc>joepeck</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>pdr</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1770175</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-06-16 07:17:06 -0700</bug_when>
    <thetext>As discussed in https://lists.webkit.org/pipermail/webkit-dev/2021-June/031904.html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770574</commentid>
    <comment_count>1</comment_count>
      <attachid>431647</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-06-17 03:11:52 -0700</bug_when>
    <thetext>Created attachment 431647
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771913</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-23 07:18:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/79664878&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772207</commentid>
    <comment_count>3</comment_count>
      <attachid>432138</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-06-24 00:25:45 -0700</bug_when>
    <thetext>Created attachment 432138
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772238</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-24 03:49:37 -0700</bug_when>
    <thetext>Committed r279218 (239104@main): &lt;https://commits.webkit.org/239104@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 432138.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431647</attachid>
            <date>2021-06-17 03:11:52 -0700</date>
            <delta_ts>2021-06-24 00:25:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227067-20210617121150.patch</filename>
            <type>text/plain</type>
            <size>104547</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4OTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGFmNjk5MjcxYjFiZWRiMzZjZGYwNGYy
YWRiNzAzNWNmODBkMWY0ZGEuLmIwMzZkZjVjOTE3YjhkMjVlY2Y4NmMwNWVhY2QwYzY1NDRlODhm
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDYtMTYgIE1hcnRpbiBSb2JpbnNvbiAgPG1y
b2JpbnNvbkB3ZWJraXQub3JnPgorCisgICAgICAgIFtjc3Mtc2Nyb2xsLXNuYXBdIFJlbW92ZSBF
TkFCTEVfU0NST0xMX1NOQVAgY29tcGlsZS10aW1lIG9wdGlvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3MDY3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGNvbXBpbGUtdGltZSBFTkFCTEVf
U0NST0xMX1NOQVAgY29uZmlndXJhdGlvbiBvcHRpb24uCisKKyAgICAgICAgKiB3dGYvUGxhdGZv
cm1FbmFibGUuaDogUmVtb3ZlIHRoZSBnbG9iYWwgZmVhdHVyZSBkZWZpbml0aW9uLgorCiAyMDIx
LTA2LTA2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBEZWxldGUg
c29tZSByZWNlbnRseS1vYnNvbGV0ZWQgZmlsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhNzIxYTc0MDBiNjNk
MDk0MWE2OTEyNDk0ZTk3NjU4M2ZkODczYjM3Li5iZGQ2MTVjN2IzM2ZkYWIyYzEwNWFiOTFjMWI2
ZmUwNDM5OTE3MDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI1IEBACisyMDIxLTA2LTE2ICBN
YXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBbY3NzLXNj
cm9sbC1zbmFwXSBSZW1vdmUgRU5BQkxFX1NDUk9MTF9TTkFQIGNvbXBpbGUtdGltZSBvcHRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzA2Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBj
b21waWxlLXRpbWUgRU5BQkxFX1NDUk9MTF9TTkFQIGNvbmZpZ3VyYXRpb24gb3B0aW9uLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBzaG91bGQgbm90IGNoYW5nZSBiZWhhdmlvciBpbiBh
bnkgd2F5LgorCisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvclByb3Bl
cnR5SW5TdHlsZSk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaDoK
KyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydGllcy5qc29uOgorICAgICAgICAqIGNzcy9DU1NWYWx1
ZUtleXdvcmRzLmluOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlU2luZ2xlVmFsdWUp
OgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3gpOgor
ICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6dXBkYXRlU2Nyb2xsaW5nQ29vcmRpbmF0b3JTY3JvbGxTbmFwUHJvcGVydGllcyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnBlcmZvcm1Qb3N0TGF5b3V0VGFza3MpOgor
ICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9tYWMvRXZlbnRIYW5k
bGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpwcm9jZXNzV2hlZWxF
dmVudEZvclNjcm9sbFNuYXApOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0U3RhdGVTY3JvbGxpbmdO
b2RlU25hcE9mZnNldHNBc0Zsb2F0KToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6OnNldFNjcm9sbGluZ05vZGVTY3JvbGxhYmxlQXJlYUdlb21ldHJ5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZVNjcm9sbFNu
YXBQcm9wZXJ0aWVzV2l0aEZyYW1lVmlldyk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXN5
bmNTY3JvbGxpbmdDb29yZGluYXRvci5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bFNuYXBPZmZzZXRzSW5mby5jcHA6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25h
cE9mZnNldHNJbmZvLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50
dW1DYWxjdWxhdG9yLmNwcDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21l
bnR1bUNhbGN1bGF0b3IuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlOjpTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjphcHBsaWNhYmxlUHJvcGVydGllcyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldEN1
cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZTo6ZHVtcFByb3BlcnRpZXMgY29uc3QpOgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5oOgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxk
cmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpkdW1w
UHJvcGVydGllcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZTo6c2V0Q3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgpOgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmg6CisgICAgICAgICogcGFn
ZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjpoYW5k
bGVXaGVlbEV2ZW50KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6dXBkYXRlRnJvbVN0
YXRlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlTWFjOjpoYW5kbGVXaGVlbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnZpZXdwb3J0U2l6ZSBjb25zdCk6CisgICAg
ICAgICogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlTmljb3NpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlTmljb3NpYTo6aGFuZGxlV2hlZWxFdmVudCk6CisgICAgICAgICogcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0
b3I6OlNjcm9sbEFuaW1hdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjp+
U2Nyb2xsQW5pbWF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnNjcm9s
bCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6cmVzbmFwQWZ0ZXJMYXlvdXQp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OmhhbmRsZVdoZWVsRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnVwZGF0ZUFjdGl2ZVNjcm9sbFNuYXBJ
bmRleEZvck9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6bm90aWZ5
UG9zaXRpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpwYWdl
U2NhbGVGYWN0b3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnNj
cm9sbENvbnRyb2xsZXJBbmltYXRpb25UaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbEFuaW1hdG9yOjphZGp1c3RTY3JvbGxPZmZzZXRGb3JTbmFwcGluZ0lmTmVlZGVkKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oOgorICAgICAgICAqIHBsYXRmb3JtL1Nj
cm9sbENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlcjo6
dXNlc1Njcm9sbFNuYXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxl
cjo6cmVzbmFwQWZ0ZXJMYXlvdXQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbENvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxl
QXJlYTo6ZG9Qb3N0VGh1bWJNb3ZlU25hcHBpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9s
bGFibGVBcmVhLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OmlzU2Nyb2xsU25hcEluUHJv
Z3Jlc3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OmRpZEJl
Z2luU2Nyb2xsR2VzdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRv
ck1hYzo6ZGlkRW5kU2Nyb2xsR2VzdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpnZXN0
dXJlU2hvdWxkQmVnaW5TbmFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFj
OjphbGxvd3NWZXJ0aWNhbFN0cmV0Y2hpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsQW5pbWF0b3JNYWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQ29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbENvbnRyb2xsZXI6OnN0b3BBbGxUaW1lcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsQ29udHJvbGxlcjo6aGFuZGxlV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxDb250cm9sbGVyOjppc1Njcm9sbFNuYXBJblByb2dyZXNzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6OnVwZGF0ZVNjcm9sbFNuYXBBbmltYXRpbmdTdGF0ZSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3g6OndpbGxCZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6
OnN0eWxlV2lsbENoYW5nZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0
ZVNjcm9sbFNuYXBQcm9wZXJ0aWVzV2l0aEZyYW1lVmlldyBjb25zdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJMYXllck1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyTW9k
ZWxPYmplY3Q6OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXJTY3JvbGxhYmxlQXJlYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllclNjcm9s
bGFibGVBcmVhOjp1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6aXNTY3JvbGxTbmFwSW5Qcm9ncmVzcyBjb25z
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJWaWV3Ojp1bnJlZ2lzdGVyQm94V2l0aFNjcm9sbFNuYXBQb3NpdGlvbnMpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJWaWV3Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJl
c0xheW91dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0U2Nyb2xs
UGFkZGluZ1JpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpoYXNTbmFwUG9z
aXRpb24gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGVDb25zdGFudHMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJl
Tm9uSW5oZXJpdGVkRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVOb25Jbmhl
cml0ZWREYXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmg6CisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xsU25hcFBvaW50cy5oOgorICAgICAgICAqIHN0eWxl
L1N0eWxlQnVpbGRlckNvbnZlcnRlci5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aXNTY3JvbGxTbmFwSW5Qcm9ncmVzcyk6
CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVy
bmFscy5pZGw6CisKIDIwMjEtMDYtMTYgIFBlciBBcm5lICA8cHZvbGxhbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgVXBkYXRlIE1lZGlhIEFjY2Vzc2liaWxpdHkgcHJlZmVyZW5jZXMgaW4gdGhlIFdl
YkNvbnRlbnQgcHJvY2VzcyBmcm9tIHRoZSBVSSBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZkNjJjYWE0
NzYwNTkzOWYyMzlmOTg5OGVhZmNkYmIwNDRhMzk0OWEuLjAwMjg3ZmIyMzdiNjM2NDNmMTY3Mzk2
OWI5NGI4NmNmNDAzOTZjN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjEtMDYtMTYg
IE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQub3JnPgorCisgICAgICAgIFtjc3Mt
c2Nyb2xsLXNuYXBdIFJlbW92ZSBFTkFCTEVfU0NST0xMX1NOQVAgY29tcGlsZS10aW1lIG9wdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3MDY3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3Zl
IGNvbXBpbGUtdGltZSBFTkFCTEVfU0NST0xMX1NOQVAgY29uZmlndXJhdGlvbiBvcHRpb24uCisK
KyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5h
dG9yVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGU+OjplbmNvZGUpOgorICAgICAgICAoQXJndW1lbnRDb2RlcjxTY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGU+OjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpkdW1wKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW06CisgICAgICAgICgt
W1dLV2ViVmlldyBzY3JvbGxWaWV3V2lsbEJlZ2luRHJhZ2dpbmc6XSk6CisgICAgICAgICgtW1dL
V2ViVmlldyBzY3JvbGxWaWV3V2lsbEVuZERyYWdnaW5nOndpdGhWZWxvY2l0eTp0YXJnZXRDb250
ZW50T2Zmc2V0Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3VwZGF0ZVZpc2libGVDb250ZW50
UmVjdHNdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxp
bmdDb29yZGluYXRvclByb3h5OjpyZXNldFN0YXRlQWZ0ZXJQcm9jZXNzRXhpdGVkKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW06
CisgICAgICAgICgtW1dLU2Nyb2xsaW5nTm9kZVNjcm9sbFZpZXdEZWxlZ2F0ZSBzY3JvbGxWaWV3
V2lsbEVuZERyYWdnaW5nOndpdGhWZWxvY2l0eTp0YXJnZXRDb250ZW50T2Zmc2V0Ol0pOgorICAg
ICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjpjb21t
aXRTdGF0ZUFmdGVyQ2hpbGRyZW4pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1v
dGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaDoKKwogMjAyMS0wNi0xNiAg
UGVyIEFybmUgIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgTWVkaWEgQWNj
ZXNzaWJpbGl0eSBwcmVmZXJlbmNlcyBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGZyb20gdGhl
IFVJIHByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCmluZGV4IGJlOGY2ZjIwMDE3OTc2ZmQz
MDdmMzYyZGE4Yjc3YTVjOTU2MzA5ZjguLmYzYmFhOGIzMzc4MjZjYWQzYmFmZjkwODJkMDBlN2Zk
NjJiZGY3MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKKysr
IGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaApAQCAtMjIxLDEwICsyMjEsNiBAQAog
I2RlZmluZSBFTkFCTEVfQ1NTX0NPTklDX0dSQURJRU5UUyAwCiAjZW5kaWYKIAotI2lmICFkZWZp
bmVkKEVOQUJMRV9DU1NfU0NST0xMX1NOQVApCi0jZGVmaW5lIEVOQUJMRV9DU1NfU0NST0xMX1NO
QVAgMQotI2VuZGlmCi0KICNpZiAhZGVmaW5lZChFTkFCTEVfQ1NTX1RSQU5TRk9STV9TVFlMRV9P
UFRJTUlaRURfM0QpCiAjZGVmaW5lIEVOQUJMRV9DU1NfVFJBTlNGT1JNX1NUWUxFX09QVElNSVpF
RF8zRCAwCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggY2Q1NjdkOTBlYTJlYjJmNzBhYjgwNmIwZWMyZGNjODI2
NDZkZDc4MS4uNjQ1MmJhODYzMmNkMGI0MWM3MDQ5YTc5NTRlYTgwY2QyZDVkMjg4MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAK
QEAgLTEwODIsOCArMTA4Miw2IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiB0cmFuc2l0aW9u
UHJvcGVydHlWYWx1ZShjb25zdCBBbmltYXRpb25MaXN0KiBhbmltYXRpb25MCiAgICAgcmV0dXJu
IGxpc3Q7CiB9CiAKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotCiBzdGF0aWMgUmVmPENT
U1ZhbHVlTGlzdD4gdmFsdWVGb3JTY3JvbGxTbmFwVHlwZShjb25zdCBTY3JvbGxTbmFwVHlwZSYg
dHlwZSkKIHsKICAgICBhdXRvIHZhbHVlID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFy
YXRlZCgpOwpAQCAtMTEwNiw4ICsxMTA0LDYgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IHZh
bHVlRm9yU2Nyb2xsU25hcEFsaWdubWVudChjb25zdCBTY3JvbGxTbmFwQWxpZ24mIGFsaWcKICAg
ICByZXR1cm4gdmFsdWU7CiB9CiAKLSNlbmRpZgotCiBzdGF0aWMgUmVmPENTU1ZhbHVlPiB3aWxs
Q2hhbmdlUHJvcGVydHlWYWx1ZShjb25zdCBXaWxsQ2hhbmdlRGF0YSogd2lsbENoYW5nZURhdGEp
CiB7CiAgICAgYXV0byYgY3NzVmFsdWVQb29sID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsK
QEAgLTM4NjksMTQgKzM4NjUsMTIgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0
cmFjdG9yOjp2YWx1ZUZvclByb3BlcnR5SW5TdHlsZShjb25zdCBSZW5kZXJTdHkKICAgICAgICAg
ICAgIHJldHVybiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvcjJTaWRlc1Nob3J0aGFuZChzY3JvbGxQ
YWRkaW5nQmxvY2tTaG9ydGhhbmQoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlTY3JvbGxQ
YWRkaW5nSW5saW5lOgogICAgICAgICAgICAgcmV0dXJuIGdldENTU1Byb3BlcnR5VmFsdWVzRm9y
MlNpZGVzU2hvcnRoYW5kKHNjcm9sbFBhZGRpbmdJbmxpbmVTaG9ydGhhbmQoKSk7Ci0jaWYgRU5B
QkxFKENTU19TQ1JPTExfU05BUCkKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVNjcm9sbFNuYXBB
bGlnbjoKICAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvclNjcm9sbFNuYXBBbGlnbm1lbnQoc3R5
bGUuc2Nyb2xsU25hcEFsaWduKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5U2Nyb2xsU25h
cFN0b3A6CiAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHls
ZS5zY3JvbGxTbmFwU3RvcCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVNjcm9sbFNuYXBU
eXBlOgogICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yU2Nyb2xsU25hcFR5cGUoc3R5bGUuc2Ny
b2xsU25hcFR5cGUoKSk7Ci0jZW5kaWYKIAogI2lmIEVOQUJMRShDU1NfVFJBSUxJTkdfV09SRCkK
ICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUFwcGxlVHJhaWxpbmdXb3JkOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKaW5kZXggOWRjNzQ3MGM4NDgx
MzBjZGM0YzNlOGMyZjhjYjA5NzJjMWQ2YWE3MC4uOTUxZWYxYTgyNDVlOGIxMzA5MmE3NTljN2Fk
NTM4MTE2ODliM2U0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2
ZVZhbHVlTWFwcGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFs
dWVNYXBwaW5ncy5oCkBAIC01MzE0LDggKzUzMTQsNiBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgT3B0aW9uU2V0PFRvdWNoQWN0aW9uPigpIGNvbnN0CiAg
ICAgcmV0dXJuIFRvdWNoQWN0aW9uOjpBdXRvOwogfQogCi0jaWYgRU5BQkxFKENTU19TQ1JPTExf
U05BUCkKLQogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2
ZVZhbHVlKFNjcm9sbFNuYXBTdHJpY3RuZXNzIHN0cmljdG5lc3MpCiAgICAgOiBDU1NWYWx1ZShQ
cmltaXRpdmVDbGFzcykKIHsKQEAgLTU0NTgsOCArNTQ1Niw2IEBAIHRlbXBsYXRlPD4gaW5saW5l
IENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBTY3JvbGxTbmFwU3RvcCgpIGNvbnN0CiAgICAg
fQogfQogCi0jZW5kaWYKLQogI2lmIEVOQUJMRShDU1NfVFJBSUxJTkdfV09SRCkKIHRlbXBsYXRl
PD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShUcmFpbGluZ1dv
cmQgZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1Byb3BlcnRpZXMuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cm9wZXJ0aWVzLmpzb24KaW5kZXggNjk1ZDQ3NWQzMDVlZDQ5MjFlYmYzNjc0OThlMTcwN2QwM2Jk
YTQ1ZC4uMGU2YjkxZGRkMWZlYTBhOGE0M2Q0MGFiMTIxMWQ3YmQ4ZjI3NWQyNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnRpZXMuanNvbgorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUHJvcGVydGllcy5qc29uCkBAIC03MDgwLDggKzcwODAsNyBAQAogICAgICAg
ICB9LAogICAgICAgICAic2Nyb2xsLXNuYXAtYWxpZ24iOiB7CiAgICAgICAgICAgICAiY29kZWdl
bi1wcm9wZXJ0aWVzIjogewotICAgICAgICAgICAgICAgICJjb252ZXJ0ZXIiOiAiU2Nyb2xsU25h
cEFsaWduIiwKLSAgICAgICAgICAgICAgICAiZW5hYmxlLWlmIjogIkVOQUJMRV9DU1NfU0NST0xM
X1NOQVAiCisgICAgICAgICAgICAgICAgImNvbnZlcnRlciI6ICJTY3JvbGxTbmFwQWxpZ24iCiAg
ICAgICAgICAgICB9LAogICAgICAgICAgICAgInNwZWNpZmljYXRpb24iOiB7CiAgICAgICAgICAg
ICAgICAgImNhdGVnb3J5IjogImNzcy1zY3JvbGwtc25hcCIsCkBAIC03MDkwLDggKzcwODksNyBA
QAogICAgICAgICB9LAogICAgICAgICAic2Nyb2xsLXNuYXAtdHlwZSI6IHsKICAgICAgICAgICAg
ICJjb2RlZ2VuLXByb3BlcnRpZXMiOiB7Ci0gICAgICAgICAgICAgICAgImNvbnZlcnRlciI6ICJT
Y3JvbGxTbmFwVHlwZSIsCi0gICAgICAgICAgICAgICAgImVuYWJsZS1pZiI6ICJFTkFCTEVfQ1NT
X1NDUk9MTF9TTkFQIgorICAgICAgICAgICAgICAgICJjb252ZXJ0ZXIiOiAiU2Nyb2xsU25hcFR5
cGUiCiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgInNwZWNpZmljYXRpb24iOiB7CiAgICAg
ICAgICAgICAgICAgImNhdGVnb3J5IjogImNzcy1zY3JvbGwtc25hcCIsCkBAIC03MTAwLDggKzcw
OTgsNyBAQAogICAgICAgICB9LAogICAgICAgICAic2Nyb2xsLXNuYXAtc3RvcCI6IHsKICAgICAg
ICAgICAgICJjb2RlZ2VuLXByb3BlcnRpZXMiOiB7Ci0gICAgICAgICAgICAgICAgImNvbnZlcnRl
ciI6ICJTY3JvbGxTbmFwU3RvcCIsCi0gICAgICAgICAgICAgICAgImVuYWJsZS1pZiI6ICJFTkFC
TEVfQ1NTX1NDUk9MTF9TTkFQIgorICAgICAgICAgICAgICAgICJjb252ZXJ0ZXIiOiAiU2Nyb2xs
U25hcFN0b3AiCiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgInNwZWNpZmljYXRpb24iOiB7
CiAgICAgICAgICAgICAgICAgImNhdGVnb3J5IjogImNzcy1zY3JvbGwtc25hcCIsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbiBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCmluZGV4IDQzNjBhMGI2MTllZGUxMzEyMTkyNTc0
ODAwZTgxOWVhOWZiOWI4ODQuLjlhYWUyNWE3YzhiNDFkNDYxZWY3MTUyMDBjNzg5ODc3YjkxN2I3
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCkBAIC0xMTQzLDcgKzEx
NDMsNiBAQCBhdAogLy8gY2xvc2VzdC1zaWRlCiAvLyBmYXJ0aGVzdC1zaWRlCiAKLSNpZiBkZWZp
bmVkKEVOQUJMRV9DU1NfU0NST0xMX1NOQVApCiAvLyAtd2Via2l0LXNjcm9sbC1zbmFwLXBvaW50
cy14CiAvLyAtd2Via2l0LXNjcm9sbC1zbmFwLXBvaW50cy15CiBlbGVtZW50cwpAQCAtMTE1Myw3
ICsxMTUyLDYgQEAgbWFuZGF0b3J5CiBwcm94aW1pdHkKIC8vIHgKIC8vIHkKLSNlbmRpZgogCiBi
cmVhawogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5
UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIu
Y3BwCmluZGV4IDg4NGYwNDE4ODZhZDM2MTEyZjc1OTM4MzUyOTExZDkzMTU5YzA4NmYuLjc0NGRm
OTExZmUzYzk2MTgwZjBhOTMwZjk3MTAyMzZkYzZmYTlmMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCkBAIC0yMzk0LDggKzIzOTQsNiBA
QCBzdGF0aWMgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lUGVyc3BlY3RpdmUoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsCiAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGUoKnBlcnNwZWN0aXZlLCBDU1NVbml0VHlwZTo6Q1NTX1BYKTsKIH0KIAotI2lmIEVOQUJM
RShDU1NfU0NST0xMX1NOQVApCi0KIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBjb25zdW1l
U2Nyb2xsU25hcEFsaWduKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogewogICAgIGF1dG8g
Zmlyc3RWYWx1ZSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlU3RhcnQsIENT
U1ZhbHVlQ2VudGVyLCBDU1NWYWx1ZUVuZD4ocmFuZ2UpOwpAQCAtMjQzNCw4ICsyNDMyLDYgQEAg
c3RhdGljIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGNvbnN1bWVTY3JvbGxTbmFwVHlwZShDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSkKICAgICByZXR1cm4gdHlwZVZhbHVlOwogfQogCi0jZW5kaWYK
LQogc3RhdGljIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZVNjcm9sbEJlaGF2aW9y
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogewogICAgIGF1dG8gdmFsdWVJRCA9IHJhbmdl
LnBlZWsoKS5pZCgpOwpAQCAtNDA5OSwxNCArNDA5NSwxMiBAQCBSZWZQdHI8Q1NTVmFsdWU+IENT
U1Byb3BlcnR5UGFyc2VyOjpwYXJzZVNpbmdsZVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHks
IENTUwogICAgIGNhc2UgQ1NTUHJvcGVydHlTY3JvbGxQYWRkaW5nQmxvY2tTdGFydDoKICAgICBj
YXNlIENTU1Byb3BlcnR5U2Nyb2xsUGFkZGluZ0Jsb2NrRW5kOgogICAgICAgICByZXR1cm4gY29u
c3VtZVNjcm9sbFBhZGRpbmcobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUpOwotI2lmIEVOQUJMRShD
U1NfU0NST0xMX1NOQVApCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVNjcm9sbFNuYXBBbGlnbjoKICAg
ICAgICAgcmV0dXJuIGNvbnN1bWVTY3JvbGxTbmFwQWxpZ24obV9yYW5nZSk7CiAgICAgY2FzZSBD
U1NQcm9wZXJ0eVNjcm9sbFNuYXBTdG9wOgogICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50PENT
U1ZhbHVlQWx3YXlzLCBDU1NWYWx1ZU5vcm1hbD4obV9yYW5nZSk7CiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVNjcm9sbFNuYXBUeXBlOgogICAgICAgICByZXR1cm4gY29uc3VtZVNjcm9sbFNuYXBUeXBl
KG1fcmFuZ2UpOwotI2VuZGlmCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVNjcm9sbEJlaGF2aW9yOgog
ICAgICAgICBpZiAoIW1fY29udGV4dC5zY3JvbGxCZWhhdmlvckVuYWJsZWQpCiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA5
Njk4NmI1MzA5MWJjNjkwZTZmY2Q0Y2IwNjdhYmEwMjFhMzU2MDcyLi5kMDIxYjk4ZDFjM2U2OTBi
ZTVlNzhiOGZhMjk3NWZjNGUyM2E5ZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwCkBAIC0zMDMxLDkgKzMwMzEsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxF
dmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3goTm9kZSogc3RhcnROb2RlLCBjbwogICAgIGJv
b2wgc2hvdWxkSGFuZGxlRXZlbnQgPSB3aGVlbEV2ZW50LmRlbHRhWCgpIHx8IHdoZWVsRXZlbnQu
ZGVsdGFZKCk7CiAjaWYgRU5BQkxFKFdIRUVMX0VWRU5UX0xBVENISU5HKQogICAgIHNob3VsZEhh
bmRsZUV2ZW50IHw9IHdoZWVsRXZlbnQucGhhc2UoKSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFz
ZTo6RW5kZWQ7Ci0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICBzaG91bGRIYW5kbGVF
dmVudCB8PSB3aGVlbEV2ZW50Lm1vbWVudHVtUGhhc2UoKSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQ
aGFzZTo6RW5kZWQ7Ci0jZW5kaWYKICNlbmRpZgogICAgIGlmICghc3RhcnROb2RlLT5yZW5kZXJl
cigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5k
ZXggYTIxMjlmNzc2OWZkMTBkMjk2MGM3NjRkZDY4NDU3ODY3MTA2YWI1OS4uYTdlOWYzM2VhNmVm
ZmNkYTEyYWI1NmJiODYxOGM4ZWI1ZTJjZGE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cApAQCAtOTE0LDcgKzkxNCw2IEBAIEdyYXBoaWNzTGF5ZXIqIEZyYW1lVmlldzo6c2V0V2FudHNM
YXllckZvckJvdHRvbU92ZXJIYW5nQXJlYShib29sIHdhbnRzTGF5ZXIpIGNvCiAKICNlbmRpZiAv
LyBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCiAKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQog
dm9pZCBGcmFtZVZpZXc6OnVwZGF0ZVNuYXBPZmZzZXRzKCkKIHsKICAgICBpZiAoIWZyYW1lKCku
ZG9jdW1lbnQoKSkKQEAgLTk3Niw3ICs5NzUsNiBAQCB2b2lkIEZyYW1lVmlldzo6dXBkYXRlU2Ny
b2xsaW5nQ29vcmRpbmF0b3JTY3JvbGxTbmFwUHJvcGVydGllcygpIGNvbnN0CiB7CiAgICAgcmVu
ZGVyVmlldygpLT5jb21wb3NpdG9yKCkudXBkYXRlU2Nyb2xsU25hcFByb3BlcnRpZXNXaXRoRnJh
bWVWaWV3KCp0aGlzKTsKIH0KLSNlbmRpZgogCiBib29sIEZyYW1lVmlldzo6Zmx1c2hDb21wb3Np
dGluZ1N0YXRlRm9yVGhpc0ZyYW1lKGNvbnN0IEZyYW1lJiByb290RnJhbWVGb3JGbHVzaCkKIHsK
QEAgLTMzMzMsOSArMzMzMSw4IEBAIHZvaWQgRnJhbWVWaWV3OjpwZXJmb3JtUG9zdExheW91dFRh
c2tzKCkKIAogICAgIHVwZGF0ZVdpZGdldFBvc2l0aW9ucygpOwogCi0jaWYgRU5BQkxFKENTU19T
Q1JPTExfU05BUCkKICAgICB1cGRhdGVTbmFwT2Zmc2V0cygpOwotI2VuZGlmCisKICAgICBtX3Vw
ZGF0ZUVtYmVkZGVkT2JqZWN0c1RpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwogCiAgICAgaWYgKGF1
dG8gc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSB0aGlzLT5zY3JvbGxpbmdDb29yZGluYXRvcigpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggNTkwZTgzMmRkY2I0N2M0M2I1MGI0NWQ2MTIzNzRl
MmNmODc0MjNjMi4uNmIxYzJjNzUyZWQyNjdlYjAxZmQ4NTIzMWMyZmY2OGI0MWIyMzRmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC02NDMsMTEgKzY0Myw5IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZXdFeHBvc2VkUmVjdChzdGQ6Om9wdGlvbmFsPEZsb2F0
UmVjdD4pOwogICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QoKSBj
b25zdCB7IHJldHVybiBtX3ZpZXdFeHBvc2VkUmVjdDsgfQogCi0jaWYgRU5BQkxFKENTU19TQ1JP
TExfU05BUCkKICAgICB2b2lkIHVwZGF0ZVNuYXBPZmZzZXRzKCkgZmluYWw7CiAgICAgYm9vbCBp
c1Njcm9sbFNuYXBJblByb2dyZXNzKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVTY3Jv
bGxpbmdDb29yZGluYXRvclNjcm9sbFNuYXBQcm9wZXJ0aWVzKCkgY29uc3Q7Ci0jZW5kaWYKIAog
ICAgIGZsb2F0IGFkanVzdFNjcm9sbFN0ZXBGb3JGaXhlZENvbnRlbnQoZmxvYXQgc3RlcCwgU2Ny
b2xsYmFyT3JpZW50YXRpb24sIFNjcm9sbEdyYW51bGFyaXR5KSBmaW5hbDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCmluZGV4IGNkYTc0OGE5MzY4NTFmMmNi
NGQyMzc1NmVhMDNiZTNmZmIxMjVlZDYuLmU0MjcxNzFmZmE2M2Y5ZGZkYjU0M2U1Yzg2NTg1MTli
MTY5MDA3ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxl
ck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0K
QEAgLTEwMTEsMTAgKzEwMTEsOCBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6cHJvY2Vzc1doZWVsRXZl
bnRGb3JTY3JvbGxTbmFwKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZQogICAgIGlmICh3
aGVlbEV2ZW50LnBoYXNlKCkgIT0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U6OkVuZGVkICYmIHdo
ZWVsRXZlbnQubW9tZW50dW1QaGFzZSgpICE9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlOjpFbmRl
ZCkKICAgICAgICAgcmV0dXJuOwogCi0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICBp
ZiAoYXV0byogc2Nyb2xsQW5pbWF0b3IgPSBzY3JvbGxhYmxlQXJlYS0+ZXhpc3RpbmdTY3JvbGxB
bmltYXRvcigpKQogICAgICAgICBzY3JvbGxBbmltYXRvci0+cHJvY2Vzc1doZWVsRXZlbnRGb3JT
Y3JvbGxTbmFwKHdoZWVsRXZlbnQpOwotI2VuZGlmCiB9CiAKIFZpc2libGVTZWxlY3Rpb24gRXZl
bnRIYW5kbGVyOjpzZWxlY3RDbG9zZXN0V29yZEZyb21IaXRUZXN0UmVzdWx0QmFzZWRPbkxvb2t1
cChjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4
IGJmOGFjNjFjNmJhYTZhN2UyZjc4ZWRjZGFmY2ViM2IwNGFmMmY5MzMuLjIxYTdjZjkwZTRjNDc5
NjI4MTE4NDU3ZDRhNGY3M2YwODRkMjRjNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBAIC05
Niw3ICs5Niw2IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6aGFuZGxlV2hlZWxF
dmVudFBoYXNlKFNjcm9sbGluZ05vZGVJRCBub2RlSUQsIFBsCiB9CiAjZW5kaWYKIAotI2lmIEVO
QUJMRShDU1NfU0NST0xMX1NOQVApCiBzdGF0aWMgaW5saW5lIHZvaWQgc2V0U3RhdGVTY3JvbGxp
bmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSYgbm9k
ZSwgY29uc3QgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvKiBvZmZzZXRJbmZvLCBmbG9hdCBk
ZXZpY2VTY2FsZUZhY3RvcikKIHsKICAgICBpZiAoIW9mZnNldEluZm8pIHsKQEAgLTEwNyw3ICsx
MDYsNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNl
dHNBc0Zsb2F0KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaQogICAgIC8vIEZJWE1FOiBJbmNvcnBvcmF0
ZSBjdXJyZW50IHBhZ2Ugc2NhbGUgZmFjdG9yIGluIHNuYXBwaW5nIHRvIGRldmljZSBwaXhlbC4g
UGVyaGFwcyB3ZSBzaG91bGQganVzdCBjb252ZXJ0IHRvIGZsb2F0IGhlcmUgYW5kIGxldCBVSSBw
cm9jZXNzIGRvIHRoZSBwaXhlbCBzbmFwcGluZz8KICAgICBub2RlLnNldFNuYXBPZmZzZXRzSW5m
byhvZmZzZXRJbmZvLT5jb252ZXJ0VW5pdHM8RmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8+KGRl
dmljZVNjYWxlRmFjdG9yKSk7CiB9Ci0jZW5kaWYKIAogdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yOjpzZXRFdmVudFRyYWNraW5nUmVnaW9uc0RpcnR5KCkKIHsKQEAgLTcwNiwxMiArNzA0
LDEwIEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U2Nyb2xsaW5nTm9kZVNj
cm9sbGFibGVBcmVhR2VvbWV0cnkoU2Nyb2xsaW5nCiAKICAgICBzY3JvbGxpbmdOb2RlLnNldFNj
cm9sbGFibGVBcmVhUGFyYW1ldGVycyhzY3JvbGxQYXJhbWV0ZXJzKTsKIAotI2lmIEVOQUJMRShD
U1NfU0NST0xMX1NOQVApCiAgICAgc2Nyb2xsYWJsZUFyZWEudXBkYXRlU25hcE9mZnNldHMoKTsK
ICAgICBzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0FzRmxvYXQoc2Nyb2xsaW5nTm9k
ZSwgc2Nyb2xsYWJsZUFyZWEuc25hcE9mZnNldHNJbmZvKCksIG1fcGFnZS0+ZGV2aWNlU2NhbGVG
YWN0b3IoKSk7CiAgICAgc2Nyb2xsaW5nTm9kZS5zZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2lu
dEluZGV4KHNjcm9sbGFibGVBcmVhLmN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoKSk7
CiAgICAgc2Nyb2xsaW5nTm9kZS5zZXRDdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleChzY3Jv
bGxhYmxlQXJlYS5jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCgpKTsKLSNlbmRpZgogfQog
CiB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldFZpZXdwb3J0Q29uc3RyYWludGVk
Tm9kZUNvbnN0cmFpbnRzKFNjcm9sbGluZ05vZGVJRCBub2RlSUQsIGNvbnN0IFZpZXdwb3J0Q29u
c3RyYWludHMmIGNvbnN0cmFpbnRzKQpAQCAtODkwLDcgKzg4Niw2IEBAIHZvaWQgQXN5bmNTY3Jv
bGxpbmdDb29yZGluYXRvcjo6c2V0QWN0aXZlU2Nyb2xsU25hcEluZGljZXMoU2Nyb2xsaW5nTm9k
ZUlEIHNjcm9sCiAKICNlbmRpZgogCi0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKIGJvb2wg
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6aXNTY3JvbGxTbmFwSW5Qcm9ncmVzcyhTY3JvbGxp
bmdOb2RlSUQgbm9kZUlEKSBjb25zdAogewogICAgIGlmIChtX3Njcm9sbGluZ1RyZWUpCkBAIC05
MDcsNyArOTAyLDYgQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVTY3Jv
bGxTbmFwUHJvcGVydGllc1dpdGhGcmFtZVZpZXcoY29uc3QgRnIKICAgICAgICAgbm9kZS0+c2V0
Q3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoZnJhbWVWaWV3LmN1cnJlbnRWZXJ0aWNhbFNu
YXBQb2ludEluZGV4KCkpOwogICAgIH0KIH0KLSNlbmRpZgogCiB2b2lkIEFzeW5jU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6OnJlcG9ydEV4cG9zZWRVbmZpbGxlZEFyZWEoTW9ub3RvbmljVGltZSB0aW1l
c3RhbXAsIHVuc2lnbmVkIHVuZmlsbGVkQXJlYSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAppbmRleCA4
OGUxNGE5ODllMDVkYTE3ZWVhZDU5YWU3N2MxYzBlNGEzZDM0MDJjLi42M2Y4MDcwNGMyNzhhYmI1
NzIwZTkxZmZhMzJhNzk3NzAzYWY4ZTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oCkBAIC02Miw5ICs2
Miw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFjdGl2ZVNjcm9sbFNu
YXBJbmRpY2VzKFNjcm9sbGluZ05vZGVJRCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gaG9yaXpv
bnRhbEluZGV4LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB2ZXJ0aWNhbEluZGV4KTsKICNlbmRp
ZgogCi0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHVwZGF0ZVNjcm9sbFNuYXBQcm9wZXJ0aWVzV2l0aEZyYW1lVmlldyhjb25zdCBGcmFtZVZpZXcm
KSBvdmVycmlkZTsKLSNlbmRpZgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVJc01v
bml0b3JpbmdXaGVlbEV2ZW50c0ZvckZyYW1lVmlldyhjb25zdCBGcmFtZVZpZXcmKSBvdmVycmlk
ZTsKIApAQCAtMTM0LDkgKzEzMiw3IEBAIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBpc1VzZXJTY3JvbGxJblByb2dyZXNzKFNjcm9sbGluZ05vZGVJRCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgYm9vbCBpc1J1YmJlckJhbmRJblByb2dyZXNzKFNjcm9sbGluZ05vZGVJRCkgY29uc3Qg
b3ZlcnJpZGU7CiAKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgaXNTY3JvbGxTbmFwSW5Qcm9ncmVzcyhTY3JvbGxpbmdOb2RlSUQpIGNvbnN0IG92
ZXJyaWRlOwotI2VuZGlmCiAKICAgICB2b2lkIHNldFNjcm9sbFBpbm5pbmdCZWhhdmlvcihTY3Jv
bGxQaW5uaW5nQmVoYXZpb3IpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmNwcAppbmRleCA3Yjg3NWI5
ZGFmOWVjODNiNmQ5N2Q1M2I1Y2Q4ZWQ2ZDk5MjFlYWMxLi40NWM3MDk1YjBhYTI4OWQxZDU1YzFl
NzdmODZiMTA2YWMzNjk1NGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5jcHAKQEAgLTI3LDggKzI3LDYgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTY3JvbGxTbmFwT2Zmc2V0c0luZm8uaCIKIAot
I2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0KICNpbmNsdWRlICJFbGVtZW50Q2hpbGRJdGVy
YXRvci5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlICJMZW5ndGguaCIKQEAg
LTM4OSw1ICszODcsMyBAQCBzdGQ6OnBhaXI8ZmxvYXQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+
PiBGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbzo6Y2xvc2VzdFNuYQogfQogCiB9Ci0KLSNlbmRp
ZiAvLyBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaAppbmRleCAxNzE5YTRhYTI0YWE5
NDU3N2Q1MjlkMzUzNmUxZGFiZDAyYjBhZDRlLi4wNmI1ODFkZDU0MzM2YWZjY2Y4M2IxNDU4ZGRi
MTFhYzIzZWZkMjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxTbmFwT2Zmc2V0c0luZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaApAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0KICNpbmNsdWRlICJGbG9hdFJlY3Qu
aCIKICNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCiAjaW5jbHVkZSAiTGF5b3V0VW5pdC5oIgpAQCAt
MTA0LDUgKzEwMiwzIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBXVEY6OlRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiB0cywgU25hcE9mZnNlCiB9CiAKIH07IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxj
dWxhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVu
dHVtQ2FsY3VsYXRvci5jcHAKaW5kZXggYjFmODY0ZmVlOGVmYmMzZDg2MjUwMGQ1Yjk5ZDJkMGMx
ZGM2OTQ2ZS4uMWJmZWZhYWNiOGM3MTE1MDczNWM0NzU4MGNiMmNmYTBiODY0NjU0YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxj
dWxhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3IuY3BwCkBAIC0yOSw4ICsyOSw2IEBACiAjaW5jbHVkZSAiRmxvYXRQ
b2ludC5oIgogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogCi0jaWYgRU5BQkxFKENTU19TQ1JPTExf
U05BUCkKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgU2Vjb25kcyBzY3Jv
bGxTbmFwQW5pbWF0aW9uRHVyYXRpb24gPSAxX3M7CkBAIC0yMzUsNSArMjMzLDMgQEAgZmxvYXQg
QmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OmFuaW1hdGlvblByb2dyZXNzQWZ0ZXJF
bGFwc2VkVGltZShTZWNvbmQKIH0KIAogfTsgLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oCmluZGV4IDE4
YTM5OWJjY2Q5YjQyMWE3NTcwNmNkMTEwNzllMGZlYTIwNWI4NTMuLmVkY2RjZjdjNWM3MTQ5Njlj
NTQ4MTc0ZDNiN2FhNTkzMjA2YWVlYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oCkBAIC0yNSw4
ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkK
LQogI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgIlNjcm9sbFR5cGVz
LmgiCiAjaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KQEAgLTg1LDUgKzgzLDMgQEAgcHJpdmF0ZToK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShDU1NfU0NS
T0xMX1NOQVApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcAppbmRleCBkMTFmZjMxMTYwNGUwZWI0
YmI3MmExZjY5MmRlMGJlMjU5OTgyZTExLi44ODY2MzMwZjkyNWM2NTM2ZGM0OGVmYmYxNzM2ZTU5
MDFhMDBjNDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAKQEAgLTQ2LDkgKzQ2LDcgQEAg
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUo
Y29uc3QgU2Nyb2xsaW5nU3RhdGVTY3IKICAgICAsIG1fcmVhY2hhYmxlQ29udGVudHNTaXplKHN0
YXRlTm9kZS5yZWFjaGFibGVDb250ZW50c1NpemUoKSkKICAgICAsIG1fc2Nyb2xsUG9zaXRpb24o
c3RhdGVOb2RlLnNjcm9sbFBvc2l0aW9uKCkpCiAgICAgLCBtX3Njcm9sbE9yaWdpbihzdGF0ZU5v
ZGUuc2Nyb2xsT3JpZ2luKCkpCi0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICAsIG1f
c25hcE9mZnNldHNJbmZvKHN0YXRlTm9kZS5tX3NuYXBPZmZzZXRzSW5mbykKLSNlbmRpZgogI2lm
IFBMQVRGT1JNKE1BQykKICAgICAsIG1fdmVydGljYWxTY3JvbGxlckltcChzdGF0ZU5vZGUudmVy
dGljYWxTY3JvbGxlckltcCgpKQogICAgICwgbV9ob3Jpem9udGFsU2Nyb2xsZXJJbXAoc3RhdGVO
b2RlLmhvcml6b250YWxTY3JvbGxlckltcCgpKQpAQCAtOTMsMTIgKzkxLDEwIEBAIE9wdGlvblNl
dDxTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5PiBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05v
ZGU6OmFwcGxpY2FibGVQCiAjaWYgRU5BQkxFKFNDUk9MTElOR19USFJFQUQpCiAgICAgICAgIFBy
b3BlcnR5OjpSZWFzb25zRm9yU3luY2hyb25vdXNTY3JvbGxpbmcsCiAjZW5kaWYKLSNpZiBFTkFC
TEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgICAgICBQcm9wZXJ0eTo6U25hcE9mZnNldHNJbmZvLAog
ICAgICAgICBQcm9wZXJ0eTo6Q3VycmVudEhvcml6b250YWxTbmFwT2Zmc2V0SW5kZXgsCiAgICAg
ICAgIFByb3BlcnR5OjpDdXJyZW50VmVydGljYWxTbmFwT2Zmc2V0SW5kZXgsCiAgICAgICAgIFBy
b3BlcnR5OjpJc01vbml0b3JpbmdXaGVlbEV2ZW50cywKLSNlbmRpZgogICAgICAgICBQcm9wZXJ0
eTo6U2Nyb2xsQ29udGFpbmVyTGF5ZXIsCiAgICAgICAgIFByb3BlcnR5OjpTY3JvbGxlZENvbnRl
bnRzTGF5ZXIsCiAgICAgICAgIFByb3BlcnR5OjpIb3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIsCkBA
IC0xNTYsNyArMTUyLDYgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFNj
cm9sbE9yaWdpbihjb25zdCBJbnRQb2ludCYgc2Nyb2xsT3JpZ2luKQogICAgIHNldFByb3BlcnR5
Q2hhbmdlZChQcm9wZXJ0eTo6U2Nyb2xsT3JpZ2luKTsKIH0KIAotI2lmIEVOQUJMRShDU1NfU0NS
T0xMX1NOQVApCiB2b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0U25hcE9mZnNl
dHNJbmZvKGNvbnN0IEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvJiBpbmZvKQogewogICAgIGlm
IChtX3NuYXBPZmZzZXRzSW5mby5pc0VxdWFsKGluZm8pKQpAQCAtMTgzLDcgKzE3OCw2IEBAIHZv
aWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRDdXJyZW50VmVydGljYWxTbmFwUG9p
bnRJbmRleChzdGQ6Om9wdGlvbmFsCiAgICAgbV9jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRl
eCA9IGluZGV4OwogICAgIHNldFByb3BlcnR5Q2hhbmdlZChQcm9wZXJ0eTo6Q3VycmVudFZlcnRp
Y2FsU25hcE9mZnNldEluZGV4KTsKIH0KLSNlbmRpZgogCiB2b2lkIFNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZTo6c2V0U2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzKGNvbnN0IFNjcm9sbGFibGVB
cmVhUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKQEAgLTMwNiw3ICszMDAsNiBAQCB2b2lkIFNj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6ZHVtcFByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMs
IFNjcm9sbGluZ1N0YXRlVAogICAgIGlmIChtX3Njcm9sbE9yaWdpbiAhPSBJbnRQb2ludCgpKQog
ICAgICAgICB0cy5kdW1wUHJvcGVydHkoInNjcm9sbCBvcmlnaW4iLCBtX3Njcm9sbE9yaWdpbik7
CiAKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIGlmIChtX3NuYXBPZmZzZXRzSW5m
by5ob3Jpem9udGFsU25hcE9mZnNldHMuc2l6ZSgpKQogICAgICAgICB0cy5kdW1wUHJvcGVydHko
Imhvcml6b250YWwgc25hcCBvZmZzZXRzIiwgbV9zbmFwT2Zmc2V0c0luZm8uaG9yaXpvbnRhbFNu
YXBPZmZzZXRzKTsKIApAQCAtMzE4LDcgKzMxMSw2IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlOjpkdW1wUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywgU2Nyb2xsaW5nU3RhdGVU
CiAKICAgICBpZiAobV9jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCkKICAgICAgICAgdHMu
ZHVtcFByb3BlcnR5KCJjdXJyZW50IHZlcnRpY2FsIHNuYXAgcG9pbnQgaW5kZXgiLCBtX2N1cnJl
bnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KTsKLSNlbmRpZgogCiAgICAgdHMuZHVtcFByb3BlcnR5
KCJzY3JvbGxhYmxlIGFyZWEgcGFyYW1ldGVycyIsIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJz
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaAppbmRleCA5YzFiZTE0YjZjYjc1YmU1OGNmMzFmOTMw
MmUzMDZkMjQ3M2M3OTYwLi44YmNmOTFkYWQ5MWNmYWVmY2FiMTA3NGFkNmY3OGEwMTUxMmY4OTE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaApAQCAtNzAsNyArNzAsNiBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgSW50UG9pbnQmIHNjcm9sbE9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsT3Jp
Z2luOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JvbGxPcmlnaW4oY29uc3QgSW50
UG9pbnQmKTsKIAotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgY29uc3QgRmxvYXRT
Y3JvbGxTbmFwT2Zmc2V0c0luZm8mIHNuYXBPZmZzZXRzSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1f
c25hcE9mZnNldHNJbmZvOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTbmFwT2Zmc2V0
c0luZm8oY29uc3QgRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8mIG5ld09mZnNldHNJbmZvKTsK
IApAQCAtNzksNyArNzgsNiBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiBjdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVu
dFZlcnRpY2FsU25hcFBvaW50SW5kZXg7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEN1
cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+KTsKLSNl
bmRpZgogCiAgICAgY29uc3QgU2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzJiBzY3JvbGxhYmxlQXJl
YVBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhUGFyYW1ldGVyczsg
fQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzKGNv
bnN0IFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyYgcGFyYW1zKTsKQEAgLTEyOSwxMSArMTI3LDkg
QEAgcHJpdmF0ZToKICAgICBGbG9hdFBvaW50IG1fc2Nyb2xsUG9zaXRpb247CiAgICAgSW50UG9p
bnQgbV9zY3JvbGxPcmlnaW47CiAKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIEZs
b2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvIG1fc25hcE9mZnNldHNJbmZvOwogICAgIHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQ+IG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleDsKICAgICBz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4Owot
I2VuZGlmCiAKICAgICBMYXllclJlcHJlc2VudGF0aW9uIG1fc2Nyb2xsQ29udGFpbmVyTGF5ZXI7
CiAgICAgTGF5ZXJSZXByZXNlbnRhdGlvbiBtX3Njcm9sbGVkQ29udGVudHNMYXllcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlLmNwcAppbmRleCBjY2RlZTJmNWFmNGYxMTg1OGVhOGU3NjdhMzY3OWQxNzlj
M2I4YzFhLi45OGEzMzc5MDVlNDk1Y2U0NDJjMzkxNzU2ZmVmMWZmMzc0MmFjNWZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGUuY3BwCkBAIC03NCw3ICs3NCw2IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGU6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3Rh
dGVOCiAgICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6
OlByb3BlcnR5OjpTY3JvbGxPcmlnaW4pKQogICAgICAgICBtX3Njcm9sbE9yaWdpbiA9IHN0YXRl
LnNjcm9sbE9yaWdpbigpOwogCi0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICBpZiAo
c3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNu
YXBPZmZzZXRzSW5mbykpCiAgICAgICAgIG1fc25hcE9mZnNldHNJbmZvID0gc3RhdGUuc25hcE9m
ZnNldHNJbmZvKCk7CiAKQEAgLTgzLDcgKzgyLDYgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZTo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU4K
IAogICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQ
cm9wZXJ0eTo6Q3VycmVudFZlcnRpY2FsU25hcE9mZnNldEluZGV4KSkKICAgICAgICAgbV9jdXJy
ZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCA9IHN0YXRlLmN1cnJlbnRWZXJ0aWNhbFNuYXBQb2lu
dEluZGV4KCk7Ci0jZW5kaWYKIAogICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Ny
b2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6U2Nyb2xsYWJsZUFyZWFQYXJhbXMpKQogICAgICAg
ICBtX3Njcm9sbGFibGVBcmVhUGFyYW1ldGVycyA9IHN0YXRlLnNjcm9sbGFibGVBcmVhUGFyYW1l
dGVycygpOwpAQCAtMzExLDcgKzMwOSw2IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGU6OmR1bXBQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBTY3JvbGxpbmdTdGF0ZVRyCiAgICAg
aWYgKG1fc2Nyb2xsT3JpZ2luICE9IEludFBvaW50KCkpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0
eSgic2Nyb2xsIG9yaWdpbiIsIG1fc2Nyb2xsT3JpZ2luKTsKIAotI2lmIEVOQUJMRShDU1NfU0NS
T0xMX1NOQVApCiAgICAgaWYgKG1fc25hcE9mZnNldHNJbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0
cy5zaXplKCkpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiaG9yaXpvbnRhbCBzbmFwIG9mZnNl
dHMiLCBtX3NuYXBPZmZzZXRzSW5mby5ob3Jpem9udGFsU25hcE9mZnNldHMpOwogCkBAIC0zMjMs
OCArMzIwLDYgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6ZHVtcFByb3BlcnRp
ZXMoVGV4dFN0cmVhbSYgdHMsIFNjcm9sbGluZ1N0YXRlVHIKIAogICAgIGlmIChtX2N1cnJlbnRW
ZXJ0aWNhbFNuYXBQb2ludEluZGV4KQogICAgICAgICB0cy5kdW1wUHJvcGVydHkoImN1cnJlbnQg
dmVydGljYWwgc25hcCBwb2ludCBpbmRleCIsIG1fY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5k
ZXgpOwotICAgIAotI2VuZGlmCiAKICAgICB0cy5kdW1wUHJvcGVydHkoInNjcm9sbGFibGUgYXJl
YSBwYXJhbWV0ZXJzIiwgbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMpOwogCkBAIC0zMzQsNyAr
MzI5LDYgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6ZHVtcFByb3BlcnRpZXMo
VGV4dFN0cmVhbSYgdHMsIFNjcm9sbGluZ1N0YXRlVHIKICNlbmRpZgogfQogCi0jaWYgRU5BQkxF
KENTU19TQ1JPTExfU05BUCkKIGNvbnN0IEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvJiBTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6c25hcE9mZnNldHNJbmZvKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV9zbmFwT2Zmc2V0c0luZm87CkBAIC0zNTksNyArMzUzLDYgQEAgdm9pZCBTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZTo6c2V0Q3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoc3Rk
OjpvcHRpb25hbDwKIHsKICAgICBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4ID0gaW5k
ZXg7CiB9Ci0jZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGUuaAppbmRleCBlMmVlYmY5ODg0OWE2MDllMjk4M2UxZmU4MzExNjBlNTAwODI4Y2Q1Li5iYTBi
N2QwMjE3ZmE0MjA2MDYwODMxNmZmNTI2MGUyZTEzOWYyZjlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
LmgKQEAgLTk0LDEzICs5NCwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5IYXZlVmVydGljYWxT
Y3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhUGFyYW1ldGVycy52ZXJ0
aWNhbFNjcm9sbGJhck1vZGUgIT0gU2Nyb2xsYmFyQWx3YXlzT2ZmOyB9CiAgICAgYm9vbCBjYW5I
YXZlU2Nyb2xsYmFycygpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJz
Lmhvcml6b250YWxTY3JvbGxiYXJNb2RlICE9IFNjcm9sbGJhckFsd2F5c09mZiB8fCBtX3Njcm9s
bGFibGVBcmVhUGFyYW1ldGVycy52ZXJ0aWNhbFNjcm9sbGJhck1vZGUgIT0gU2Nyb2xsYmFyQWx3
YXlzT2ZmOyB9CiAKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIGNvbnN0IEZsb2F0
U2Nyb2xsU25hcE9mZnNldHNJbmZvJiBzbmFwT2Zmc2V0c0luZm8oKSBjb25zdDsKICAgICBzdGQ6
Om9wdGlvbmFsPHVuc2lnbmVkPiBjdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCkgY29u
c3Q7CiAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gY3VycmVudFZlcnRpY2FsU25hcFBvaW50
SW5kZXgoKSBjb25zdDsKICAgICB2b2lkIHNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5k
ZXgoc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4pOwogICAgIHZvaWQgc2V0Q3VycmVudFZlcnRpY2Fs
U25hcFBvaW50SW5kZXgoc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4pOwotI2VuZGlmCiAKICAgICBi
b29sIHVzZURhcmtBcHBlYXJhbmNlRm9yU2Nyb2xsYmFycygpIGNvbnN0IHsgcmV0dXJuIG1fc2Ny
b2xsYWJsZUFyZWFQYXJhbWV0ZXJzLnVzZURhcmtBcHBlYXJhbmNlRm9yU2Nyb2xsYmFyczsgfQog
CkBAIC0xNTgsMTEgKzE1Niw5IEBAIHByaXZhdGU6CiAgICAgRmxvYXRQb2ludCBtX2xhc3RDb21t
aXR0ZWRTY3JvbGxQb3NpdGlvbjsKICAgICBGbG9hdFBvaW50IG1fY3VycmVudFNjcm9sbFBvc2l0
aW9uOwogICAgIEludFBvaW50IG1fc2Nyb2xsT3JpZ2luOwotI2lmIEVOQUJMRShDU1NfU0NST0xM
X1NOQVApCiAgICAgRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8gbV9zbmFwT2Zmc2V0c0luZm87
CiAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbV9jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2lu
dEluZGV4OwogICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1fY3VycmVudFZlcnRpY2FsU25h
cFBvaW50SW5kZXg7Ci0jZW5kaWYKICAgICBTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMgbV9zY3Jv
bGxhYmxlQXJlYVBhcmFtZXRlcnM7CiAjaWYgRU5BQkxFKFNDUk9MTElOR19USFJFQUQpCiAgICAg
T3B0aW9uU2V0PFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uPiBtX3N5bmNocm9ub3VzU2Nyb2xs
aW5nUmVhc29uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW0K
aW5kZXggZTU3MDQzMTBkYTg1ZmRlNDFiYzEzMzc5MjJiMjQ1MTk5YmVmYTEzOC4uM2MxNGJjYmU3
MWIxNmJjNGUwZGEyYjlhYjE2Yjk1ZGEyZTE5NjgxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVNYWMubW0KQEAgLTEyNCwxMiArMTI0LDExIEBAIFdoZWVsRXZlbnRI
YW5kbGluZ1Jlc3VsdCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjpoYW5kbGVX
aGVlbEV2ZW50KGNvCiAKICAgICBib29sIGhhbmRsZWQgPSBtX2RlbGVnYXRlLmhhbmRsZVdoZWVs
RXZlbnQod2hlZWxFdmVudCk7CiAKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIHNl
dFNjcm9sbFNuYXBJblByb2dyZXNzKG1fZGVsZWdhdGUuaXNTY3JvbGxTbmFwSW5Qcm9ncmVzcygp
KTsKIAogICAgIGlmIChtX2RlbGVnYXRlLmFjdGl2ZVNjcm9sbFNuYXBJbmRleERpZENoYW5nZSgp
KQogICAgICAgICBzY3JvbGxpbmdUcmVlKCkuc2V0QWN0aXZlU2Nyb2xsU25hcEluZGljZXMoc2Ny
b2xsaW5nTm9kZUlEKCksIG1fZGVsZWdhdGUuYWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhT
Y3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwpLCBtX2RlbGVnYXRlLmFjdGl2ZVNjcm9sbFNuYXBJ
bmRleEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCkpOwotI2VuZGlmCisKICAgICBy
ZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0OjpyZXN1bHQoaGFuZGxlZCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5oCmluZGV4IDdlYzA5
MGRkZGY2MmI0MGM3NTYyZDlkNTJjNGE5ZDI1YzFlZmFiN2IuLjZkYTdkOGQ2ZmYzMGRlYjJmMmI3
M2E0MTRlODI5NWYzNjYyODUxODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVNYWMuaApAQCAtNTUsMTEgKzU1LDkgQEAgcHVibGljOgogICAgIHZvaWQgd2ls
bERvUHJvZ3JhbW1hdGljU2Nyb2xsKGNvbnN0IEZsb2F0UG9pbnQmKTsKICAgICB2b2lkIGN1cnJl
bnRTY3JvbGxQb3NpdGlvbkNoYW5nZWQoKTsKIAotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVAp
CiAgICAgYm9vbCBhY3RpdmVTY3JvbGxTbmFwSW5kZXhEaWRDaGFuZ2UoKSBjb25zdDsKICAgICBz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBhY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9s
bEV2ZW50QXhpcykgY29uc3Q7CiAgICAgYm9vbCBpc1Njcm9sbFNuYXBJblByb2dyZXNzKCkgY29u
c3Q7Ci0jZW5kaWYKIAogICAgIGJvb2wgaXNSdWJiZXJCYW5kSW5Qcm9ncmVzcygpIGNvbnN0Owog
CkBAIC05NCw3ICs5Miw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzY3JvbGxQb3NpdGlvbklzTm90
UnViYmVyYmFuZGluZ0VkZ2UoY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0OwogICAgIHZvaWQgc2Ny
b2xsQ29udHJvbGxlckFuaW1hdGlvblRpbWVyRmlyZWQoKTsKIAotI2lmIEVOQUJMRShDU1NfU0NS
T0xMX1NOQVApCiAgICAgRmxvYXRQb2ludCBzY3JvbGxPZmZzZXQoKSBjb25zdCBvdmVycmlkZTsK
ICAgICB2b2lkIGltbWVkaWF0ZVNjcm9sbE9uQXhpcyhTY3JvbGxFdmVudEF4aXMsIGZsb2F0IGRl
bHRhKSBvdmVycmlkZTsKICAgICBmbG9hdCBwYWdlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlk
ZTsKQEAgLTEwMiw3ICs5OSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRTdG9wU2Nyb2xsU25h
cEFuaW1hdGlvbigpIGZpbmFsOwogICAgIExheW91dFNpemUgc2Nyb2xsRXh0ZW50KCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgRmxvYXRTaXplIHZpZXdwb3J0U2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwot
I2VuZGlmCiAKICAgICB2b2lkIHJlbGVhc2VSZWZlcmVuY2VzVG9TY3JvbGxlckltcHNPblRoZU1h
aW5UaHJlYWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
bWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU1hYy5tbQppbmRleCA2Y2RiMzU0Y2U0Y2EyNGUyOTJhMjIzZmQ2YTgwMDlmNTljYWJlZTllLi4y
NjMzMmUzNDU0OGQ3YTkxYzk3ZWVlYTkyNWU2NTEzYzRkODhmZjI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQpAQCAtNjMsNyArNjMsNiBAQCB2
b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnVwZGF0ZUZyb21TdGF0
ZU5vZGUoY29uc3QgU2Nyb2xsaW5nUwogICAgICAgICBtX2hvcml6b250YWxTY3JvbGxlckltcCA9
IHNjcm9sbGluZ1N0YXRlTm9kZS5ob3Jpem9udGFsU2Nyb2xsZXJJbXAoKTsKICAgICB9CiAKLSNp
ZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFz
Q2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNuYXBPZmZzZXRz
SW5mbykpCiAgICAgICAgIG1fc2Nyb2xsQ29udHJvbGxlci5zZXRTbmFwT2Zmc2V0c0luZm8oc2Ny
b2xsaW5nU3RhdGVOb2RlLnNuYXBPZmZzZXRzSW5mbygpLmNvbnZlcnRVbml0czxMYXlvdXRTY3Jv
bGxTbmFwT2Zmc2V0c0luZm8+KCkpOwogCkBAIC03Miw3ICs3MSw2IEBAIHZvaWQgU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6dXBkYXRlRnJvbVN0YXRlTm9kZShjb25zdCBT
Y3JvbGxpbmdTCiAKICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpDdXJyZW50VmVydGljYWxTbmFwT2Zmc2V0
SW5kZXgpKQogICAgICAgICBtX3Njcm9sbENvbnRyb2xsZXIuc2V0QWN0aXZlU2Nyb2xsU25hcElu
ZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCBzY3JvbGxpbmdTdGF0ZU5vZGUu
Y3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoKSk7Ci0jZW5kaWYKIH0KIAogc3RkOjpvcHRp
b25hbDx1bnNpZ25lZD4gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6YWN0
aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXMgYXhpcykgY29uc3QKQEAg
LTk5LDkgKzk3LDcgQEAgYm9vbCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFj
OjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWwKICAgICAgICAgW21faG9yaXpv
bnRhbFNjcm9sbGVySW1wIHNldFVzZVByZXNlbnRhdGlvblZhbHVlOm1faW5Nb21lbnR1bVBoYXNl
XTsKICAgICB9CiAKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKSB8fCBFTkFCTEUoUlVCQkVS
X0JBTkRJTkcpCiAgICAgYXV0byBkZWZlcnJlciA9IFdoZWVsRXZlbnRUZXN0TW9uaXRvckNvbXBs
ZXRpb25EZWZlcnJlciB7IHNjcm9sbGluZ1RyZWUoKS53aGVlbEV2ZW50VGVzdE1vbml0b3IoKSwg
cmVpbnRlcnByZXRfY2FzdDxXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVhSWRl
bnRpZmllcj4oc2Nyb2xsaW5nTm9kZSgpLnNjcm9sbGluZ05vZGVJRCgpKSwgV2hlZWxFdmVudFRl
c3RNb25pdG9yOjpIYW5kbGluZ1doZWVsRXZlbnQgfTsKLSNlbmRpZgogCiAgICAgYm9vbCB3YXNJ
blVzZXJTY3JvbGwgPSBtX3Njcm9sbENvbnRyb2xsZXIuaXNVc2VyU2Nyb2xsSW5Qcm9ncmVzcygp
OwogICAgIG1fc2Nyb2xsQ29udHJvbGxlci51cGRhdGVHZXN0dXJlSW5Qcm9ncmVzc1N0YXRlKHdo
ZWVsRXZlbnQpOwpAQCAtMzgyLDcgKzM3OCw2IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZU1hYzo6YWRqdXN0U2Nyb2xsUG9zaXRpb25Ub0JvdW5kc0lmTmVjZXNzCiAg
ICAgaW1tZWRpYXRlU2Nyb2xsQnkoY29uc3RyYWluZWRQb3NpdGlvbiAtIHNjcm9sbFBvc2l0aW9u
KTsKIH0KIAotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiBGbG9hdFBvaW50IFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnNjcm9sbE9mZnNldCgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIFNjcm9sbGFibGVBcmVhOjpzY3JvbGxPZmZzZXRGcm9tUG9zaXRpb24oY3VycmVu
dFNjcm9sbFBvc2l0aW9uKCksIHNjcm9sbE9yaWdpbigpKTsKQEAgLTQyOSw3ICs0MjQsNiBAQCBG
bG9hdFNpemUgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6dmlld3BvcnRT
aXplKCkgY29uc3QKIHsKICAgICByZXR1cm4gc2Nyb2xsYWJsZUFyZWFTaXplKCk7CiB9Ci0jZW5k
aWYKIAogdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjpkZWZlcldo
ZWVsRXZlbnRUZXN0Q29tcGxldGlvbkZvclJlYXNvbihXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNj
cm9sbGFibGVBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6
OkRlZmVyUmVhc29uIHJlYXNvbikgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU5pY29zaWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5jcHAKaW5kZXggOTI1OGU3ZWFh
NGVkZDQ3YzVlNDBjZTM2YTAyZWVkODYxYTNhNDgxNC4uYzRjZWM5MzU4OTNlYjkyNTFmNmFhOWRl
NmQyNGIwMGZhNmY3OGI4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5jcHAKQEAgLTE2Niw3ICsxNjYsNiBAQCBXaGVl
bEV2ZW50SGFuZGxpbmdSZXN1bHQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5p
Y29zaWE6OmhhbmRsZVdoZWVsRQogICAgIGRlbHRhWCA9IC1kZWx0YVg7CiAgICAgZGVsdGFZID0g
LWRlbHRhWTsKIAotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgaWYgKCFzY3JvbGxp
bmdOb2RlKCkuc25hcE9mZnNldHNJbmZvKCkuaXNFbXB0eSgpKSB7CiAgICAgICAgIGZsb2F0IHNj
YWxlID0gcGFnZVNjYWxlRmFjdG9yKCk7CiAgICAgICAgIEZsb2F0UG9pbnQgb3JpZ2luYWxPZmZz
ZXQgPSBMYXlvdXRQb2ludChzY3JvbGxpbmdOb2RlKCkuY3VycmVudFNjcm9sbE9mZnNldCgpLngo
KSAvIHNjYWxlLCBzY3JvbGxpbmdOb2RlKCkuY3VycmVudFNjcm9sbE9mZnNldCgpLnkoKSAvIHNj
YWxlKTsKQEAgLTE3OSw3ICsxNzgsNiBAQCBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQgU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmhhbmRsZVdoZWVsRQogICAgICAg
ICBkZWx0YVggPSAob2Zmc2V0WCAtIG9yaWdpbmFsT2Zmc2V0LngoKSkgKiBzY2FsZTsKICAgICAg
ICAgZGVsdGFZID0gKG9mZnNldFkgLSBvcmlnaW5hbE9mZnNldC55KCkpICogc2NhbGU7CiAgICAg
fQotI2VuZGlmCiAKICNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKICAgICBpZiAobV9zY3Jv
bGxBbmltYXRvckVuYWJsZWQgJiYgIXdoZWVsRXZlbnQuaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRh
cygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKaW5kZXgg
MGM0OWIwMzUyZGVhZGNiMDQ3YjhmNGFmMjkyYjM2YzVkOGNkYTk3NC4uNWRmNTk4N2U4OTgxMjlk
M2Q4YTJiZTM1MWNjNzIwMDA0NDRkNWQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdG9yLmNwcApAQCAtMzYsMTMgKzM2LDEwIEBACiAjaW5jbHVkZSAiTGF5b3V0U2l6
ZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgIlNjcm9sbEFu
aW1hdGlvblNtb290aC5oIgorI2luY2x1ZGUgIlNjcm9sbENvbnRyb2xsZXIuaCIKICNpbmNsdWRl
ICJTY3JvbGxhYmxlQXJlYS5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KIAotI2lmIEVOQUJMRShD
U1NfU0NST0xMX1NOQVApIHx8IEVOQUJMRShSVUJCRVJfQkFORElORykKLSNpbmNsdWRlICJTY3Jv
bGxDb250cm9sbGVyLmgiCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgIUVO
QUJMRShTTU9PVEhfU0NST0xMSU5HKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRG
T1JNKE1BQykgJiYgIVBMQVRGT1JNKFdQRSkKQEAgLTU0LDEwICs1MSw4IEBAIHN0ZDo6dW5pcXVl
X3B0cjxTY3JvbGxBbmltYXRvcj4gU2Nyb2xsQW5pbWF0b3I6OmNyZWF0ZShTY3JvbGxhYmxlQXJl
YSYgc2Nyb2xsYWJsCiAKIFNjcm9sbEFuaW1hdG9yOjpTY3JvbGxBbmltYXRvcihTY3JvbGxhYmxl
QXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiAgICAgOiBtX3Njcm9sbGFibGVBcmVhKHNjcm9sbGFibGVB
cmVhKQotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApIHx8IEVOQUJMRShSVUJCRVJfQkFORElO
RykKICAgICAsIG1fc2Nyb2xsQ29udHJvbGxlcigqdGhpcykKICAgICAsIG1fc2Nyb2xsQ29udHJv
bGxlckFuaW1hdGlvblRpbWVyKCp0aGlzLCAmU2Nyb2xsQW5pbWF0b3I6OnNjcm9sbENvbnRyb2xs
ZXJBbmltYXRpb25UaW1lckZpcmVkKQotI2VuZGlmCiAgICAgLCBtX3Njcm9sbEFuaW1hdGlvbiht
YWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvblNtb290aD4oCiAgICAgICAgIFt0aGlzXSgpIC0+IFNj
cm9sbEV4dGVudHMgewogICAgICAgICAgICAgcmV0dXJuIHsgbV9zY3JvbGxhYmxlQXJlYS5taW5p
bXVtU2Nyb2xsUG9zaXRpb24oKSwgbV9zY3JvbGxhYmxlQXJlYS5tYXhpbXVtU2Nyb2xsUG9zaXRp
b24oKSwgbV9zY3JvbGxhYmxlQXJlYS52aXNpYmxlU2l6ZSgpIH07CkBAIC03NywxNSArNzIsMTIg
QEAgU2Nyb2xsQW5pbWF0b3I6OlNjcm9sbEFuaW1hdG9yKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxh
YmxlQXJlYSkKIAogU2Nyb2xsQW5pbWF0b3I6On5TY3JvbGxBbmltYXRvcigpCiB7Ci0jaWYgRU5B
QkxFKENTU19TQ1JPTExfU05BUCkgfHwgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQogICAgIG1fc2Ny
b2xsQ29udHJvbGxlci5zdG9wQWxsVGltZXJzKCk7Ci0jZW5kaWYKIH0KIAogYm9vbCBTY3JvbGxB
bmltYXRvcjo6c2Nyb2xsKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBTY3JvbGxH
cmFudWxhcml0eSBncmFudWxhcml0eSwgZmxvYXQgc3RlcCwgZmxvYXQgbXVsdGlwbGllciwgT3B0
aW9uU2V0PFNjcm9sbEJlaGF2aW9yPiBiZWhhdmlvcikKIHsKICAgICBhdXRvIGRlbHRhID0gZGVs
dGFGcm9tU3RlcChvcmllbnRhdGlvbiwgc3RlcCwgbXVsdGlwbGllcik7Ci0jaWYgRU5BQkxFKENT
U19TQ1JPTExfU05BUCkKICAgICBpZiAoYmVoYXZpb3IuY29udGFpbnMoU2Nyb2xsQmVoYXZpb3I6
OkRvRGlyZWN0aW9uYWxTbmFwcGluZykpIHsKICAgICAgICAgYmVoYXZpb3IucmVtb3ZlKFNjcm9s
bEJlaGF2aW9yOjpEb0RpcmVjdGlvbmFsU25hcHBpbmcpOwogICAgICAgICBpZiAoIW1fc2Nyb2xs
Q29udHJvbGxlci51c2VzU2Nyb2xsU25hcCgpKQpAQCAtMTAzLDEwICs5NSw2IEBAIGJvb2wgU2Ny
b2xsQW5pbWF0b3I6OnNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgU2Ny
b2xsR3JhbnVsYXJpdHkKICAgICAgICAgICAgIHJldHVybiBzY3JvbGwoSG9yaXpvbnRhbFNjcm9s
bGJhciwgZ3JhbnVsYXJpdHksIG5ld0RlbHRhLndpZHRoKCksIDEuMCwgYmVoYXZpb3IpOwogICAg
ICAgICByZXR1cm4gc2Nyb2xsKFZlcnRpY2FsU2Nyb2xsYmFyLCBncmFudWxhcml0eSwgbmV3RGVs
dGEuaGVpZ2h0KCksIDEuMCwgYmVoYXZpb3IpOwogICAgIH0KLSNlbHNlCi0gICAgVU5VU0VEX1BB
UkFNKGdyYW51bGFyaXR5KTsKLSAgICBVTlVTRURfUEFSQU0oYmVoYXZpb3IpOwotI2VuZGlmCiAK
ICNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsQW5pbWF0b3JFbmFibGVkKCkgJiYgIWJlaGF2
aW9yLmNvbnRhaW5zKFNjcm9sbEJlaGF2aW9yOjpOZXZlckFuaW1hdGUpKSB7CkBAIC0xNzgsNyAr
MTY2LDYgQEAgRmxvYXRTaXplIFNjcm9sbEFuaW1hdG9yOjpkZWx0YUZyb21TdGVwKFNjcm9sbGJh
ck9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBmbG9hdAogICAgIHJldHVybiBkZWx0YTsKIH0KIAot
I2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiBib29sIFNjcm9sbEFuaW1hdG9yOjphY3RpdmVT
Y3JvbGxTbmFwSW5kZXhEaWRDaGFuZ2UoKSBjb25zdAogewogICAgIHJldHVybiBtX3Njcm9sbENv
bnRyb2xsZXIuYWN0aXZlU2Nyb2xsU25hcEluZGV4RGlkQ2hhbmdlKCk7CkBAIC0xOTgsMTQgKzE4
NSwxMSBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yOjpyZXNuYXBBZnRlckxheW91dCgpCiB7CiAgICAg
bV9zY3JvbGxDb250cm9sbGVyLnJlc25hcEFmdGVyTGF5b3V0KCk7CiB9Ci0jZW5kaWYKIAogYm9v
bCBTY3JvbGxBbmltYXRvcjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZl
bnQmIGUpCiB7Ci0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICBpZiAocHJvY2Vzc1do
ZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYK
IAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIC8vIEV2ZW50cyBpbiB0aGUgUGxhdGZvcm1XaGVl
bEV2ZW50UGhhc2U6Ok1heUJlZ2luIHBoYXNlIGhhdmUgbm8gZGVsdGFzLCBhbmQgdGhlcmVmb3Jl
IG5ldmVyIHBhc3NlcyB0aHJvdWdoIHRoZSBzY3JvbGwgaGFuZGxpbmcgbG9naWMgYmVsb3cuCkBA
IC0yNzcsMjIgKzI2MSwxNiBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yOjpzZXRDdXJyZW50UG9zaXRp
b24oY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24pCiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OnVw
ZGF0ZUFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvck9mZnNldCgpCiB7Ci0jaWYgRU5BQkxFKENTU19T
Q1JPTExfU05BUCkKICAgICBtX3Njcm9sbENvbnRyb2xsZXIudXBkYXRlQWN0aXZlU2Nyb2xsU25h
cEluZGV4Rm9yQ2xpZW50T2Zmc2V0KCk7Ci0jZW5kaWYKIH0KIAogdm9pZCBTY3JvbGxBbmltYXRv
cjo6bm90aWZ5UG9zaXRpb25DaGFuZ2VkKGNvbnN0IEZsb2F0U2l6ZSYgZGVsdGEpCiB7CiAgICAg
VU5VU0VEX1BBUkFNKGRlbHRhKTsKICAgICBtX3Njcm9sbGFibGVBcmVhLnNldFNjcm9sbFBvc2l0
aW9uRnJvbUFuaW1hdGlvbihyb3VuZGVkSW50UG9pbnQoY3VycmVudFBvc2l0aW9uKCkpKTsKLQot
I2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApIHx8IEVOQUJMRShSVUJCRVJfQkFORElORykKICAg
ICBtX3Njcm9sbENvbnRyb2xsZXIuc2Nyb2xsUG9zaXRpb25DaGFuZ2VkKCk7Ci0jZW5kaWYKIH0K
IAotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiB2b2lkIFNjcm9sbEFuaW1hdG9yOjpzZXRT
bmFwT2Zmc2V0c0luZm8oY29uc3QgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvJiBpbmZvKQog
ewogICAgIG1fc2Nyb2xsQ29udHJvbGxlci5zZXRTbmFwT2Zmc2V0c0luZm8oaW5mbyk7CkBAIC0z
MzMsOSArMzExLDcgQEAgZmxvYXQgU2Nyb2xsQW5pbWF0b3I6OnBhZ2VTY2FsZUZhY3RvcigpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWEucGFnZVNjYWxlRmFjdG9yKCk7CiB9
Ci0jZW5kaWYKIAotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApIHx8IEVOQUJMRShSVUJCRVJf
QkFORElORykKIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxDb250cm9sbGVyVGltZXI+IFNjcm9sbEFu
aW1hdG9yOjpjcmVhdGVUaW1lcihGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiB7CiAgICAg
cmV0dXJuIFdURjo6bWFrZVVuaXF1ZTxTY3JvbGxDb250cm9sbGVyVGltZXI+KFJ1bkxvb3A6OmN1
cnJlbnQoKSwgW2Z1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbiksIHdlYWtTY3JvbGxhYmxlQXJl
YSA9IG1ha2VXZWFrUHRyKG1fc2Nyb2xsYWJsZUFyZWEpXSB7CkBAIC0zNjIsOSArMzM4LDggQEAg
dm9pZCBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsQ29udHJvbGxlckFuaW1hdGlvblRpbWVyRmlyZWQo
KQogewogICAgIG1fc2Nyb2xsQ29udHJvbGxlci5hbmltYXRpb25DYWxsYmFjayhNb25vdG9uaWNU
aW1lOjpub3coKSk7CiB9Ci0jZW5kaWYKIAotI2lmIChFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKSB8
fCBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpKSAmJiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0o
TUFDKQogdm9pZCBTY3JvbGxBbmltYXRvcjo6ZGVmZXJXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25G
b3JSZWFzb24oV2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIg
aWRlbnRpZmllciwgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpEZWZlclJlYXNvbiByZWFzb24pIGNv
bnN0CiB7CiAgICAgaWYgKCFtX3doZWVsRXZlbnRUZXN0TW9uaXRvcikKQEAgLTQxMSw3ICszODYs
NiBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yOjpkaWRBZGRIb3Jpem9udGFsU2Nyb2xsYmFyKFNjcm9s
bGJhciopCiAKIEZsb2F0UG9pbnQgU2Nyb2xsQW5pbWF0b3I6OmFkanVzdFNjcm9sbE9mZnNldEZv
clNuYXBwaW5nSWZOZWVkZWQoY29uc3QgRmxvYXRQb2ludCYgb2Zmc2V0LCBTY3JvbGxTbmFwUG9p
bnRTZWxlY3Rpb25NZXRob2QgbWV0aG9kKQogewotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVAp
CiAgICAgaWYgKCFtX3Njcm9sbENvbnRyb2xsZXIudXNlc1Njcm9sbFNuYXAoKSkKICAgICAgICAg
cmV0dXJuIG9mZnNldDsKIApAQCAtNDE5LDE1ICszOTMsMTAgQEAgRmxvYXRQb2ludCBTY3JvbGxB
bmltYXRvcjo6YWRqdXN0U2Nyb2xsT2Zmc2V0Rm9yU25hcHBpbmdJZk5lZWRlZChjb25zdCBGbG9h
dFBvaW4KICAgICBuZXdPZmZzZXQuc2V0WChhZGp1c3RTY3JvbGxPZmZzZXRGb3JTbmFwcGluZ0lm
TmVlZGVkKFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgbmV3T2Zmc2V0LngoKSwgbWV0aG9k
KSk7CiAgICAgbmV3T2Zmc2V0LnNldFkoYWRqdXN0U2Nyb2xsT2Zmc2V0Rm9yU25hcHBpbmdJZk5l
ZWRlZChTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCBuZXdPZmZzZXQueSgpLCBtZXRob2QpKTsK
ICAgICByZXR1cm4gbmV3T2Zmc2V0OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0obWV0aG9kKTsK
LSAgICByZXR1cm4gb2Zmc2V0OwotI2VuZGlmCiB9CiAKIGZsb2F0IFNjcm9sbEFuaW1hdG9yOjph
ZGp1c3RTY3JvbGxPZmZzZXRGb3JTbmFwcGluZ0lmTmVlZGVkKFNjcm9sbEV2ZW50QXhpcyBheGlz
LCBmbG9hdCBuZXdPZmZzZXQsIFNjcm9sbFNuYXBQb2ludFNlbGVjdGlvbk1ldGhvZCBtZXRob2Qp
CiB7Ci0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICBpZiAoIW1fc2Nyb2xsQ29udHJv
bGxlci51c2VzU2Nyb2xsU25hcCgpKQogICAgICAgICByZXR1cm4gbmV3T2Zmc2V0OwogCkBAIC00
NDEsMTEgKzQxMCw2IEBAIGZsb2F0IFNjcm9sbEFuaW1hdG9yOjphZGp1c3RTY3JvbGxPZmZzZXRG
b3JTbmFwcGluZ0lmTmVlZGVkKFNjcm9sbEV2ZW50QXhpcyBheGlzCiAgICAgfQogCiAgICAgcmV0
dXJuIG1fc2Nyb2xsQ29udHJvbGxlci5hZGp1c3RTY3JvbGxEZXN0aW5hdGlvbihheGlzLCBuZXdP
ZmZzZXQsIHZlbG9jaXR5LCBvcmlnaW5hbE9mZnNldCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJB
TShtZXRob2QpOwotICAgIFVOVVNFRF9QQVJBTShheGlzKTsKLSAgICByZXR1cm4gbmV3T2Zmc2V0
OwotI2VuZGlmCiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsQW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgK
aW5kZXggMWI2MDFmZmJmZGE3NjRhMmUyYjQ1NWIxZjUzNTMwNWUwNzBmM2I2ZC4uZmFjNzBkYjRl
NzY0YTQzMWJlYmY4ZDViNjAwNzg4NmI5YzUyMDJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxBbmltYXRvci5oCkBAIC0zMywxNiArMzMsMTMgQEAKIAogI2luY2x1ZGUgIkZsb2F0
UG9pbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKKyNpbmNsdWRlICJTY3Jv
bGxDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRlICJUaW1l
ci5oIgogI2luY2x1ZGUgIldoZWVsRXZlbnRUZXN0TW9uaXRvci5oIgogI2luY2x1ZGUgPHd0Zi9G
YXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAotI2lmIEVOQUJMRShSVUJC
RVJfQkFORElORykgfHwgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSNpbmNsdWRlICJTY3JvbGxD
b250cm9sbGVyLmgiCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGbG9h
dFBvaW50OwpAQCAtNTIsMTUgKzQ5LDkgQEAgY2xhc3MgU2Nyb2xsYWJsZUFyZWE7CiBjbGFzcyBT
Y3JvbGxiYXI7CiBjbGFzcyBXaGVlbEV2ZW50VGVzdE1vbml0b3I7CiAKLSNpZiBFTkFCTEUoQ1NT
X1NDUk9MTF9TTkFQKSB8fCBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCiBjbGFzcyBTY3JvbGxDb250
cm9sbGVyVGltZXI7Ci0jZW5kaWYKIAotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApIHx8IEVO
QUJMRShSVUJCRVJfQkFORElORykKIGNsYXNzIFNjcm9sbEFuaW1hdG9yIDogcHJpdmF0ZSBTY3Jv
bGxDb250cm9sbGVyQ2xpZW50IHsKLSNlbHNlCi1jbGFzcyBTY3JvbGxBbmltYXRvciB7Ci0jZW5k
aWYKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdG9yPiBjcmVhdGUoU2Nyb2xsYWJsZUFyZWEmKTsKQEAg
LTE0NCwxNiArMTM1LDEzIEBAIHB1YmxpYzoKICAgICBGbG9hdFBvaW50IGFkanVzdFNjcm9sbE9m
ZnNldEZvclNuYXBwaW5nSWZOZWVkZWQoY29uc3QgRmxvYXRQb2ludCYgb2Zmc2V0LCBTY3JvbGxT
bmFwUG9pbnRTZWxlY3Rpb25NZXRob2QpOwogICAgIGZsb2F0IGFkanVzdFNjcm9sbE9mZnNldEZv
clNuYXBwaW5nSWZOZWVkZWQoU2Nyb2xsRXZlbnRBeGlzLCBmbG9hdCBuZXdPZmZzZXQsIFNjcm9s
bFNuYXBQb2ludFNlbGVjdGlvbk1ldGhvZCk7CiAKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQ
KSB8fCBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbENv
bnRyb2xsZXJUaW1lcj4gY3JlYXRlVGltZXIoRnVuY3Rpb248dm9pZCgpPiYmKSBmaW5hbDsKIAog
ICAgIHZvaWQgc3RhcnRBbmltYXRpb25DYWxsYmFjayhTY3JvbGxDb250cm9sbGVyJikgZmluYWw7
CiAgICAgdm9pZCBzdG9wQW5pbWF0aW9uQ2FsbGJhY2soU2Nyb2xsQ29udHJvbGxlciYpIGZpbmFs
OwogCiAgICAgdm9pZCBzY3JvbGxDb250cm9sbGVyQW5pbWF0aW9uVGltZXJGaXJlZCgpOwotI2Vu
ZGlmCiAKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIHZpcnR1YWwgYm9vbCBwcm9j
ZXNzV2hlZWxFdmVudEZvclNjcm9sbFNuYXAoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JikgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIHVwZGF0ZVNjcm9sbFNuYXBTdGF0ZSgpOwogICAgIGJv
b2wgYWN0aXZlU2Nyb2xsU25hcEluZGV4RGlkQ2hhbmdlKCkgY29uc3Q7CkBAIC0xNjIsMTcgKzE1
MCwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTbmFwT2Zmc2V0c0luZm8oY29uc3QgTGF5b3V0
U2Nyb2xsU25hcE9mZnNldHNJbmZvJik7CiAgICAgY29uc3QgTGF5b3V0U2Nyb2xsU25hcE9mZnNl
dHNJbmZvKiBzbmFwT2Zmc2V0c0luZm8oKSBjb25zdDsKICAgICB2b2lkIHJlc25hcEFmdGVyTGF5
b3V0KCk7Ci0jZW5kaWYKIAogICAgIC8vIFNjcm9sbENvbnRyb2xsZXJDbGllbnQuCi0jaWYgRU5B
QkxFKENTU19TQ1JPTExfU05BUCkKICAgICBGbG9hdFBvaW50IHNjcm9sbE9mZnNldCgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIHZvaWQgaW1tZWRpYXRlU2Nyb2xsT25BeGlzKFNjcm9sbEV2ZW50QXhp
cywgZmxvYXQgZGVsdGEpIG92ZXJyaWRlOwogICAgIGZsb2F0IHBhZ2VTY2FsZUZhY3RvcigpIGNv
bnN0IG92ZXJyaWRlOwogICAgIExheW91dFNpemUgc2Nyb2xsRXh0ZW50KCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgRmxvYXRTaXplIHZpZXdwb3J0U2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwotI2VuZGlm
Ci0jaWYgKEVOQUJMRShDU1NfU0NST0xMX1NOQVApIHx8IEVOQUJMRShSVUJCRVJfQkFORElORykp
ICYmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBkZWZlcldoZWVs
RXZlbnRUZXN0Q29tcGxldGlvbkZvclJlYXNvbihXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9s
bGFibGVBcmVhSWRlbnRpZmllciwgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpEZWZlclJlYXNvbikg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCByZW1vdmVXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25E
ZWZlcnJhbEZvclJlYXNvbihXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVhSWRl
bnRpZmllciwgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpEZWZlclJlYXNvbikgY29uc3Qgb3ZlcnJp
ZGU7CiAjZW5kaWYKQEAgLTE4NywxMCArMTcyLDggQEAgcHJvdGVjdGVkOgogCiAgICAgU2Nyb2xs
YWJsZUFyZWEmIG1fc2Nyb2xsYWJsZUFyZWE7CiAgICAgUmVmUHRyPFdoZWVsRXZlbnRUZXN0TW9u
aXRvcj4gbV93aGVlbEV2ZW50VGVzdE1vbml0b3I7Ci0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05B
UCkgfHwgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQogICAgIFNjcm9sbENvbnRyb2xsZXIgbV9zY3Jv
bGxDb250cm9sbGVyOwogICAgIFRpbWVyIG1fc2Nyb2xsQ29udHJvbGxlckFuaW1hdGlvblRpbWVy
OwotI2VuZGlmCiAgICAgRmxvYXRQb2ludCBtX2N1cnJlbnRQb3NpdGlvbjsKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRpb24+IG1fc2Nyb2xsQW5pbWF0aW9uOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVyLmNwcAppbmRleCBjNzI3OWY0Y2JlN2Yz
NTM3NzhkMjFiYzE4ZWNjZGRkMGM4NzU2NzNhLi5lOTM3NWJhNzQ3NjhiZGI0NzNiZDhiZjFmZmE0
OWI4MWNmOTk0M2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxDb250cm9s
bGVyLmNwcApAQCAtMjksMTUgKzI5LDEwIEBACiAjaW5jbHVkZSAiTGF5b3V0U2l6ZS5oIgogI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKLSNpbmNs
dWRlICJXaGVlbEV2ZW50VGVzdE1vbml0b3IuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3Ry
ZWFtLmg+Ci0KLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogI2luY2x1ZGUgIlNjcm9sbFNu
YXBBbmltYXRvclN0YXRlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYWJsZUFyZWEuaCIKLSNlbmRpZgot
Ci0jaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKSB8fCBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQor
I2luY2x1ZGUgIldoZWVsRXZlbnRUZXN0TW9uaXRvci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1Rl
eHRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC05MCwxNSArODUsOSBAQCB2
b2lkIFNjcm9sbENvbnRyb2xsZXI6OnNldElzQW5pbWF0aW5nU2Nyb2xsU25hcChib29sIGlzQW5p
bWF0aW5nU2Nyb2xsU25hcCkKIAogYm9vbCBTY3JvbGxDb250cm9sbGVyOjp1c2VzU2Nyb2xsU25h
cCgpIGNvbnN0CiB7Ci0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICByZXR1cm4gISFt
X3Njcm9sbFNuYXBTdGF0ZTsKLSNlbHNlCi0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCiB9CiAK
LSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotCiB2b2lkIFNjcm9sbENvbnRyb2xsZXI6OnNl
dFNuYXBPZmZzZXRzSW5mbyhjb25zdCBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8mIHNuYXBP
ZmZzZXRJbmZvKQogewogICAgIGlmIChzbmFwT2Zmc2V0SW5mby5pc0VtcHR5KCkpIHsKQEAgLTIw
Niw4ICsxOTUsNiBAQCB2b2lkIFNjcm9sbENvbnRyb2xsZXI6OnJlc25hcEFmdGVyTGF5b3V0KCkK
ICAgICAgICAgc2V0TmVhcmVzdFNjcm9sbFNuYXBJbmRleEZvckF4aXNBbmRPZmZzZXQoU2Nyb2xs
RXZlbnRBeGlzOjpWZXJ0aWNhbCwgb2Zmc2V0LnkoKSk7CiAKIH0KLSNlbmRpZgotCiAvLyBDdXJy
ZW50bHksIG9ubHkgTWFjIHN1cHBvcnRzIG1vbWVudHVtIHNyb2xsaW5nLWJhc2VkIHNjcm9sbHNu
YXBwaW5nIGFuZCBydWJiZXIgYmFuZGluZwogLy8gc28gYWxsIG9mIHRoZXNlIG1ldGhvZHMgYXJl
IGEgbm9vcCBvbiBub24tTWFjIHBsYXRmb3Jtcy4KICNpZiAhUExBVEZPUk0oTUFDKQpAQCAtMjM2
LDUgKzIyMywzIEBAIHZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6dXBkYXRlUnViYmVyQmFuZEFuaW1h
dGluZ1N0YXRlKE1vbm90b25pY1RpbWUpCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpIHx8
IEVOQUJMRShDU1NfU0NST0xMX1NOQVApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxD
b250cm9sbGVyLmgKaW5kZXggMmFjYWVkNmU1MDA0MTE5ZjU5Y2Q3ZjU0YTQzNDYxMjUxNGMyOGIz
NC4uMmI0NzUxZWVhOGU0M2U1ZDVkNWIyOWY5MzM0MTE3ZWRmY2I3Y2Q4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENvbnRyb2xsZXIuaApAQCAtMjUsMjEgKzI1LDE3IEBACiAK
ICNwcmFnbWEgb25jZQogCi0jaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKSB8fCBFTkFCTEUoQ1NT
X1NDUk9MTF9TTkFQKQotCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkZsb2F0
U2l6ZS5oIgorCiAjaW5jbHVkZSAiUmVjdEVkZ2VzLmgiCisjaW5jbHVkZSAiU2Nyb2xsU25hcEFu
aW1hdG9yU3RhdGUuaCIKKyNpbmNsdWRlICJTY3JvbGxTbmFwT2Zmc2V0c0luZm8uaCIKICNpbmNs
dWRlICJTY3JvbGxUeXBlcy5oIgogI2luY2x1ZGUgIldoZWVsRXZlbnRUZXN0TW9uaXRvci5oIgog
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAK
LSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotI2luY2x1ZGUgIlNjcm9sbFNuYXBBbmltYXRv
clN0YXRlLmgiCi0jaW5jbHVkZSAiU2Nyb2xsU25hcE9mZnNldHNJbmZvLmgiCi0jZW5kaWYKLQog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBMYXlvdXRTaXplOwpAQCAtMTA2LDcgKzEwMiw2
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVmZXJXaGVlbEV2ZW50VGVzdENvbXBsZXRp
b25Gb3JSZWFzb24oV2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZp
ZXIsIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6RGVmZXJSZWFzb24pIGNvbnN0IHsgLyogRG8gbm90
aGluZyAqLyB9CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVdoZWVsRXZlbnRUZXN0Q29tcGxldGlv
bkRlZmVycmFsRm9yUmVhc29uKFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xsYWJsZUFyZWFJ
ZGVudGlmaWVyLCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OkRlZmVyUmVhc29uKSBjb25zdCB7IC8q
IERvIG5vdGhpbmcgKi8gfQogCi0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICB2aXJ0
dWFsIEZsb2F0UG9pbnQgc2Nyb2xsT2Zmc2V0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBpbW1lZGlhdGVTY3JvbGxPbkF4aXMoU2Nyb2xsRXZlbnRBeGlzLCBmbG9hdCBkZWx0YSkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU3RhcnRTY3JvbGxTbmFwQW5pbWF0aW9uKCkgeyB9CkBA
IC0xMTQsNyArMTA5LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgZmxvYXQgcGFnZVNjYWxlRmFj
dG9yKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgTGF5b3V0U2l6ZSBzY3JvbGxFeHRlbnQoKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBGbG9hdFNpemUgdmlld3BvcnRTaXplKCkgY29uc3QgPSAw
OwotI2VuZGlmCiB9OwogCiBjbGFzcyBTY3JvbGxDb250cm9sbGVyIHsKQEAgLTEzMSw3ICsxMjUs
NiBAQCBwdWJsaWM6CiAgICAgLy8gU2hvdWxkIGJlIGNhbGxlZCBwZXJpb2RpY2FsbHkgYnkgdGhl
IGNsaWVudC4gU3RhcnRlZCBieSBzdGFydEFuaW1hdGlvbkNhbGxiYWNrKCksIHN0b3BwZWQgYnkg
c3RvcEFuaW1hdGlvbkNhbGxiYWNrKCkuCiAgICAgdm9pZCBhbmltYXRpb25DYWxsYmFjayhNb25v
dG9uaWNUaW1lKTsKIAotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgdm9pZCBzZXRT
bmFwT2Zmc2V0c0luZm8oY29uc3QgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvJik7CiAgICAg
Y29uc3QgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvKiBzbmFwT2Zmc2V0c0luZm8oKSBjb25z
dDsKICAgICB2b2lkIHNldEFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZlbnRB
eGlzLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPik7CkBAIC0xNDMsNyArMTM2LDYgQEAgcHVibGlj
OgogICAgIHZvaWQgdXBkYXRlU2Nyb2xsU25hcFN0YXRlKGNvbnN0IFNjcm9sbGFibGVBcmVhJik7
CiAgICAgdm9pZCB1cGRhdGVHZXN0dXJlSW5Qcm9ncmVzc1N0YXRlKGNvbnN0IFBsYXRmb3JtV2hl
ZWxFdmVudCYpOwogICAgIGZsb2F0IGFkanVzdFNjcm9sbERlc3RpbmF0aW9uKFNjcm9sbEV2ZW50
QXhpcywgZmxvYXQgZGVzdGluYXRpb25PZmZzZXQsIGZsb2F0IHZlbG9jaXR5LCBzdGQ6Om9wdGlv
bmFsPGZsb2F0PiBvcmlnaW5hbE9mZnNldCk7Ci0jZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykK
ICAgICAvLyBSZXR1cm5zIHRydWUgaWYgaGFuZGxlZC4KQEAgLTE1NiwxMCArMTQ4LDggQEAgcHVi
bGljOgogICAgIGJvb2wgaXNTY3JvbGxTbmFwSW5Qcm9ncmVzcygpIGNvbnN0OwogICAgIGJvb2wg
aXNVc2VyU2Nyb2xsSW5Qcm9ncmVzcygpIGNvbnN0OwogCi0jaWYgRU5BQkxFKENTU19TQ1JPTExf
U05BUCkKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgaGFuZGxlZC4KICAgICBib29sIHByb2Nlc3NX
aGVlbEV2ZW50Rm9yU2Nyb2xsU25hcChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKTsKLSNlbmRp
ZgogCiAjaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQogICAgIHZvaWQgc3RvcFJ1YmJlcmJhbmRp
bmcoKTsKQEAgLTE2OSw5ICsxNTksNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSNp
ZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIHZvaWQgc2V0TmVhcmVzdFNjcm9sbFNuYXBJ
bmRleEZvckF4aXNBbmRPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzLCBpbnQpOwotI2VuZGlmCiAKICAg
ICB2b2lkIHVwZGF0ZVNjcm9sbFNuYXBBbmltYXRpbmdTdGF0ZShNb25vdG9uaWNUaW1lKTsKICAg
ICB2b2lkIHVwZGF0ZVJ1YmJlckJhbmRBbmltYXRpbmdTdGF0ZShNb25vdG9uaWNUaW1lKTsKQEAg
LTE4MCw3ICsxNjgsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0SXNBbmltYXRpbmdTY3JvbGxT
bmFwKGJvb2wpOwogCiAjaWYgUExBVEZPUk0oTUFDKQotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NO
QVApCiAgICAgdm9pZCBzdGFydFNjcm9sbFNuYXBBbmltYXRpb24oKTsKICAgICB2b2lkIHN0b3BT
Y3JvbGxTbmFwQW5pbWF0aW9uKCk7CiAKQEAgLTE4OSw3ICsxNzYsNiBAQCBwcml2YXRlOgogICAg
IHZvaWQgc2NoZWR1bGVTdGF0ZWxlc3NTY3JvbGxTbmFwKCk7CiAgICAgdm9pZCBzdGFydERlZmVy
cmluZ1doZWVsRXZlbnRUZXN0Q29tcGxldGlvbkR1ZVRvU2Nyb2xsU25hcHBpbmcoKTsKICAgICB2
b2lkIHN0b3BEZWZlcnJpbmdXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25EdWVUb1Njcm9sbFNuYXBw
aW5nKCk7Ci0jZW5kaWYKIAogI2lmIEVOQUJMRShSVUJCRVJfQkFORElORykKICAgICB2b2lkIHN0
YXJ0UnViYmVyYmFuZEFuaW1hdGlvbigpOwpAQCAtMjA3LDEwICsxOTMsOCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc3RhcnRPclN0b3BBbmltYXRpb25DYWxsYmFja3MoKTsKIAogICAgIFNjcm9sbENv
bnRyb2xsZXJDbGllbnQmIG1fY2xpZW50OwotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbFNuYXBBbmltYXRvclN0YXRlPiBtX3Njcm9sbFNuYXBT
dGF0ZTsKICAgICBib29sIG1fYWN0aXZlU2Nyb2xsU25hcEluZGV4RGlkQ2hhbmdlIHsgZmFsc2Ug
fTsKLSNlbmRpZgogCiAgICAgYm9vbCBtX2lzUnVubmluZ0FuaW1hdGluZ0NhbGxiYWNrIHsgZmFs
c2UgfTsKICAgICBib29sIG1faXNBbmltYXRpbmdSdWJiZXJCYW5kIHsgZmFsc2UgfTsKQEAgLTIy
NywxMCArMjExLDggQEAgcHJpdmF0ZToKICAgICBib29sIG1faWdub3JlTW9tZW50dW1TY3JvbGxz
IHsgZmFsc2UgfTsKICAgICBib29sIG1faXNSdWJiZXJCYW5kaW5nIHsgZmFsc2UgfTsKIAotI2lm
IEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgRmxvYXRTaXplIG1fZHJhZ0VuZGVkU2Nyb2xs
aW5nVmVsb2NpdHk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbENvbnRyb2xsZXJUaW1lcj4g
bV9zdGF0ZWxlc3NTbmFwVHJhbnNpdGlvblRpbWVyOwotI2VuZGlmCiAKICNpZiBFTkFCTEUoUlVC
QkVSX0JBTkRJTkcpCiAgICAgLy8gUnViYmVyIGJhbmQgc3RhdGUuCkBAIC0yNDcsNSArMjI5LDMg
QEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShSVUJCRVJfQkFORElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbFNuYXBBbmltYXRvclN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbFNuYXBBbmltYXRvclN0YXRlLmNwcAppbmRleCBiMzQzYWIyN2FiNDczZGMzNDI4MjFjOGE3
Yjg2YzU5MzBmZWZlNWJjLi43ZDRjYzczYzJjMWU3ZDU4N2Q1YThiMGExMjI1YTJkN2I2MGI2M2Rk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JT
dGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9y
U3RhdGUuY3BwCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuaCIKIAotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NO
QVApCi0KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1Rl
eHRTdHJlYW0uaD4KIApAQCAtMTE2LDUgKzExNCwzIEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNjcm9sbFNuYXBBbmltYXRvclN0YXRlJiBzdGF0ZSkKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gQ1NTX1NDUk9MTF9TTkFQCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuaApp
bmRleCBiODE2NzMyYzlhMjViYjBkMzQ0MGJhYmYyMDQzNGViNGMzMGFiNTZiLi5jMDc3YWUwZmQ1
OTg4ZWZkNWUzMDk3ZjRiODc3NDYzNWFmZTA5NjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbFNuYXBBbmltYXRvclN0YXRlLmgKQEAgLTI1LDggKzI1LDYgQEAKIAog
I3ByYWdtYSBvbmNlCiAKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotCiAjaW5jbHVkZSAi
RmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIkxheW91dFBv
aW50LmgiCkBAIC0xMDIsNSArMTAwLDMgQEAgcHJpdmF0ZToKIFdURjo6VGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZSYp
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoQ1NTX1NDUk9M
TF9TTkFQKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFy
ZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCmluZGV4
IDhhOTY3ODk1NTNhZDMxMTM1MTQ3ODJiMWY3MGUwY2Y1MTkzMzhhZmYuLjY5MmFiYzBhZjQxNGEz
NGIwYzhjOTM1MDE3ZjQ2NGE2MjM4OWRkYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxhYmxlQXJlYS5jcHAKQEAgLTQ2Nyw3ICs0NjcsNiBAQCBTdHJpbmcgU2Nyb2xsYWJsZUFy
ZWE6OnZlcnRpY2FsU2Nyb2xsYmFyU3RhdGVGb3JUZXN0aW5nKCkgY29uc3QKICAgICByZXR1cm4g
c2Nyb2xsQW5pbWF0b3IoKS52ZXJ0aWNhbFNjcm9sbGJhclN0YXRlRm9yVGVzdGluZygpOwogfQog
Ci0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKIGNvbnN0IExheW91dFNjcm9sbFNuYXBPZmZz
ZXRzSW5mbyogU2Nyb2xsYWJsZUFyZWE6OnNuYXBPZmZzZXRzSW5mbygpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIGV4aXN0aW5nU2Nyb2xsQW5pbWF0b3IoKSA/IGV4aXN0aW5nU2Nyb2xsQW5pbWF0b3Io
KS0+c25hcE9mZnNldHNJbmZvKCkgOiBudWxscHRyOwpAQCAtNTYzLDE1ICs1NjIsNiBAQCB2b2lk
IFNjcm9sbGFibGVBcmVhOjpkb1Bvc3RUaHVtYk1vdmVTbmFwcGluZyhTY3JvbGxiYXJPcmllbnRh
dGlvbiBvcmllbnRhdGlvbikKIAogICAgIHNjcm9sbEFuaW1hdG9yLT5zY3JvbGxUb09mZnNldFdp
dGhBbmltYXRpb24obmV3T2Zmc2V0KTsKIH0KLSNlbHNlCi12b2lkIFNjcm9sbGFibGVBcmVhOjpy
ZXNuYXBBZnRlckxheW91dCgpCi17Ci19Ci0KLXZvaWQgU2Nyb2xsYWJsZUFyZWE6OmRvUG9zdFRo
dW1iTW92ZVNuYXBwaW5nKFNjcm9sbGJhck9yaWVudGF0aW9uKQotewotfQotI2VuZGlmCiAKIGJv
b2wgU2Nyb2xsYWJsZUFyZWE6OmlzUGlubmVkRm9yU2Nyb2xsRGVsdGFPbkF4aXMoZmxvYXQgc2Ny
b2xsRGVsdGEsIFNjcm9sbEV2ZW50QXhpcyBheGlzKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKaW5kZXggOTU5ZThmODJmMDY1NDVkY2JkYjkwYTJiNzhj
MGJjYjkwOWM4MDNiYS4uZmQzOTYzMzM4MGI5NDdhMjA1MGE3Yjg2ODBjNTc5OTBmNmQ3NWNiNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCkBAIC04OCw3ICs4OCw2
IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgYm9vbCBoYW5kbGVXaGVl
bEV2ZW50Rm9yU2Nyb2xsaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIHN0ZDo6b3B0aW9u
YWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+KTsKIAotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NO
QVApCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNuYXBPZmZzZXRzKCkgeyB9OwogICAgIFdFQkNP
UkVfRVhQT1JUIGNvbnN0IExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbyogc25hcE9mZnNldHNJ
bmZvKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTY3JvbGxTbmFwT2Zmc2V0SW5mbyhjb25zdCBMYXlv
dXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8mKTsKQEAgLTk3LDcgKzk2LDYgQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGN1cnJlbnRWZXJ0aWNhbFNu
YXBQb2ludEluZGV4KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDdXJyZW50
SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+KTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldEN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+KTsKLSNlbmRpZgogCiAgICAgdm9pZCByZXNuYXBBZnRlckxheW91
dCgpOwogICAgIHZvaWQgZG9Qb3N0VGh1bWJNb3ZlU25hcHBpbmcoU2Nyb2xsYmFyT3JpZW50YXRp
b24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1h
dG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFj
Lm1tCmluZGV4IGIxZWMyYzY0YmU1YjY3MzBjZGRjMmMwYzgwODVlZDI5Yjc0ODk5MDMuLjE3YTkx
YjUzZjk1NjMxYWUwMThhYzFiYWE2MTFmN2Q2NzJiZjIyY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KQEAgLTgzNywxMSArODM3LDcg
QEAgYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6aXNSdWJiZXJCYW5kSW5Qcm9ncmVzcygpIGNvbnN0
CiAKIGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OmlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoKSBjb25z
dAogewotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgcmV0dXJuIG1fc2Nyb2xsQ29u
dHJvbGxlci5pc1Njcm9sbFNuYXBJblByb2dyZXNzKCk7Ci0jZWxzZQotICAgIHJldHVybiBmYWxz
ZTsKLSNlbmRpZgogfQogCiBzdGF0aWMgU3RyaW5nIHNjcm9sbGJhclN0YXRlKFNjcm9sbGJhciog
c2Nyb2xsYmFyKQpAQCAtMTAxOSwxMCArMTAxNSw4IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6
OmRpZEJlZ2luU2Nyb2xsR2VzdHVyZSgpIGNvbnN0CiAKICAgICBbbV9zY3JvbGxlckltcFBhaXIg
YmVnaW5TY3JvbGxHZXN0dXJlXTsKIAotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApIHx8IEVO
QUJMRShSVUJCRVJfQkFORElORykKICAgICBpZiAobV93aGVlbEV2ZW50VGVzdE1vbml0b3IpCiAg
ICAgICAgIG1fd2hlZWxFdmVudFRlc3RNb25pdG9yLT5kZWZlckZvclJlYXNvbihyZWludGVycHJl
dF9jYXN0PFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyPih0
aGlzKSwgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpDb250ZW50U2Nyb2xsSW5Qcm9ncmVzcyk7Ci0j
ZW5kaWYKIH0KIAogdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6ZGlkRW5kU2Nyb2xsR2VzdHVyZSgp
IGNvbnN0CkBAIC0xMDM0LDEwICsxMDI4LDggQEAgdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6ZGlk
RW5kU2Nyb2xsR2VzdHVyZSgpIGNvbnN0CiAKICAgICBbbV9zY3JvbGxlckltcFBhaXIgZW5kU2Ny
b2xsR2VzdHVyZV07CiAKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKSB8fCBFTkFCTEUoUlVC
QkVSX0JBTkRJTkcpCiAgICAgaWYgKG1fd2hlZWxFdmVudFRlc3RNb25pdG9yKQogICAgICAgICBt
X3doZWVsRXZlbnRUZXN0TW9uaXRvci0+cmVtb3ZlRGVmZXJyYWxGb3JSZWFzb24ocmVpbnRlcnBy
ZXRfY2FzdDxXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllcj4o
dGhpcyksIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6Q29udGVudFNjcm9sbEluUHJvZ3Jlc3MpOwot
I2VuZGlmCiB9CiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6Om1heUJlZ2luU2Nyb2xsR2VzdHVy
ZSgpIGNvbnN0CkBAIC0xMjc3LDcgKzEyNjksNiBAQCBib29sIFNjcm9sbEFuaW1hdG9yTWFjOjpp
c1Bpbm5lZEZvclNjcm9sbERlbHRhKGNvbnN0IEZsb2F0U2l6ZSYgZGVsdGEpIGNvbnN0CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKIHN0YXRpYyBi
b29sIGdlc3R1cmVTaG91bGRCZWdpblNuYXAoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVl
bEV2ZW50LCBTY3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3QgTGF5b3V0U2Nyb2xsU25hcE9mZnNl
dHNJbmZvKiBvZmZzZXRJbmZvKQogewogICAgIGlmICghb2Zmc2V0SW5mbykKQEAgLTEyOTEsNyAr
MTI4Miw2IEBAIHN0YXRpYyBib29sIGdlc3R1cmVTaG91bGRCZWdpblNuYXAoY29uc3QgUGxhdGZv
cm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBTY3JvbGxFCiAKICAgICByZXR1cm4gdHJ1ZTsKIH0K
LSNlbmRpZgogCiBib29sIFNjcm9sbEFuaW1hdG9yTWFjOjphbGxvd3NWZXJ0aWNhbFN0cmV0Y2hp
bmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KSBjb25zdAogewpAQCAtMTMw
MSwxMCArMTI5MSw4IEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OmFsbG93c1ZlcnRpY2FsU3Ry
ZXRjaGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsCiAgICAgICAgIFNjcm9sbGJh
ciogdlNjcm9sbGVyID0gbV9zY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbFNjcm9sbGJhcigpOwogICAg
ICAgICBib29sIHNjcm9sbGJhcnNBbGxvd1N0cmV0Y2hpbmcgPSAoKHZTY3JvbGxlciAmJiB2U2Ny
b2xsZXItPmVuYWJsZWQoKSkgfHwgKCFoU2Nyb2xsZXIgfHwgIWhTY3JvbGxlci0+ZW5hYmxlZCgp
KSk7CiAgICAgICAgIGJvb2wgZXZlbnRQcmV2ZW50c1N0cmV0Y2hpbmcgPSBtX3Njcm9sbGFibGVB
cmVhLmhhc1Njcm9sbGFibGVPclJ1YmJlcmJhbmRhYmxlQW5jZXN0b3IoKSAmJiB3aGVlbEV2ZW50
LmlzR2VzdHVyZVN0YXJ0KCkgJiYgbV9zY3JvbGxhYmxlQXJlYS5pc1Bpbm5lZEZvclNjcm9sbERl
bHRhT25BeGlzKC13aGVlbEV2ZW50LmRlbHRhWSgpLCBTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2Fs
KTsKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgICAgICBpZiAoIWV2ZW50UHJldmVu
dHNTdHJldGNoaW5nKQogICAgICAgICAgICAgZXZlbnRQcmV2ZW50c1N0cmV0Y2hpbmcgPSBnZXN0
dXJlU2hvdWxkQmVnaW5TbmFwKHdoZWVsRXZlbnQsIFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWws
IG1fc2Nyb2xsYWJsZUFyZWEuc25hcE9mZnNldHNJbmZvKCkpOwotI2VuZGlmCiAgICAgICAgIHJl
dHVybiBzY3JvbGxiYXJzQWxsb3dTdHJldGNoaW5nICYmICFldmVudFByZXZlbnRzU3RyZXRjaGlu
ZzsKICAgICB9CiAgICAgY2FzZSBTY3JvbGxFbGFzdGljaXR5Tm9uZToKQEAgLTEzMjUsMTAgKzEz
MTMsOCBAQCBib29sIFNjcm9sbEFuaW1hdG9yTWFjOjphbGxvd3NIb3Jpem9udGFsU3RyZXRjaGlu
Zyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZQogICAgICAgICBTY3JvbGxiYXIqIHZTY3Jv
bGxlciA9IG1fc2Nyb2xsYWJsZUFyZWEudmVydGljYWxTY3JvbGxiYXIoKTsKICAgICAgICAgYm9v
bCBzY3JvbGxiYXJzQWxsb3dTdHJldGNoaW5nID0gKChoU2Nyb2xsZXIgJiYgaFNjcm9sbGVyLT5l
bmFibGVkKCkpIHx8ICghdlNjcm9sbGVyIHx8ICF2U2Nyb2xsZXItPmVuYWJsZWQoKSkpOwogICAg
ICAgICBib29sIGV2ZW50UHJldmVudHNTdHJldGNoaW5nID0gbV9zY3JvbGxhYmxlQXJlYS5oYXNT
Y3JvbGxhYmxlT3JSdWJiZXJiYW5kYWJsZUFuY2VzdG9yKCkgJiYgd2hlZWxFdmVudC5pc0dlc3R1
cmVTdGFydCgpICYmIG1fc2Nyb2xsYWJsZUFyZWEuaXNQaW5uZWRGb3JTY3JvbGxEZWx0YU9uQXhp
cygtd2hlZWxFdmVudC5kZWx0YVgoKSwgU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsKTsKLSNp
ZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgICAgICBpZiAoIWV2ZW50UHJldmVudHNTdHJl
dGNoaW5nKQogICAgICAgICAgICAgZXZlbnRQcmV2ZW50c1N0cmV0Y2hpbmcgPSBnZXN0dXJlU2hv
dWxkQmVnaW5TbmFwKHdoZWVsRXZlbnQsIFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgbV9z
Y3JvbGxhYmxlQXJlYS5zbmFwT2Zmc2V0c0luZm8oKSk7Ci0jZW5kaWYKICAgICAgICAgcmV0dXJu
IHNjcm9sbGJhcnNBbGxvd1N0cmV0Y2hpbmcgJiYgIWV2ZW50UHJldmVudHNTdHJldGNoaW5nOwog
ICAgIH0KICAgICBjYXNlIFNjcm9sbEVsYXN0aWNpdHlOb25lOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQ29udHJvbGxlci5tbQppbmRleCA4NzAzOGI1OWQ5MjAwMmJj
ZTRjY2QxNGZmMTM5ZGU4YWJlMmM1YzVlLi5jYWM5YjJiMTQ5YzM5ZWMwY2VmMDA1MWJkMjE3YWZk
ODQ2ZDYzODlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xs
Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQ29u
dHJvbGxlci5tbQpAQCAtMzQsNyArMzQsNyBAQAogI2ltcG9ydCA8c3lzL3RpbWUuaD4KICNpbXBv
cnQgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAotI2lmIFBMQVRGT1JNKE1BQykgJiYgKEVOQUJM
RShSVUJCRVJfQkFORElORykgfHwgRU5BQkxFKENTU19TQ1JPTExfU05BUCkpCisjaWYgUExBVEZP
Uk0oTUFDKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTc3LDEwICs3Nyw4IEBAIFNjcm9s
bENvbnRyb2xsZXI6On5TY3JvbGxDb250cm9sbGVyKCkKIAogdm9pZCBTY3JvbGxDb250cm9sbGVy
OjpzdG9wQWxsVGltZXJzKCkKIHsKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIGlm
IChtX3N0YXRlbGVzc1NuYXBUcmFuc2l0aW9uVGltZXIpCiAgICAgICAgIG1fc3RhdGVsZXNzU25h
cFRyYW5zaXRpb25UaW1lci0+c3RvcCgpOwotI2VuZGlmCiAKICNpZiBBU1NFUlRfRU5BQkxFRAog
ICAgIG1fdGltZXJzV2VyZVN0b3BwZWQgPSB0cnVlOwpAQCAtODksMTAgKzg3LDkgQEAgdm9pZCBT
Y3JvbGxDb250cm9sbGVyOjpzdG9wQWxsVGltZXJzKCkKIAogYm9vbCBTY3JvbGxDb250cm9sbGVy
OjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkK
IHsKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIGlmIChwcm9jZXNzV2hlZWxFdmVu
dEZvclNjcm9sbFNuYXAod2hlZWxFdmVudCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotI2VuZGlm
CisKICAgICBpZiAod2hlZWxFdmVudC5waGFzZSgpID09IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNl
OjpNYXlCZWdpbiB8fCB3aGVlbEV2ZW50LnBoYXNlKCkgPT0gUGxhdGZvcm1XaGVlbEV2ZW50UGhh
c2U6OkNhbmNlbGxlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC00NjYsMTAgKzQ2Myw5
IEBAIGJvb2wgU2Nyb2xsQ29udHJvbGxlcjo6aXNTY3JvbGxTbmFwSW5Qcm9ncmVzcygpIGNvbnN0
CiAgICAgaWYgKCF1c2VzU2Nyb2xsU25hcCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSNp
ZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIGlmIChtX2luU2Nyb2xsR2VzdHVyZSB8fCBt
X21vbWVudHVtU2Nyb2xsSW5Qcm9ncmVzcyB8fCBtX2lzQW5pbWF0aW5nU2Nyb2xsU25hcCkKICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKKwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAt
NTY4LDcgKzU2NCw2IEBAIHZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6dXBkYXRlUnViYmVyQmFuZGlu
Z0VkZ2VzKEludFNpemUgY2xpZW50U3RyZXRjaCkKIAogI2VuZGlmIC8vIEVOQUJMRShSVUJCRVJf
QkFORElORykKIAotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiBlbnVtIGNsYXNzIFdoZWVs
RXZlbnRTdGF0dXMgewogICAgIFVzZXJTY3JvbGxCZWdpbiwKICAgICBVc2VyU2Nyb2xsaW5nLApA
QCAtNzg3LDEwICs3ODIsNyBAQCB2b2lkIFNjcm9sbENvbnRyb2xsZXI6OnVwZGF0ZVNjcm9sbFNu
YXBBbmltYXRpbmdTdGF0ZShNb25vdG9uaWNUaW1lIGN1cnJlbnRUaW1lKQogICAgICAgICBzdG9w
U2Nyb2xsU25hcEFuaW1hdGlvbigpOwogICAgIH0KIH0KLSNlbmRpZiAvLyBFTkFCTEUoQ1NTX1ND
Uk9MTF9TTkFQKQotCi0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5B
QkxFKFJVQkJFUl9CQU5ESU5HKSB8fCBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKSkKKyNlbmRpZiAv
LyBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4
IGExZDJmOGFiYmIxNWU1Zjk2MGNlYzkxZDcwNDdlZmNlNjdkODg2YjYuLjI0YTc1YmY3ZTJiYTBl
NDEzMjI5NGRmODAwNzY1NGUwYTk0YzllY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwCkBAIC0xNjYsMTAgKzE2Niw4IEBAIHZvaWQgUmVuZGVyQm94Ojp3aWxsQmVEZXN0
cm95ZWQoKQogICAgIHZpZXcoKS51bnNjaGVkdWxlTGF6eVJlcGFpbnQoKnRoaXMpOwogICAgIHJl
bW92ZUNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcigqdGhpcyk7CiAKLSNpZiBFTkFCTEUoQ1NTX1ND
Uk9MTF9TTkFQKQogICAgIGlmIChoYXNJbml0aWFsaXplZFN0eWxlKCkgJiYgc3R5bGUoKS5oYXNT
bmFwUG9zaXRpb24oKSkKICAgICAgICAgdmlldygpLnVucmVnaXN0ZXJCb3hXaXRoU2Nyb2xsU25h
cFBvc2l0aW9ucygqdGhpcyk7Ci0jZW5kaWYKIAogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0Ojp3
aWxsQmVEZXN0cm95ZWQoKTsKIH0KQEAgLTI4MCw3ICsyNzgsNiBAQCB2b2lkIFJlbmRlckJveDo6
c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSYg
bmV3U3R5bAogICAgIH0gZWxzZSBpZiAoaXNCb2R5KCkpCiAgICAgICAgIHZpZXcoKS5yZXBhaW50
Um9vdENvbnRlbnRzKCk7CiAKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIGJvb2wg
Ym94Q29udHJpYnV0ZXNTbmFwUG9zaXRpb25zID0gbmV3U3R5bGUuaGFzU25hcFBvc2l0aW9uKCk7
CiAgICAgaWYgKGJveENvbnRyaWJ1dGVzU25hcFBvc2l0aW9ucyB8fCAob2xkU3R5bGUgJiYgb2xk
U3R5bGUtPmhhc1NuYXBQb3NpdGlvbigpKSkgewogICAgICAgICBpZiAoYm94Q29udHJpYnV0ZXNT
bmFwUG9zaXRpb25zKQpAQCAtMjg4LDcgKzI4NSw2IEBAIHZvaWQgUmVuZGVyQm94OjpzdHlsZVdp
bGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHls
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHZpZXcoKS51bnJlZ2lzdGVyQm94V2l0aFNjcm9s
bFNuYXBQb3NpdGlvbnMoKnRoaXMpOwogICAgIH0KLSNlbmRpZgogCiAgICAgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OnN0eWxlV2lsbENoYW5nZShkaWZmLCBuZXdTdHlsZSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IDEx
YzlmZjdhZDRlYjNmZTFlMmIxMTg3MGQ5NDI4NTI4ZGZlZTU1ZTYuLjBmMDFhYTdiMmM0OWI0Y2Zk
YjNiY2MxZWRiZjEzMzU3NTNlYzZjZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC00OTg3LDEzICs0OTg3LDExIEBAIEdy
YXBoaWNzTGF5ZXJGYWN0b3J5KiBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmdyYXBoaWNzTGF5ZXJG
YWN0b3J5KCkgY29uc3QKICAgICByZXR1cm4gcGFnZSgpLmNocm9tZSgpLmNsaWVudCgpLmdyYXBo
aWNzTGF5ZXJGYWN0b3J5KCk7CiB9CiAKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogdm9p
ZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZVNjcm9sbFNuYXBQcm9wZXJ0aWVzV2l0aEZy
YW1lVmlldyhjb25zdCBGcmFtZVZpZXcmIGZyYW1lVmlldykgY29uc3QKIHsKICAgICBpZiAoYXV0
byogY29vcmRpbmF0b3IgPSBzY3JvbGxpbmdDb29yZGluYXRvcigpKQogICAgICAgICBjb29yZGlu
YXRvci0+dXBkYXRlU2Nyb2xsU25hcFByb3BlcnRpZXNXaXRoRnJhbWVWaWV3KGZyYW1lVmlldyk7
CiB9Ci0jZW5kaWYKIAogUGFnZSYgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpwYWdlKCkgY29uc3QK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3Iu
aAppbmRleCBkNmJiZjJmMzg3OWUxZTk1MzkzMzRjOTlhYjFiYjkxOGFlNWUyZGQzLi5kMTJmMWM1
Y2NjMWVkNTQ2ZTJmOTAwMDg1N2I0OGRlNmM4YzA2ZjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCkBAIC0zODMsOSArMzgzLDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCB1cGRhdGVSb290Q29udGVudExheWVyQ2xpcHBpbmcoKTsKIAot
I2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgdm9pZCB1cGRhdGVTY3JvbGxTbmFwUHJv
cGVydGllc1dpdGhGcmFtZVZpZXcoY29uc3QgRnJhbWVWaWV3JikgY29uc3Q7Ci0jZW5kaWYKIAog
ICAgIC8vIEZvciB0ZXN0aW5nLgogICAgIHZvaWQgc3RhcnRUcmFja2luZ0xheWVyRmx1c2hlcygp
IHsgbV9sYXllckZsdXNoQ291bnQgPSAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKaW5kZXggOTlkYjY2NjYxMGY3Nzg1YzY0
ZWU1OWViZjRhMmJkZTM4NTZiNjIzMi4uZjI5NTA0YTJmMzJlODVhZDU4MzI3ZjY2YTM0YjE5MTI4
YjZkNjg3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ck1vZGVsT2JqZWN0LmNwcApAQCAtMTYzLDcgKzE2Myw2IEBAIHZvaWQgUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdDo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRl
clN0CiAgICAgICAgICAgICByZW5kZXJMYXllci0+dXBkYXRlU2Nyb2xsYmFyU3RlcHMoKTsKICAg
ICB9CiAKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIGJvb2wgc2Nyb2xsTWFyZ2lu
Q2hhbmdlZCA9IG9sZFN0eWxlICYmIG9sZFN0eWxlLT5zY3JvbGxNYXJnaW4oKSAhPSBuZXdTdHls
ZS5zY3JvbGxNYXJnaW4oKTsKICAgICBib29sIHNjcm9sbEFsaWduQ2hhbmdlZCA9IG9sZFN0eWxl
ICYmIG9sZFN0eWxlLT5zY3JvbGxTbmFwQWxpZ24oKSAhPSBuZXdTdHlsZS5zY3JvbGxTbmFwQWxp
Z24oKTsKICAgICBib29sIHNjcm9sbFNuYXBTdG9wQ2hhbmdlZCA9IG9sZFN0eWxlICYmIG9sZFN0
eWxlLT5zY3JvbGxTbmFwU3RvcCgpICE9IG5ld1N0eWxlLnNjcm9sbFNuYXBTdG9wKCk7CkBAIC0x
NzEsNyArMTcwLDYgQEAgdm9pZCBSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpzdHlsZURpZENoYW5n
ZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3QKICAgICAgICAgaWYgKGF1dG8q
IHNjcm9sbFNuYXBCb3ggPSBlbmNsb3NpbmdTY3JvbGxhYmxlQ29udGFpbmVyRm9yU25hcHBpbmco
KSkKICAgICAgICAgICAgIHNjcm9sbFNuYXBCb3gtPnNldE5lZWRzTGF5b3V0KCk7CiAgICAgfQot
I2VuZGlmCiB9CiAKIGJvb2wgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6c2hvdWxkUGxhY2VWZXJ0
aWNhbFNjcm9sbGJhck9uTGVmdCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHAKaW5kZXggMzBkOWI5MDQ0YzZm
N2QyMzllYzUxMmRkZWM1ZWUyMWI3MWZlZTQ4Yi4uNWJjNzcyY2M4MTZiY2JmMDY4N2QyOWU4Yzlh
YTQwOTI5NWQzZjI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcApAQCAtMTIyMSwxMSArMTIyMSw5IEBAIHZvaWQg
UmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6dXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0KCkK
ICAgICBjb21wdXRlU2Nyb2xsRGltZW5zaW9ucygpOwogICAgIG1fbGF5ZXIudXBkYXRlU2VsZlBh
aW50aW5nTGF5ZXIoKTsKIAotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgLy8gRklY
TUU6IEVuc3VyZSB0aGF0IG9mZnNldHMgYXJlIGFsc28gdXBkYXRlZCBpbiBjYXNlIG9mIHByb2dy
YW1tYXRpYyBzdHlsZSBjaGFuZ2VzLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzU5NjQKICAgICB1cGRhdGVTbmFwT2Zmc2V0cygpOwotI2VuZGlmCiAK
ICAgICBpZiAoIWJveC0+aXNIVE1MTWFycXVlZSgpICYmICFpc1J1YmJlckJhbmRJblByb2dyZXNz
KCkgJiYgIWlzVXNlclNjcm9sbEluUHJvZ3Jlc3MoKSkgewogICAgICAgICAvLyBMYXlvdXQgbWF5
IGNhdXNlIHVzIHRvIGJlIGF0IGFuIGludmFsaWQgc2Nyb2xsIHBvc2l0aW9uLiBJbiB0aGlzIGNh
c2Ugd2UgbmVlZApAQCAtMTUwNyw3ICsxNTA1LDYgQEAgYm9vbCBSZW5kZXJMYXllclNjcm9sbGFi
bGVBcmVhOjp1c2VEYXJrQXBwZWFyYW5jZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fbGF5ZXIucmVu
ZGVyZXIoKS51c2VEYXJrQXBwZWFyYW5jZSgpOwogfQogCi0jaWYgRU5BQkxFKENTU19TQ1JPTExf
U05BUCkKIHZvaWQgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6dXBkYXRlU25hcE9mZnNldHMo
KQogewogICAgIC8vIEZJWE1FOiBFeHRlbmQgc3VwcG9ydCBiZXlvbmQgSFRNTEVsZW1lbnRzLgpA
QCAtMTUzMyw3ICsxNTMwLDYgQEAgYm9vbCBSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhOjppc1Nj
cm9sbFNuYXBJblByb2dyZXNzKCkgY29uc3QKIAogICAgIHJldHVybiBmYWxzZTsKIH0KLSNlbmRp
ZgogCiB2b2lkIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6OnBhaW50T3ZlcmxheVNjcm9sbGJh
cnMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0
LCBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4gcGFpbnRCZWhhdmlvciwgUmVuZGVyT2JqZWN0KiBz
dWJ0cmVlUGFpbnRSb290KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmgKaW5kZXggZTdjZmNhNDA4YmY5OTg1OTJhMDNmMTk4
YzlkNTg2YjQwZTYxYzlkYi4uYTA3MjgxYmI1OTVlZWM4NzIxNmZjMmJlNjdjZWQ5ZjA5YzkyZTE0
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xs
YWJsZUFyZWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3Jv
bGxhYmxlQXJlYS5oCkBAIC0xNDMsOSArMTQzLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNTY3Jv
bGxhYmxlT3JSdWJiZXJiYW5kYWJsZSgpIGZpbmFsOwogICAgIGJvb2wgaGFzU2Nyb2xsYWJsZU9y
UnViYmVyYmFuZGFibGVBbmNlc3RvcigpIGZpbmFsOwogICAgIGJvb2wgdXNlRGFya0FwcGVhcmFu
Y2UoKSBjb25zdCBmaW5hbDsKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIHZvaWQg
dXBkYXRlU25hcE9mZnNldHMoKSBmaW5hbDsKLSNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKQEAgLTE4OCw5ICsxODYsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBpc1VzZXJTY3JvbGxJblByb2dyZXNzKCkgY29uc3QgZmluYWw7CiAg
ICAgYm9vbCBpc1J1YmJlckJhbmRJblByb2dyZXNzKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBm
b3JjZVVwZGF0ZVNjcm9sbGJhcnNPbk1haW5UaHJlYWRGb3JQZXJmb3JtYW5jZVRlc3RpbmcoKSBj
b25zdCBmaW5hbDsKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIGJvb2wgaXNTY3Jv
bGxTbmFwSW5Qcm9ncmVzcygpIGNvbnN0IGZpbmFsOwotI2VuZGlmCiAgICAgYm9vbCB1c2VzTW9j
a1Njcm9sbEFuaW1hdG9yKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBsb2dNb2NrU2Nyb2xsQW5p
bWF0b3JNZXNzYWdlKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKaW5kZXggMzVlM2Y0ODE5MmJkOGE3M2NmYjk5YThiZmRl
ZWU3YmU3NDY2NTg4Mi4uNzI1Mjg4NDNjZTFmMWE4NjU3NmVhZmYwM2FjNzM4ZWQ2NGI0MDMwOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcApAQCAtODkxLDcgKzg5MSw2
IEBAIFJlbmRlckxheWVyKiBSZW5kZXJWaWV3Ojp0YWtlU3R5bGVDaGFuZ2VMYXllclRyZWVNdXRh
dGlvblJvb3QoKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLSNpZiBFTkFCTEUoQ1NTX1NDUk9M
TF9TTkFQKQogdm9pZCBSZW5kZXJWaWV3OjpyZWdpc3RlckJveFdpdGhTY3JvbGxTbmFwUG9zaXRp
b25zKGNvbnN0IFJlbmRlckJveCYgYm94KQogewogICAgIG1fYm94ZXNXaXRoU2Nyb2xsU25hcFBv
c2l0aW9ucy5hZGQoJmJveCk7CkBAIC05MDEsNiArOTAwLDUgQEAgdm9pZCBSZW5kZXJWaWV3Ojp1
bnJlZ2lzdGVyQm94V2l0aFNjcm9sbFNuYXBQb3NpdGlvbnMoY29uc3QgUmVuZGVyQm94JiBib3gp
CiB7CiAgICAgbV9ib3hlc1dpdGhTY3JvbGxTbmFwUG9zaXRpb25zLnJlbW92ZSgmYm94KTsKIH0K
LSNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclZpZXcuaAppbmRleCA2ZjRlYWJhYzIxYWFlMWI1MGFmZWVlMDY0ZDgzNDg1ZGQxY2Q2ZDUw
Li5lYTA3ODU1OGM4MGVkNzU4M2ExODJjMzQzMzY2MzcwOWM2NGZhOTc2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKQEAgLTE5NSwxMSArMTk1LDkgQEAgcHVibGljOgogICAg
IHZvaWQgcHJvdGVjdFJlbmRlcldpZGdldFVudGlsTGF5b3V0SXNEb25lKFJlbmRlcldpZGdldCYg
d2lkZ2V0KSB7IG1fcHJvdGVjdGVkUmVuZGVyV2lkZ2V0cy5hcHBlbmQoJndpZGdldCk7IH0KICAg
ICB2b2lkIHJlbGVhc2VQcm90ZWN0ZWRSZW5kZXJXaWRnZXRzKCkgeyBtX3Byb3RlY3RlZFJlbmRl
cldpZGdldHMuY2xlYXIoKTsgfQogCi0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICB2
b2lkIHJlZ2lzdGVyQm94V2l0aFNjcm9sbFNuYXBQb3NpdGlvbnMoY29uc3QgUmVuZGVyQm94Jik7
CiAgICAgdm9pZCB1bnJlZ2lzdGVyQm94V2l0aFNjcm9sbFNuYXBQb3NpdGlvbnMoY29uc3QgUmVu
ZGVyQm94Jik7CiAgICAgY29uc3QgSGFzaFNldDxjb25zdCBSZW5kZXJCb3gqPiYgYm94ZXNXaXRo
U2Nyb2xsU25hcFBvc2l0aW9ucygpIHsgcmV0dXJuIG1fYm94ZXNXaXRoU2Nyb2xsU25hcFBvc2l0
aW9uczsgfQotI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVy
KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9y
bVN0YXRlJiwgTWFwQ29vcmRpbmF0ZXNGbGFncywgYm9vbCogd2FzRml4ZWQpIGNvbnN0IG92ZXJy
aWRlOwpAQCAtMjY2LDkgKzI2NCw3IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxSZW5kZXJFbGVt
ZW50Kj4gbV92aXNpYmxlSW5WaWV3cG9ydFJlbmRlcmVyczsKICAgICBWZWN0b3I8UmVmUHRyPFJl
bmRlcldpZGdldD4+IG1fcHJvdGVjdGVkUmVuZGVyV2lkZ2V0czsKIAotI2lmIEVOQUJMRShDU1Nf
U0NST0xMX1NOQVApCiAgICAgSGFzaFNldDxjb25zdCBSZW5kZXJCb3gqPiBtX2JveGVzV2l0aFNj
cm9sbFNuYXBQb3NpdGlvbnM7Ci0jZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4
IGU5NDQ2ZWQ3NjJhN2JkMjAxMjBjZjBkZjRkMzZmODgzOWI1MmFkYzQuLjE2M2I0ZjdlOTkwMzE2
MjVlYWRkZWUxZDI5MjAyM2YyNzZkNzhjNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtOTU1LDEwICs5NTUsOCBAQCBib29sIFJlbmRl
clN0eWxlOjpjaGFuZ2VSZXF1aXJlc0xheW91dChjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIsIE9w
dGlvblNldDxTdHlsZQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0jaWYgRU5B
QkxFKENTU19TQ1JPTExfU05BUCkKICAgICBpZiAoc2Nyb2xsUGFkZGluZygpICE9IG90aGVyLnNj
cm9sbFBhZGRpbmcoKSB8fCBzY3JvbGxTbmFwVHlwZSgpICE9IG90aGVyLnNjcm9sbFNuYXBUeXBl
KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotI2VuZGlmCiAKICAgICByZXR1cm4gZmFsc2U7CiB9
CkBAIC0yNTMxLDcgKzI1MjksNiBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRTY3JvbGxQYWRkaW5n
UmlnaHQoTGVuZ3RoJiYgbGVuZ3RoKQogewogICAgIFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVk
RGF0YSwgc2Nyb2xsUGFkZGluZy5yaWdodCgpLCBXVEZNb3ZlKGxlbmd0aCkpOwogfQotI2lmIEVO
QUJMRShDU1NfU0NST0xMX1NOQVApCiAKIFNjcm9sbFNuYXBUeXBlIFJlbmRlclN0eWxlOjppbml0
aWFsU2Nyb2xsU25hcFR5cGUoKQogewpAQCAtMjU4Myw3ICsyNTgwLDYgQEAgYm9vbCBSZW5kZXJT
dHlsZTo6aGFzU25hcFBvc2l0aW9uKCkgY29uc3QKICAgICBjb25zdCBTY3JvbGxTbmFwQWxpZ24m
IGFsaWdubWVudCA9IHRoaXMtPnNjcm9sbFNuYXBBbGlnbigpOwogICAgIHJldHVybiBhbGlnbm1l
bnQuYmxvY2tBbGlnbiAhPSBTY3JvbGxTbmFwQXhpc0FsaWduVHlwZTo6Tm9uZSB8fCBhbGlnbm1l
bnQuaW5saW5lQWxpZ24gIT0gU2Nyb2xsU25hcEF4aXNBbGlnblR5cGU6Ok5vbmU7CiB9Ci0jZW5k
aWYKIAogYm9vbCBSZW5kZXJTdHlsZTo6aGFzUmVmZXJlbmNlRmlsdGVyT25seSgpIGNvbnN0CiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IDM0
NDBmMDc2NTYxY2FiMmFmYjlhMDUxYjYwZWZiNDFmMWQwMWNmNWMuLjBmMmVkYmZhNjBiMWY0NWY2
YmFmNDJiNTkwNDM1OWE1M2ExMDQzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5oCkBAIC03NTUsMTIgKzc1NSwxMCBAQCBwdWJsaWM6CiAgICAgY29u
c3QgTGVuZ3RoJiBzY3JvbGxQYWRkaW5nTGVmdCgpIGNvbnN0OwogICAgIGNvbnN0IExlbmd0aCYg
c2Nyb2xsUGFkZGluZ1JpZ2h0KCkgY29uc3Q7CiAKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQ
KQogICAgIGJvb2wgaGFzU25hcFBvc2l0aW9uKCkgY29uc3Q7CiAgICAgY29uc3QgU2Nyb2xsU25h
cFR5cGUgc2Nyb2xsU25hcFR5cGUoKSBjb25zdDsKICAgICBjb25zdCBTY3JvbGxTbmFwQWxpZ24m
IHNjcm9sbFNuYXBBbGlnbigpIGNvbnN0OwogICAgIFNjcm9sbFNuYXBTdG9wIHNjcm9sbFNuYXBT
dG9wKCkgY29uc3Q7Ci0jZW5kaWYKIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgQ29s
b3IgdGFwSGlnaGxpZ2h0Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRh
LT50YXBIaWdobGlnaHRDb2xvcjsgfQpAQCAtMTMxNSwxMSArMTMxMyw5IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFNjcm9sbFBhZGRpbmdMZWZ0KExlbmd0aCYmKTsKICAgICB2b2lkIHNldFNjcm9s
bFBhZGRpbmdSaWdodChMZW5ndGgmJik7CiAKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQog
ICAgIHZvaWQgc2V0U2Nyb2xsU25hcFR5cGUoY29uc3QgU2Nyb2xsU25hcFR5cGUpOwogICAgIHZv
aWQgc2V0U2Nyb2xsU25hcEFsaWduKGNvbnN0IFNjcm9sbFNuYXBBbGlnbiYpOwogICAgIHZvaWQg
c2V0U2Nyb2xsU25hcFN0b3AoY29uc3QgU2Nyb2xsU25hcFN0b3ApOwotI2VuZGlmCiAKICNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIHZvaWQgc2V0VGFwSGlnaGxpZ2h0Q29sb3IoY29uc3Qg
Q29sb3ImIGMpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0YXBIaWdobGlnaHRDb2xv
ciwgYyk7IH0KQEAgLTE3MjcsMTEgKzE3MjMsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIExlbmd0
aCBpbml0aWFsU2Nyb2xsTWFyZ2luKCkgeyByZXR1cm4gTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVk
KTsgfQogICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbFNjcm9sbFBhZGRpbmcoKSB7IHJldHVybiBM
ZW5ndGgoTGVuZ3RoVHlwZTo6QXV0byk7IH0KIAotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVAp
CiAgICAgc3RhdGljIFNjcm9sbFNuYXBUeXBlIGluaXRpYWxTY3JvbGxTbmFwVHlwZSgpOwogICAg
IHN0YXRpYyBTY3JvbGxTbmFwQWxpZ24gaW5pdGlhbFNjcm9sbFNuYXBBbGlnbigpOwogICAgIHN0
YXRpYyBTY3JvbGxTbmFwU3RvcCBpbml0aWFsU2Nyb2xsU25hcFN0b3AoKTsKLSNlbmRpZgogCiAj
aWYgRU5BQkxFKENTU19UUkFJTElOR19XT1JEKQogICAgIHN0YXRpYyBUcmFpbGluZ1dvcmQgaW5p
dGlhbFRyYWlsaW5nV29yZCgpIHsgcmV0dXJuIFRyYWlsaW5nV29yZDo6QXV0bzsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50
cy5jcHAKaW5kZXggY2U1ZTcyMTIzMzZhZGE5M2Y1YTExMTUxYTNhYWVhOTc1NGM5MjA5MC4uMDJj
M2NlM2U5NzQyNTA0YmQ2MjJkOTc1ZDczODA0NTYzN2U1NmMyYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuY3BwCkBA
IC0xMDI5LDcgKzEwMjksNiBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBSdWJ5UG9zaXRpb24gcG9zaXRpb24pCiAgICAgcmV0dXJuIHRzOwogfQogCi0jaWYgRU5BQkxF
KENTU19TQ1JPTExfU05BUCkKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IFNjcm9sbFNuYXBBeGlzIGF4aXMpCiB7CiAgICAgc3dpdGNoIChheGlzKSB7CkBAIC0xMDcxLDcg
KzEwNzAsNiBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBTY3JvbGxT
bmFwU3RvcCBzdG9wKQogICAgIH0KICAgICByZXR1cm4gdHM7CiB9Ci0jZW5kaWYKIAogVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgU3BlYWtBcyBzcGVha0FzKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3Rh
bnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFu
dHMuaAppbmRleCA0OTkwNGE2ZjIxZWU2ZDI2MWI4OTI5YzY3M2NiNDQxYzJjOTc0Nzg1Li45MWFi
ZmQzMDBhOTFmMTFmZDEzNmZmN2MzNmJhYTk2NmMyODJjOTg2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaApAQCAtMTEy
MSw3ICsxMTIxLDYgQEAgZW51bSBjbGFzcyBDU1NCb3hUeXBlIDogdWludDhfdCB7CiAgICAgVmll
d0JveAogfTsKIAotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiBlbnVtIGNsYXNzIFNjcm9s
bFNuYXBTdHJpY3RuZXNzIDogdWludDhfdCB7CiAgICAgTm9uZSwKICAgICBQcm94aW1pdHksCkBA
IC0xMTQ3LDcgKzExNDYsNiBAQCBlbnVtIGNsYXNzIFNjcm9sbFNuYXBTdG9wIDogdWludDhfdCB7
CiAgICAgTm9ybWFsLAogICAgIEFsd2F5cywKIH07Ci0jZW5kaWYKIAogI2lmIEVOQUJMRShDU1Nf
VFJBSUxJTkdfV09SRCkKIGVudW0gY2xhc3MgVHJhaWxpbmdXb3JkIDogdWludDhfdCB7CkBAIC0x
MzA5LDEyICsxMzA3LDEwIEBAIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRT
dHJlYW0mLCBRdW90ZVR5cGUpOwogV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4
dFN0cmVhbSYsIFJlZmxlY3Rpb25EaXJlY3Rpb24pOwogV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFdURjo6VGV4dFN0cmVhbSYsIFJlc2l6ZSk7CiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoV1RGOjpUZXh0U3RyZWFtJiwgUnVieVBvc2l0aW9uKTsKLSNpZiBFTkFCTEUoQ1NTX1NDUk9M
TF9TTkFQKQogV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIFNj
cm9sbFNuYXBBeGlzKTsKIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJl
YW0mLCBTY3JvbGxTbmFwQXhpc0FsaWduVHlwZSk7CiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoV1RGOjpUZXh0U3RyZWFtJiwgU2Nyb2xsU25hcFN0b3ApOwogV1RGOjpUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIFNjcm9sbFNuYXBTdHJpY3RuZXNzKTsKLSNlbmRp
ZgogV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIFNwZWFrQXMp
OwogV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIFN0eWxlRGlm
ZmVyZW5jZSk7CiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwg
VGFibGVMYXlvdXRUeXBlKTsKQEAgLTEzNDUsNyArMTM0MSw2IEBAIFdURjo6VGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBNYXRoU3R5bGUpOwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogbmFtZXNwYWNlIFdURiB7
CiB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlNjcm9sbFNuYXBTdG9wPiB7
CiAgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKQEAgLTEzNTUsNCArMTM1MCwzIEBAIHRl
bXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6U2Nyb2xsU25hcFN0b3A+IHsKICAg
ICA+OwogfTsKIH0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCmluZGV4IDg5ZDEwMmUy
Y2Y5OWE1OTkwYTc0Y2U2OWUzMjVkNDlkNmYwZmMyYjAuLmViODExN2RhZDE3NTFhNmZjNmE3Njg2
MTJkNjM4ZjI1YjY3ZmI2YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKQEAgLTE0MCwxMSAr
MTQwLDkgQEAgaW5saW5lIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbklu
aGVyaXRlZERhdGEoY29uc3QgU3R5bGVSYXJlTm9uSW4KICAgICAsIGdyaWRJdGVtKG8uZ3JpZEl0
ZW0pCiAgICAgLCBzY3JvbGxNYXJnaW4oby5zY3JvbGxNYXJnaW4pCiAgICAgLCBzY3JvbGxQYWRk
aW5nKG8uc2Nyb2xsUGFkZGluZykKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgICwg
c2Nyb2xsU25hcFR5cGUoby5zY3JvbGxTbmFwVHlwZSkKICAgICAsIHNjcm9sbFNuYXBBbGlnbihv
LnNjcm9sbFNuYXBBbGlnbikKICAgICAsIHNjcm9sbFNuYXBTdG9wKG8uc2Nyb2xsU25hcFN0b3Ap
Ci0jZW5kaWYKICAgICAsIG92ZXJzY3JvbGxCZWhhdmlvclgoby5vdmVyc2Nyb2xsQmVoYXZpb3JY
KQogICAgICwgb3ZlcnNjcm9sbEJlaGF2aW9yWShvLm92ZXJzY3JvbGxCZWhhdmlvclkpCiAgICAg
LCBjb250ZW50KG8uY29udGVudCA/IG8uY29udGVudC0+Y2xvbmUoKSA6IG51bGxwdHIpCkBAIC0y
NDgsMTEgKzI0Niw5IEBAIGJvb2wgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9
PShjb25zdCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhJiBvKSBjCiAgICAgICAgICYmIGdyaWRJ
dGVtID09IG8uZ3JpZEl0ZW0KICAgICAgICAgJiYgc2Nyb2xsTWFyZ2luID09IG8uc2Nyb2xsTWFy
Z2luCiAgICAgICAgICYmIHNjcm9sbFBhZGRpbmcgPT0gby5zY3JvbGxQYWRkaW5nCi0jaWYgRU5B
QkxFKENTU19TQ1JPTExfU05BUCkKICAgICAgICAgJiYgc2Nyb2xsU25hcFR5cGUgPT0gby5zY3Jv
bGxTbmFwVHlwZQogICAgICAgICAmJiBzY3JvbGxTbmFwQWxpZ24gPT0gby5zY3JvbGxTbmFwQWxp
Z24KICAgICAgICAgJiYgc2Nyb2xsU25hcFN0b3AgPT0gby5zY3JvbGxTbmFwU3RvcAotI2VuZGlm
CiAgICAgICAgICYmIG92ZXJzY3JvbGxCZWhhdmlvclggPT0gby5vdmVyc2Nyb2xsQmVoYXZpb3JY
CiAgICAgICAgICYmIG92ZXJzY3JvbGxCZWhhdmlvclkgPT0gby5vdmVyc2Nyb2xsQmVoYXZpb3JZ
CiAgICAgICAgICYmIGNvbnRlbnREYXRhRXF1aXZhbGVudChvKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgK
aW5kZXggNzdiYWI5NTA4MzdjNzQ5OGIxMTFiZjk2OGRhMjRhZjhhYmJlMWIxYS4uNzEyY2RmNDc4
NmM4NTM4ZGMwYmY2ZDVlMDAxZjIzZjc4MDM2ZGU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCkBA
IC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKICNp
bmNsdWRlICJTaGFwZVZhbHVlLmgiCiAjaW5jbHVkZSAiU3R5bGVDb250ZW50QWxpZ25tZW50RGF0
YS5oIgorI2luY2x1ZGUgIlN0eWxlU2Nyb2xsU25hcFBvaW50cy5oIgogI2luY2x1ZGUgIlN0eWxl
U2VsZkFsaWdubWVudERhdGEuaCIKICNpbmNsdWRlICJUb3VjaEFjdGlvbi5oIgogI2luY2x1ZGUg
IlRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgpAQCAtNDUsMTAgKzQ2LDYgQEAKICNpbmNs
dWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi0jaWYgRU5B
QkxFKENTU19TQ1JPTExfU05BUCkKLSNpbmNsdWRlICJTdHlsZVNjcm9sbFNuYXBQb2ludHMuaCIK
LSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFuaW1hdGlvbkxpc3Q7CkBA
IC0xMzUsMTEgKzEzMiw5IEBAIHB1YmxpYzoKIAogICAgIExlbmd0aEJveCBzY3JvbGxNYXJnaW4g
eyAwLCAwLCAwLCAwIH07CiAgICAgTGVuZ3RoQm94IHNjcm9sbFBhZGRpbmcgeyBMZW5ndGgoTGVu
Z3RoVHlwZTo6QXV0byksIExlbmd0aChMZW5ndGhUeXBlOjpBdXRvKSwgTGVuZ3RoKExlbmd0aFR5
cGU6OkF1dG8pLCBMZW5ndGgoTGVuZ3RoVHlwZTo6QXV0bykgfTsKLSNpZiBFTkFCTEUoQ1NTX1ND
Uk9MTF9TTkFQKQogICAgIFNjcm9sbFNuYXBUeXBlIHNjcm9sbFNuYXBUeXBlOwogICAgIFNjcm9s
bFNuYXBBbGlnbiBzY3JvbGxTbmFwQWxpZ247CiAgICAgU2Nyb2xsU25hcFN0b3Agc2Nyb2xsU25h
cFN0b3AgeyBTY3JvbGxTbmFwU3RvcDo6Tm9ybWFsIH07Ci0jZW5kaWYKIAogICAgIHVuc2lnbmVk
IG92ZXJzY3JvbGxCZWhhdmlvclggOiAyOyAvLyBPdmVyc2Nyb2xsQmVoYXZpb3IKICAgICB1bnNp
Z25lZCBvdmVyc2Nyb2xsQmVoYXZpb3JZIDogMjsgLy8gT3ZlcnNjcm9sbEJlaGF2aW9yCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTY3JvbGxTbmFwUG9p
bnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTY3JvbGxTbmFwUG9p
bnRzLmgKaW5kZXggYTM3MTQwNTFmODQwNTRlZThkYzhmYjZkZmMzYTQ1YmFjNDRjYzY2Ny4uYTJj
N2IwZGIzZDZlNWZlZDY1MzZhNTYzOWI0NTc5MmU0NzgwMTE3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xsU25hcFBvaW50cy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9sbFNuYXBQb2ludHMuaApAQCAt
MjUsOCArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NO
QVApCi0KICNpbmNsdWRlICJMZW5ndGhCb3guaCIKICNpbmNsdWRlICJMZW5ndGhTaXplLmgiCiAj
aW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKQEAgLTYwLDUgKzU4LDMgQEAgaW5saW5l
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JvbGxTbmFwQWxpZ24mIGEsIGNvbnN0IFNjcm9sbFNu
YXBBbGlnbiYgYikKIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU2Nyb2xsU25hcEFsaWdu
JiBhLCBjb25zdCBTY3JvbGxTbmFwQWxpZ24mIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQ
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAppbmRleCA4
OThkZmRlZWFjNDM1ZWMxMDVmYmIwMjI3MzM1NWI3MjMwNTE2Nzg0Li40MDRmZmFjMDg4YjVhZGUx
NGMwMjQ2YzQ1NDFhOTdmMjk3YTBhNmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZUJ1aWxkZXJDb252ZXJ0ZXIuaApAQCAtMTA5LDExICsxMDksOSBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIE9wdGlvblNldDxMaW5lQm94Q29udGFpbj4gY29udmVydExpbmVCb3hDb250YWluKEJ1aWxk
ZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CiAgICAgc3RhdGljIE9wdGlvblNldDxUZXh0RGVj
b3JhdGlvblNraXA+IGNvbnZlcnRUZXh0RGVjb3JhdGlvblNraXAoQnVpbGRlclN0YXRlJiwgY29u
c3QgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgUmVmUHRyPFNoYXBlVmFsdWU+IGNvbnZlcnRTaGFw
ZVZhbHVlKEJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7Ci0jaWYgRU5BQkxFKENTU19TQ1JPTExf
U05BUCkKICAgICBzdGF0aWMgU2Nyb2xsU25hcFR5cGUgY29udmVydFNjcm9sbFNuYXBUeXBlKEJ1
aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CiAgICAgc3RhdGljIFNjcm9sbFNuYXBBbGln
biBjb252ZXJ0U2Nyb2xsU25hcEFsaWduKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7
CiAgICAgc3RhdGljIFNjcm9sbFNuYXBTdG9wIGNvbnZlcnRTY3JvbGxTbmFwU3RvcChCdWlsZGVy
U3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotI2VuZGlmCiAgICAgc3RhdGljIEdyaWRUcmFja1Np
emUgY29udmVydEdyaWRUcmFja1NpemUoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsK
ICAgICBzdGF0aWMgVmVjdG9yPEdyaWRUcmFja1NpemU+IGNvbnZlcnRHcmlkVHJhY2tTaXplTGlz
dChCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPEdyaWRQb3NpdGlvbj4gY29udmVydEdyaWRQb3NpdGlvbihCdWlsZGVyU3RhdGUmLCBjb25z
dCBDU1NWYWx1ZSYpOwpAQCAtMTc1LDkgKzE3Myw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIExl
bmd0aCBjb252ZXJ0VG9SYWRpdXNMZW5ndGgoQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYsIGNv
bnN0IENTU1ByaW1pdGl2ZVZhbHVlJik7CiAgICAgc3RhdGljIE9wdGlvblNldDxUZXh0RW1waGFz
aXNQb3NpdGlvbj4gdmFsdWVUb0VtcGhhc2lzUG9zaXRpb24oY29uc3QgQ1NTUHJpbWl0aXZlVmFs
dWUmKTsKICAgICBzdGF0aWMgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uU2tpcD4gdmFsdWVUb0Rl
Y29yYXRpb25Ta2lwKGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJik7Ci0jaWYgRU5BQkxFKENTU19T
Q1JPTExfU05BUCkKICAgICBzdGF0aWMgTGVuZ3RoIHBhcnNlU25hcENvb3JkaW5hdGUoQnVpbGRl
clN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSNlbmRpZgogCiAjaWYgRU5BQkxFKERBUktfTU9E
RV9DU1MpCiAgICAgc3RhdGljIHZvaWQgdXBkYXRlQ29sb3JTY2hlbWUoY29uc3QgQ1NTUHJpbWl0
aXZlVmFsdWUmLCBTdHlsZUNvbG9yU2NoZW1lJik7CkBAIC04OTgsOCArODk0LDYgQEAgaW5saW5l
IFJlZlB0cjxTaGFwZVZhbHVlPiBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U2hhcGVWYWx1ZShC
dWlsZGVyU3RhdGUmIGJ1aWwKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotI2lmIEVOQUJMRShD
U1NfU0NST0xMX1NOQVApCi0KIGlubGluZSBTY3JvbGxTbmFwVHlwZSBCdWlsZGVyQ29udmVydGVy
Ojpjb252ZXJ0U2Nyb2xsU25hcFR5cGUoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZh
bHVlKQogewogICAgIFNjcm9sbFNuYXBUeXBlIHR5cGU7CkBAIC05MzUsOCArOTI5LDYgQEAgaW5s
aW5lIFNjcm9sbFNuYXBTdG9wIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTY3JvbGxTbmFwU3Rv
cChCdWlsZGVyU3RhdGUmLCBjb24KICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWU+KHZhbHVlKTsKIH0KIAotI2VuZGlmCi0KIGlubGluZSBHcmlkTGVuZ3RoIEJ1aWxkZXJDb252
ZXJ0ZXI6OmNyZWF0ZUdyaWRUcmFja0JyZWFkdGgoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHBy
aW1pdGl2ZVZhbHVlLCBCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBpZiAocHJp
bWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlTWluQ29udGVudCB8fCBwcmltaXRpdmVW
YWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVXZWJraXRNaW5Db250ZW50KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDdhZTE2MTc3MTE4MTg0Nzc1OGJhY2RmOTRkZTYxMWQ4
OTk5MzZhMDUuLjE3MWQ3NzFmODU0NjY0OWRkNWNlNWE0ODcxNTEyMjExMTA2OWFjYjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTQ3MDYsOCArNDcwNiw2IEBAIE1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3MmIEludGVybmFsczo6bW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
cygpCiAKICNlbmRpZgogCi0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLQogc3RhdGljIHZv
aWQgYXBwZW5kT2Zmc2V0cyhTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBWZWN0b3I8U25h
cE9mZnNldDxMYXlvdXRVbml0Pj4mIHNuYXBPZmZzZXRzKQogewogICAgIGJvb2wganVzdFN0YXJ0
aW5nID0gdHJ1ZTsKQEAgLTQ3NzAsNyArNDc2OCw2IEBAIEV4Y2VwdGlvbk9yPGJvb2w+IEludGVy
bmFsczo6aXNTY3JvbGxTbmFwSW5Qcm9ncmVzcyhFbGVtZW50JiBlbGVtZW50KQogCiAgICAgcmV0
dXJuIHNjcm9sbGFibGVBcmVhLT5pc1Njcm9sbFNuYXBJblByb2dyZXNzKCk7CiB9Ci0jZW5kaWYK
IAogYm9vbCBJbnRlcm5hbHM6OnRlc3RQcmVsb2FkZXJTZXR0aW5nVmlld3BvcnQoKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggOTIyY2IwMDE0ZWM2YzU3NWE4OWI0NGRjZGE0
OTMwMTA2YzUzNWRmYS4uNjI5Y2NkYzMzMDBhYWJmNzFhOTgyNjU1ZmZjODUwNmQyNmI0ZmZhMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC03NDIsMTEgKzc0Miw5IEBAIHB1Ymxp
YzoKICAgICBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiBtb2NrQ29udGVudEZpbHRlclNldHRp
bmdzKCk7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgRXhjZXB0
aW9uT3I8U3RyaW5nPiBzY3JvbGxTbmFwT2Zmc2V0cyhFbGVtZW50Jik7CiAgICAgRXhjZXB0aW9u
T3I8Ym9vbD4gaXNTY3JvbGxTbmFwSW5Qcm9ncmVzcyhFbGVtZW50Jik7CiAgICAgdm9pZCBzZXRQ
bGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoYm9vbCk7Ci0jZW5kaWYK
IAogICAgIEV4Y2VwdGlvbk9yPFN0cmluZz4gcGF0aFN0cmluZ1dpdGhTaHJpbmtXcmFwcGVkUmVj
dHMoY29uc3QgVmVjdG9yPGRvdWJsZT4mIHJlY3RDb21wb25lbnRzLCBkb3VibGUgcmFkaXVzKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDk5MzNlODEwODJmNDM3OWRm
NTEzZjUzMTQ5ODFiMWE2YmZmNThmYTMuLmNkYjk3OTkzMDMxMTgzNThhN2Y3NjBjZWRjYjAyNWIy
MDdhNGJkZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTc3OCw5ICs3
NzgsOSBAQCBlbnVtIFRyZWVUeXBlIHsKIAogICAgIFtDb25kaXRpb25hbD1DT05URU5UX0ZJTFRF
UklOR10gcmVhZG9ubHkgYXR0cmlidXRlIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MgbW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5nczsKIAotICAgIFtDb25kaXRpb25hbD1DU1NfU0NST0xMX1NOQVBd
IERPTVN0cmluZyBzY3JvbGxTbmFwT2Zmc2V0cyhFbGVtZW50IGVsZW1lbnQpOwotICAgIFtDb25k
aXRpb25hbD1DU1NfU0NST0xMX1NOQVBdIGJvb2xlYW4gaXNTY3JvbGxTbmFwSW5Qcm9ncmVzcyhF
bGVtZW50IGVsZW1lbnQpOwotICAgIFtDb25kaXRpb25hbD1DU1NfU0NST0xMX1NOQVBdIHVuZGVm
aW5lZCBzZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoYm9vbGVh
biBlbmFibGVkKTsKKyAgICBET01TdHJpbmcgc2Nyb2xsU25hcE9mZnNldHMoRWxlbWVudCBlbGVt
ZW50KTsKKyAgICBib29sZWFuIGlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoRWxlbWVudCBlbGVtZW50
KTsKKyAgICB1bmRlZmluZWQgc2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25F
bmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7CiAKICAgICBET01TdHJpbmcgcGF0aFN0cmluZ1dpdGhT
aHJpbmtXcmFwcGVkUmVjdHMoc2VxdWVuY2U8ZG91YmxlPiByZWN0Q29tcG9uZW50cywgZG91Ymxl
IHJhZGl1cyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRy
YW5zYWN0aW9uLmNwcAppbmRleCA3Nzg0ODI3OTUwYzBhYTQzMTNiNjgyNmU0YjVhZWUyMzIxMWI5
MTE1Li45MWU0ZDg5YTJjMjFmYWRjZjBmOTYwODNlNzZlODMzNDNkZjc1OTQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29v
cmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwCkBAIC0y
MTIsMTEgKzIxMiw5IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGU+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QKICAgICBTQ1JPTExJTkdfTk9E
RV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6UmVhY2hhYmxlQ29udGVudHNT
aXplLCByZWFjaGFibGVDb250ZW50c1NpemUpCiAgICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNj
cm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9sbFBvc2l0aW9uLCBzY3JvbGxQb3NpdGlv
bikKICAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0
eTo6U2Nyb2xsT3JpZ2luLCBzY3JvbGxPcmlnaW4pCi0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05B
UCkKICAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0
eTo6U25hcE9mZnNldHNJbmZvLCBzbmFwT2Zmc2V0c0luZm8pCiAgICAgU0NST0xMSU5HX05PREVf
RU5DT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkN1cnJlbnRIb3Jpem9udGFsU25h
cE9mZnNldEluZGV4LCBjdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KQogICAgIFNDUk9M
TElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpDdXJyZW50VmVy
dGljYWxTbmFwT2Zmc2V0SW5kZXgsIGN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KQotI2Vu
ZGlmCiAgICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVy
dHk6OlNjcm9sbGFibGVBcmVhUGFyYW1zLCBzY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMpCiAgICAg
Ly8gVUktc2lkZSBjb21wb3NpdGluZyBjYW4ndCBkbyBzeW5jaHJvbm91cyBzY3JvbGxpbmcgc28g
ZG9uJ3QgZW5jb2RlIHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucy4KICAgICBTQ1JPTExJTkdf
Tk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6UmVxdWVzdGVkU2Nyb2xs
UG9zaXRpb24sIHJlcXVlc3RlZFNjcm9sbERhdGEpCkBAIC0zMDksMTEgKzMwNyw5IEBAIGJvb2wg
QXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlciwgU2Nyb2xsCiAgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0
YXRlTm9kZTo6UHJvcGVydHk6OlJlYWNoYWJsZUNvbnRlbnRzU2l6ZSwgRmxvYXRTaXplLCBzZXRS
ZWFjaGFibGVDb250ZW50c1NpemUpOwogICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxp
bmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTY3JvbGxQb3NpdGlvbiwgRmxvYXRQb2ludCwgc2V0U2Ny
b2xsUG9zaXRpb24pOwogICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZU5v
ZGU6OlByb3BlcnR5OjpTY3JvbGxPcmlnaW4sIEludFBvaW50LCBzZXRTY3JvbGxPcmlnaW4pOwot
I2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNj
cm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNuYXBPZmZzZXRzSW5mbywgRmxvYXRTY3JvbGxT
bmFwT2Zmc2V0c0luZm8sIHNldFNuYXBPZmZzZXRzSW5mbyk7CiAgICAgU0NST0xMSU5HX05PREVf
REVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkN1cnJlbnRIb3Jpem9udGFsU25h
cE9mZnNldEluZGV4LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiwgc2V0Q3VycmVudEhvcml6b250
YWxTbmFwUG9pbnRJbmRleCk7CiAgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0
YXRlTm9kZTo6UHJvcGVydHk6OkN1cnJlbnRWZXJ0aWNhbFNuYXBPZmZzZXRJbmRleCwgc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4sIHNldEN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KTsKLSNl
bmRpZgogICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3Bl
cnR5OjpTY3JvbGxhYmxlQXJlYVBhcmFtcywgU2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLCBzZXRT
Y3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMpOwogICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3Jv
bGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbiwgUmVxdWVz
dGVkU2Nyb2xsRGF0YSwgc2V0UmVxdWVzdGVkU2Nyb2xsRGF0YSk7CiAKQEAgLTczNiwxNCArNzMy
LDEyIEBAIHN0YXRpYyB2b2lkIGR1bXAoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZSYgbm9kZSwgYm9vbCBjCiAgICAgaWYgKCFjaGFuZ2VkUHJvcGVydGll
c09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9w
ZXJ0eTo6U2Nyb2xsZWRDb250ZW50c0xheWVyKSkKICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJz
Y3JvbGxlZC1jb250ZW50cy1sYXllciIsIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXI6OlBsYXRm
b3JtTGF5ZXJJRD4obm9kZS5zY3JvbGxlZENvbnRlbnRzTGF5ZXIoKSkpOwogCi0jaWYgRU5BQkxF
KENTU19TQ1JPTExfU05BUCkKICAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2Rl
Lmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTbmFwT2Zm
c2V0c0luZm8pKSB7CiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiaG9yaXpvbnRhbCBzbmFwIG9m
ZnNldHMiLCBub2RlLnNuYXBPZmZzZXRzSW5mbygpLmhvcml6b250YWxTbmFwT2Zmc2V0cyk7CiAg
ICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgidmVydGljYWwgc25hcCBvZmZzZXRzIiwgbm9kZS5zbmFw
T2Zmc2V0c0luZm8oKS52ZXJ0aWNhbFNuYXBPZmZzZXRzKTsKICAgICAgICAgdHMuZHVtcFByb3Bl
cnR5KCJjdXJyZW50IGhvcml6b250YWwgc25hcCBwb2ludCBpbmRleCIsIG5vZGUuY3VycmVudEhv
cml6b250YWxTbmFwUG9pbnRJbmRleCgpKTsKICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJjdXJy
ZW50IHZlcnRpY2FsIHNuYXAgcG9pbnQgaW5kZXgiLCBub2RlLmN1cnJlbnRWZXJ0aWNhbFNuYXBQ
b2ludEluZGV4KCkpOwogICAgIH0KLSNlbmRpZgogfQogCiBzdGF0aWMgdm9pZCBkdW1wKFRleHRT
dHJlYW0mIHRzLCBjb25zdCBTY3JvbGxpbmdTdGF0ZUZyYW1lSG9zdGluZ05vZGUmIG5vZGUsIGJv
b2wgY2hhbmdlZFByb3BlcnRpZXNPbmx5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvaW9zL1dLV2ViVmlld0lPUy5tbQppbmRleCBlMjE5YmYyNDk2MzcyYzM4Yzc3MDgxYjMzNmQw
ZTU3ZDVhMTc2MTdjLi4xNWQzZGMzM2Q0ZTllMWMzZWViMmEyZDBiOGEyNmU4OTlkMjg1ZTJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQpA
QCAtMTU0MCw3ICsxNTQwLDggQEAgLSAodm9pZClzY3JvbGxWaWV3V2lsbEJlZ2luRHJhZ2dpbmc6
KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcKICAgICAgICAgW19jb250ZW50VmlldyBzY3JvbGxW
aWV3V2lsbFN0YXJ0UGFuT3JQaW5jaEdlc3R1cmVdOwogCiAgICAgW19jb250ZW50VmlldyB3aWxs
U3RhcnRab29tT3JTY3JvbGxdOwotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApICYmIEVOQUJM
RShBU1lOQ19TQ1JPTExJTkcpCisKKyNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQogICAgIC8v
IEZJWE1FOiBXZSB3aWxsIHdhbnQgdG8gZGV0ZWN0IHdoZXRoZXIgc25hcHBpbmcgd2lsbCBvY2N1
ciBiZWZvcmUgYmVnaW5uaW5nIHRvIGRyYWcuIFNlZSBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExh
eWVyVHJlZS4KICAgICBXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkqIGNv
b3JkaW5hdG9yID0gX3BhZ2UtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkoKTsKICAgICBBU1NF
UlQoc2Nyb2xsVmlldyA9PSBfc2Nyb2xsVmlldy5nZXQoKSk7CkBAIC0xNTcxLDcgKzE1NzIsNyBA
QCAtICh2b2lkKXNjcm9sbFZpZXdXaWxsRW5kRHJhZ2dpbmc6KFVJU2Nyb2xsVmlldyAqKXNjcm9s
bFZpZXcgd2l0aFZlbG9jaXR5OihDR1BvaQogICAgICAgICBpZiAoW19jb250ZW50VmlldyBwcmV2
ZW50c1Bhbm5pbmdJbllBeGlzXSkKICAgICAgICAgICAgIHRhcmdldENvbnRlbnRPZmZzZXQtPnkg
PSBzY3JvbGxWaWV3LmNvbnRlbnRPZmZzZXQueTsKICAgICB9Ci0jaWYgRU5BQkxFKENTU19TQ1JP
TExfU05BUCkgJiYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKKyNpZiBFTkFCTEUoQVNZTkNfU0NS
T0xMSU5HKQogICAgIGlmIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkq
IGNvb3JkaW5hdG9yID0gX3BhZ2UtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkoKSkgewogICAg
ICAgICAvLyBGSVhNRTogSGVyZSwgSSdtIGZpbmRpbmcgdGhlIG1heGltdW0gaG9yaXpvbnRhbC92
ZXJ0aWNhbCBzY3JvbGwgb2Zmc2V0cy4gVGhlcmUncyBwcm9iYWJseSBhIGJldHRlciB3YXkgdG8g
ZG8gdGhpcy4KICAgICAgICAgQ0dTaXplIG1heFNjcm9sbE9mZnNldHMgPSBDR1NpemVNYWtlKHNj
cm9sbFZpZXcuY29udGVudFNpemUud2lkdGggLSBzY3JvbGxWaWV3LmJvdW5kcy5zaXplLndpZHRo
LCBzY3JvbGxWaWV3LmNvbnRlbnRTaXplLmhlaWdodCAtIHNjcm9sbFZpZXcuYm91bmRzLnNpemUu
aGVpZ2h0KTsKQEAgLTIxMjAsNyArMjEyMSw3IEBAIC0gKHZvaWQpX3VwZGF0ZVZpc2libGVDb250
ZW50UmVjdHMKIAogICAgIGF1dG8gY29udGVudEluc2V0cyA9IFtzZWxmIGN1cnJlbnRseVZpc2li
bGVDb250ZW50SW5zZXRzV2l0aFNjYWxlOnNjYWxlRmFjdG9yIG9ic2N1cmVkSW5zZXRzOmNvbXB1
dGVkQ29udGVudEluc2V0VW5hZGp1c3RlZEZvcktleWJvYXJkXTsKIAotI2lmIEVOQUJMRShDU1Nf
U0NST0xMX1NOQVApICYmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCisjaWYgRU5BQkxFKEFTWU5D
X1NDUk9MTElORykKICAgICBpZiAodmlld1N0YWJpbGl0eS5pc0VtcHR5KCkpIHsKICAgICAgICAg
V2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5KiBjb29yZGluYXRvciA9IF9w
YWdlLT5zY3JvbGxpbmdDb29yZGluYXRvclByb3h5KCk7CiAgICAgICAgIGlmIChjb29yZGluYXRv
ciAmJiBjb29yZGluYXRvci0+aGFzQWN0aXZlU25hcFBvaW50KCkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29y
ZGluYXRvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmNwcAppbmRleCA0Y2FiMTkwN2E0ZmNl
ZTZjMDU4NzQ4ZGNmNGFlZmNlM2JhNGQ3NDMxLi45YmIwNTE4OGVkYTNjNDFmNzdlOWRhOGQ3ZDQ2
MDE5ZjQ2YjU5NGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5h
dG9yUHJveHkuY3BwCkBAIC0zMDIsMTAgKzMwMiw4IEBAIHZvaWQgUmVtb3RlU2Nyb2xsaW5nQ29v
cmRpbmF0b3JQcm94eTo6c2VuZFVJU3RhdGVDaGFuZ2VkSWZOZWNlc3NhcnkoKQogCiB2b2lkIFJl
bW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OnJlc2V0U3RhdGVBZnRlclByb2Nlc3NFeGl0
ZWQoKQogewotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgbV9jdXJyZW50SG9yaXpv
bnRhbFNuYXBQb2ludEluZGV4ID0gMDsKICAgICBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludElu
ZGV4ID0gMDsKLSNlbmRpZgogICAgIG1fdWlTdGF0ZS5yZXNldCgpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5n
Q29vcmRpbmF0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaAppbmRleCA3ZTliMTdlOGM5ODUz
NGRjNzk5YTZhMGMxNzMwMWZlYjNhN2RhNzRjLi43NTZhYTUzMzkyYmUwY2QxZDA3ZTYwYzQ5M2Y0
NDZkOGQwZTA4MWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
clByb3h5LmgKQEAgLTk5LDEyICs5OSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY3JvbGxpbmdU
cmVlTm9kZVdpbGxTdGFydFBhbkdlc3R1cmUoV2ViQ29yZTo6U2Nyb2xsaW5nTm9kZUlEKTsKICAg
ICB2b2lkIHNjcm9sbGluZ1RyZWVOb2RlV2lsbFN0YXJ0U2Nyb2xsKFdlYkNvcmU6OlNjcm9sbGlu
Z05vZGVJRCk7CiAgICAgdm9pZCBzY3JvbGxpbmdUcmVlTm9kZURpZEVuZFNjcm9sbChXZWJDb3Jl
OjpTY3JvbGxpbmdOb2RlSUQpOwotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgdm9p
ZCBhZGp1c3RUYXJnZXRDb250ZW50T2Zmc2V0Rm9yU25hcHBpbmcoQ0dTaXplIG1heFNjcm9sbERp
bWVuc2lvbnMsIENHUG9pbnQgdmVsb2NpdHksIENHRmxvYXQgdG9wSW5zZXQsIENHUG9pbnQqIHRh
cmdldENvbnRlbnRPZmZzZXQpOwogICAgIGJvb2wgaGFzQWN0aXZlU25hcFBvaW50KCkgY29uc3Q7
CiAgICAgQ0dQb2ludCBuZWFyZXN0QWN0aXZlQ29udGVudEluc2V0QWRqdXN0ZWRTbmFwT2Zmc2V0
KENHRmxvYXQgdG9wSW5zZXQsIGNvbnN0IENHUG9pbnQmKSBjb25zdDsKICAgICBib29sIHNob3Vs
ZFNldFNjcm9sbFZpZXdEZWNlbGVyYXRpb25SYXRlRmFzdCgpIGNvbnN0OwotI2VuZGlmCiAjZW5k
aWYKIAogICAgIFN0cmluZyBzY3JvbGxpbmdUcmVlQXNUZXh0KCkgY29uc3Q7CkBAIC0xMTksMTAg
KzExNyw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb25uZWN0U3RhdGVOb2RlTGF5ZXJzKFdlYkNv
cmU6OlNjcm9sbGluZ1N0YXRlVHJlZSYsIGNvbnN0IFJlbW90ZUxheWVyVHJlZUhvc3QmKTsKICAg
ICB2b2lkIGVzdGFibGlzaExheWVyVHJlZVNjcm9sbGluZ1JlbGF0aW9ucyhjb25zdCBSZW1vdGVM
YXllclRyZWVIb3N0Jik7CiAKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIGJvb2wg
c2hvdWxkU25hcEZvck1haW5GcmFtZVNjcm9sbGluZyhXZWJDb3JlOjpTY3JvbGxFdmVudEF4aXMp
IGNvbnN0OwogICAgIHN0ZDo6cGFpcjxmbG9hdCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4+IGNs
b3Nlc3RTbmFwT2Zmc2V0Rm9yTWFpbkZyYW1lU2Nyb2xsaW5nKFdlYkNvcmU6OlNjcm9sbEV2ZW50
QXhpcywgZmxvYXQgc2Nyb2xsRGVzdGluYXRpb24sIGZsb2F0IHZlbG9jaXR5KSBjb25zdDsKLSNl
bmRpZgogCiAgICAgdm9pZCBzZW5kVUlTdGF0ZUNoYW5nZWRJZk5lY2Vzc2FyeSgpOwogCkBAIC0x
MzEsMTAgKzEyNyw4IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDx1bnNpZ25lZCwgT3B0aW9uU2V0
PFdlYkNvcmU6OlRvdWNoQWN0aW9uPj4gbV90b3VjaEFjdGlvbnNCeVRvdWNoSWRlbnRpZmllcjsK
ICAgICBSZXF1ZXN0ZWRTY3JvbGxJbmZvKiBtX3JlcXVlc3RlZFNjcm9sbEluZm8geyBudWxscHRy
IH07CiAgICAgUmVtb3RlU2Nyb2xsaW5nVUlTdGF0ZSBtX3VpU3RhdGU7Ci0jaWYgRU5BQkxFKENT
U19TQ1JPTExfU05BUCkKICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBtX2N1cnJlbnRIb3Jp
em9udGFsU25hcFBvaW50SW5kZXg7CiAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbV9jdXJy
ZW50VmVydGljYWxTbmFwUG9pbnRJbmRleDsKLSNlbmRpZgogICAgIGJvb2wgbV9wcm9wYWdhdGVz
TWFpbkZyYW1lU2Nyb2xscyB7IHRydWUgfTsKICAgICBIYXNoU2V0PFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4gbV9sYXllcnNXaXRoU2Nyb2xsaW5nUmVsYXRpb25zOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9p
b3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQ
cm94eUlPUy5tbQppbmRleCA2ZWVmOTllMmI4YmFlMTY0YzhkODY4OGJlZTdlNjdjZjZiNmVlODcy
Li42ODg3MjZlOWVkMTJmYjZkMDY1OGI5NTc0YWQyOGQ4MDU5NzgyM2UzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tCkBA
IC0zNSwyMSArMzUsMTggQEAKICNpbXBvcnQgIlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGlu
Z05vZGVJT1MuaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCA8VUlLaXQvVUlW
aWV3Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oPgorI2ltcG9y
dCA8V2ViQ29yZS9TY3JvbGxUeXBlcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxpbmdTdGF0
ZUZyYW1lU2Nyb2xsaW5nTm9kZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxpbmdTdGF0ZU92
ZXJmbG93U2Nyb2xsUHJveHlOb2RlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbGluZ1N0YXRl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbGluZ1N0YXRl
UG9zaXRpb25lZE5vZGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsaW5nU3RhdGVUcmVlLmg+
Ci0KLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxT
bmFwT2Zmc2V0c0luZm8uaD4KLSNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsVHlwZXMuaD4KICNpbXBv
cnQgPFdlYkNvcmUvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxQcm94eU5vZGUuaD4KICNpbXBvcnQg
PFdlYkNvcmUvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9TY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuaD4KICNpbXBvcnQgPHR1cGxlPgot
I2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBA
IC0xOTUsNyArMTkyLDYgQEAgdm9pZCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5Ojpl
c3RhYmxpc2hMYXllclRyZWVTY3JvbGxpbmdSZWxhdGlvbnMoY29uc3QKICAgICB9CiB9CiAKLSNp
ZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogdm9pZCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
clByb3h5OjphZGp1c3RUYXJnZXRDb250ZW50T2Zmc2V0Rm9yU25hcHBpbmcoQ0dTaXplIG1heFNj
cm9sbE9mZnNldHMsIENHUG9pbnQgdmVsb2NpdHksIENHRmxvYXQgdG9wSW5zZXQsIENHUG9pbnQq
IHRhcmdldENvbnRlbnRPZmZzZXQpCiB7CiAgICAgLy8gVGhlIGJvdW5kcyBjaGVja2luZyB3aXRo
IG1heFNjcm9sbE9mZnNldHMgaXMgdG8gZW5zdXJlIHRoYXQgd2Ugd29uJ3QgaW50ZXJmZXJlIHdp
dGggcnViYmVyLWJhbmRpbmcgd2hlbiBzY3JvbGxpbmcgdG8gdGhlIGVkZ2Ugb2YgdGhlIHBhZ2Uu
CkBAIC0yOTEsOCArMjg3LDYgQEAgQ0dQb2ludCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclBy
b3h5OjpuZWFyZXN0QWN0aXZlQ29udGVudEluc2V0QWRqdXN0ZWRTbmFwT2YKICAgICByZXR1cm4g
YWN0aXZlUG9pbnQ7CiB9CiAKLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVJT1MubW0KaW5kZXggNjU2NGI2YTAwYTE3NmFlNTExOGU1MjNlNDk4Mjk4MjQ3OTZmOGFi
Zi4uZmM4OWNmNzc5NTI2MDg3NGVhY2EwYjJiNTIwOTk1Y2Q0MWQyNTUyOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlP
Uy5tbQpAQCAtMzcsNiArMzcsNyBAQAogI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+
CiAjaW1wb3J0IDxVSUtpdC9VSVBhbkdlc3R1cmVSZWNvZ25pemVyLmg+CiAjaW1wb3J0IDxVSUtp
dC9VSVNjcm9sbFZpZXcuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsU25hcE9mZnNldHNJbmZv
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbGluZ1RyZWUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5oPgpAQCAtNDQsMTAgKzQ1LDYgQEAKICNp
bXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDx3dGYvU2V0Rm9yU2Nv
cGUuaD4KIAotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0jaW1wb3J0IDxXZWJDb3JlL1Nj
cm9sbFNuYXBPZmZzZXRzSW5mby5oPgotI2VuZGlmCi0KIAogQGltcGxlbWVudGF0aW9uIFdLU2Ny
b2xsaW5nTm9kZVNjcm9sbFZpZXdEZWxlZ2F0ZQogCkBAIC05OSw3ICs5Niw2IEBAIC0gKHZvaWQp
c2Nyb2xsVmlld1dpbGxFbmREcmFnZ2luZzooVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldyB3aXRo
VmVsb2NpdHk6KENHUG9pCiAgICAgICAgIH0KICAgICB9CiAKLSNpZiBFTkFCTEUoQ1NTX1NDUk9M
TF9TTkFQKQogICAgIENHRmxvYXQgaG9yaXpvbnRhbFRhcmdldCA9IHRhcmdldENvbnRlbnRPZmZz
ZXQtPng7CiAgICAgQ0dGbG9hdCB2ZXJ0aWNhbFRhcmdldCA9IHRhcmdldENvbnRlbnRPZmZzZXQt
Pnk7CiAKQEAgLTEyNiw3ICsxMjIsNiBAQCAtICh2b2lkKXNjcm9sbFZpZXdXaWxsRW5kRHJhZ2dp
bmc6KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcgd2l0aFZlbG9jaXR5OihDR1BvaQogICAgICAg
ICB8fCBvcmlnaW5hbFZlcnRpY2FsU25hcFBvc2l0aW9uICE9IF9zY3JvbGxpbmdUcmVlTm9kZURl
bGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoKSkg
ewogICAgICAgICBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+Y3VycmVudFNuYXBQb2ludElu
ZGljZXNEaWRDaGFuZ2UoX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUo
KS5jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCksIF9zY3JvbGxpbmdUcmVlTm9kZURl
bGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoKSk7
CiAgICAgfQotI2VuZGlmCiB9CiAKIC0gKHZvaWQpc2Nyb2xsVmlld0RpZEVuZERyYWdnaW5nOihV
SVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3IHdpbGxEZWNlbGVyYXRlOihCT09MKXdpbGxEZWNlbGVy
YXRlCkBAIC0yNzgsMTQgKzI3MywxMiBAQCB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVJT1M6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbihjb25zdCBTY3JvbAogICAgICAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAgfQogCi0jaWYgRU5BQkxFKENTU19TQ1JP
TExfU05BUCkKICAgICAvLyBGSVhNRTogSWYgb25seSBvbmUgYXhpcyBzbmFwcyBpbiAyRCBzY3Jv
bGxpbmcsIHRoZSBvdGhlciBheGlzIHdpbGwgZGVjZWxlcmF0ZSBmYXN0IGFzIHdlbGwuIElzIHRo
aXMgd2hhdCB3ZSB3YW50PwogICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFBy
b3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNuYXBPZmZzZXRzSW5mbykpIHsK
ICAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAgICAgIHNjcm9sbFZpZXco
KS5kZWNlbGVyYXRpb25SYXRlID0gc2Nyb2xsaW5nTm9kZSgpLnNuYXBPZmZzZXRzSW5mbygpLmhv
cml6b250YWxTbmFwT2Zmc2V0cy5zaXplKCkgfHwgc2Nyb2xsaW5nTm9kZSgpLnNuYXBPZmZzZXRz
SW5mbygpLnZlcnRpY2FsU25hcE9mZnNldHMuc2l6ZSgpID8gVUlTY3JvbGxWaWV3RGVjZWxlcmF0
aW9uUmF0ZUZhc3QgOiBVSVNjcm9sbFZpZXdEZWNlbGVyYXRpb25SYXRlTm9ybWFsOwogICAgICAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAgfQotI2VuZGlmCiAKICAgICBpZiAoc2Ny
b2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlBy
b3BlcnR5OjpTY3JvbGxhYmxlQXJlYVBhcmFtcykpIHsKICAgICAgICAgQkVHSU5fQkxPQ0tfT0JK
Q19FWENFUFRJT05TCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdD
b29yZGluYXRvci5oCmluZGV4IGU4ZWZhNDRlMDhlMDJhNDk4ZmM1MDE0YTk0ODllZDYzYTA2Mjlk
N2EuLjEzZWJlMmEwMDZmODhmM2NmYWJkMWM3MWQxMGI0OTBjZDZhYzk5ODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5oCkBAIC03MCw5
ICs3MCw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIGlzUnViYmVyQmFuZEluUHJvZ3Jlc3MoV2Vi
Q29yZTo6U2Nyb2xsaW5nTm9kZUlEKSBjb25zdCBmaW5hbDsKICAgICBib29sIGlzVXNlclNjcm9s
bEluUHJvZ3Jlc3MoV2ViQ29yZTo6U2Nyb2xsaW5nTm9kZUlEKSBjb25zdCBmaW5hbDsKLSNpZiBF
TkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIGJvb2wgaXNTY3JvbGxTbmFwSW5Qcm9ncmVzcyhX
ZWJDb3JlOjpTY3JvbGxpbmdOb2RlSUQpIGNvbnN0IGZpbmFsOwotI2VuZGlmCiAKICAgICB2b2lk
IHNldFNjcm9sbFBpbm5pbmdCZWhhdmlvcihXZWJDb3JlOjpTY3JvbGxQaW5uaW5nQmVoYXZpb3Ip
IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21h
a2UgYi9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKaW5kZXggZDVmZmJiNDlkYzIw
ZDY3ZmYwZmQ2MGU5NTFlY2ExNmVmOTNlY2IxMS4uYjkyOTRhZDExNmFiMWNiNjk1YTE5OWQ3YWQ5
YjM2ZjI4YTU5YjMzNiAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNt
YWtlCisrKyBiL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQpAQCAtMTUwLDcgKzE1
MCw2IEBAIG1hY3JvKFdFQktJVF9PUFRJT05fQkVHSU4pCiAgICAgV0VCS0lUX09QVElPTl9ERUZJ
TkUoRU5BQkxFX0NTU19ERVZJQ0VfQURBUFRBVElPTiAiVG9nZ2xlIENTUyBEZXZpY2UgQWRhcHRh
dGlvbiBzdXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFC
TEVfQ1NTX0lNQUdFX1JFU09MVVRJT04gIlRvZ2dsZSBDU1MgaW1hZ2UtcmVzb2x1dGlvbiBzdXBw
b3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfQ1NTX1BB
SU5USU5HX0FQSSAiVG9nZ2xlIENTUyBQYWludGluZyBBUEkgc3VwcG9ydCIgUFJJVkFURSBPRkYp
Ci0gICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0NTU19TQ1JPTExfU05BUCAiVG9nZ2xl
IENTUyBzbmFwIHNjcm9sbCBzdXBwb3J0IiBQUklWQVRFIE9OKQogICAgIFdFQktJVF9PUFRJT05f
REVGSU5FKEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCAiVG9nZ2xlIENTUyBTZWxlY3RvcnMg
TGV2ZWwgNCBzdXBwb3J0IiBQUklWQVRFIE9OKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVO
QUJMRV9DU1NfVFJBSUxJTkdfV09SRCAiVG9nZ2xlIGNzcyB0cmFpbGluZyB3b3JkIiBQUklWQVRF
IE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfQ1NTX1RZUEVEX09NICJUb2dn
bGUgQ1NTIFR5cGVkIE9NIHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGIxY2Y3YzdhOWFhNWFlZDJjZDQxNzMx
ODFhZTFhNDJjZjAwNWMxMGEuLmRjNDdhZTllNzBhMTA0MTBlMjZhZWVjMWIzZjQ1ZjNkZDkwZTdm
YjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNCBAQAorMjAyMS0wNi0xNiAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgW2Nzcy1zY3JvbGwtc25hcF0gUmVtb3ZlIEVOQUJMRV9TQ1JP
TExfU05BUCBjb21waWxlLXRpbWUgb3B0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjcwNjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgY29tcGlsZS10aW1lIEVOQUJMRV9TQ1JPTExfU05B
UCBjb25maWd1cmF0aW9uIG9wdGlvbi4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9G
ZWF0dXJlTGlzdC5wbTogUmVtb3ZlIHRoZSBvcHRpb24gZnJvbSB0aGUgbGlzdCBvZiBmZWF0dXJl
cy4KKwogMjAyMS0wNi0xNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgogCiAgICAgICAgIEFsbG93IGxlZ2FjeSBTZWN1cml0eU9yaWdpbiBiZWhhdmlvciBmb3Ig
eC1hcHBsZS1xbC1pZDIgc2NoZW1lCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBl
cmwvRmVhdHVyZUxpc3QucG0gYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3Qu
cG0KaW5kZXggNzMzNzRjZTZlYTVjMWIzODdjMjEzZjQ5NDljOTMzZWI3MDllMTljMS4uZjNkZTY4
MmMyNTIxNmJmNGFlNzA0MDAxZTE1ZTFjM2Q5NDMxZGFlOSAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cGVybC9GZWF0dXJlTGlzdC5wbQpAQCAtMjYwLDkgKzI2MCw2IEBAIG15IEBmZWF0dXJlcyA9ICgK
ICAgICB7IG9wdGlvbiA9PiAiY3NzLXBhaW50aW5nLWFwaSIsIGRlc2MgPT4gIlRvZ2dsZSBDU1Mg
UGFpbnRpbmcgQVBJIHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfQ1NTX1BBSU5U
SU5HX0FQSSIsIHZhbHVlID0+IFwkY3NzUGFpbnRpbmdBUElTdXBwb3J0IH0sCiAKLSAgICB7IG9w
dGlvbiA9PiAiY3NzLXNjcm9sbC1zbmFwIiwgZGVzYyA9PiAiVG9nZ2xlIENTUyBzbmFwIHNjcm9s
bCBzdXBwb3J0IiwKLSAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0NTU19TQ1JPTExfU05BUCIsIHZh
bHVlID0+IFwkY3NzU2Nyb2xsU25hcFN1cHBvcnQgfSwKLQogICAgIHsgb3B0aW9uID0+ICJjc3Mt
c2VsZWN0b3JzLWxldmVsNCIsIGRlc2MgPT4gIlRvZ2dsZSBDU1MgU2VsZWN0b3JzIExldmVsIDQg
c3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCIs
IHZhbHVlID0+IFwkY3NzU2VsZWN0b3JzTGV2ZWw0U3VwcG9ydCB9LAogCmRpZmYgLS1naXQgYS9D
aGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggMDczM2ZiOTJhNTVkYzQxZDM4NjFlYmY3NzEwNDgz
YzVjZTgwOGFmMC4uMWE1NmEwYTQ3NDViOTA1OGRiNDZlMDY4MjljNmE4ZGExMTIyODZiNCAxMDA2
NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIx
LTA2LTE2ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAg
ICBbY3NzLXNjcm9sbC1zbmFwXSBSZW1vdmUgRU5BQkxFX1NDUk9MTF9TTkFQIGNvbXBpbGUtdGlt
ZSBvcHRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyNzA2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlbW92ZSBjb21waWxlLXRpbWUgRU5BQkxFX1NDUk9MTF9TTkFQIGNvbmZpZ3VyYXRpb24gb3B0
aW9uLgorCisgICAgICAgICogU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlOiBSZW1v
dmUgdGhlIGZsYWcgZnJvbSB0aGUgQ01ha2UgY29uZmlndXJhdGlvbi4KKwogMjAyMS0wNi0xMSAg
QWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQuIFVwZGF0ZSBPcHRpb25zV1BFLmNtYWtlIGFuZCBORVdTIGZvciB0aGUgMi4zMy4y
IHJlbGVhc2UK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432138</attachid>
            <date>2021-06-24 00:25:45 -0700</date>
            <delta_ts>2021-06-24 03:49:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227067-20210624092543.patch</filename>
            <type>text/plain</type>
            <size>104658</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MjE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQwMDBlYzAwMDNkMDY4MzI0YzhiNTNm
ZTM2NmMxMDA1NDNiZjlhMGMuLmZlNjFkNWVmZWZmYjkzYThmZmRmNmQzMWVlYWEzODExNTYzNGMw
M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDYtMTYgIE1hcnRpbiBSb2JpbnNvbiAgPG1y
b2JpbnNvbkB3ZWJraXQub3JnPgorCisgICAgICAgIFtjc3Mtc2Nyb2xsLXNuYXBdIFJlbW92ZSBF
TkFCTEVfU0NST0xMX1NOQVAgY29tcGlsZS10aW1lIG9wdGlvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3MDY3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIFJlbW92ZSBjb21waWxlLXRpbWUgRU5BQkxFX1ND
Uk9MTF9TTkFQIGNvbmZpZ3VyYXRpb24gb3B0aW9uLgorCisgICAgICAgICogd3RmL1BsYXRmb3Jt
RW5hYmxlLmg6IFJlbW92ZSB0aGUgZ2xvYmFsIGZlYXR1cmUgZGVmaW5pdGlvbi4KKwogMjAyMS0w
Ni0yMyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgQmFzZSBPcHRp
b25zOjp1c2VXZWJBc3NlbWJseUZhc3RNZW1vcnkncyBkZWZhdWx0IHZhbHVlIG9uIEdpZ2FjYWdl
OjpoYXNDYXBhY2l0eVRvVXNlTGFyZ2VHaWdhY2FnZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmYjlhZjczNDlm
MmE1ZTkyMDM0NGIwN2IyZjBlYWQ4NmRjNjNhNTIwLi45MDYxN2U4NzVjOTI3NjU5NjcxMDFkNzdi
MDQzYWI3YTA3MTBmZjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI1IEBACisyMDIxLTA2LTE2
ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBbY3Nz
LXNjcm9sbC1zbmFwXSBSZW1vdmUgRU5BQkxFX1NDUk9MTF9TTkFQIGNvbXBpbGUtdGltZSBvcHRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzA2
NworCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBSZW1vdmUg
Y29tcGlsZS10aW1lIEVOQUJMRV9TQ1JPTExfU05BUCBjb25maWd1cmF0aW9uIG9wdGlvbi4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMuIFRoaXMgc2hvdWxkIG5vdCBjaGFuZ2UgYmVoYXZpb3IgaW4g
YW55IHdheS4KKworICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JQcm9w
ZXJ0eUluU3R5bGUpOgorICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmg6
CisgICAgICAgICogY3NzL0NTU1Byb3BlcnRpZXMuanNvbjoKKyAgICAgICAgKiBjc3MvQ1NTVmFs
dWVLZXl3b3Jkcy5pbjoKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVNpbmdsZVZhbHVl
KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KToK
KyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZp
ZXc6OnVwZGF0ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yU2Nyb2xsU25hcFByb3BlcnRpZXMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwZXJmb3JtUG9zdExheW91dFRhc2tzKToK
KyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAqIHBhZ2UvbWFjL0V2ZW50SGFu
ZGxlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cHJvY2Vzc1doZWVs
RXZlbnRGb3JTY3JvbGxTbmFwKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9s
bGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldFN0YXRlU2Nyb2xsaW5n
Tm9kZVNuYXBPZmZzZXRzQXNGbG9hdCk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yOjpzZXRTY3JvbGxpbmdOb2RlU2Nyb2xsYWJsZUFyZWFHZW9tZXRyeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVTY3JvbGxT
bmFwUHJvcGVydGllc1dpdGhGcmFtZVZpZXcpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0Fz
eW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3Jv
bGxTbmFwT2Zmc2V0c0luZm8uY3BwOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNu
YXBPZmZzZXRzSW5mby5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVu
dHVtQ2FsY3VsYXRvci5jcHA6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9t
ZW50dW1DYWxjdWxhdG9yLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6YXBwbGljYWJsZVByb3BlcnRpZXMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRD
dXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGU6OmR1bXBQcm9wZXJ0aWVzIGNvbnN0KToKKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaDoKKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6Y29tbWl0U3RhdGVCZWZvcmVDaGls
ZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6ZHVt
cFByb3BlcnRpZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGU6OnNldEN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KToKKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oOgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6aGFu
ZGxlV2hlZWxFdmVudCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9t
YWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnVwZGF0ZUZyb21T
dGF0ZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZU1hYzo6aGFuZGxlV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjp2aWV3cG9ydFNpemUgY29uc3QpOgorICAg
ICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZU5pY29zaWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmhhbmRsZVdoZWVsRXZlbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1h
dG9yOjpTY3JvbGxBbmltYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6
flNjcm9sbEFuaW1hdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpzY3Jv
bGwpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnJlc25hcEFmdGVyTGF5b3V0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpoYW5kbGVXaGVlbEV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjp1cGRhdGVBY3RpdmVTY3JvbGxTbmFw
SW5kZXhGb3JPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6Om5vdGlm
eVBvc2l0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6cGFn
ZVNjYWxlRmFjdG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpz
Y3JvbGxDb250cm9sbGVyQW5pbWF0aW9uVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxBbmltYXRvcjo6YWRqdXN0U2Nyb2xsT2Zmc2V0Rm9yU25hcHBpbmdJZk5lZWRlZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9T
Y3JvbGxDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6
OnVzZXNTY3JvbGxTbmFwIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbENvbnRyb2xs
ZXI6OnJlc25hcEFmdGVyTGF5b3V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxDb250cm9s
bGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFNuYXBBbmltYXRvclN0YXRlLmg6CisgICAgICAgICog
cGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJs
ZUFyZWE6OmRvUG9zdFRodW1iTW92ZVNuYXBwaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3Jv
bGxhYmxlQXJlYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjppc1Njcm9sbFNuYXBJblBy
b2dyZXNzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjpkaWRC
ZWdpblNjcm9sbEdlc3R1cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0
b3JNYWM6OmRpZEVuZFNjcm9sbEdlc3R1cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Z2Vz
dHVyZVNob3VsZEJlZ2luU25hcCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1h
Yzo6YWxsb3dzVmVydGljYWxTdHJldGNoaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbEFuaW1hdG9yTWFjOjphbGxvd3NIb3Jpem9udGFsU3RyZXRjaGluZyBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbENvbnRyb2xsZXIubW06CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxDb250cm9sbGVyOjpzdG9wQWxsVGltZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbENvbnRyb2xsZXI6OmhhbmRsZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsQ29udHJvbGxlcjo6aXNTY3JvbGxTbmFwSW5Qcm9ncmVzcyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxTbmFwQW5pbWF0aW5nU3RhdGUp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQm94Ojp3aWxsQmVEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94
OjpzdHlsZVdpbGxDaGFuZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRh
dGVTY3JvbGxTbmFwUHJvcGVydGllc1dpdGhGcmFtZVZpZXcgY29uc3QpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllck1v
ZGVsT2JqZWN0OjpzdHlsZURpZENoYW5nZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxh
eWVyU2Nyb2xsYWJsZUFyZWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJTY3Jv
bGxhYmxlQXJlYTo6dXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6OmlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MgY29u
c3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVmlldzo6dW5yZWdpc3RlckJveFdpdGhTY3JvbGxTbmFwUG9zaXRpb25zKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVmlldy5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWly
ZXNMYXlvdXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFNjcm9s
bFBhZGRpbmdSaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aGFzU25hcFBv
c2l0aW9uIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlQ29uc3RhbnRzLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFy
ZU5vbkluaGVyaXRlZERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSYXJlTm9uSW5o
ZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9sbFNuYXBQb2ludHMuaDoKKyAgICAgICAgKiBzdHls
ZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmlzU2Nyb2xsU25hcEluUHJvZ3Jlc3Mp
OgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuaWRsOgorCiAyMDIxLTA2LTIzICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5j
b20+CiAKICAgICAgICAgTm90IGFsbCB1c2VzIG9mIEF1ZGlvVG9vbGJveCBmcmFtZXdvcmsgdXNl
IHNvZnQgbGlua2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiYzdiZTdhMTliZTczYzRmMDdiNjUxNzQ0NTZmYmRk
NDA3NjRiY2Q2Li4xYmU2ODcwYmE2M2QyYzZmMTY3NjUxY2QzYTEwYjYzMjI3YjIyNDBkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIxLTA2LTE2ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9i
aW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBbY3NzLXNjcm9sbC1zbmFwXSBSZW1vdmUgRU5B
QkxFX1NDUk9MTF9TTkFQIGNvbXBpbGUtdGltZSBvcHRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzA2NworCisgICAgICAgIFJldmlld2VkIGJ5
IFNpbW9uIEZyYXNlci4KKworICAgICAgICBSZW1vdmUgY29tcGlsZS10aW1lIEVOQUJMRV9TQ1JP
TExfU05BUCBjb25maWd1cmF0aW9uIG9wdGlvbi4KKworICAgICAgICAqIFNoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHA6CisgICAg
ICAgIChBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT46OmVuY29kZSk6
CisgICAgICAgIChBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT46OmRl
Y29kZSk6CisgICAgICAgIChXZWJLaXQ6OmR1bXApOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
aW9zL1dLV2ViVmlld0lPUy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHNjcm9sbFZpZXdXaWxs
QmVnaW5EcmFnZ2luZzpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHNjcm9sbFZpZXdXaWxsRW5k
RHJhZ2dpbmc6d2l0aFZlbG9jaXR5OnRhcmdldENvbnRlbnRPZmZzZXQ6XSk6CisgICAgICAgICgt
W1dLV2ViVmlldyBfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0c10pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OnJlc2V0
U3RhdGVBZnRlclByb2Nlc3NFeGl0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJ
T1MubW06CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbToKKyAgICAgICAgKC1bV0tTY3JvbGxpbmdO
b2RlU2Nyb2xsVmlld0RlbGVnYXRlIHNjcm9sbFZpZXdXaWxsRW5kRHJhZ2dpbmc6d2l0aFZlbG9j
aXR5OnRhcmdldENvbnRlbnRPZmZzZXQ6XSk6CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbik6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxp
bmdDb29yZGluYXRvci5oOgorCiAyMDIxLTA2LTIzICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRA
YXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI3ODk3MCk6IEEgQ0FUcmFuc2FjdGlv
biBjb21taXRIYW5kbGVyIHNob3VsZCBub3QgZXhlY3V0ZSBhIGNsaWVudCBjYWxsYmFjawpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaCBiL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtRW5hYmxlLmgKaW5kZXggZTEzMmY4YjU2ZmUyMDkxNTNkZTA4OWQyZWY3ODIxODMx
MTZhYzRkNi4uZDEwYWE0MmI4MGEyYjU3NmM5ZThjNWM2OTlhNWQ4YjBlZTJkODAwOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybUVuYWJsZS5oCkBAIC0yMjEsMTAgKzIyMSw2IEBACiAjZGVmaW5lIEVOQUJMRV9D
U1NfQ09OSUNfR1JBRElFTlRTIDAKICNlbmRpZgogCi0jaWYgIWRlZmluZWQoRU5BQkxFX0NTU19T
Q1JPTExfU05BUCkKLSNkZWZpbmUgRU5BQkxFX0NTU19TQ1JPTExfU05BUCAxCi0jZW5kaWYKLQog
I2lmICFkZWZpbmVkKEVOQUJMRV9DU1NfVFJBTlNGT1JNX1NUWUxFX09QVElNSVpFRF8zRCkKICNk
ZWZpbmUgRU5BQkxFX0NTU19UUkFOU0ZPUk1fU1RZTEVfT1BUSU1JWkVEXzNEIDAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cAppbmRleCAzMjZmZDk0Mjg1MTQ2ODJmMjNmY2RkNzg2MDg4ODQ5YWVhYWQ0MjZkLi5kNGZlNWRm
YTgyMDBkMzc1OTBjYmE2ZDY1ZDFmNzg1Mjc0ZThlNzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMTA4Miw4ICsxMDgy
LDYgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IHRyYW5zaXRpb25Qcm9wZXJ0eVZhbHVlKGNv
bnN0IEFuaW1hdGlvbkxpc3QqIGFuaW1hdGlvbkwKICAgICByZXR1cm4gbGlzdDsKIH0KIAotI2lm
IEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0KIHN0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiB2YWx1
ZUZvclNjcm9sbFNuYXBUeXBlKGNvbnN0IFNjcm9sbFNuYXBUeXBlJiB0eXBlKQogewogICAgIGF1
dG8gdmFsdWUgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CkBAIC0xMTA2
LDggKzExMDQsNiBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gdmFsdWVGb3JTY3JvbGxTbmFw
QWxpZ25tZW50KGNvbnN0IFNjcm9sbFNuYXBBbGlnbiYgYWxpZwogICAgIHJldHVybiB2YWx1ZTsK
IH0KIAotI2VuZGlmCi0KIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHdpbGxDaGFuZ2VQcm9wZXJ0eVZh
bHVlKGNvbnN0IFdpbGxDaGFuZ2VEYXRhKiB3aWxsQ2hhbmdlRGF0YSkKIHsKICAgICBhdXRvJiBj
c3NWYWx1ZVBvb2wgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpOwpAQCAtMzg2OSwxNCArMzg2
NSwxMiBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9y
UHJvcGVydHlJblN0eWxlKGNvbnN0IFJlbmRlclN0eQogICAgICAgICAgICAgcmV0dXJuIGdldENT
U1Byb3BlcnR5VmFsdWVzRm9yMlNpZGVzU2hvcnRoYW5kKHNjcm9sbFBhZGRpbmdCbG9ja1Nob3J0
aGFuZCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVNjcm9sbFBhZGRpbmdJbmxpbmU6CiAg
ICAgICAgICAgICByZXR1cm4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3IyU2lkZXNTaG9ydGhhbmQo
c2Nyb2xsUGFkZGluZ0lubGluZVNob3J0aGFuZCgpKTsKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9T
TkFQKQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5U2Nyb2xsU25hcEFsaWduOgogICAgICAgICAg
ICAgcmV0dXJuIHZhbHVlRm9yU2Nyb2xsU25hcEFsaWdubWVudChzdHlsZS5zY3JvbGxTbmFwQWxp
Z24oKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlTY3JvbGxTbmFwU3RvcDoKICAgICAgICAg
ICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLnNjcm9sbFNuYXBTdG9w
KCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5U2Nyb2xsU25hcFR5cGU6CiAgICAgICAgICAg
ICByZXR1cm4gdmFsdWVGb3JTY3JvbGxTbmFwVHlwZShzdHlsZS5zY3JvbGxTbmFwVHlwZSgpKTsK
LSNlbmRpZgogCiAjaWYgRU5BQkxFKENTU19UUkFJTElOR19XT1JEKQogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5QXBwbGVUcmFpbGluZ1dvcmQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1By
aW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAppbmRleCA0NzQ5YWY3ZDI2MjY3NzVmNmZhNjQxYzk5NTI2
OGEwODc4ODMwMGNmLi41NTlmMWFjMWZjM2U4ZDNlOTY2MjVmZDQzNDllODE0NWUyNzlkNGMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKQEAg
LTUwNzksOCArNTA3OSw2IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpv
cGVyYXRvciBPcHRpb25TZXQ8VG91Y2hBY3Rpb24+KCkgY29uc3QKICAgICByZXR1cm4gVG91Y2hB
Y3Rpb246OkF1dG87CiB9CiAKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotCiB0ZW1wbGF0
ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoU2Nyb2xsU25h
cFN0cmljdG5lc3Mgc3RyaWN0bmVzcykKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQog
ewpAQCAtNTIyMyw4ICs1MjIxLDYgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFs
dWU6Om9wZXJhdG9yIFNjcm9sbFNuYXBTdG9wKCkgY29uc3QKICAgICB9CiB9CiAKLSNlbmRpZgot
CiAjaWYgRU5BQkxFKENTU19UUkFJTElOR19XT1JEKQogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFRyYWlsaW5nV29yZCBlKQogICAgIDogQ1NT
VmFsdWUoUHJpbWl0aXZlQ2xhc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UHJvcGVydGllcy5qc29uIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnRpZXMuanNvbgpp
bmRleCA3OWJjNDEzY2U3MWQ5NDc2NTQ5MWFmYTg0MTdmOTY5M2Y5YzAzZTIwLi5jNWNjNzg3NmQw
MWRkNmIzZDg3ZmZiN2RiYTcxY2M3MjdhMGJhZDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJvcGVydGllcy5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9w
ZXJ0aWVzLmpzb24KQEAgLTc0MTQsOCArNzQxNCw3IEBACiAgICAgICAgIH0sCiAgICAgICAgICJz
Y3JvbGwtc25hcC1hbGlnbiI6IHsKICAgICAgICAgICAgICJjb2RlZ2VuLXByb3BlcnRpZXMiOiB7
Ci0gICAgICAgICAgICAgICAgImNvbnZlcnRlciI6ICJTY3JvbGxTbmFwQWxpZ24iLAotICAgICAg
ICAgICAgICAgICJlbmFibGUtaWYiOiAiRU5BQkxFX0NTU19TQ1JPTExfU05BUCIKKyAgICAgICAg
ICAgICAgICAiY29udmVydGVyIjogIlNjcm9sbFNuYXBBbGlnbiIKICAgICAgICAgICAgIH0sCiAg
ICAgICAgICAgICAic3BlY2lmaWNhdGlvbiI6IHsKICAgICAgICAgICAgICAgICAiY2F0ZWdvcnki
OiAiY3NzLXNjcm9sbC1zbmFwIiwKQEAgLTc0MjQsOCArNzQyMyw3IEBACiAgICAgICAgIH0sCiAg
ICAgICAgICJzY3JvbGwtc25hcC10eXBlIjogewogICAgICAgICAgICAgImNvZGVnZW4tcHJvcGVy
dGllcyI6IHsKLSAgICAgICAgICAgICAgICAiY29udmVydGVyIjogIlNjcm9sbFNuYXBUeXBlIiwK
LSAgICAgICAgICAgICAgICAiZW5hYmxlLWlmIjogIkVOQUJMRV9DU1NfU0NST0xMX1NOQVAiCisg
ICAgICAgICAgICAgICAgImNvbnZlcnRlciI6ICJTY3JvbGxTbmFwVHlwZSIKICAgICAgICAgICAg
IH0sCiAgICAgICAgICAgICAic3BlY2lmaWNhdGlvbiI6IHsKICAgICAgICAgICAgICAgICAiY2F0
ZWdvcnkiOiAiY3NzLXNjcm9sbC1zbmFwIiwKQEAgLTc0MzQsOCArNzQzMiw3IEBACiAgICAgICAg
IH0sCiAgICAgICAgICJzY3JvbGwtc25hcC1zdG9wIjogewogICAgICAgICAgICAgImNvZGVnZW4t
cHJvcGVydGllcyI6IHsKLSAgICAgICAgICAgICAgICAiY29udmVydGVyIjogIlNjcm9sbFNuYXBT
dG9wIiwKLSAgICAgICAgICAgICAgICAiZW5hYmxlLWlmIjogIkVOQUJMRV9DU1NfU0NST0xMX1NO
QVAiCisgICAgICAgICAgICAgICAgImNvbnZlcnRlciI6ICJTY3JvbGxTbmFwU3RvcCIKICAgICAg
ICAgICAgIH0sCiAgICAgICAgICAgICAic3BlY2lmaWNhdGlvbiI6IHsKICAgICAgICAgICAgICAg
ICAiY2F0ZWdvcnkiOiAiY3NzLXNjcm9sbC1zbmFwIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVl
S2V5d29yZHMuaW4KaW5kZXggOTBkN2ViZWU2ZTdlYzdmZDY5YjgxNGVkZjVmMTIxNDQyZWJiNzcz
My4uYmUxMTg4YjBiZDE5MmNiYmQ4YWJjMjVjYjJlZTY5MzU4MGQ5NTQwMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KQEAgLTExNTcsNyArMTE1Nyw2IEBAIGF0CiAvLyBj
bG9zZXN0LXNpZGUKIC8vIGZhcnRoZXN0LXNpZGUKIAotI2lmIGRlZmluZWQoRU5BQkxFX0NTU19T
Q1JPTExfU05BUCkKIC8vIC13ZWJraXQtc2Nyb2xsLXNuYXAtcG9pbnRzLXgKIC8vIC13ZWJraXQt
c2Nyb2xsLXNuYXAtcG9pbnRzLXkKIGVsZW1lbnRzCkBAIC0xMTY3LDcgKzExNjYsNiBAQCBtYW5k
YXRvcnkKIHByb3hpbWl0eQogLy8geAogLy8geQotI2VuZGlmCiAKIGJyZWFrCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKaW5kZXggNGRmOGFl
MGRjMWE0YjZhZDkxNWIzY2FmYTVjNTllNDkzYTI2NWE5NC4uZTM3N2Y2NWU5MTY5ZjkxMmQwNTJm
ZmUyNWQ5ZThlYTBlYmJjNDczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQcm9wZXJ0eVBhcnNlci5jcHAKQEAgLTI0MTAsOCArMjQxMCw2IEBAIHN0YXRpYyBSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVQZXJzcGVjdGl2ZShDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSwKICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgqcGVyc3BlY3Rp
dmUsIENTU1VuaXRUeXBlOjpDU1NfUFgpOwogfQogCi0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05B
UCkKLQogc3RhdGljIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGNvbnN1bWVTY3JvbGxTbmFwQWxpZ24o
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiB7CiAgICAgYXV0byBmaXJzdFZhbHVlID0gY29u
c3VtZUlkZW50PENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVTdGFydCwgQ1NTVmFsdWVDZW50ZXIsIENT
U1ZhbHVlRW5kPihyYW5nZSk7CkBAIC0yNDUwLDggKzI0NDgsNiBAQCBzdGF0aWMgUmVmUHRyPENT
U1ZhbHVlTGlzdD4gY29uc3VtZVNjcm9sbFNuYXBUeXBlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlKQogICAgIHJldHVybiB0eXBlVmFsdWU7CiB9CiAKLSNlbmRpZgotCiBzdGF0aWMgUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lU2Nyb2xsQmVoYXZpb3IoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UpCiB7CiAgICAgYXV0byB2YWx1ZUlEID0gcmFuZ2UucGVlaygpLmlkKCk7CkBA
IC00MTE1LDE0ICs0MTExLDEyIEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ1NTUHJvcGVydHlQYXJzZXI6
OnBhcnNlU2luZ2xlVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTCiAgICAgY2FzZSBD
U1NQcm9wZXJ0eVNjcm9sbFBhZGRpbmdCbG9ja1N0YXJ0OgogICAgIGNhc2UgQ1NTUHJvcGVydHlT
Y3JvbGxQYWRkaW5nQmxvY2tFbmQ6CiAgICAgICAgIHJldHVybiBjb25zdW1lU2Nyb2xsUGFkZGlu
ZyhtX3JhbmdlLCBtX2NvbnRleHQubW9kZSk7Ci0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkK
ICAgICBjYXNlIENTU1Byb3BlcnR5U2Nyb2xsU25hcEFsaWduOgogICAgICAgICByZXR1cm4gY29u
c3VtZVNjcm9sbFNuYXBBbGlnbihtX3JhbmdlKTsKICAgICBjYXNlIENTU1Byb3BlcnR5U2Nyb2xs
U25hcFN0b3A6CiAgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVBbHdheXMsIENT
U1ZhbHVlTm9ybWFsPihtX3JhbmdlKTsKICAgICBjYXNlIENTU1Byb3BlcnR5U2Nyb2xsU25hcFR5
cGU6CiAgICAgICAgIHJldHVybiBjb25zdW1lU2Nyb2xsU25hcFR5cGUobV9yYW5nZSk7Ci0jZW5k
aWYKICAgICBjYXNlIENTU1Byb3BlcnR5U2Nyb2xsQmVoYXZpb3I6CiAgICAgICAgIGlmICghbV9j
b250ZXh0LnNjcm9sbEJlaGF2aW9yRW5hYmxlZCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGRmOWMzOTYyYzYxODkyNzBl
YzhkMTg5YjJiNGJjNzQ3MTVlODY3YzUuLmQ4OTIxNDQyNTA0YTY5YjM2MGM5ZmQ3NjFkODk2Mzk4
ZTJjNDg0ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTMwMzAsOSAr
MzAzMCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0
ZUVuY2xvc2luZ0JveChOb2RlKiBzdGFydE5vZGUsIGNvCiAgICAgYm9vbCBzaG91bGRIYW5kbGVF
dmVudCA9IHdoZWVsRXZlbnQuZGVsdGFYKCkgfHwgd2hlZWxFdmVudC5kZWx0YVkoKTsKICNpZiBF
TkFCTEUoV0hFRUxfRVZFTlRfTEFUQ0hJTkcpCiAgICAgc2hvdWxkSGFuZGxlRXZlbnQgfD0gd2hl
ZWxFdmVudC5waGFzZSgpID09IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlOjpFbmRlZDsKLSNpZiBF
TkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIHNob3VsZEhhbmRsZUV2ZW50IHw9IHdoZWVsRXZl
bnQubW9tZW50dW1QaGFzZSgpID09IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlOjpFbmRlZDsKLSNl
bmRpZgogI2VuZGlmCiAgICAgaWYgKCFzdGFydE5vZGUtPnJlbmRlcmVyKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBhMjEyOWY3NzY5ZmQx
MGQyOTYwYzc2NGRkNjg0NTc4NjcxMDZhYjU5Li5hN2U5ZjMzZWE2ZWZmY2RhMTJhYjU2YmI4NjE4
YzhlYjVlMmNkYTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC05MTQsNyArOTE0
LDYgQEAgR3JhcGhpY3NMYXllciogRnJhbWVWaWV3OjpzZXRXYW50c0xheWVyRm9yQm90dG9tT3Zl
ckhhbmdBcmVhKGJvb2wgd2FudHNMYXllcikgY28KIAogI2VuZGlmIC8vIEVOQUJMRShSVUJCRVJf
QkFORElORykKIAotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiB2b2lkIEZyYW1lVmlldzo6
dXBkYXRlU25hcE9mZnNldHMoKQogewogICAgIGlmICghZnJhbWUoKS5kb2N1bWVudCgpKQpAQCAt
OTc2LDcgKzk3NSw2IEBAIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVTY3JvbGxpbmdDb29yZGluYXRv
clNjcm9sbFNuYXBQcm9wZXJ0aWVzKCkgY29uc3QKIHsKICAgICByZW5kZXJWaWV3KCktPmNvbXBv
c2l0b3IoKS51cGRhdGVTY3JvbGxTbmFwUHJvcGVydGllc1dpdGhGcmFtZVZpZXcoKnRoaXMpOwog
fQotI2VuZGlmCiAKIGJvb2wgRnJhbWVWaWV3OjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlz
RnJhbWUoY29uc3QgRnJhbWUmIHJvb3RGcmFtZUZvckZsdXNoKQogewpAQCAtMzMzMyw5ICszMzMx
LDggQEAgdm9pZCBGcmFtZVZpZXc6OnBlcmZvcm1Qb3N0TGF5b3V0VGFza3MoKQogCiAgICAgdXBk
YXRlV2lkZ2V0UG9zaXRpb25zKCk7CiAKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAg
IHVwZGF0ZVNuYXBPZmZzZXRzKCk7Ci0jZW5kaWYKKwogICAgIG1fdXBkYXRlRW1iZWRkZWRPYmpl
Y3RzVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CiAKICAgICBpZiAoYXV0byBzY3JvbGxpbmdDb29y
ZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuaAppbmRleCA1OTBlODMyZGRjYjQ3YzQzYjUwYjQ1ZDYxMjM3NGUyY2Y4NzQyM2MyLi42YjFj
MmM3NTJlZDI2N2ViMDFmZDg1MjMxYzJmZjY4YjQxYjIzNGZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmgKQEAgLTY0MywxMSArNjQzLDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0Vmlld0V4cG9zZWRSZWN0KHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0Pik7CiAgICAgc3Rk
OjpvcHRpb25hbDxGbG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1f
dmlld0V4cG9zZWRSZWN0OyB9CiAKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIHZv
aWQgdXBkYXRlU25hcE9mZnNldHMoKSBmaW5hbDsKICAgICBib29sIGlzU2Nyb2xsU25hcEluUHJv
Z3Jlc3MoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
U2Nyb2xsU25hcFByb3BlcnRpZXMoKSBjb25zdDsKLSNlbmRpZgogCiAgICAgZmxvYXQgYWRqdXN0
U2Nyb2xsU3RlcEZvckZpeGVkQ29udGVudChmbG9hdCBzdGVwLCBTY3JvbGxiYXJPcmllbnRhdGlv
biwgU2Nyb2xsR3JhbnVsYXJpdHkpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9F
dmVudEhhbmRsZXJNYWMubW0KaW5kZXggY2RhNzQ4YTkzNjg1MWYyY2I0ZDIzNzU2ZWEwM2JlM2Zm
YjEyNWVkNi4uZTQyNzE3MWZmYTYzZjlkZmRiNTQzZTVjODY1ODUxOWIxNjkwMDdkZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQpAQCAtMTAxMSwxMCArMTAx
MSw4IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbFNuYXAo
Y29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlCiAgICAgaWYgKHdoZWVsRXZlbnQucGhhc2Uo
KSAhPSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZTo6RW5kZWQgJiYgd2hlZWxFdmVudC5tb21lbnR1
bVBoYXNlKCkgIT0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U6OkVuZGVkKQogICAgICAgICByZXR1
cm47CiAKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIGlmIChhdXRvKiBzY3JvbGxB
bmltYXRvciA9IHNjcm9sbGFibGVBcmVhLT5leGlzdGluZ1Njcm9sbEFuaW1hdG9yKCkpCiAgICAg
ICAgIHNjcm9sbEFuaW1hdG9yLT5wcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbFNuYXAod2hlZWxF
dmVudCk7Ci0jZW5kaWYKIH0KIAogVmlzaWJsZVNlbGVjdGlvbiBFdmVudEhhbmRsZXI6OnNlbGVj
dENsb3Nlc3RXb3JkRnJvbUhpdFRlc3RSZXN1bHRCYXNlZE9uTG9va3VwKGNvbnN0IEhpdFRlc3RS
ZXN1bHQmIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKaW5kZXggYmY4YWM2MWM2YmFhNmE3
ZTJmNzhlZGNkYWZjZWIzYjA0YWYyZjkzMy4uMjFhN2NmOTBlNGM0Nzk2MjgxMTg0NTdkNGE0Zjcz
ZjA4NGQyNGM0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5
bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKQEAgLTk2LDcgKzk2LDYgQEAgdm9p
ZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYW5kbGVXaGVlbEV2ZW50UGhhc2UoU2Nyb2xs
aW5nTm9kZUlEIG5vZGVJRCwgUGwKIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKENTU19TQ1JPTExf
U05BUCkKIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0
c0FzRmxvYXQoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlJiBub2RlLCBjb25zdCBMYXlvdXRT
Y3JvbGxTbmFwT2Zmc2V0c0luZm8qIG9mZnNldEluZm8sIGZsb2F0IGRldmljZVNjYWxlRmFjdG9y
KQogewogICAgIGlmICghb2Zmc2V0SW5mbykgewpAQCAtMTA3LDcgKzEwNiw2IEBAIHN0YXRpYyBp
bmxpbmUgdm9pZCBzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0FzRmxvYXQoU2Nyb2xs
aW5nU3RhdGVTY3JvbGxpCiAgICAgLy8gRklYTUU6IEluY29ycG9yYXRlIGN1cnJlbnQgcGFnZSBz
Y2FsZSBmYWN0b3IgaW4gc25hcHBpbmcgdG8gZGV2aWNlIHBpeGVsLiBQZXJoYXBzIHdlIHNob3Vs
ZCBqdXN0IGNvbnZlcnQgdG8gZmxvYXQgaGVyZSBhbmQgbGV0IFVJIHByb2Nlc3MgZG8gdGhlIHBp
eGVsIHNuYXBwaW5nPwogICAgIG5vZGUuc2V0U25hcE9mZnNldHNJbmZvKG9mZnNldEluZm8tPmNv
bnZlcnRVbml0czxGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbz4oZGV2aWNlU2NhbGVGYWN0b3Ip
KTsKIH0KLSNlbmRpZgogCiB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldEV2ZW50
VHJhY2tpbmdSZWdpb25zRGlydHkoKQogewpAQCAtNzA2LDEyICs3MDQsMTAgQEAgdm9pZCBBc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRTY3JvbGxpbmdOb2RlU2Nyb2xsYWJsZUFyZWFHZW9t
ZXRyeShTY3JvbGxpbmcKIAogICAgIHNjcm9sbGluZ05vZGUuc2V0U2Nyb2xsYWJsZUFyZWFQYXJh
bWV0ZXJzKHNjcm9sbFBhcmFtZXRlcnMpOwogCi0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkK
ICAgICBzY3JvbGxhYmxlQXJlYS51cGRhdGVTbmFwT2Zmc2V0cygpOwogICAgIHNldFN0YXRlU2Ny
b2xsaW5nTm9kZVNuYXBPZmZzZXRzQXNGbG9hdChzY3JvbGxpbmdOb2RlLCBzY3JvbGxhYmxlQXJl
YS5zbmFwT2Zmc2V0c0luZm8oKSwgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKICAgICBz
Y3JvbGxpbmdOb2RlLnNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoc2Nyb2xsYWJs
ZUFyZWEuY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCgpKTsKICAgICBzY3JvbGxpbmdO
b2RlLnNldEN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KHNjcm9sbGFibGVBcmVhLmN1cnJl
bnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KCkpOwotI2VuZGlmCiB9CiAKIHZvaWQgQXN5bmNTY3Jv
bGxpbmdDb29yZGluYXRvcjo6c2V0Vmlld3BvcnRDb25zdHJhaW50ZWROb2RlQ29uc3RyYWludHMo
U2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCwgY29uc3QgVmlld3BvcnRDb25zdHJhaW50cyYgY29uc3Ry
YWludHMpCkBAIC04OTAsNyArODg2LDYgQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9y
OjpzZXRBY3RpdmVTY3JvbGxTbmFwSW5kaWNlcyhTY3JvbGxpbmdOb2RlSUQgc2Nyb2wKIAogI2Vu
ZGlmCiAKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogYm9vbCBBc3luY1Njcm9sbGluZ0Nv
b3JkaW5hdG9yOjppc1Njcm9sbFNuYXBJblByb2dyZXNzKFNjcm9sbGluZ05vZGVJRCBub2RlSUQp
IGNvbnN0CiB7CiAgICAgaWYgKG1fc2Nyb2xsaW5nVHJlZSkKQEAgLTkwNyw3ICs5MDIsNiBAQCB2
b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZVNjcm9sbFNuYXBQcm9wZXJ0aWVz
V2l0aEZyYW1lVmlldyhjb25zdCBGcgogICAgICAgICBub2RlLT5zZXRDdXJyZW50VmVydGljYWxT
bmFwUG9pbnRJbmRleChmcmFtZVZpZXcuY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoKSk7
CiAgICAgfQogfQotI2VuZGlmCiAKIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6cmVw
b3J0RXhwb3NlZFVuZmlsbGVkQXJlYShNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgdW5zaWduZWQg
dW5maWxsZWRBcmVhKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oCmluZGV4IDg4ZTE0YTk4OWUwNWRhMTdl
ZWFkNTlhZTc3YzFjMGU0YTNkMzQwMmMuLjYzZjgwNzA0YzI3OGFiYjU3MjBlOTFmZmEzMmE3OTc3
MDNhZjhlNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5j
U2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKQEAgLTYyLDkgKzYyLDcgQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QWN0aXZlU2Nyb2xsU25hcEluZGljZXMoU2Nyb2xs
aW5nTm9kZUlELCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBob3Jpem9udGFsSW5kZXgsIHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+IHZlcnRpY2FsSW5kZXgpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUo
Q1NTX1NDUk9MTF9TTkFQKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlU2Nyb2xsU25h
cFByb3BlcnRpZXNXaXRoRnJhbWVWaWV3KGNvbnN0IEZyYW1lVmlldyYpIG92ZXJyaWRlOwotI2Vu
ZGlmCiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUlzTW9uaXRvcmluZ1doZWVsRXZl
bnRzRm9yRnJhbWVWaWV3KGNvbnN0IEZyYW1lVmlldyYpIG92ZXJyaWRlOwogCkBAIC0xMzQsOSAr
MTMyLDcgQEAgcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzVXNlclNjcm9sbElu
UHJvZ3Jlc3MoU2Nyb2xsaW5nTm9kZUlEKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzUnVi
YmVyQmFuZEluUHJvZ3Jlc3MoU2Nyb2xsaW5nTm9kZUlEKSBjb25zdCBvdmVycmlkZTsKIAotI2lm
IEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1Njcm9s
bFNuYXBJblByb2dyZXNzKFNjcm9sbGluZ05vZGVJRCkgY29uc3Qgb3ZlcnJpZGU7Ci0jZW5kaWYK
IAogICAgIHZvaWQgc2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKFNjcm9sbFBpbm5pbmdCZWhhdmlv
cikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbFNuYXBPZmZzZXRzSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uY3BwCmluZGV4IDdiODc1YjlkYWY5ZWM4M2I2ZDk3ZDUz
YjVjZDhlZDZkOTkyMWVhYzEuLjQ1YzcwOTViMGFhMjg5ZDFkNTVjMWU3N2Y4NmIxMDZhYzM2OTU0
Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBP
ZmZzZXRzSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
U25hcE9mZnNldHNJbmZvLmNwcApAQCAtMjcsOCArMjcsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIlNjcm9sbFNuYXBPZmZzZXRzSW5mby5oIgogCi0jaWYgRU5BQkxFKENTU19T
Q1JPTExfU05BUCkKLQogI2luY2x1ZGUgIkVsZW1lbnRDaGlsZEl0ZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiTGF5b3V0UmVjdC5oIgogI2luY2x1ZGUgIkxlbmd0aC5oIgpAQCAtMzg5LDUgKzM4NywzIEBA
IHN0ZDo6cGFpcjxmbG9hdCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4+IEZsb2F0U2Nyb2xsU25h
cE9mZnNldHNJbmZvOjpjbG9zZXN0U25hCiB9CiAKIH0KLQotI2VuZGlmIC8vIEVOQUJMRShDU1Nf
U0NST0xMX1NOQVApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxTbmFwT2Zmc2V0c0luZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbFNuYXBPZmZzZXRzSW5mby5oCmluZGV4IDE3MTlhNGFhMjRhYTk0NTc3ZDUyOWQzNTM2ZTFk
YWJkMDJiMGFkNGUuLjA2YjU4MWRkNTQzMzZhZmNjZjgzYjE0NThkZGIxMWFjMjNlZmQyNjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRz
SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZz
ZXRzSW5mby5oCkBAIC0yNSw4ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgRU5BQkxF
KENTU19TQ1JPTExfU05BUCkKLQogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkxh
eW91dFJlY3QuaCIKICNpbmNsdWRlICJMYXlvdXRVbml0LmgiCkBAIC0xMDQsNSArMTAyLDMgQEAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRl
eHRTdHJlYW0mIHRzLCBTbmFwT2Zmc2UKIH0KIAogfTsgLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmNw
cAppbmRleCBiMWY4NjRmZWU4ZWZiYzNkODYyNTAwZDViOTlkMmQwYzFkYzY5NDZlLi4xYmZlZmFh
Y2I4YzcxMTUwNzM1YzQ3NTgwY2IyY2ZhMGI4NjQ2NTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
ci5jcHAKQEAgLTI5LDggKzI5LDYgQEAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVk
ZSAiRmxvYXRTaXplLmgiCiAKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBTZWNvbmRzIHNjcm9sbFNuYXBBbmltYXRpb25E
dXJhdGlvbiA9IDFfczsKQEAgLTIzNSw1ICsyMzMsMyBAQCBmbG9hdCBCYXNpY1Njcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvcjo6YW5pbWF0aW9uUHJvZ3Jlc3NBZnRlckVsYXBzZWRUaW1lKFNlY29u
ZAogfQogCiB9OyAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKENTU19T
Q1JPTExfU05BUCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmgKaW5kZXggMThhMzk5YmNjZDliNDIxYTc1
NzA2Y2QxMTA3OWUwZmVhMjA1Yjg1My4uZWRjZGNmN2M1YzcxNDk2OWM1NDgxNzRkM2I3YWE1OTMy
MDZhZWVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmgKQEAgLTI1LDggKzI1LDYgQEAKIAogI3By
YWdtYSBvbmNlCiAKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotCiAjaW5jbHVkZSAiUGxh
dGZvcm1XaGVlbEV2ZW50LmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRlIDx3
dGYvU2Vjb25kcy5oPgpAQCAtODUsNSArODMsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKENTU19TQ1JPTExfU05BUCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGUuY3BwCmluZGV4IGQxMWZmMzExNjA0ZTBlYjRiYjcyYTFmNjkyZGUwYmUy
NTk5ODJlMTEuLjg4NjYzMzBmOTI1YzY1MzZkYzQ4ZWZiZjE3MzZlNTkwMWEwMGM0MjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlLmNwcApAQCAtNDYsOSArNDYsNyBAQCBTY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZShjb25zdCBTY3JvbGxpbmdT
dGF0ZVNjcgogICAgICwgbV9yZWFjaGFibGVDb250ZW50c1NpemUoc3RhdGVOb2RlLnJlYWNoYWJs
ZUNvbnRlbnRzU2l6ZSgpKQogICAgICwgbV9zY3JvbGxQb3NpdGlvbihzdGF0ZU5vZGUuc2Nyb2xs
UG9zaXRpb24oKSkKICAgICAsIG1fc2Nyb2xsT3JpZ2luKHN0YXRlTm9kZS5zY3JvbGxPcmlnaW4o
KSkKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgICwgbV9zbmFwT2Zmc2V0c0luZm8o
c3RhdGVOb2RlLm1fc25hcE9mZnNldHNJbmZvKQotI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgICwgbV92ZXJ0aWNhbFNjcm9sbGVySW1wKHN0YXRlTm9kZS52ZXJ0aWNhbFNjcm9sbGVySW1w
KCkpCiAgICAgLCBtX2hvcml6b250YWxTY3JvbGxlckltcChzdGF0ZU5vZGUuaG9yaXpvbnRhbFNj
cm9sbGVySW1wKCkpCkBAIC05MywxMiArOTEsMTAgQEAgT3B0aW9uU2V0PFNjcm9sbGluZ1N0YXRl
Tm9kZTo6UHJvcGVydHk+IFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6YXBwbGljYWJsZVAK
ICNpZiBFTkFCTEUoU0NST0xMSU5HX1RIUkVBRCkKICAgICAgICAgUHJvcGVydHk6OlJlYXNvbnNG
b3JTeW5jaHJvbm91c1Njcm9sbGluZywKICNlbmRpZgotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NO
QVApCiAgICAgICAgIFByb3BlcnR5OjpTbmFwT2Zmc2V0c0luZm8sCiAgICAgICAgIFByb3BlcnR5
OjpDdXJyZW50SG9yaXpvbnRhbFNuYXBPZmZzZXRJbmRleCwKICAgICAgICAgUHJvcGVydHk6OkN1
cnJlbnRWZXJ0aWNhbFNuYXBPZmZzZXRJbmRleCwKICAgICAgICAgUHJvcGVydHk6OklzTW9uaXRv
cmluZ1doZWVsRXZlbnRzLAotI2VuZGlmCiAgICAgICAgIFByb3BlcnR5OjpTY3JvbGxDb250YWlu
ZXJMYXllciwKICAgICAgICAgUHJvcGVydHk6OlNjcm9sbGVkQ29udGVudHNMYXllciwKICAgICAg
ICAgUHJvcGVydHk6Okhvcml6b250YWxTY3JvbGxiYXJMYXllciwKQEAgLTE1Niw3ICsxNTIsNiBA
QCB2b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0U2Nyb2xsT3JpZ2luKGNvbnN0
IEludFBvaW50JiBzY3JvbGxPcmlnaW4pCiAgICAgc2V0UHJvcGVydHlDaGFuZ2VkKFByb3BlcnR5
OjpTY3JvbGxPcmlnaW4pOwogfQogCi0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKIHZvaWQg
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTbmFwT2Zmc2V0c0luZm8oY29uc3QgRmxv
YXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8mIGluZm8pCiB7CiAgICAgaWYgKG1fc25hcE9mZnNldHNJ
bmZvLmlzRXF1YWwoaW5mbykpCkBAIC0xODMsNyArMTc4LDYgQEAgdm9pZCBTY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGU6OnNldEN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KHN0ZDo6b3B0
aW9uYWwKICAgICBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4ID0gaW5kZXg7CiAgICAg
c2V0UHJvcGVydHlDaGFuZ2VkKFByb3BlcnR5OjpDdXJyZW50VmVydGljYWxTbmFwT2Zmc2V0SW5k
ZXgpOwogfQotI2VuZGlmCiAKIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRT
Y3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMoY29uc3QgU2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzKQogewpAQCAtMzA2LDcgKzMwMCw2IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlOjpkdW1wUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywgU2Nyb2xsaW5nU3RhdGVU
CiAgICAgaWYgKG1fc2Nyb2xsT3JpZ2luICE9IEludFBvaW50KCkpCiAgICAgICAgIHRzLmR1bXBQ
cm9wZXJ0eSgic2Nyb2xsIG9yaWdpbiIsIG1fc2Nyb2xsT3JpZ2luKTsKIAotI2lmIEVOQUJMRShD
U1NfU0NST0xMX1NOQVApCiAgICAgaWYgKG1fc25hcE9mZnNldHNJbmZvLmhvcml6b250YWxTbmFw
T2Zmc2V0cy5zaXplKCkpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiaG9yaXpvbnRhbCBzbmFw
IG9mZnNldHMiLCBtX3NuYXBPZmZzZXRzSW5mby5ob3Jpem9udGFsU25hcE9mZnNldHMpOwogCkBA
IC0zMTgsNyArMzExLDYgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OmR1bXBQ
cm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBTY3JvbGxpbmdTdGF0ZVQKIAogICAgIGlmIChtX2N1
cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KQogICAgICAgICB0cy5kdW1wUHJvcGVydHkoImN1
cnJlbnQgdmVydGljYWwgc25hcCBwb2ludCBpbmRleCIsIG1fY3VycmVudFZlcnRpY2FsU25hcFBv
aW50SW5kZXgpOwotI2VuZGlmCiAKICAgICB0cy5kdW1wUHJvcGVydHkoInNjcm9sbGFibGUgYXJl
YSBwYXJhbWV0ZXJzIiwgbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05v
ZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZS5oCmluZGV4IDljMWJlMTRiNmNiNzViZTU4Y2YzMWY5MzAyZTMwNmQyNDczYzc5NjAu
LjhiY2Y5MWRhZDkxY2ZhZWZjYWIxMDc0YWQ2Zjc4YTAxNTEyZjg5MTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZS5oCkBAIC03MCw3ICs3MCw2IEBAIHB1YmxpYzoKICAgICBjb25zdCBJbnRQb2ludCYg
c2Nyb2xsT3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxPcmlnaW47IH0KICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldFNjcm9sbE9yaWdpbihjb25zdCBJbnRQb2ludCYpOwogCi0jaWYg
RU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICBjb25zdCBGbG9hdFNjcm9sbFNuYXBPZmZzZXRz
SW5mbyYgc25hcE9mZnNldHNJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9zbmFwT2Zmc2V0c0luZm87
IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNuYXBPZmZzZXRzSW5mbyhjb25zdCBGbG9h
dFNjcm9sbFNuYXBPZmZzZXRzSW5mbyYgbmV3T2Zmc2V0c0luZm8pOwogCkBAIC03OSw3ICs3OCw2
IEBAIHB1YmxpYzoKIAogICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGN1cnJlbnRWZXJ0aWNh
bFNuYXBQb2ludEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50VmVydGljYWxTbmFwUG9p
bnRJbmRleDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q3VycmVudFZlcnRpY2FsU25h
cFBvaW50SW5kZXgoc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4pOwotI2VuZGlmCiAKICAgICBjb25z
dCBTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMmIHNjcm9sbGFibGVBcmVhUGFyYW1ldGVycygpIGNv
bnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzOyB9CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMoY29uc3QgU2Nyb2xsYWJsZUFy
ZWFQYXJhbWV0ZXJzJiBwYXJhbXMpOwpAQCAtMTI5LDExICsxMjcsOSBAQCBwcml2YXRlOgogICAg
IEZsb2F0UG9pbnQgbV9zY3JvbGxQb3NpdGlvbjsKICAgICBJbnRQb2ludCBtX3Njcm9sbE9yaWdp
bjsKIAotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgRmxvYXRTY3JvbGxTbmFwT2Zm
c2V0c0luZm8gbV9zbmFwT2Zmc2V0c0luZm87CiAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
bV9jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4OwogICAgIHN0ZDo6b3B0aW9uYWw8dW5z
aWduZWQ+IG1fY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXg7Ci0jZW5kaWYKIAogICAgIExh
eWVyUmVwcmVzZW50YXRpb24gbV9zY3JvbGxDb250YWluZXJMYXllcjsKICAgICBMYXllclJlcHJl
c2VudGF0aW9uIG1fc2Nyb2xsZWRDb250ZW50c0xheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3Bw
CmluZGV4IGNjZGVlMmY1YWY0ZjExODU4ZWE4ZTc2N2EzNjc5ZDE3OWMzYjhjMWEuLjk4YTMzNzkw
NWU0OTVjZTQ0MmMzOTE3NTZmZWYxZmYzNzQyYWM1ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5j
cHAKQEAgLTc0LDcgKzc0LDYgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6Y29t
bWl0U3RhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU4KICAgICBpZiAoc3Rh
dGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9s
bE9yaWdpbikpCiAgICAgICAgIG1fc2Nyb2xsT3JpZ2luID0gc3RhdGUuc2Nyb2xsT3JpZ2luKCk7
CiAKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2Vk
UHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6U25hcE9mZnNldHNJbmZvKSkK
ICAgICAgICAgbV9zbmFwT2Zmc2V0c0luZm8gPSBzdGF0ZS5zbmFwT2Zmc2V0c0luZm8oKTsKIApA
QCAtODMsNyArODIsNiBAQCB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpjb21taXRT
dGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTgogCiAgICAgaWYgKHN0YXRl
Lmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpDdXJyZW50
VmVydGljYWxTbmFwT2Zmc2V0SW5kZXgpKQogICAgICAgICBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQ
b2ludEluZGV4ID0gc3RhdGUuY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoKTsKLSNlbmRp
ZgogCiAgICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6
OlByb3BlcnR5OjpTY3JvbGxhYmxlQXJlYVBhcmFtcykpCiAgICAgICAgIG1fc2Nyb2xsYWJsZUFy
ZWFQYXJhbWV0ZXJzID0gc3RhdGUuc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzKCk7CkBAIC0zMTEs
NyArMzA5LDYgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6ZHVtcFByb3BlcnRp
ZXMoVGV4dFN0cmVhbSYgdHMsIFNjcm9sbGluZ1N0YXRlVHIKICAgICBpZiAobV9zY3JvbGxPcmln
aW4gIT0gSW50UG9pbnQoKSkKICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzY3JvbGwgb3JpZ2lu
IiwgbV9zY3JvbGxPcmlnaW4pOwogCi0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICBp
ZiAobV9zbmFwT2Zmc2V0c0luZm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRzLnNpemUoKSkKICAgICAg
ICAgdHMuZHVtcFByb3BlcnR5KCJob3Jpem9udGFsIHNuYXAgb2Zmc2V0cyIsIG1fc25hcE9mZnNl
dHNJbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0cyk7CiAKQEAgLTMyMyw4ICszMjAsNiBAQCB2b2lk
IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpkdW1wUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0
cywgU2Nyb2xsaW5nU3RhdGVUcgogCiAgICAgaWYgKG1fY3VycmVudFZlcnRpY2FsU25hcFBvaW50
SW5kZXgpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiY3VycmVudCB2ZXJ0aWNhbCBzbmFwIHBv
aW50IGluZGV4IiwgbV9jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCk7Ci0gICAgCi0jZW5k
aWYKIAogICAgIHRzLmR1bXBQcm9wZXJ0eSgic2Nyb2xsYWJsZSBhcmVhIHBhcmFtZXRlcnMiLCBt
X3Njcm9sbGFibGVBcmVhUGFyYW1ldGVycyk7CiAKQEAgLTMzNCw3ICszMjksNiBAQCB2b2lkIFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpkdW1wUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywg
U2Nyb2xsaW5nU3RhdGVUcgogI2VuZGlmCiB9CiAKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQ
KQogY29uc3QgRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8mIFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlOjpzbmFwT2Zmc2V0c0luZm8oKSBjb25zdAogewogICAgIHJldHVybiBtX3NuYXBPZmZz
ZXRzSW5mbzsKQEAgLTM1OSw3ICszNTMsNiBAQCB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlOjpzZXRDdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleChzdGQ6Om9wdGlvbmFsPAogewog
ICAgIG1fY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXggPSBpbmRleDsKIH0KLSNlbmRpZgog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCmluZGV4IGUyZWVi
Zjk4ODQ5YTYwOWUyOTgzZTFmZTgzMTE2MGU1MDA4MjhjZDUuLmJhMGI3ZDAyMTdmYTQyMDYwNjA4
MzE2ZmY1MjYwZTJlMTM5ZjJmOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaApAQCAtOTQsMTMgKzk0
LDExIEBAIHB1YmxpYzoKICAgICBib29sIGNhbkhhdmVWZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0
IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzLnZlcnRpY2FsU2Nyb2xsYmFyTW9k
ZSAhPSBTY3JvbGxiYXJBbHdheXNPZmY7IH0KICAgICBib29sIGNhbkhhdmVTY3JvbGxiYXJzKCkg
Y29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMuaG9yaXpvbnRhbFNjcm9s
bGJhck1vZGUgIT0gU2Nyb2xsYmFyQWx3YXlzT2ZmIHx8IG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0
ZXJzLnZlcnRpY2FsU2Nyb2xsYmFyTW9kZSAhPSBTY3JvbGxiYXJBbHdheXNPZmY7IH0KIAotI2lm
IEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgY29uc3QgRmxvYXRTY3JvbGxTbmFwT2Zmc2V0
c0luZm8mIHNuYXBPZmZzZXRzSW5mbygpIGNvbnN0OwogICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IGN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoKSBjb25zdDsKICAgICBzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkPiBjdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCgpIGNvbnN0Owog
ICAgIHZvaWQgc2V0Q3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleChzdGQ6Om9wdGlvbmFs
PHVuc2lnbmVkPik7CiAgICAgdm9pZCBzZXRDdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleChz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPik7Ci0jZW5kaWYKIAogICAgIGJvb2wgdXNlRGFya0FwcGVh
cmFuY2VGb3JTY3JvbGxiYXJzKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFt
ZXRlcnMudXNlRGFya0FwcGVhcmFuY2VGb3JTY3JvbGxiYXJzOyB9CiAKQEAgLTE1OCwxMSArMTU2
LDkgQEAgcHJpdmF0ZToKICAgICBGbG9hdFBvaW50IG1fbGFzdENvbW1pdHRlZFNjcm9sbFBvc2l0
aW9uOwogICAgIEZsb2F0UG9pbnQgbV9jdXJyZW50U2Nyb2xsUG9zaXRpb247CiAgICAgSW50UG9p
bnQgbV9zY3JvbGxPcmlnaW47Ci0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICBGbG9h
dFNjcm9sbFNuYXBPZmZzZXRzSW5mbyBtX3NuYXBPZmZzZXRzSW5mbzsKICAgICBzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkPiBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXg7CiAgICAgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4gbV9jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleDsKLSNl
bmRpZgogICAgIFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyBtX3Njcm9sbGFibGVBcmVhUGFyYW1l
dGVyczsKICNpZiBFTkFCTEUoU0NST0xMSU5HX1RIUkVBRCkKICAgICBPcHRpb25TZXQ8U3luY2hy
b25vdXNTY3JvbGxpbmdSZWFzb24+IG1fc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9t
YWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbQppbmRleCBlNTcwNDMxMGRh
ODVmZGU0MWJjMTMzNzkyMmIyNDUxOTliZWZhMTM4Li4zYzE0YmNiZTcxYjE2YmM0ZTBkYTJiOWFi
MTZiOTVkYTJlMTk2ODFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9k
ZU1hYy5tbQpAQCAtMTI0LDEyICsxMjQsMTEgQEAgV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IFNj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6OmhhbmRsZVdoZWVsRXZlbnQoY28KIAog
ICAgIGJvb2wgaGFuZGxlZCA9IG1fZGVsZWdhdGUuaGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50
KTsKIAotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgc2V0U2Nyb2xsU25hcEluUHJv
Z3Jlc3MobV9kZWxlZ2F0ZS5pc1Njcm9sbFNuYXBJblByb2dyZXNzKCkpOwogCiAgICAgaWYgKG1f
ZGVsZWdhdGUuYWN0aXZlU2Nyb2xsU25hcEluZGV4RGlkQ2hhbmdlKCkpCiAgICAgICAgIHNjcm9s
bGluZ1RyZWUoKS5zZXRBY3RpdmVTY3JvbGxTbmFwSW5kaWNlcyhzY3JvbGxpbmdOb2RlSUQoKSwg
bV9kZWxlZ2F0ZS5hY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhpczo6
SG9yaXpvbnRhbCksIG1fZGVsZWdhdGUuYWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3Jv
bGxFdmVudEF4aXM6OlZlcnRpY2FsKSk7Ci0jZW5kaWYKKwogICAgIHJldHVybiBXaGVlbEV2ZW50
SGFuZGxpbmdSZXN1bHQ6OnJlc3VsdChoYW5kbGVkKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLmgKaW5kZXggN2VjMDkwZGRkZjYyYjQwYzc1NjJk
OWQ1MmM0YTlkMjVjMWVmYWI3Yi4uNmRhN2Q4ZDZmZjMwZGViMmYyYjczYTQxNGU4Mjk1ZjM2NjI4
NTE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5o
CkBAIC01NSwxMSArNTUsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsRG9Qcm9ncmFtbWF0aWNT
Y3JvbGwoY29uc3QgRmxvYXRQb2ludCYpOwogICAgIHZvaWQgY3VycmVudFNjcm9sbFBvc2l0aW9u
Q2hhbmdlZCgpOwogCi0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICBib29sIGFjdGl2
ZVNjcm9sbFNuYXBJbmRleERpZENoYW5nZSgpIGNvbnN0OwogICAgIHN0ZDo6b3B0aW9uYWw8dW5z
aWduZWQ+IGFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzKSBjb25z
dDsKICAgICBib29sIGlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoKSBjb25zdDsKLSNlbmRpZgogCiAg
ICAgYm9vbCBpc1J1YmJlckJhbmRJblByb2dyZXNzKCkgY29uc3Q7CiAKQEAgLTk0LDcgKzkyLDYg
QEAgcHJpdmF0ZToKICAgICBib29sIHNjcm9sbFBvc2l0aW9uSXNOb3RSdWJiZXJiYW5kaW5nRWRn
ZShjb25zdCBGbG9hdFBvaW50JikgY29uc3Q7CiAgICAgdm9pZCBzY3JvbGxDb250cm9sbGVyQW5p
bWF0aW9uVGltZXJGaXJlZCgpOwogCi0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICBG
bG9hdFBvaW50IHNjcm9sbE9mZnNldCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgaW1tZWRp
YXRlU2Nyb2xsT25BeGlzKFNjcm9sbEV2ZW50QXhpcywgZmxvYXQgZGVsdGEpIG92ZXJyaWRlOwog
ICAgIGZsb2F0IHBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMTAyLDcgKzk5
LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFN0b3BTY3JvbGxTbmFwQW5pbWF0aW9uKCkgZmlu
YWw7CiAgICAgTGF5b3V0U2l6ZSBzY3JvbGxFeHRlbnQoKSBjb25zdCBvdmVycmlkZTsKICAgICBG
bG9hdFNpemUgdmlld3BvcnRTaXplKCkgY29uc3Qgb3ZlcnJpZGU7Ci0jZW5kaWYKIAogICAgIHZv
aWQgcmVsZWFzZVJlZmVyZW5jZXNUb1Njcm9sbGVySW1wc09uVGhlTWFpblRocmVhZCgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCmluZGV4IDZj
ZGIzNTRjZTRjYTI0ZTI5MmEyMjNmZDZhODAwOWY1OWNhYmVlOWUuLjI2MzMyZTM0NTQ4ZDdhOTFj
OTdlZWVhOTI1ZTY1MTNjNGQ4OGZmMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlTWFjLm1tCkBAIC02Myw3ICs2Myw2IEBAIHZvaWQgU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6dXBkYXRlRnJvbVN0YXRlTm9kZShjb25zdCBTY3Jv
bGxpbmdTCiAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGVySW1wID0gc2Nyb2xsaW5nU3RhdGVO
b2RlLmhvcml6b250YWxTY3JvbGxlckltcCgpOwogICAgIH0KIAotI2lmIEVOQUJMRShDU1NfU0NS
T0xMX1NOQVApCiAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHko
U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6U25hcE9mZnNldHNJbmZvKSkKICAgICAgICAg
bV9zY3JvbGxDb250cm9sbGVyLnNldFNuYXBPZmZzZXRzSW5mbyhzY3JvbGxpbmdTdGF0ZU5vZGUu
c25hcE9mZnNldHNJbmZvKCkuY29udmVydFVuaXRzPExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5m
bz4oKSk7CiAKQEAgLTcyLDcgKzcxLDYgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlTWFjOjp1cGRhdGVGcm9tU3RhdGVOb2RlKGNvbnN0IFNjcm9sbGluZ1MKIAogICAg
IGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRl
Tm9kZTo6UHJvcGVydHk6OkN1cnJlbnRWZXJ0aWNhbFNuYXBPZmZzZXRJbmRleCkpCiAgICAgICAg
IG1fc2Nyb2xsQ29udHJvbGxlci5zZXRBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9s
bEV2ZW50QXhpczo6VmVydGljYWwsIHNjcm9sbGluZ1N0YXRlTm9kZS5jdXJyZW50VmVydGljYWxT
bmFwUG9pbnRJbmRleCgpKTsKLSNlbmRpZgogfQogCiBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjphY3RpdmVTY3JvbGxTbmFwSW5k
ZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhpcyBheGlzKSBjb25zdApAQCAtOTksOSArOTcsNyBAQCBi
b29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmhhbmRsZVdoZWVsRXZl
bnQoY29uc3QgUGxhdGZvcm1XaGVlbAogICAgICAgICBbbV9ob3Jpem9udGFsU2Nyb2xsZXJJbXAg
c2V0VXNlUHJlc2VudGF0aW9uVmFsdWU6bV9pbk1vbWVudHVtUGhhc2VdOwogICAgIH0KIAotI2lm
IEVOQUJMRShDU1NfU0NST0xMX1NOQVApIHx8IEVOQUJMRShSVUJCRVJfQkFORElORykKICAgICBh
dXRvIGRlZmVycmVyID0gV2hlZWxFdmVudFRlc3RNb25pdG9yQ29tcGxldGlvbkRlZmVycmVyIHsg
c2Nyb2xsaW5nVHJlZSgpLndoZWVsRXZlbnRUZXN0TW9uaXRvcigpLCByZWludGVycHJldF9jYXN0
PFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyPihzY3JvbGxp
bmdOb2RlKCkuc2Nyb2xsaW5nTm9kZUlEKCkpLCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OkhhbmRs
aW5nV2hlZWxFdmVudCB9OwotI2VuZGlmCiAKICAgICBib29sIHdhc0luVXNlclNjcm9sbCA9IG1f
c2Nyb2xsQ29udHJvbGxlci5pc1VzZXJTY3JvbGxJblByb2dyZXNzKCk7CiAgICAgbV9zY3JvbGxD
b250cm9sbGVyLnVwZGF0ZUdlc3R1cmVJblByb2dyZXNzU3RhdGUod2hlZWxFdmVudCk7CkBAIC0z
ODIsNyArMzc4LDYgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFj
OjphZGp1c3RTY3JvbGxQb3NpdGlvblRvQm91bmRzSWZOZWNlc3MKICAgICBpbW1lZGlhdGVTY3Jv
bGxCeShjb25zdHJhaW5lZFBvc2l0aW9uIC0gc2Nyb2xsUG9zaXRpb24pOwogfQogCi0jaWYgRU5B
QkxFKENTU19TQ1JPTExfU05BUCkKIEZsb2F0UG9pbnQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZU1hYzo6c2Nyb2xsT2Zmc2V0KCkgY29uc3QKIHsKICAgICByZXR1cm4gU2Nyb2xs
YWJsZUFyZWE6OnNjcm9sbE9mZnNldEZyb21Qb3NpdGlvbihjdXJyZW50U2Nyb2xsUG9zaXRpb24o
KSwgc2Nyb2xsT3JpZ2luKCkpOwpAQCAtNDI5LDcgKzQyNCw2IEBAIEZsb2F0U2l6ZSBTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjp2aWV3cG9ydFNpemUoKSBjb25zdAogewog
ICAgIHJldHVybiBzY3JvbGxhYmxlQXJlYVNpemUoKTsKIH0KLSNlbmRpZgogCiB2b2lkIFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmRlZmVyV2hlZWxFdmVudFRlc3RDb21w
bGV0aW9uRm9yUmVhc29uKFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xsYWJsZUFyZWFJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6RGVmZXJSZWFzb24gcmVh
c29uKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
bmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcAppbmRleCA5MjU4ZTdlYWE0ZWRkNDdjNWU0MGNlMzZh
MDJlZWQ4NjFhM2E0ODE0Li5jNGNlYzkzNTg5M2ViOTI1MWY2YWE5ZGU2ZDI0YjAwZmE2Zjc4Yjgw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVOaWNvc2lhLmNwcApAQCAtMTY2LDcgKzE2Niw2IEBAIFdoZWVsRXZlbnRIYW5kbGluZ1Jl
c3VsdCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6aGFuZGxlV2hl
ZWxFCiAgICAgZGVsdGFYID0gLWRlbHRhWDsKICAgICBkZWx0YVkgPSAtZGVsdGFZOwogCi0jaWYg
RU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICBpZiAoIXNjcm9sbGluZ05vZGUoKS5zbmFwT2Zm
c2V0c0luZm8oKS5pc0VtcHR5KCkpIHsKICAgICAgICAgZmxvYXQgc2NhbGUgPSBwYWdlU2NhbGVG
YWN0b3IoKTsKICAgICAgICAgRmxvYXRQb2ludCBvcmlnaW5hbE9mZnNldCA9IExheW91dFBvaW50
KHNjcm9sbGluZ05vZGUoKS5jdXJyZW50U2Nyb2xsT2Zmc2V0KCkueCgpIC8gc2NhbGUsIHNjcm9s
bGluZ05vZGUoKS5jdXJyZW50U2Nyb2xsT2Zmc2V0KCkueSgpIC8gc2NhbGUpOwpAQCAtMTc5LDcg
KzE3OCw2IEBAIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZURlbGVnYXRlTmljb3NpYTo6aGFuZGxlV2hlZWxFCiAgICAgICAgIGRlbHRhWCA9IChvZmZz
ZXRYIC0gb3JpZ2luYWxPZmZzZXQueCgpKSAqIHNjYWxlOwogICAgICAgICBkZWx0YVkgPSAob2Zm
c2V0WSAtIG9yaWdpbmFsT2Zmc2V0LnkoKSkgKiBzY2FsZTsKICAgICB9Ci0jZW5kaWYKIAogI2lm
IEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQogICAgIGlmIChtX3Njcm9sbEFuaW1hdG9yRW5hYmxl
ZCAmJiAhd2hlZWxFdmVudC5oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKCkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAppbmRleCAwYzQ5YjAzNTJkZWFkY2Iw
NDdiOGY0YWYyOTJiMzZjNWQ4Y2RhOTc0Li41ZGY1OTg3ZTg5ODEyOWQzZDhhMmJlMzUxY2M3MjAw
MDQ0NGQ1ZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmlt
YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3Bw
CkBAIC0zNiwxMyArMzYsMTAgQEAKICNpbmNsdWRlICJMYXlvdXRTaXplLmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1XaGVlbEV2ZW50LmgiCiAjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmgi
CisjaW5jbHVkZSAiU2Nyb2xsQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcm9sbGFibGVBcmVh
LmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCi0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkg
fHwgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQotI2luY2x1ZGUgIlNjcm9sbENvbnRyb2xsZXIuaCIK
LSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiAhRU5BQkxFKFNNT09USF9TQ1JP
TExJTkcpICYmICFQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oTUFDKSAmJiAhUExB
VEZPUk0oV1BFKQpAQCAtNTQsMTAgKzUxLDggQEAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1h
dG9yPiBTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmwKIAog
U2Nyb2xsQW5pbWF0b3I6OlNjcm9sbEFuaW1hdG9yKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxl
QXJlYSkKICAgICA6IG1fc2Nyb2xsYWJsZUFyZWEoc2Nyb2xsYWJsZUFyZWEpCi0jaWYgRU5BQkxF
KENTU19TQ1JPTExfU05BUCkgfHwgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQogICAgICwgbV9zY3Jv
bGxDb250cm9sbGVyKCp0aGlzKQogICAgICwgbV9zY3JvbGxDb250cm9sbGVyQW5pbWF0aW9uVGlt
ZXIoKnRoaXMsICZTY3JvbGxBbmltYXRvcjo6c2Nyb2xsQ29udHJvbGxlckFuaW1hdGlvblRpbWVy
RmlyZWQpCi0jZW5kaWYKICAgICAsIG1fc2Nyb2xsQW5pbWF0aW9uKG1ha2VVbmlxdWU8U2Nyb2xs
QW5pbWF0aW9uU21vb3RoPigKICAgICAgICAgW3RoaXNdKCkgLT4gU2Nyb2xsRXh0ZW50cyB7CiAg
ICAgICAgICAgICByZXR1cm4geyBtX3Njcm9sbGFibGVBcmVhLm1pbmltdW1TY3JvbGxQb3NpdGlv
bigpLCBtX3Njcm9sbGFibGVBcmVhLm1heGltdW1TY3JvbGxQb3NpdGlvbigpLCBtX3Njcm9sbGFi
bGVBcmVhLnZpc2libGVTaXplKCkgfTsKQEAgLTc3LDE1ICs3MiwxMiBAQCBTY3JvbGxBbmltYXRv
cjo6U2Nyb2xsQW5pbWF0b3IoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhKQogCiBTY3Jv
bGxBbmltYXRvcjo6flNjcm9sbEFuaW1hdG9yKCkKIHsKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9T
TkFQKSB8fCBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCiAgICAgbV9zY3JvbGxDb250cm9sbGVyLnN0
b3BBbGxUaW1lcnMoKTsKLSNlbmRpZgogfQogCiBib29sIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGwo
U2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24sIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51
bGFyaXR5LCBmbG9hdCBzdGVwLCBmbG9hdCBtdWx0aXBsaWVyLCBPcHRpb25TZXQ8U2Nyb2xsQmVo
YXZpb3I+IGJlaGF2aW9yKQogewogICAgIGF1dG8gZGVsdGEgPSBkZWx0YUZyb21TdGVwKG9yaWVu
dGF0aW9uLCBzdGVwLCBtdWx0aXBsaWVyKTsKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQog
ICAgIGlmIChiZWhhdmlvci5jb250YWlucyhTY3JvbGxCZWhhdmlvcjo6RG9EaXJlY3Rpb25hbFNu
YXBwaW5nKSkgewogICAgICAgICBiZWhhdmlvci5yZW1vdmUoU2Nyb2xsQmVoYXZpb3I6OkRvRGly
ZWN0aW9uYWxTbmFwcGluZyk7CiAgICAgICAgIGlmICghbV9zY3JvbGxDb250cm9sbGVyLnVzZXNT
Y3JvbGxTbmFwKCkpCkBAIC0xMDMsMTAgKzk1LDYgQEAgYm9vbCBTY3JvbGxBbmltYXRvcjo6c2Ny
b2xsKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBTY3JvbGxHcmFudWxhcml0eQog
ICAgICAgICAgICAgcmV0dXJuIHNjcm9sbChIb3Jpem9udGFsU2Nyb2xsYmFyLCBncmFudWxhcml0
eSwgbmV3RGVsdGEud2lkdGgoKSwgMS4wLCBiZWhhdmlvcik7CiAgICAgICAgIHJldHVybiBzY3Jv
bGwoVmVydGljYWxTY3JvbGxiYXIsIGdyYW51bGFyaXR5LCBuZXdEZWx0YS5oZWlnaHQoKSwgMS4w
LCBiZWhhdmlvcik7CiAgICAgfQotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZ3JhbnVsYXJpdHkp
OwotICAgIFVOVVNFRF9QQVJBTShiZWhhdmlvcik7Ci0jZW5kaWYKIAogI2lmIEVOQUJMRShTTU9P
VEhfU0NST0xMSU5HKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAobV9zY3JvbGxh
YmxlQXJlYS5zY3JvbGxBbmltYXRvckVuYWJsZWQoKSAmJiAhYmVoYXZpb3IuY29udGFpbnMoU2Ny
b2xsQmVoYXZpb3I6Ok5ldmVyQW5pbWF0ZSkpIHsKQEAgLTE3OCw3ICsxNjYsNiBAQCBGbG9hdFNp
emUgU2Nyb2xsQW5pbWF0b3I6OmRlbHRhRnJvbVN0ZXAoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3Jp
ZW50YXRpb24sIGZsb2F0CiAgICAgcmV0dXJuIGRlbHRhOwogfQogCi0jaWYgRU5BQkxFKENTU19T
Q1JPTExfU05BUCkKIGJvb2wgU2Nyb2xsQW5pbWF0b3I6OmFjdGl2ZVNjcm9sbFNuYXBJbmRleERp
ZENoYW5nZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc2Nyb2xsQ29udHJvbGxlci5hY3RpdmVT
Y3JvbGxTbmFwSW5kZXhEaWRDaGFuZ2UoKTsKQEAgLTE5OCwxNCArMTg1LDExIEBAIHZvaWQgU2Ny
b2xsQW5pbWF0b3I6OnJlc25hcEFmdGVyTGF5b3V0KCkKIHsKICAgICBtX3Njcm9sbENvbnRyb2xs
ZXIucmVzbmFwQWZ0ZXJMYXlvdXQoKTsKIH0KLSNlbmRpZgogCiBib29sIFNjcm9sbEFuaW1hdG9y
OjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZSkKIHsKLSNpZiBF
TkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIGlmIChwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9s
bFNuYXAoZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgLy8gRXZlbnRzIGluIHRoZSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZTo6TWF5
QmVnaW4gcGhhc2UgaGF2ZSBubyBkZWx0YXMsIGFuZCB0aGVyZWZvcmUgbmV2ZXIgcGFzc2VzIHRo
cm91Z2ggdGhlIHNjcm9sbCBoYW5kbGluZyBsb2dpYyBiZWxvdy4KQEAgLTI3NywyMiArMjYxLDE2
IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OnNldEN1cnJlbnRQb3NpdGlvbihjb25zdCBGbG9hdFBv
aW50JiBwb3NpdGlvbikKIAogdm9pZCBTY3JvbGxBbmltYXRvcjo6dXBkYXRlQWN0aXZlU2Nyb2xs
U25hcEluZGV4Rm9yT2Zmc2V0KCkKIHsKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAg
IG1fc2Nyb2xsQ29udHJvbGxlci51cGRhdGVBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JDbGllbnRP
ZmZzZXQoKTsKLSNlbmRpZgogfQogCiB2b2lkIFNjcm9sbEFuaW1hdG9yOjpub3RpZnlQb3NpdGlv
bkNoYW5nZWQoY29uc3QgRmxvYXRTaXplJiBkZWx0YSkKIHsKICAgICBVTlVTRURfUEFSQU0oZGVs
dGEpOwogICAgIG1fc2Nyb2xsYWJsZUFyZWEuc2V0U2Nyb2xsUG9zaXRpb25Gcm9tQW5pbWF0aW9u
KHJvdW5kZWRJbnRQb2ludChjdXJyZW50UG9zaXRpb24oKSkpOwotCi0jaWYgRU5BQkxFKENTU19T
Q1JPTExfU05BUCkgfHwgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQogICAgIG1fc2Nyb2xsQ29udHJv
bGxlci5zY3JvbGxQb3NpdGlvbkNoYW5nZWQoKTsKLSNlbmRpZgogfQogCi0jaWYgRU5BQkxFKENT
U19TQ1JPTExfU05BUCkKIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OnNldFNuYXBPZmZzZXRzSW5mbyhj
b25zdCBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8mIGluZm8pCiB7CiAgICAgbV9zY3JvbGxD
b250cm9sbGVyLnNldFNuYXBPZmZzZXRzSW5mbyhpbmZvKTsKQEAgLTMzMyw5ICszMTEsNyBAQCBm
bG9hdCBTY3JvbGxBbmltYXRvcjo6cGFnZVNjYWxlRmFjdG9yKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV9zY3JvbGxhYmxlQXJlYS5wYWdlU2NhbGVGYWN0b3IoKTsKIH0KLSNlbmRpZgogCi0jaWYg
RU5BQkxFKENTU19TQ1JPTExfU05BUCkgfHwgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQogc3RkOjp1
bmlxdWVfcHRyPFNjcm9sbENvbnRyb2xsZXJUaW1lcj4gU2Nyb2xsQW5pbWF0b3I6OmNyZWF0ZVRp
bWVyKEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKIHsKICAgICByZXR1cm4gV1RGOjptYWtl
VW5pcXVlPFNjcm9sbENvbnRyb2xsZXJUaW1lcj4oUnVuTG9vcDo6Y3VycmVudCgpLCBbZnVuY3Rp
b24gPSBXVEZNb3ZlKGZ1bmN0aW9uKSwgd2Vha1Njcm9sbGFibGVBcmVhID0gbWFrZVdlYWtQdHIo
bV9zY3JvbGxhYmxlQXJlYSldIHsKQEAgLTM2Miw5ICszMzgsOCBAQCB2b2lkIFNjcm9sbEFuaW1h
dG9yOjpzY3JvbGxDb250cm9sbGVyQW5pbWF0aW9uVGltZXJGaXJlZCgpCiB7CiAgICAgbV9zY3Jv
bGxDb250cm9sbGVyLmFuaW1hdGlvbkNhbGxiYWNrKE1vbm90b25pY1RpbWU6Om5vdygpKTsKIH0K
LSNlbmRpZgogCi0jaWYgKEVOQUJMRShDU1NfU0NST0xMX1NOQVApIHx8IEVOQUJMRShSVUJCRVJf
QkFORElORykpICYmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShNQUMpCiB2b2lkIFNjcm9s
bEFuaW1hdG9yOjpkZWZlcldoZWVsRXZlbnRUZXN0Q29tcGxldGlvbkZvclJlYXNvbihXaGVlbEV2
ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBXaGVl
bEV2ZW50VGVzdE1vbml0b3I6OkRlZmVyUmVhc29uIHJlYXNvbikgY29uc3QKIHsKICAgICBpZiAo
IW1fd2hlZWxFdmVudFRlc3RNb25pdG9yKQpAQCAtNDExLDcgKzM4Niw2IEBAIHZvaWQgU2Nyb2xs
QW5pbWF0b3I6OmRpZEFkZEhvcml6b250YWxTY3JvbGxiYXIoU2Nyb2xsYmFyKikKIAogRmxvYXRQ
b2ludCBTY3JvbGxBbmltYXRvcjo6YWRqdXN0U2Nyb2xsT2Zmc2V0Rm9yU25hcHBpbmdJZk5lZWRl
ZChjb25zdCBGbG9hdFBvaW50JiBvZmZzZXQsIFNjcm9sbFNuYXBQb2ludFNlbGVjdGlvbk1ldGhv
ZCBtZXRob2QpCiB7Ci0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICBpZiAoIW1fc2Ny
b2xsQ29udHJvbGxlci51c2VzU2Nyb2xsU25hcCgpKQogICAgICAgICByZXR1cm4gb2Zmc2V0Owog
CkBAIC00MTksMTUgKzM5MywxMCBAQCBGbG9hdFBvaW50IFNjcm9sbEFuaW1hdG9yOjphZGp1c3RT
Y3JvbGxPZmZzZXRGb3JTbmFwcGluZ0lmTmVlZGVkKGNvbnN0IEZsb2F0UG9pbgogICAgIG5ld09m
ZnNldC5zZXRYKGFkanVzdFNjcm9sbE9mZnNldEZvclNuYXBwaW5nSWZOZWVkZWQoU2Nyb2xsRXZl
bnRBeGlzOjpIb3Jpem9udGFsLCBuZXdPZmZzZXQueCgpLCBtZXRob2QpKTsKICAgICBuZXdPZmZz
ZXQuc2V0WShhZGp1c3RTY3JvbGxPZmZzZXRGb3JTbmFwcGluZ0lmTmVlZGVkKFNjcm9sbEV2ZW50
QXhpczo6VmVydGljYWwsIG5ld09mZnNldC55KCksIG1ldGhvZCkpOwogICAgIHJldHVybiBuZXdP
ZmZzZXQ7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShtZXRob2QpOwotICAgIHJldHVybiBvZmZz
ZXQ7Ci0jZW5kaWYKIH0KIAogZmxvYXQgU2Nyb2xsQW5pbWF0b3I6OmFkanVzdFNjcm9sbE9mZnNl
dEZvclNuYXBwaW5nSWZOZWVkZWQoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGZsb2F0IG5ld09mZnNl
dCwgU2Nyb2xsU25hcFBvaW50U2VsZWN0aW9uTWV0aG9kIG1ldGhvZCkKIHsKLSNpZiBFTkFCTEUo
Q1NTX1NDUk9MTF9TTkFQKQogICAgIGlmICghbV9zY3JvbGxDb250cm9sbGVyLnVzZXNTY3JvbGxT
bmFwKCkpCiAgICAgICAgIHJldHVybiBuZXdPZmZzZXQ7CiAKQEAgLTQ0MSwxMSArNDEwLDYgQEAg
ZmxvYXQgU2Nyb2xsQW5pbWF0b3I6OmFkanVzdFNjcm9sbE9mZnNldEZvclNuYXBwaW5nSWZOZWVk
ZWQoU2Nyb2xsRXZlbnRBeGlzIGF4aXMKICAgICB9CiAKICAgICByZXR1cm4gbV9zY3JvbGxDb250
cm9sbGVyLmFkanVzdFNjcm9sbERlc3RpbmF0aW9uKGF4aXMsIG5ld09mZnNldCwgdmVsb2NpdHks
IG9yaWdpbmFsT2Zmc2V0KTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKG1ldGhvZCk7Ci0gICAg
VU5VU0VEX1BBUkFNKGF4aXMpOwotICAgIHJldHVybiBuZXdPZmZzZXQ7Ci0jZW5kaWYKIH0KIAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAppbmRleCAxYjYwMWZmYmZk
YTc2NGEyZTJiNDU1YjFmNTM1MzA1ZTA3MGYzYjZkLi5mYWM3MGRiNGU3NjRhNDMxYmViZjhkNWI2
MDA3ODg2YjljNTIwMmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxBbmltYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9y
LmgKQEAgLTMzLDE2ICszMywxMyBAQAogCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgorI2luY2x1ZGUgIlNjcm9sbENvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAi
V2hlZWxFdmVudFRlc3RNb25pdG9yLmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCi0jaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKSB8fCBF
TkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotI2luY2x1ZGUgIlNjcm9sbENvbnRyb2xsZXIuaCIKLSNl
bmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZsb2F0UG9pbnQ7CkBAIC01Miwx
NSArNDksOSBAQCBjbGFzcyBTY3JvbGxhYmxlQXJlYTsKIGNsYXNzIFNjcm9sbGJhcjsKIGNsYXNz
IFdoZWVsRXZlbnRUZXN0TW9uaXRvcjsKIAotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApIHx8
IEVOQUJMRShSVUJCRVJfQkFORElORykKIGNsYXNzIFNjcm9sbENvbnRyb2xsZXJUaW1lcjsKLSNl
bmRpZgogCi0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkgfHwgRU5BQkxFKFJVQkJFUl9CQU5E
SU5HKQogY2xhc3MgU2Nyb2xsQW5pbWF0b3IgOiBwcml2YXRlIFNjcm9sbENvbnRyb2xsZXJDbGll
bnQgewotI2Vsc2UKLWNsYXNzIFNjcm9sbEFuaW1hdG9yIHsKLSNlbmRpZgogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2Ny
b2xsQW5pbWF0b3I+IGNyZWF0ZShTY3JvbGxhYmxlQXJlYSYpOwpAQCAtMTQ0LDE2ICsxMzUsMTMg
QEAgcHVibGljOgogICAgIEZsb2F0UG9pbnQgYWRqdXN0U2Nyb2xsT2Zmc2V0Rm9yU25hcHBpbmdJ
Zk5lZWRlZChjb25zdCBGbG9hdFBvaW50JiBvZmZzZXQsIFNjcm9sbFNuYXBQb2ludFNlbGVjdGlv
bk1ldGhvZCk7CiAgICAgZmxvYXQgYWRqdXN0U2Nyb2xsT2Zmc2V0Rm9yU25hcHBpbmdJZk5lZWRl
ZChTY3JvbGxFdmVudEF4aXMsIGZsb2F0IG5ld09mZnNldCwgU2Nyb2xsU25hcFBvaW50U2VsZWN0
aW9uTWV0aG9kKTsKIAotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApIHx8IEVOQUJMRShSVUJC
RVJfQkFORElORykKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQ29udHJvbGxlclRpbWVyPiBj
cmVhdGVUaW1lcihGdW5jdGlvbjx2b2lkKCk+JiYpIGZpbmFsOwogCiAgICAgdm9pZCBzdGFydEFu
aW1hdGlvbkNhbGxiYWNrKFNjcm9sbENvbnRyb2xsZXImKSBmaW5hbDsKICAgICB2b2lkIHN0b3BB
bmltYXRpb25DYWxsYmFjayhTY3JvbGxDb250cm9sbGVyJikgZmluYWw7CiAKICAgICB2b2lkIHNj
cm9sbENvbnRyb2xsZXJBbmltYXRpb25UaW1lckZpcmVkKCk7Ci0jZW5kaWYKIAotI2lmIEVOQUJM
RShDU1NfU0NST0xMX1NOQVApCiAgICAgdmlydHVhbCBib29sIHByb2Nlc3NXaGVlbEV2ZW50Rm9y
U2Nyb2xsU25hcChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZvaWQgdXBkYXRlU2Nyb2xsU25hcFN0YXRlKCk7CiAgICAgYm9vbCBhY3RpdmVTY3JvbGxT
bmFwSW5kZXhEaWRDaGFuZ2UoKSBjb25zdDsKQEAgLTE2MiwxNyArMTUwLDE0IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldFNuYXBPZmZzZXRzSW5mbyhjb25zdCBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0
c0luZm8mKTsKICAgICBjb25zdCBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8qIHNuYXBPZmZz
ZXRzSW5mbygpIGNvbnN0OwogICAgIHZvaWQgcmVzbmFwQWZ0ZXJMYXlvdXQoKTsKLSNlbmRpZgog
CiAgICAgLy8gU2Nyb2xsQ29udHJvbGxlckNsaWVudC4KLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9T
TkFQKQogICAgIEZsb2F0UG9pbnQgc2Nyb2xsT2Zmc2V0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
dm9pZCBpbW1lZGlhdGVTY3JvbGxPbkF4aXMoU2Nyb2xsRXZlbnRBeGlzLCBmbG9hdCBkZWx0YSkg
b3ZlcnJpZGU7CiAgICAgZmxvYXQgcGFnZVNjYWxlRmFjdG9yKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgTGF5b3V0U2l6ZSBzY3JvbGxFeHRlbnQoKSBjb25zdCBvdmVycmlkZTsKICAgICBGbG9hdFNp
emUgdmlld3BvcnRTaXplKCkgY29uc3Qgb3ZlcnJpZGU7Ci0jZW5kaWYKLSNpZiAoRU5BQkxFKENT
U19TQ1JPTExfU05BUCkgfHwgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKSkgJiYgUExBVEZPUk0oTUFD
KQorI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIGRlZmVyV2hlZWxFdmVudFRlc3RDb21wbGV0
aW9uRm9yUmVhc29uKFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlm
aWVyLCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OkRlZmVyUmVhc29uKSBjb25zdCBvdmVycmlkZTsK
ICAgICB2b2lkIHJlbW92ZVdoZWVsRXZlbnRUZXN0Q29tcGxldGlvbkRlZmVycmFsRm9yUmVhc29u
KFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyLCBXaGVlbEV2
ZW50VGVzdE1vbml0b3I6OkRlZmVyUmVhc29uKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgpAQCAt
MTg3LDEwICsxNzIsOCBAQCBwcm90ZWN0ZWQ6CiAKICAgICBTY3JvbGxhYmxlQXJlYSYgbV9zY3Jv
bGxhYmxlQXJlYTsKICAgICBSZWZQdHI8V2hlZWxFdmVudFRlc3RNb25pdG9yPiBtX3doZWVsRXZl
bnRUZXN0TW9uaXRvcjsKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKSB8fCBFTkFCTEUoUlVC
QkVSX0JBTkRJTkcpCiAgICAgU2Nyb2xsQ29udHJvbGxlciBtX3Njcm9sbENvbnRyb2xsZXI7CiAg
ICAgVGltZXIgbV9zY3JvbGxDb250cm9sbGVyQW5pbWF0aW9uVGltZXI7Ci0jZW5kaWYKICAgICBG
bG9hdFBvaW50IG1fY3VycmVudFBvc2l0aW9uOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9s
bEFuaW1hdGlvbj4gbV9zY3JvbGxBbmltYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbENvbnRyb2xsZXIuY3BwCmluZGV4IGM3Mjc5ZjRjYmU3ZjM1Mzc3OGQyMWJjMThlY2Nk
ZGQwYzg3NTY3M2EuLmU5Mzc1YmE3NDc2OGJkYjQ3M2JkOGJmMWZmYTQ5YjgxY2Y5OTQzYTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENvbnRyb2xsZXIuY3BwCkBAIC0yOSwx
NSArMjksMTAgQEAKICNpbmNsdWRlICJMYXlvdXRTaXplLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgotI2luY2x1ZGUgIldoZWVsRXZlbnRU
ZXN0TW9uaXRvci5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KLQotI2lmIEVO
QUJMRShDU1NfU0NST0xMX1NOQVApCiAjaW5jbHVkZSAiU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUu
aCIKICNpbmNsdWRlICJTY3JvbGxhYmxlQXJlYS5oIgotI2VuZGlmCi0KLSNpZiBFTkFCTEUoUlVC
QkVSX0JBTkRJTkcpIHx8IEVOQUJMRShDU1NfU0NST0xMX1NOQVApCisjaW5jbHVkZSAiV2hlZWxF
dmVudFRlc3RNb25pdG9yLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTkwLDE1ICs4NSw5IEBAIHZvaWQgU2Nyb2xsQ29udHJv
bGxlcjo6c2V0SXNBbmltYXRpbmdTY3JvbGxTbmFwKGJvb2wgaXNBbmltYXRpbmdTY3JvbGxTbmFw
KQogCiBib29sIFNjcm9sbENvbnRyb2xsZXI6OnVzZXNTY3JvbGxTbmFwKCkgY29uc3QKIHsKLSNp
ZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIHJldHVybiAhIW1fc2Nyb2xsU25hcFN0YXRl
OwotI2Vsc2UKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKIH0KIAotI2lmIEVOQUJMRShDU1Nf
U0NST0xMX1NOQVApCi0KIHZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6c2V0U25hcE9mZnNldHNJbmZv
KGNvbnN0IExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbyYgc25hcE9mZnNldEluZm8pCiB7CiAg
ICAgaWYgKHNuYXBPZmZzZXRJbmZvLmlzRW1wdHkoKSkgewpAQCAtMjA2LDggKzE5NSw2IEBAIHZv
aWQgU2Nyb2xsQ29udHJvbGxlcjo6cmVzbmFwQWZ0ZXJMYXlvdXQoKQogICAgICAgICBzZXROZWFy
ZXN0U2Nyb2xsU25hcEluZGV4Rm9yQXhpc0FuZE9mZnNldChTY3JvbGxFdmVudEF4aXM6OlZlcnRp
Y2FsLCBvZmZzZXQueSgpKTsKIAogfQotI2VuZGlmCi0KIC8vIEN1cnJlbnRseSwgb25seSBNYWMg
c3VwcG9ydHMgbW9tZW50dW0gc3JvbGxpbmctYmFzZWQgc2Nyb2xsc25hcHBpbmcgYW5kIHJ1YmJl
ciBiYW5kaW5nCiAvLyBzbyBhbGwgb2YgdGhlc2UgbWV0aG9kcyBhcmUgYSBub29wIG9uIG5vbi1N
YWMgcGxhdGZvcm1zLgogI2lmICFQTEFURk9STShNQUMpCkBAIC0yMzYsNSArMjIzLDMgQEAgdm9p
ZCBTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVSdWJiZXJCYW5kQW5pbWF0aW5nU3RhdGUoTW9ub3Rv
bmljVGltZSkKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShSVUJCRVJfQkFORElORykgfHwgRU5BQkxFKENTU19TQ1JP
TExfU05BUCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENvbnRyb2xsZXIuaAppbmRl
eCAyYWNhZWQ2ZTUwMDQxMTlmNTljZDdmNTRhNDM0NjEyNTE0YzI4YjM0Li4yYjQ3NTFlZWE4ZTQz
ZTVkNWQ1YjI5ZjkzMzQxMTdlZGZjYjdjZDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsQ29udHJvbGxlci5oCkBAIC0yNSwyMSArMjUsMTcgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpIHx8IEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0K
ICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiRmxvYXRTaXplLmgiCisKICNpbmNs
dWRlICJSZWN0RWRnZXMuaCIKKyNpbmNsdWRlICJTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5oIgor
I2luY2x1ZGUgIlNjcm9sbFNuYXBPZmZzZXRzSW5mby5oIgogI2luY2x1ZGUgIlNjcm9sbFR5cGVz
LmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVudFRlc3RNb25pdG9yLmgiCiAjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIAotI2lmIEVOQUJMRShDU1Nf
U0NST0xMX1NOQVApCi0jaW5jbHVkZSAiU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuaCIKLSNpbmNs
dWRlICJTY3JvbGxTbmFwT2Zmc2V0c0luZm8uaCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIExheW91dFNpemU7CkBAIC0xMDYsNyArMTAyLDYgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBkZWZlcldoZWVsRXZlbnRUZXN0Q29tcGxldGlvbkZvclJlYXNvbihXaGVl
bEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllciwgV2hlZWxFdmVudFRl
c3RNb25pdG9yOjpEZWZlclJlYXNvbikgY29uc3QgeyAvKiBEbyBub3RoaW5nICovIH0KICAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRGVmZXJyYWxGb3JSZWFz
b24oV2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIsIFdoZWVs
RXZlbnRUZXN0TW9uaXRvcjo6RGVmZXJSZWFzb24pIGNvbnN0IHsgLyogRG8gbm90aGluZyAqLyB9
CiAKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIHZpcnR1YWwgRmxvYXRQb2ludCBz
Y3JvbGxPZmZzZXQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGltbWVkaWF0ZVNjcm9s
bE9uQXhpcyhTY3JvbGxFdmVudEF4aXMsIGZsb2F0IGRlbHRhKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHdpbGxTdGFydFNjcm9sbFNuYXBBbmltYXRpb24oKSB7IH0KQEAgLTExNCw3ICsxMDksNiBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBmbG9hdCBwYWdlU2NhbGVGYWN0b3IoKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBMYXlvdXRTaXplIHNjcm9sbEV4dGVudCgpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIEZsb2F0U2l6ZSB2aWV3cG9ydFNpemUoKSBjb25zdCA9IDA7Ci0jZW5kaWYKIH07CiAK
IGNsYXNzIFNjcm9sbENvbnRyb2xsZXIgewpAQCAtMTMxLDcgKzEyNSw2IEBAIHB1YmxpYzoKICAg
ICAvLyBTaG91bGQgYmUgY2FsbGVkIHBlcmlvZGljYWxseSBieSB0aGUgY2xpZW50LiBTdGFydGVk
IGJ5IHN0YXJ0QW5pbWF0aW9uQ2FsbGJhY2soKSwgc3RvcHBlZCBieSBzdG9wQW5pbWF0aW9uQ2Fs
bGJhY2soKS4KICAgICB2b2lkIGFuaW1hdGlvbkNhbGxiYWNrKE1vbm90b25pY1RpbWUpOwogCi0j
aWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICB2b2lkIHNldFNuYXBPZmZzZXRzSW5mbyhj
b25zdCBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8mKTsKICAgICBjb25zdCBMYXlvdXRTY3Jv
bGxTbmFwT2Zmc2V0c0luZm8qIHNuYXBPZmZzZXRzSW5mbygpIGNvbnN0OwogICAgIHZvaWQgc2V0
QWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXMsIHN0ZDo6b3B0aW9u
YWw8dW5zaWduZWQ+KTsKQEAgLTE0Myw3ICsxMzYsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRh
dGVTY3JvbGxTbmFwU3RhdGUoY29uc3QgU2Nyb2xsYWJsZUFyZWEmKTsKICAgICB2b2lkIHVwZGF0
ZUdlc3R1cmVJblByb2dyZXNzU3RhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CiAgICAg
ZmxvYXQgYWRqdXN0U2Nyb2xsRGVzdGluYXRpb24oU2Nyb2xsRXZlbnRBeGlzLCBmbG9hdCBkZXN0
aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IG9yaWdp
bmFsT2Zmc2V0KTsKLSNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIC8vIFJldHVybnMg
dHJ1ZSBpZiBoYW5kbGVkLgpAQCAtMTU2LDEwICsxNDgsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
c1Njcm9sbFNuYXBJblByb2dyZXNzKCkgY29uc3Q7CiAgICAgYm9vbCBpc1VzZXJTY3JvbGxJblBy
b2dyZXNzKCkgY29uc3Q7CiAKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIC8vIFJl
dHVybnMgdHJ1ZSBpZiBoYW5kbGVkLgogICAgIGJvb2wgcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3Jv
bGxTbmFwKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpOwotI2VuZGlmCiAKICNpZiBFTkFCTEUo
UlVCQkVSX0JBTkRJTkcpCiAgICAgdm9pZCBzdG9wUnViYmVyYmFuZGluZygpOwpAQCAtMTY5LDkg
KzE1OSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotI2lmIEVOQUJMRShDU1NfU0NS
T0xMX1NOQVApCiAgICAgdm9pZCBzZXROZWFyZXN0U2Nyb2xsU25hcEluZGV4Rm9yQXhpc0FuZE9m
ZnNldChTY3JvbGxFdmVudEF4aXMsIGludCk7Ci0jZW5kaWYKIAogICAgIHZvaWQgdXBkYXRlU2Ny
b2xsU25hcEFuaW1hdGluZ1N0YXRlKE1vbm90b25pY1RpbWUpOwogICAgIHZvaWQgdXBkYXRlUnVi
YmVyQmFuZEFuaW1hdGluZ1N0YXRlKE1vbm90b25pY1RpbWUpOwpAQCAtMTgwLDcgKzE2OCw2IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzZXRJc0FuaW1hdGluZ1Njcm9sbFNuYXAoYm9vbCk7CiAKICNp
ZiBQTEFURk9STShNQUMpCi0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICB2b2lkIHN0
YXJ0U2Nyb2xsU25hcEFuaW1hdGlvbigpOwogICAgIHZvaWQgc3RvcFNjcm9sbFNuYXBBbmltYXRp
b24oKTsKIApAQCAtMTg5LDcgKzE3Niw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzY2hlZHVsZVN0
YXRlbGVzc1Njcm9sbFNuYXAoKTsKICAgICB2b2lkIHN0YXJ0RGVmZXJyaW5nV2hlZWxFdmVudFRl
c3RDb21wbGV0aW9uRHVlVG9TY3JvbGxTbmFwcGluZygpOwogICAgIHZvaWQgc3RvcERlZmVycmlu
Z1doZWVsRXZlbnRUZXN0Q29tcGxldGlvbkR1ZVRvU2Nyb2xsU25hcHBpbmcoKTsKLSNlbmRpZgog
CiAjaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQogICAgIHZvaWQgc3RhcnRSdWJiZXJiYW5kQW5p
bWF0aW9uKCk7CkBAIC0yMDcsMTAgKzE5Myw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydE9y
U3RvcEFuaW1hdGlvbkNhbGxiYWNrcygpOwogCiAgICAgU2Nyb2xsQ29udHJvbGxlckNsaWVudCYg
bV9jbGllbnQ7Ci0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU+IG1fc2Nyb2xsU25hcFN0YXRlOwogICAgIGJvb2wg
bV9hY3RpdmVTY3JvbGxTbmFwSW5kZXhEaWRDaGFuZ2UgeyBmYWxzZSB9OwotI2VuZGlmCiAKICAg
ICBib29sIG1faXNSdW5uaW5nQW5pbWF0aW5nQ2FsbGJhY2sgeyBmYWxzZSB9OwogICAgIGJvb2wg
bV9pc0FuaW1hdGluZ1J1YmJlckJhbmQgeyBmYWxzZSB9OwpAQCAtMjI3LDEwICsyMTEsOCBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV9pZ25vcmVNb21lbnR1bVNjcm9sbHMgeyBmYWxzZSB9OwogICAg
IGJvb2wgbV9pc1J1YmJlckJhbmRpbmcgeyBmYWxzZSB9OwogCi0jaWYgRU5BQkxFKENTU19TQ1JP
TExfU05BUCkKICAgICBGbG9hdFNpemUgbV9kcmFnRW5kZWRTY3JvbGxpbmdWZWxvY2l0eTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQ29udHJvbGxlclRpbWVyPiBtX3N0YXRlbGVzc1NuYXBU
cmFuc2l0aW9uVGltZXI7Ci0jZW5kaWYKIAogI2lmIEVOQUJMRShSVUJCRVJfQkFORElORykKICAg
ICAvLyBSdWJiZXIgYmFuZCBzdGF0ZS4KQEAgLTI0Nyw1ICsyMjksMyBAQCBwcml2YXRlOgogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFJVQkJFUl9CQU5E
SU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1h
dG9yU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9y
U3RhdGUuY3BwCmluZGV4IGIzNDNhYjI3YWI0NzNkYzM0MjgyMWM4YTdiODZjNTkzMGZlZmU1YmMu
LjdkNGNjNzNjMmMxZTdkNTg3ZDVhOGIwYTEyMjVhMmQ3YjYwYjYzZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFNuYXBBbmltYXRvclN0YXRlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5jcHAKQEAgLTI2
LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTY3JvbGxTbmFwQW5p
bWF0b3JTdGF0ZS5oIgogCi0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLQogI2luY2x1ZGUg
PHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCkBA
IC0xMTYsNSArMTE0LDMgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywg
Y29uc3QgU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUmIHN0YXRlKQogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBDU1NfU0NST0xMX1NOQVAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFNuYXBBbmltYXRvclN0YXRlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5oCmluZGV4IGI4MTY3MzJjOWEy
NWJiMGQzNDQwYmFiZjIwNDM0ZWI0YzMwYWI1NmIuLmMwNzdhZTBmZDU5ODhlZmQ1ZTMwOTdmNGI4
Nzc0NjM1YWZlMDk2NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bFNuYXBBbmltYXRvclN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
U25hcEFuaW1hdG9yU3RhdGUuaApAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAot
I2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0KICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAj
aW5jbHVkZSAiRmxvYXRTaXplLmgiCiAjaW5jbHVkZSAiTGF5b3V0UG9pbnQuaCIKQEAgLTEwMiw1
ICsxMDAsMyBAQCBwcml2YXRlOgogV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4
dFN0cmVhbSYsIGNvbnN0IFNjcm9sbFNuYXBBbmltYXRvclN0YXRlJik7CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKaW5kZXggOGE5Njc4OTU1M2FkMzEx
MzUxNDc4MmIxZjcwZTBjZjUxOTMzOGFmZi4uNjkyYWJjMGFmNDE0YTM0YjBjOGM5MzUwMTdmNDY0
YTYyMzg5ZGRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJs
ZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNw
cApAQCAtNDY3LDcgKzQ2Nyw2IEBAIFN0cmluZyBTY3JvbGxhYmxlQXJlYTo6dmVydGljYWxTY3Jv
bGxiYXJTdGF0ZUZvclRlc3RpbmcoKSBjb25zdAogICAgIHJldHVybiBzY3JvbGxBbmltYXRvcigp
LnZlcnRpY2FsU2Nyb2xsYmFyU3RhdGVGb3JUZXN0aW5nKCk7CiB9CiAKLSNpZiBFTkFCTEUoQ1NT
X1NDUk9MTF9TTkFQKQogY29uc3QgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvKiBTY3JvbGxh
YmxlQXJlYTo6c25hcE9mZnNldHNJbmZvKCkgY29uc3QKIHsKICAgICByZXR1cm4gZXhpc3RpbmdT
Y3JvbGxBbmltYXRvcigpID8gZXhpc3RpbmdTY3JvbGxBbmltYXRvcigpLT5zbmFwT2Zmc2V0c0lu
Zm8oKSA6IG51bGxwdHI7CkBAIC01NjMsMTUgKzU2Miw2IEBAIHZvaWQgU2Nyb2xsYWJsZUFyZWE6
OmRvUG9zdFRodW1iTW92ZVNuYXBwaW5nKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9u
KQogCiAgICAgc2Nyb2xsQW5pbWF0b3ItPnNjcm9sbFRvT2Zmc2V0V2l0aEFuaW1hdGlvbihuZXdP
ZmZzZXQpOwogfQotI2Vsc2UKLXZvaWQgU2Nyb2xsYWJsZUFyZWE6OnJlc25hcEFmdGVyTGF5b3V0
KCkKLXsKLX0KLQotdm9pZCBTY3JvbGxhYmxlQXJlYTo6ZG9Qb3N0VGh1bWJNb3ZlU25hcHBpbmco
U2Nyb2xsYmFyT3JpZW50YXRpb24pCi17Ci19Ci0jZW5kaWYKIAogYm9vbCBTY3JvbGxhYmxlQXJl
YTo6aXNQaW5uZWRGb3JTY3JvbGxEZWx0YU9uQXhpcyhmbG9hdCBzY3JvbGxEZWx0YSwgU2Nyb2xs
RXZlbnRBeGlzIGF4aXMpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxhYmxlQXJlYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJs
ZUFyZWEuaAppbmRleCA5NTllOGY4MmYwNjU0NWRjYmRiOTBhMmI3OGMwYmNiOTA5YzgwM2JhLi5m
ZDM5NjMzMzgwYjk0N2EyMDUwYTdiODY4MGM1Nzk5MGY2ZDc1Y2I2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKQEAgLTg4LDcgKzg4LDYgQEAgcHVibGljOgogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBib29sIGhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxp
bmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jiwgc3RkOjpvcHRpb25hbDxXaGVlbFNjcm9sbEdl
c3R1cmVTdGF0ZT4pOwogCi0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlU25hcE9mZnNldHMoKSB7IH07CiAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3Qg
TGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvKiBzbmFwT2Zmc2V0c0luZm8oKSBjb25zdDsKICAg
ICB2b2lkIHNldFNjcm9sbFNuYXBPZmZzZXRJbmZvKGNvbnN0IExheW91dFNjcm9sbFNuYXBPZmZz
ZXRzSW5mbyYpOwpAQCAtOTcsNyArOTYsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBv
aW50SW5kZXgoc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4pOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0Q3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZD4pOwotI2VuZGlmCiAKICAgICB2b2lkIHJlc25hcEFmdGVyTGF5b3V0KCk7CiAgICAgdm9pZCBk
b1Bvc3RUaHVtYk1vdmVTbmFwcGluZyhTY3JvbGxiYXJPcmllbnRhdGlvbik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KaW5kZXggYjFlYzJj
NjRiZTViNjczMGNkZGMyYzBjODA4NWVkMjliNzQ4OTkwMy4uMTdhOTFiNTNmOTU2MzFhZTAxOGFj
MWJhYTYxMWY3ZDY3MmJmMjJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9TY3JvbGxBbmltYXRvck1hYy5tbQpAQCAtODM3LDExICs4MzcsNyBAQCBib29sIFNjcm9sbEFu
aW1hdG9yTWFjOjppc1J1YmJlckJhbmRJblByb2dyZXNzKCkgY29uc3QKIAogYm9vbCBTY3JvbGxB
bmltYXRvck1hYzo6aXNTY3JvbGxTbmFwSW5Qcm9ncmVzcygpIGNvbnN0CiB7Ci0jaWYgRU5BQkxF
KENTU19TQ1JPTExfU05BUCkKICAgICByZXR1cm4gbV9zY3JvbGxDb250cm9sbGVyLmlzU2Nyb2xs
U25hcEluUHJvZ3Jlc3MoKTsKLSNlbHNlCi0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCiB9CiAK
IHN0YXRpYyBTdHJpbmcgc2Nyb2xsYmFyU3RhdGUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCkBAIC0x
MDE5LDEwICsxMDE1LDggQEAgdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6ZGlkQmVnaW5TY3JvbGxH
ZXN0dXJlKCkgY29uc3QKIAogICAgIFttX3Njcm9sbGVySW1wUGFpciBiZWdpblNjcm9sbEdlc3R1
cmVdOwogCi0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkgfHwgRU5BQkxFKFJVQkJFUl9CQU5E
SU5HKQogICAgIGlmIChtX3doZWVsRXZlbnRUZXN0TW9uaXRvcikKICAgICAgICAgbV93aGVlbEV2
ZW50VGVzdE1vbml0b3ItPmRlZmVyRm9yUmVhc29uKHJlaW50ZXJwcmV0X2Nhc3Q8V2hlZWxFdmVu
dFRlc3RNb25pdG9yOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXI+KHRoaXMpLCBXaGVlbEV2ZW50
VGVzdE1vbml0b3I6OkNvbnRlbnRTY3JvbGxJblByb2dyZXNzKTsKLSNlbmRpZgogfQogCiB2b2lk
IFNjcm9sbEFuaW1hdG9yTWFjOjpkaWRFbmRTY3JvbGxHZXN0dXJlKCkgY29uc3QKQEAgLTEwMzQs
MTAgKzEwMjgsOCBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yTWFjOjpkaWRFbmRTY3JvbGxHZXN0dXJl
KCkgY29uc3QKIAogICAgIFttX3Njcm9sbGVySW1wUGFpciBlbmRTY3JvbGxHZXN0dXJlXTsKIAot
I2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApIHx8IEVOQUJMRShSVUJCRVJfQkFORElORykKICAg
ICBpZiAobV93aGVlbEV2ZW50VGVzdE1vbml0b3IpCiAgICAgICAgIG1fd2hlZWxFdmVudFRlc3RN
b25pdG9yLT5yZW1vdmVEZWZlcnJhbEZvclJlYXNvbihyZWludGVycHJldF9jYXN0PFdoZWVsRXZl
bnRUZXN0TW9uaXRvcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyPih0aGlzKSwgV2hlZWxFdmVu
dFRlc3RNb25pdG9yOjpDb250ZW50U2Nyb2xsSW5Qcm9ncmVzcyk7Ci0jZW5kaWYKIH0KIAogdm9p
ZCBTY3JvbGxBbmltYXRvck1hYzo6bWF5QmVnaW5TY3JvbGxHZXN0dXJlKCkgY29uc3QKQEAgLTEy
NzcsNyArMTI2OSw2IEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OmlzUGlubmVkRm9yU2Nyb2xs
RGVsdGEoY29uc3QgRmxvYXRTaXplJiBkZWx0YSkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogc3RhdGljIGJvb2wgZ2VzdHVyZVNob3Vs
ZEJlZ2luU25hcChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIFNjcm9sbEV2
ZW50QXhpcyBheGlzLCBjb25zdCBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8qIG9mZnNldElu
Zm8pCiB7CiAgICAgaWYgKCFvZmZzZXRJbmZvKQpAQCAtMTI5MSw3ICsxMjgyLDYgQEAgc3RhdGlj
IGJvb2wgZ2VzdHVyZVNob3VsZEJlZ2luU25hcChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdo
ZWVsRXZlbnQsIFNjcm9sbEUKIAogICAgIHJldHVybiB0cnVlOwogfQotI2VuZGlmCiAKIGJvb2wg
U2Nyb2xsQW5pbWF0b3JNYWM6OmFsbG93c1ZlcnRpY2FsU3RyZXRjaGluZyhjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpIGNvbnN0CiB7CkBAIC0xMzAxLDEwICsxMjkxLDggQEAg
Ym9vbCBTY3JvbGxBbmltYXRvck1hYzo6YWxsb3dzVmVydGljYWxTdHJldGNoaW5nKGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudCYgd2hlZWwKICAgICAgICAgU2Nyb2xsYmFyKiB2U2Nyb2xsZXIgPSBt
X3Njcm9sbGFibGVBcmVhLnZlcnRpY2FsU2Nyb2xsYmFyKCk7CiAgICAgICAgIGJvb2wgc2Nyb2xs
YmFyc0FsbG93U3RyZXRjaGluZyA9ICgodlNjcm9sbGVyICYmIHZTY3JvbGxlci0+ZW5hYmxlZCgp
KSB8fCAoIWhTY3JvbGxlciB8fCAhaFNjcm9sbGVyLT5lbmFibGVkKCkpKTsKICAgICAgICAgYm9v
bCBldmVudFByZXZlbnRzU3RyZXRjaGluZyA9IG1fc2Nyb2xsYWJsZUFyZWEuaGFzU2Nyb2xsYWJs
ZU9yUnViYmVyYmFuZGFibGVBbmNlc3RvcigpICYmIHdoZWVsRXZlbnQuaXNHZXN0dXJlU3RhcnQo
KSAmJiBtX3Njcm9sbGFibGVBcmVhLmlzUGlubmVkRm9yU2Nyb2xsRGVsdGFPbkF4aXMoLXdoZWVs
RXZlbnQuZGVsdGFZKCksIFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwpOwotI2lmIEVOQUJMRShD
U1NfU0NST0xMX1NOQVApCiAgICAgICAgIGlmICghZXZlbnRQcmV2ZW50c1N0cmV0Y2hpbmcpCiAg
ICAgICAgICAgICBldmVudFByZXZlbnRzU3RyZXRjaGluZyA9IGdlc3R1cmVTaG91bGRCZWdpblNu
YXAod2hlZWxFdmVudCwgU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgbV9zY3JvbGxhYmxlQXJl
YS5zbmFwT2Zmc2V0c0luZm8oKSk7Ci0jZW5kaWYKICAgICAgICAgcmV0dXJuIHNjcm9sbGJhcnNB
bGxvd1N0cmV0Y2hpbmcgJiYgIWV2ZW50UHJldmVudHNTdHJldGNoaW5nOwogICAgIH0KICAgICBj
YXNlIFNjcm9sbEVsYXN0aWNpdHlOb25lOgpAQCAtMTMyNSwxMCArMTMxMyw4IEBAIGJvb2wgU2Ny
b2xsQW5pbWF0b3JNYWM6OmFsbG93c0hvcml6b250YWxTdHJldGNoaW5nKGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYgd2hlCiAgICAgICAgIFNjcm9sbGJhciogdlNjcm9sbGVyID0gbV9zY3JvbGxh
YmxlQXJlYS52ZXJ0aWNhbFNjcm9sbGJhcigpOwogICAgICAgICBib29sIHNjcm9sbGJhcnNBbGxv
d1N0cmV0Y2hpbmcgPSAoKGhTY3JvbGxlciAmJiBoU2Nyb2xsZXItPmVuYWJsZWQoKSkgfHwgKCF2
U2Nyb2xsZXIgfHwgIXZTY3JvbGxlci0+ZW5hYmxlZCgpKSk7CiAgICAgICAgIGJvb2wgZXZlbnRQ
cmV2ZW50c1N0cmV0Y2hpbmcgPSBtX3Njcm9sbGFibGVBcmVhLmhhc1Njcm9sbGFibGVPclJ1YmJl
cmJhbmRhYmxlQW5jZXN0b3IoKSAmJiB3aGVlbEV2ZW50LmlzR2VzdHVyZVN0YXJ0KCkgJiYgbV9z
Y3JvbGxhYmxlQXJlYS5pc1Bpbm5lZEZvclNjcm9sbERlbHRhT25BeGlzKC13aGVlbEV2ZW50LmRl
bHRhWCgpLCBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwpOwotI2lmIEVOQUJMRShDU1NfU0NS
T0xMX1NOQVApCiAgICAgICAgIGlmICghZXZlbnRQcmV2ZW50c1N0cmV0Y2hpbmcpCiAgICAgICAg
ICAgICBldmVudFByZXZlbnRzU3RyZXRjaGluZyA9IGdlc3R1cmVTaG91bGRCZWdpblNuYXAod2hl
ZWxFdmVudCwgU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCBtX3Njcm9sbGFibGVBcmVhLnNu
YXBPZmZzZXRzSW5mbygpKTsKLSNlbmRpZgogICAgICAgICByZXR1cm4gc2Nyb2xsYmFyc0FsbG93
U3RyZXRjaGluZyAmJiAhZXZlbnRQcmV2ZW50c1N0cmV0Y2hpbmc7CiAgICAgfQogICAgIGNhc2Ug
U2Nyb2xsRWxhc3RpY2l0eU5vbmU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU2Nyb2xsQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9T
Y3JvbGxDb250cm9sbGVyLm1tCmluZGV4IDg3MDM4YjU5ZDkyMDAyYmNlNGNjZDE0ZmYxMzlkZThh
YmUyYzVjNWUuLmNhYzliMmIxNDljMzllYzBjZWYwMDUxYmQyMTdhZmQ4NDZkNjM4OWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxDb250cm9sbGVyLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxDb250cm9sbGVyLm1tCkBAIC0z
NCw3ICszNCw3IEBACiAjaW1wb3J0IDxzeXMvdGltZS5oPgogI2ltcG9ydCA8d3RmL3RleHQvVGV4
dFN0cmVhbS5oPgogCi0jaWYgUExBVEZPUk0oTUFDKSAmJiAoRU5BQkxFKFJVQkJFUl9CQU5ESU5H
KSB8fCBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKSkKKyNpZiBQTEFURk9STShNQUMpCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtNzcsMTAgKzc3LDggQEAgU2Nyb2xsQ29udHJvbGxlcjo6flNj
cm9sbENvbnRyb2xsZXIoKQogCiB2b2lkIFNjcm9sbENvbnRyb2xsZXI6OnN0b3BBbGxUaW1lcnMo
KQogewotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgaWYgKG1fc3RhdGVsZXNzU25h
cFRyYW5zaXRpb25UaW1lcikKICAgICAgICAgbV9zdGF0ZWxlc3NTbmFwVHJhbnNpdGlvblRpbWVy
LT5zdG9wKCk7Ci0jZW5kaWYKIAogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgbV90aW1lcnNXZXJl
U3RvcHBlZCA9IHRydWU7CkBAIC04OSwxMCArODcsOSBAQCB2b2lkIFNjcm9sbENvbnRyb2xsZXI6
OnN0b3BBbGxUaW1lcnMoKQogCiBib29sIFNjcm9sbENvbnRyb2xsZXI6OmhhbmRsZVdoZWVsRXZl
bnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQogewotI2lmIEVOQUJMRShD
U1NfU0NST0xMX1NOQVApCiAgICAgaWYgKHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsU25hcCh3
aGVlbEV2ZW50KSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKKwogICAgIGlmICh3aGVl
bEV2ZW50LnBoYXNlKCkgPT0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U6Ok1heUJlZ2luIHx8IHdo
ZWVsRXZlbnQucGhhc2UoKSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZTo6Q2FuY2VsbGVkKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTQ2NiwxMCArNDYzLDkgQEAgYm9vbCBTY3JvbGxD
b250cm9sbGVyOjppc1Njcm9sbFNuYXBJblByb2dyZXNzKCkgY29uc3QKICAgICBpZiAoIXVzZXNT
Y3JvbGxTbmFwKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotI2lmIEVOQUJMRShDU1NfU0NS
T0xMX1NOQVApCiAgICAgaWYgKG1faW5TY3JvbGxHZXN0dXJlIHx8IG1fbW9tZW50dW1TY3JvbGxJ
blByb2dyZXNzIHx8IG1faXNBbmltYXRpbmdTY3JvbGxTbmFwKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKLSNlbmRpZgorCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC01NjgsNyArNTY0LDYgQEAg
dm9pZCBTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVSdWJiZXJCYW5kaW5nRWRnZXMoSW50U2l6ZSBj
bGllbnRTdHJldGNoKQogCiAjZW5kaWYgLy8gRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQogCi0jaWYg
RU5BQkxFKENTU19TQ1JPTExfU05BUCkKIGVudW0gY2xhc3MgV2hlZWxFdmVudFN0YXR1cyB7CiAg
ICAgVXNlclNjcm9sbEJlZ2luLAogICAgIFVzZXJTY3JvbGxpbmcsCkBAIC03ODcsMTAgKzc4Miw3
IEBAIHZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6dXBkYXRlU2Nyb2xsU25hcEFuaW1hdGluZ1N0YXRl
KE1vbm90b25pY1RpbWUgY3VycmVudFRpbWUpCiAgICAgICAgIHN0b3BTY3JvbGxTbmFwQW5pbWF0
aW9uKCk7CiAgICAgfQogfQotI2VuZGlmIC8vIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0KLQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoUlVCQkVSX0JBTkRJ
TkcpIHx8IEVOQUJMRShDU1NfU0NST0xMX1NOQVApKQorI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggMTAzYWRhM2FiOWMxYTgy
N2NmYzRjYzMxZjQwMDJlM2YwMGM4YzI0OS4uY2E1YTZjMzM0ODg5OTJhZGQ0NjIxMGM3ZmE3MWI5
OGIwNjdkM2Q4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTE2
NiwxMCArMTY2LDggQEAgdm9pZCBSZW5kZXJCb3g6OndpbGxCZURlc3Ryb3llZCgpCiAgICAgdmll
dygpLnVuc2NoZWR1bGVMYXp5UmVwYWludCgqdGhpcyk7CiAgICAgcmVtb3ZlQ29udHJvbFN0YXRl
c0ZvclJlbmRlcmVyKCp0aGlzKTsKIAotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAg
aWYgKGhhc0luaXRpYWxpemVkU3R5bGUoKSAmJiBzdHlsZSgpLmhhc1NuYXBQb3NpdGlvbigpKQog
ICAgICAgICB2aWV3KCkudW5yZWdpc3RlckJveFdpdGhTY3JvbGxTbmFwUG9zaXRpb25zKCp0aGlz
KTsKLSNlbmRpZgogCiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3Q6OndpbGxCZURlc3Ryb3llZCgp
OwogfQpAQCAtMjgwLDcgKzI3OCw2IEBAIHZvaWQgUmVuZGVyQm94OjpzdHlsZVdpbGxDaGFuZ2Uo
U3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsCiAgICAgfSBl
bHNlIGlmIChpc0JvZHkoKSkKICAgICAgICAgdmlldygpLnJlcGFpbnRSb290Q29udGVudHMoKTsK
IAotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgYm9vbCBib3hDb250cmlidXRlc1Nu
YXBQb3NpdGlvbnMgPSBuZXdTdHlsZS5oYXNTbmFwUG9zaXRpb24oKTsKICAgICBpZiAoYm94Q29u
dHJpYnV0ZXNTbmFwUG9zaXRpb25zIHx8IChvbGRTdHlsZSAmJiBvbGRTdHlsZS0+aGFzU25hcFBv
c2l0aW9uKCkpKSB7CiAgICAgICAgIGlmIChib3hDb250cmlidXRlc1NuYXBQb3NpdGlvbnMpCkBA
IC0yODgsNyArMjg1LDYgQEAgdm9pZCBSZW5kZXJCb3g6OnN0eWxlV2lsbENoYW5nZShTdHlsZURp
ZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWwKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgdmlldygpLnVucmVnaXN0ZXJCb3hXaXRoU2Nyb2xsU25hcFBvc2l0aW9ucygq
dGhpcyk7CiAgICAgfQotI2VuZGlmCiAKICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdDo6c3R5bGVX
aWxsQ2hhbmdlKGRpZmYsIG5ld1N0eWxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggZWJlYjVlMTZiY2QxNjY5ZmJl
MmYxYzVhYTlkMzU4MTg3NDMyMjA0OS4uMWE4MmE4MGUxY2I5OWYwN2IxOTA3YTgxZjgyZjg5YmZj
MjdkNGIxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
Q29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
Q29tcG9zaXRvci5jcHAKQEAgLTQ5OTUsMTMgKzQ5OTUsMTEgQEAgR3JhcGhpY3NMYXllckZhY3Rv
cnkqIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6Z3JhcGhpY3NMYXllckZhY3RvcnkoKSBjb25zdAog
ICAgIHJldHVybiBwYWdlKCkuY2hyb21lKCkuY2xpZW50KCkuZ3JhcGhpY3NMYXllckZhY3Rvcnko
KTsKIH0KIAotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiB2b2lkIFJlbmRlckxheWVyQ29t
cG9zaXRvcjo6dXBkYXRlU2Nyb2xsU25hcFByb3BlcnRpZXNXaXRoRnJhbWVWaWV3KGNvbnN0IEZy
YW1lVmlldyYgZnJhbWVWaWV3KSBjb25zdAogewogICAgIGlmIChhdXRvKiBjb29yZGluYXRvciA9
IHNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpCiAgICAgICAgIGNvb3JkaW5hdG9yLT51cGRhdGVTY3Jv
bGxTbmFwUHJvcGVydGllc1dpdGhGcmFtZVZpZXcoZnJhbWVWaWV3KTsKIH0KLSNlbmRpZgogCiBQ
YWdlJiBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnBhZ2UoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCmluZGV4IGQ2YmJmMmYz
ODc5ZTFlOTUzOTMzNGM5OWFiMWJiOTE4YWU1ZTJkZDMuLmQxMmYxYzVjY2MxZWQ1NDZlMmY5MDAw
ODU3YjQ4ZGU2YzhjMDZmNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmgKQEAgLTM4Myw5ICszODMsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHVwZGF0ZVJvb3RDb250ZW50TGF5ZXJDbGlwcGluZygpOwogCi0jaWYgRU5BQkxFKENTU19T
Q1JPTExfU05BUCkKICAgICB2b2lkIHVwZGF0ZVNjcm9sbFNuYXBQcm9wZXJ0aWVzV2l0aEZyYW1l
Vmlldyhjb25zdCBGcmFtZVZpZXcmKSBjb25zdDsKLSNlbmRpZgogCiAgICAgLy8gRm9yIHRlc3Rp
bmcuCiAgICAgdm9pZCBzdGFydFRyYWNraW5nTGF5ZXJGbHVzaGVzKCkgeyBtX2xheWVyRmx1c2hD
b3VudCA9IDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllck1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ck1vZGVsT2JqZWN0LmNwcAppbmRleCA5OWRiNjY2NjEwZjc3ODVjNjRlZTU5ZWJmNGEyYmRlMzg1
NmI2MjMyLi5mMjk1MDRhMmYzMmU4NWFkNTgzMjdmNjZhMzRiMTkxMjhiNmQ2ODc4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3Bw
CkBAIC0xNjMsNyArMTYzLDYgQEAgdm9pZCBSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpzdHlsZURp
ZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3QKICAgICAgICAgICAg
IHJlbmRlckxheWVyLT51cGRhdGVTY3JvbGxiYXJTdGVwcygpOwogICAgIH0KIAotI2lmIEVOQUJM
RShDU1NfU0NST0xMX1NOQVApCiAgICAgYm9vbCBzY3JvbGxNYXJnaW5DaGFuZ2VkID0gb2xkU3R5
bGUgJiYgb2xkU3R5bGUtPnNjcm9sbE1hcmdpbigpICE9IG5ld1N0eWxlLnNjcm9sbE1hcmdpbigp
OwogICAgIGJvb2wgc2Nyb2xsQWxpZ25DaGFuZ2VkID0gb2xkU3R5bGUgJiYgb2xkU3R5bGUtPnNj
cm9sbFNuYXBBbGlnbigpICE9IG5ld1N0eWxlLnNjcm9sbFNuYXBBbGlnbigpOwogICAgIGJvb2wg
c2Nyb2xsU25hcFN0b3BDaGFuZ2VkID0gb2xkU3R5bGUgJiYgb2xkU3R5bGUtPnNjcm9sbFNuYXBT
dG9wKCkgIT0gbmV3U3R5bGUuc2Nyb2xsU25hcFN0b3AoKTsKQEAgLTE3MSw3ICsxNzAsNiBAQCB2
b2lkIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5j
ZSBkaWZmLCBjb25zdCBSZW5kZXJTdAogICAgICAgICBpZiAoYXV0byogc2Nyb2xsU25hcEJveCA9
IGVuY2xvc2luZ1Njcm9sbGFibGVDb250YWluZXJGb3JTbmFwcGluZygpKQogICAgICAgICAgICAg
c2Nyb2xsU25hcEJveC0+c2V0TmVlZHNMYXlvdXQoKTsKICAgICB9Ci0jZW5kaWYKIH0KIAogYm9v
bCBSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpzaG91bGRQbGFjZVZlcnRpY2FsU2Nyb2xsYmFyT25M
ZWZ0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllclNjcm9sbGFibGVBcmVhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllclNjcm9sbGFibGVBcmVhLmNwcAppbmRleCAzMGQ5YjkwNDRjNmY3ZDIzOWVjNTEyZGRlYzVl
ZTIxYjcxZmVlNDhiLi41YmM3NzJjYzgxNmJjYmYwNjg3ZDI5ZThjOWFhNDA5Mjk1ZDNmMjdmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxl
QXJlYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xs
YWJsZUFyZWEuY3BwCkBAIC0xMjIxLDExICsxMjIxLDkgQEAgdm9pZCBSZW5kZXJMYXllclNjcm9s
bGFibGVBcmVhOjp1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXQoKQogICAgIGNvbXB1dGVTY3Jv
bGxEaW1lbnNpb25zKCk7CiAgICAgbV9sYXllci51cGRhdGVTZWxmUGFpbnRpbmdMYXllcigpOwog
Ci0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICAvLyBGSVhNRTogRW5zdXJlIHRoYXQg
b2Zmc2V0cyBhcmUgYWxzbyB1cGRhdGVkIGluIGNhc2Ugb2YgcHJvZ3JhbW1hdGljIHN0eWxlIGNo
YW5nZXMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEz
NTk2NAogICAgIHVwZGF0ZVNuYXBPZmZzZXRzKCk7Ci0jZW5kaWYKIAogICAgIGlmICghYm94LT5p
c0hUTUxNYXJxdWVlKCkgJiYgIWlzUnViYmVyQmFuZEluUHJvZ3Jlc3MoKSAmJiAhaXNVc2VyU2Ny
b2xsSW5Qcm9ncmVzcygpKSB7CiAgICAgICAgIC8vIExheW91dCBtYXkgY2F1c2UgdXMgdG8gYmUg
YXQgYW4gaW52YWxpZCBzY3JvbGwgcG9zaXRpb24uIEluIHRoaXMgY2FzZSB3ZSBuZWVkCkBAIC0x
NTA3LDcgKzE1MDUsNiBAQCBib29sIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6OnVzZURhcmtB
cHBlYXJhbmNlKCkgY29uc3QKICAgICByZXR1cm4gbV9sYXllci5yZW5kZXJlcigpLnVzZURhcmtB
cHBlYXJhbmNlKCk7CiB9CiAKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogdm9pZCBSZW5k
ZXJMYXllclNjcm9sbGFibGVBcmVhOjp1cGRhdGVTbmFwT2Zmc2V0cygpCiB7CiAgICAgLy8gRklY
TUU6IEV4dGVuZCBzdXBwb3J0IGJleW9uZCBIVE1MRWxlbWVudHMuCkBAIC0xNTMzLDcgKzE1MzAs
NiBAQCBib29sIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6OmlzU2Nyb2xsU25hcEluUHJvZ3Jl
c3MoKSBjb25zdAogCiAgICAgcmV0dXJuIGZhbHNlOwogfQotI2VuZGlmCiAKIHZvaWQgUmVuZGVy
TGF5ZXJTY3JvbGxhYmxlQXJlYTo6cGFpbnRPdmVybGF5U2Nyb2xsYmFycyhHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QsIE9wdGlvblNldDxQYWlu
dEJlaGF2aW9yPiBwYWludEJlaGF2aW9yLCBSZW5kZXJPYmplY3QqIHN1YnRyZWVQYWludFJvb3Qp
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3Jv
bGxhYmxlQXJlYS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xs
YWJsZUFyZWEuaAppbmRleCBlN2NmY2E0MDhiZjk5ODU5MmEwM2YxOThjOWQ1ODZiNDBlNjFjOWRi
Li5hMDcyODFiYjU5NWVlYzg3MjE2ZmMyYmU2N2NlZDlmMDljOTJlMTRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmgKQEAg
LTE0Myw5ICsxNDMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1Njcm9sbGFibGVPclJ1YmJlcmJh
bmRhYmxlKCkgZmluYWw7CiAgICAgYm9vbCBoYXNTY3JvbGxhYmxlT3JSdWJiZXJiYW5kYWJsZUFu
Y2VzdG9yKCkgZmluYWw7CiAgICAgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSgpIGNvbnN0IGZpbmFs
OwotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgdm9pZCB1cGRhdGVTbmFwT2Zmc2V0
cygpIGZpbmFsOwotI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2lmIEVOQUJM
RShJT1NfVE9VQ0hfRVZFTlRTKQpAQCAtMTg4LDkgKzE4Niw3IEBAIHB1YmxpYzoKICAgICBib29s
IGlzVXNlclNjcm9sbEluUHJvZ3Jlc3MoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGlzUnViYmVy
QmFuZEluUHJvZ3Jlc3MoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGZvcmNlVXBkYXRlU2Nyb2xs
YmFyc09uTWFpblRocmVhZEZvclBlcmZvcm1hbmNlVGVzdGluZygpIGNvbnN0IGZpbmFsOwotI2lm
IEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgYm9vbCBpc1Njcm9sbFNuYXBJblByb2dyZXNz
KCkgY29uc3QgZmluYWw7Ci0jZW5kaWYKICAgICBib29sIHVzZXNNb2NrU2Nyb2xsQW5pbWF0b3Io
KSBjb25zdCBmaW5hbDsKICAgICB2b2lkIGxvZ01vY2tTY3JvbGxBbmltYXRvck1lc3NhZ2UoY29u
c3QgU3RyaW5nJikgY29uc3QgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJW
aWV3LmNwcAppbmRleCAzNWUzZjQ4MTkyYmQ4YTczY2ZiOTlhOGJmZGVlZTdiZTc0NjY1ODgyLi43
MjUyODg0M2NlMWYxYTg2NTc2ZWFmZjAzYWM3MzhlZDY0YjQwMzA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC04OTEsNyArODkxLDYgQEAgUmVuZGVyTGF5ZXIq
IFJlbmRlclZpZXc6OnRha2VTdHlsZUNoYW5nZUxheWVyVHJlZU11dGF0aW9uUm9vdCgpCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiB2b2lkIFJl
bmRlclZpZXc6OnJlZ2lzdGVyQm94V2l0aFNjcm9sbFNuYXBQb3NpdGlvbnMoY29uc3QgUmVuZGVy
Qm94JiBib3gpCiB7CiAgICAgbV9ib3hlc1dpdGhTY3JvbGxTbmFwUG9zaXRpb25zLmFkZCgmYm94
KTsKQEAgLTkwMSw2ICs5MDAsNSBAQCB2b2lkIFJlbmRlclZpZXc6OnVucmVnaXN0ZXJCb3hXaXRo
U2Nyb2xsU25hcFBvc2l0aW9ucyhjb25zdCBSZW5kZXJCb3gmIGJveCkKIHsKICAgICBtX2JveGVz
V2l0aFNjcm9sbFNuYXBQb3NpdGlvbnMucmVtb3ZlKCZib3gpOwogfQotI2VuZGlmCiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCmluZGV4
IDZmNGVhYmFjMjFhYWUxYjUwYWZlZWUwNjRkODM0ODVkZDFjZDZkNTAuLmVhMDc4NTU4YzgwZWQ3
NTgzYTE4MmMzNDMzNjYzNzA5YzY0ZmE5NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clZpZXcuaApAQCAtMTk1LDExICsxOTUsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcm90ZWN0UmVu
ZGVyV2lkZ2V0VW50aWxMYXlvdXRJc0RvbmUoUmVuZGVyV2lkZ2V0JiB3aWRnZXQpIHsgbV9wcm90
ZWN0ZWRSZW5kZXJXaWRnZXRzLmFwcGVuZCgmd2lkZ2V0KTsgfQogICAgIHZvaWQgcmVsZWFzZVBy
b3RlY3RlZFJlbmRlcldpZGdldHMoKSB7IG1fcHJvdGVjdGVkUmVuZGVyV2lkZ2V0cy5jbGVhcigp
OyB9CiAKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIHZvaWQgcmVnaXN0ZXJCb3hX
aXRoU2Nyb2xsU25hcFBvc2l0aW9ucyhjb25zdCBSZW5kZXJCb3gmKTsKICAgICB2b2lkIHVucmVn
aXN0ZXJCb3hXaXRoU2Nyb2xsU25hcFBvc2l0aW9ucyhjb25zdCBSZW5kZXJCb3gmKTsKICAgICBj
b25zdCBIYXNoU2V0PGNvbnN0IFJlbmRlckJveCo+JiBib3hlc1dpdGhTY3JvbGxTbmFwUG9zaXRp
b25zKCkgeyByZXR1cm4gbV9ib3hlc1dpdGhTY3JvbGxTbmFwUG9zaXRpb25zOyB9Ci0jZW5kaWYK
IAogcHJpdmF0ZToKICAgICB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBDb29y
ZGluYXRlc0ZsYWdzLCBib29sKiB3YXNGaXhlZCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC0yNjYsOSAr
MjY0LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PFJlbmRlckVsZW1lbnQqPiBtX3Zpc2libGVJ
blZpZXdwb3J0UmVuZGVyZXJzOwogICAgIFZlY3RvcjxSZWZQdHI8UmVuZGVyV2lkZ2V0Pj4gbV9w
cm90ZWN0ZWRSZW5kZXJXaWRnZXRzOwogCi0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAg
ICBIYXNoU2V0PGNvbnN0IFJlbmRlckJveCo+IG1fYm94ZXNXaXRoU2Nyb2xsU25hcFBvc2l0aW9u
czsKLSNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggYjMxOWVjZjVhMzIyZDA4
MDQ1NjFlOWQ4N2E0Mjc4NDQwMDY2ZDU5Zi4uYmFmM2Q5ODhiYTAxMGNiYmMzNDYyZGNkN2UzMTFj
YzRlN2VmNWI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwCkBAIC05NTUsMTAgKzk1NSw4IEBAIGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5nZVJl
cXVpcmVzTGF5b3V0KGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlciwgT3B0aW9uU2V0PFN0eWxlCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9T
TkFQKQogICAgIGlmIChzY3JvbGxQYWRkaW5nKCkgIT0gb3RoZXIuc2Nyb2xsUGFkZGluZygpIHx8
IHNjcm9sbFNuYXBUeXBlKCkgIT0gb3RoZXIuc2Nyb2xsU25hcFR5cGUoKSkKICAgICAgICAgcmV0
dXJuIHRydWU7Ci0jZW5kaWYKIAogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTI1MzMsNyArMjUz
MSw2IEBAIHZvaWQgUmVuZGVyU3R5bGU6OnNldFNjcm9sbFBhZGRpbmdSaWdodChMZW5ndGgmJiBs
ZW5ndGgpCiB7CiAgICAgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBzY3JvbGxQYWRk
aW5nLnJpZ2h0KCksIFdURk1vdmUobGVuZ3RoKSk7CiB9Ci0jaWYgRU5BQkxFKENTU19TQ1JPTExf
U05BUCkKIAogU2Nyb2xsU25hcFR5cGUgUmVuZGVyU3R5bGU6OmluaXRpYWxTY3JvbGxTbmFwVHlw
ZSgpCiB7CkBAIC0yNTg1LDcgKzI1ODIsNiBAQCBib29sIFJlbmRlclN0eWxlOjpoYXNTbmFwUG9z
aXRpb24oKSBjb25zdAogICAgIGNvbnN0IFNjcm9sbFNuYXBBbGlnbiYgYWxpZ25tZW50ID0gdGhp
cy0+c2Nyb2xsU25hcEFsaWduKCk7CiAgICAgcmV0dXJuIGFsaWdubWVudC5ibG9ja0FsaWduICE9
IFNjcm9sbFNuYXBBeGlzQWxpZ25UeXBlOjpOb25lIHx8IGFsaWdubWVudC5pbmxpbmVBbGlnbiAh
PSBTY3JvbGxTbmFwQXhpc0FsaWduVHlwZTo6Tm9uZTsKIH0KLSNlbmRpZgogCiBib29sIFJlbmRl
clN0eWxlOjpoYXNSZWZlcmVuY2VGaWx0ZXJPbmx5KCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggOWM0ODUzOGMyYjEwYjE4Nzdm
NmQ2MWIxOGU5MWM2ZDI5Yjc3OTVlYy4uNzNmNWFjZjUyZTI0YWRkYmJlMGRiZjU0YWVkNzk1ODNj
YmJiOGM4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmgKQEAgLTc1NSwxMiArNzU1LDEwIEBAIHB1YmxpYzoKICAgICBjb25zdCBMZW5ndGgmIHNjcm9s
bFBhZGRpbmdMZWZ0KCkgY29uc3Q7CiAgICAgY29uc3QgTGVuZ3RoJiBzY3JvbGxQYWRkaW5nUmln
aHQoKSBjb25zdDsKIAotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgYm9vbCBoYXNT
bmFwUG9zaXRpb24oKSBjb25zdDsKICAgICBjb25zdCBTY3JvbGxTbmFwVHlwZSBzY3JvbGxTbmFw
VHlwZSgpIGNvbnN0OwogICAgIGNvbnN0IFNjcm9sbFNuYXBBbGlnbiYgc2Nyb2xsU25hcEFsaWdu
KCkgY29uc3Q7CiAgICAgU2Nyb2xsU25hcFN0b3Agc2Nyb2xsU25hcFN0b3AoKSBjb25zdDsKLSNl
bmRpZgogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICBDb2xvciB0YXBIaWdobGlnaHRD
b2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPnRhcEhpZ2hsaWdodENv
bG9yOyB9CkBAIC0xMzE1LDExICsxMzEzLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2Nyb2xs
UGFkZGluZ0xlZnQoTGVuZ3RoJiYpOwogICAgIHZvaWQgc2V0U2Nyb2xsUGFkZGluZ1JpZ2h0KExl
bmd0aCYmKTsKIAotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgdm9pZCBzZXRTY3Jv
bGxTbmFwVHlwZShjb25zdCBTY3JvbGxTbmFwVHlwZSk7CiAgICAgdm9pZCBzZXRTY3JvbGxTbmFw
QWxpZ24oY29uc3QgU2Nyb2xsU25hcEFsaWduJik7CiAgICAgdm9pZCBzZXRTY3JvbGxTbmFwU3Rv
cChjb25zdCBTY3JvbGxTbmFwU3RvcCk7Ci0jZW5kaWYKIAogI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCiAgICAgdm9pZCBzZXRUYXBIaWdobGlnaHRDb2xvcihjb25zdCBDb2xvciYgYykgeyBTRVRf
VkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRhcEhpZ2hsaWdodENvbG9yLCBjKTsgfQpAQCAtMTcy
NywxMSArMTcyMyw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxTY3JvbGxN
YXJnaW4oKSB7IHJldHVybiBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpOyB9CiAgICAgc3RhdGlj
IExlbmd0aCBpbml0aWFsU2Nyb2xsUGFkZGluZygpIHsgcmV0dXJuIExlbmd0aChMZW5ndGhUeXBl
OjpBdXRvKTsgfQogCi0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICBzdGF0aWMgU2Ny
b2xsU25hcFR5cGUgaW5pdGlhbFNjcm9sbFNuYXBUeXBlKCk7CiAgICAgc3RhdGljIFNjcm9sbFNu
YXBBbGlnbiBpbml0aWFsU2Nyb2xsU25hcEFsaWduKCk7CiAgICAgc3RhdGljIFNjcm9sbFNuYXBT
dG9wIGluaXRpYWxTY3JvbGxTbmFwU3RvcCgpOwotI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NTX1RS
QUlMSU5HX1dPUkQpCiAgICAgc3RhdGljIFRyYWlsaW5nV29yZCBpbml0aWFsVHJhaWxpbmdXb3Jk
KCkgeyByZXR1cm4gVHJhaWxpbmdXb3JkOjpBdXRvOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmNwcAppbmRleCBkZWM2
MzNhNTIxMGM0YTIwMWVmMzQxMWYwNzIyYWYzM2YyY2I4Mzc4Li4wNWU2Nzc4NGM5YzljYWNmYmRi
YjIyNWNmNzVhZTg3YzZiODM5NTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5jcHAKQEAgLTk0NSw3ICs5NDUsNiBA
QCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBSdWJ5UG9zaXRpb24gcG9z
aXRpb24pCiAgICAgcmV0dXJuIHRzOwogfQogCi0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkK
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIFNjcm9sbFNuYXBBeGlzIGF4
aXMpCiB7CiAgICAgc3dpdGNoIChheGlzKSB7CkBAIC05ODcsNyArOTg2LDYgQEAgVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgU2Nyb2xsU25hcFN0b3Agc3RvcCkKICAgICB9
CiAgICAgcmV0dXJuIHRzOwogfQotI2VuZGlmCiAKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgdHMsIFNwZWFrQXMgc3BlYWtBcykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKaW5kZXggMzM2NDYyZjcw
ZDY5ODc3YWU3ZDEwNTAzYzc4ODYxNjIzZTdiMDRjYS4uZDk0ZDRhNWQ2YWU5MGUxYmY1MDY4NGEw
YjFhMGZmZGVhYmI1NjFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKQEAgLTExMzUsNyArMTEzNSw2IEBAIGVudW0g
Y2xhc3MgQ1NTQm94VHlwZSA6IHVpbnQ4X3QgewogICAgIFZpZXdCb3gKIH07CiAKLSNpZiBFTkFC
TEUoQ1NTX1NDUk9MTF9TTkFQKQogZW51bSBjbGFzcyBTY3JvbGxTbmFwU3RyaWN0bmVzcyA6IHVp
bnQ4X3QgewogICAgIE5vbmUsCiAgICAgUHJveGltaXR5LApAQCAtMTE2MSw3ICsxMTYwLDYgQEAg
ZW51bSBjbGFzcyBTY3JvbGxTbmFwU3RvcCA6IHVpbnQ4X3QgewogICAgIE5vcm1hbCwKICAgICBB
bHdheXMsCiB9OwotI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NTX1RSQUlMSU5HX1dPUkQpCiBlbnVt
IGNsYXNzIFRyYWlsaW5nV29yZCA6IHVpbnQ4X3QgewpAQCAtMTMyMywxMiArMTMyMSwxMCBAQCBX
VEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgUXVvdGVUeXBlKTsK
IFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBSZWZsZWN0aW9u
RGlyZWN0aW9uKTsKIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0m
LCBSZXNpemUpOwogV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYs
IFJ1YnlQb3NpdGlvbik7Ci0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKIFdURjo6VGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBTY3JvbGxTbmFwQXhpcyk7CiBXVEY6
OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgU2Nyb2xsU25hcEF4aXNB
bGlnblR5cGUpOwogV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYs
IFNjcm9sbFNuYXBTdG9wKTsKIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRT
dHJlYW0mLCBTY3JvbGxTbmFwU3RyaWN0bmVzcyk7Ci0jZW5kaWYKIFdURjo6VGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBTcGVha0FzKTsKIFdURjo6VGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBTdHlsZURpZmZlcmVuY2UpOwogV1RGOjpUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIFRhYmxlTGF5b3V0VHlwZSk7CkBA
IC0xMzU5LDcgKzEzNTUsNiBAQCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0
U3RyZWFtJiwgTWF0aFN0eWxlKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jaWYgRU5B
QkxFKENTU19TQ1JPTExfU05BUCkKIG5hbWVzcGFjZSBXVEYgewogdGVtcGxhdGU8PiBzdHJ1Y3Qg
RW51bVRyYWl0czxXZWJDb3JlOjpTY3JvbGxTbmFwU3RvcD4gewogICAgIHVzaW5nIHZhbHVlcyA9
IEVudW1WYWx1ZXM8CkBAIC0xMzY5LDQgKzEzNjQsMyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVt
VHJhaXRzPFdlYkNvcmU6OlNjcm9sbFNuYXBTdG9wPiB7CiAgICAgPjsKIH07CiB9Ci0jZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25J
bmhlcml0ZWREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJh
cmVOb25Jbmhlcml0ZWREYXRhLmNwcAppbmRleCA4OWQxMDJlMmNmOTlhNTk5MGE3NGNlNjllMzI1
ZDQ5ZDZmMGZjMmIwLi5lYjgxMTdkYWQxNzUxYTZmYzZhNzY4NjEyZDYzOGYyNWI2N2ZiNmE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5o
ZXJpdGVkRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
UmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCkBAIC0xNDAsMTEgKzE0MCw5IEBAIGlubGluZSBTdHls
ZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKGNvbnN0IFN0
eWxlUmFyZU5vbkluCiAgICAgLCBncmlkSXRlbShvLmdyaWRJdGVtKQogICAgICwgc2Nyb2xsTWFy
Z2luKG8uc2Nyb2xsTWFyZ2luKQogICAgICwgc2Nyb2xsUGFkZGluZyhvLnNjcm9sbFBhZGRpbmcp
Ci0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICAsIHNjcm9sbFNuYXBUeXBlKG8uc2Ny
b2xsU25hcFR5cGUpCiAgICAgLCBzY3JvbGxTbmFwQWxpZ24oby5zY3JvbGxTbmFwQWxpZ24pCiAg
ICAgLCBzY3JvbGxTbmFwU3RvcChvLnNjcm9sbFNuYXBTdG9wKQotI2VuZGlmCiAgICAgLCBvdmVy
c2Nyb2xsQmVoYXZpb3JYKG8ub3ZlcnNjcm9sbEJlaGF2aW9yWCkKICAgICAsIG92ZXJzY3JvbGxC
ZWhhdmlvclkoby5vdmVyc2Nyb2xsQmVoYXZpb3JZKQogICAgICwgY29udGVudChvLmNvbnRlbnQg
PyBvLmNvbnRlbnQtPmNsb25lKCkgOiBudWxscHRyKQpAQCAtMjQ4LDExICsyNDYsOSBAQCBib29s
IFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVSYXJlTm9u
SW5oZXJpdGVkRGF0YSYgbykgYwogICAgICAgICAmJiBncmlkSXRlbSA9PSBvLmdyaWRJdGVtCiAg
ICAgICAgICYmIHNjcm9sbE1hcmdpbiA9PSBvLnNjcm9sbE1hcmdpbgogICAgICAgICAmJiBzY3Jv
bGxQYWRkaW5nID09IG8uc2Nyb2xsUGFkZGluZwotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVAp
CiAgICAgICAgICYmIHNjcm9sbFNuYXBUeXBlID09IG8uc2Nyb2xsU25hcFR5cGUKICAgICAgICAg
JiYgc2Nyb2xsU25hcEFsaWduID09IG8uc2Nyb2xsU25hcEFsaWduCiAgICAgICAgICYmIHNjcm9s
bFNuYXBTdG9wID09IG8uc2Nyb2xsU25hcFN0b3AKLSNlbmRpZgogICAgICAgICAmJiBvdmVyc2Ny
b2xsQmVoYXZpb3JYID09IG8ub3ZlcnNjcm9sbEJlaGF2aW9yWAogICAgICAgICAmJiBvdmVyc2Ny
b2xsQmVoYXZpb3JZID09IG8ub3ZlcnNjcm9sbEJlaGF2aW9yWQogICAgICAgICAmJiBjb250ZW50
RGF0YUVxdWl2YWxlbnQobykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCmluZGV4IDc3YmFiOTUwODM3Yzc0
OThiMTExYmY5NjhkYTI0YWY4YWJiZTFiMWEuLjcxMmNkZjQ3ODZjODUzOGRjMGJmNmQ1ZTAwMWYy
M2Y3ODAzNmRlNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaApAQCAtMzYsNiArMzYsNyBAQAogI2lu
Y2x1ZGUgIlNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiU2hhcGVWYWx1ZS5o
IgogI2luY2x1ZGUgIlN0eWxlQ29udGVudEFsaWdubWVudERhdGEuaCIKKyNpbmNsdWRlICJTdHls
ZVNjcm9sbFNuYXBQb2ludHMuaCIKICNpbmNsdWRlICJTdHlsZVNlbGZBbGlnbm1lbnREYXRhLmgi
CiAjaW5jbHVkZSAiVG91Y2hBY3Rpb24uaCIKICNpbmNsdWRlICJUcmFuc2xhdGVUcmFuc2Zvcm1P
cGVyYXRpb24uaCIKQEAgLTQ1LDEwICs0Niw2IEBACiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVAp
Ci0jaW5jbHVkZSAiU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmgiCi0jZW5kaWYKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBBbmltYXRpb25MaXN0OwpAQCAtMTM1LDExICsxMzIsOSBAQCBw
dWJsaWM6CiAKICAgICBMZW5ndGhCb3ggc2Nyb2xsTWFyZ2luIHsgMCwgMCwgMCwgMCB9OwogICAg
IExlbmd0aEJveCBzY3JvbGxQYWRkaW5nIHsgTGVuZ3RoKExlbmd0aFR5cGU6OkF1dG8pLCBMZW5n
dGgoTGVuZ3RoVHlwZTo6QXV0byksIExlbmd0aChMZW5ndGhUeXBlOjpBdXRvKSwgTGVuZ3RoKExl
bmd0aFR5cGU6OkF1dG8pIH07Ci0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICBTY3Jv
bGxTbmFwVHlwZSBzY3JvbGxTbmFwVHlwZTsKICAgICBTY3JvbGxTbmFwQWxpZ24gc2Nyb2xsU25h
cEFsaWduOwogICAgIFNjcm9sbFNuYXBTdG9wIHNjcm9sbFNuYXBTdG9wIHsgU2Nyb2xsU25hcFN0
b3A6Ok5vcm1hbCB9OwotI2VuZGlmCiAKICAgICB1bnNpZ25lZCBvdmVyc2Nyb2xsQmVoYXZpb3JY
IDogMjsgLy8gT3ZlcnNjcm9sbEJlaGF2aW9yCiAgICAgdW5zaWduZWQgb3ZlcnNjcm9sbEJlaGF2
aW9yWSA6IDI7IC8vIE92ZXJzY3JvbGxCZWhhdmlvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xsU25hcFBvaW50cy5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xsU25hcFBvaW50cy5oCmluZGV4IGEzNzE0MDUx
Zjg0MDU0ZWU4ZGM4ZmI2ZGZjM2E0NWJhYzQ0Y2M2NjcuLmEyYzdiMGRiM2Q2ZTVmZWQ2NTM2YTU2
MzliNDU3OTJlNDc4MDExNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZVNjcm9sbFNuYXBQb2ludHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmgKQEAgLTI1LDggKzI1LDYgQEAKIAogI3By
YWdtYSBvbmNlCiAKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotCiAjaW5jbHVkZSAiTGVu
Z3RoQm94LmgiCiAjaW5jbHVkZSAiTGVuZ3RoU2l6ZS5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxl
Q29uc3RhbnRzLmgiCkBAIC02MCw1ICs1OCwzIEBAIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29u
c3QgU2Nyb2xsU25hcEFsaWduJiBhLCBjb25zdCBTY3JvbGxTbmFwQWxpZ24mIGIpCiBpbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFNjcm9sbFNuYXBBbGlnbiYgYSwgY29uc3QgU2Nyb2xsU25h
cEFsaWduJiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKENTU19TQ1JPTExfU05BUCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKaW5kZXggODk4ZGZkZWVhYzQzNWVjMTA1ZmJi
MDIyNzMzNTViNzIzMDUxNjc4NC4uNDA0ZmZhYzA4OGI1YWRlMTRjMDI0NmM0NTQxYTk3ZjI5N2Ew
YTZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ29udmVy
dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgK
QEAgLTEwOSwxMSArMTA5LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBPcHRpb25TZXQ8TGluZUJv
eENvbnRhaW4+IGNvbnZlcnRMaW5lQm94Q29udGFpbihCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NW
YWx1ZSYpOwogICAgIHN0YXRpYyBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25Ta2lwPiBjb252ZXJ0
VGV4dERlY29yYXRpb25Ta2lwKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CiAgICAg
c3RhdGljIFJlZlB0cjxTaGFwZVZhbHVlPiBjb252ZXJ0U2hhcGVWYWx1ZShCdWlsZGVyU3RhdGUm
LCBDU1NWYWx1ZSYpOwotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgc3RhdGljIFNj
cm9sbFNuYXBUeXBlIGNvbnZlcnRTY3JvbGxTbmFwVHlwZShCdWlsZGVyU3RhdGUmLCBjb25zdCBD
U1NWYWx1ZSYpOwogICAgIHN0YXRpYyBTY3JvbGxTbmFwQWxpZ24gY29udmVydFNjcm9sbFNuYXBB
bGlnbihCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBTY3JvbGxT
bmFwU3RvcCBjb252ZXJ0U2Nyb2xsU25hcFN0b3AoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFs
dWUmKTsKLSNlbmRpZgogICAgIHN0YXRpYyBHcmlkVHJhY2tTaXplIGNvbnZlcnRHcmlkVHJhY2tT
aXplKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CiAgICAgc3RhdGljIFZlY3RvcjxH
cmlkVHJhY2tTaXplPiBjb252ZXJ0R3JpZFRyYWNrU2l6ZUxpc3QoQnVpbGRlclN0YXRlJiwgY29u
c3QgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxHcmlkUG9zaXRpb24+IGNv
bnZlcnRHcmlkUG9zaXRpb24oQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKQEAgLTE3
NSw5ICsxNzMsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBMZW5ndGggY29udmVydFRvUmFkaXVz
TGVuZ3RoKENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmLCBjb25zdCBDU1NQcmltaXRpdmVWYWx1
ZSYpOwogICAgIHN0YXRpYyBPcHRpb25TZXQ8VGV4dEVtcGhhc2lzUG9zaXRpb24+IHZhbHVlVG9F
bXBoYXNpc1Bvc2l0aW9uKGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJik7CiAgICAgc3RhdGljIE9w
dGlvblNldDxUZXh0RGVjb3JhdGlvblNraXA+IHZhbHVlVG9EZWNvcmF0aW9uU2tpcChjb25zdCBD
U1NQcmltaXRpdmVWYWx1ZSYpOwotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgc3Rh
dGljIExlbmd0aCBwYXJzZVNuYXBDb29yZGluYXRlKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1Zh
bHVlJik7Ci0jZW5kaWYKIAogI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQogICAgIHN0YXRpYyB2
b2lkIHVwZGF0ZUNvbG9yU2NoZW1lKGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiwgU3R5bGVDb2xv
clNjaGVtZSYpOwpAQCAtODk4LDggKzg5NCw2IEBAIGlubGluZSBSZWZQdHI8U2hhcGVWYWx1ZT4g
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNoYXBlVmFsdWUoQnVpbGRlclN0YXRlJiBidWlsCiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotCiBp
bmxpbmUgU2Nyb2xsU25hcFR5cGUgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNjcm9sbFNuYXBU
eXBlKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBTY3JvbGxT
bmFwVHlwZSB0eXBlOwpAQCAtOTM1LDggKzkyOSw2IEBAIGlubGluZSBTY3JvbGxTbmFwU3RvcCBC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U2Nyb2xsU25hcFN0b3AoQnVpbGRlclN0YXRlJiwgY29u
CiAgICAgcmV0dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiB9CiAKLSNl
bmRpZgotCiBpbmxpbmUgR3JpZExlbmd0aCBCdWlsZGVyQ29udmVydGVyOjpjcmVhdGVHcmlkVHJh
Y2tCcmVhZHRoKGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiBwcmltaXRpdmVWYWx1ZSwgQnVpbGRl
clN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQo
KSA9PSBDU1NWYWx1ZU1pbkNvbnRlbnQgfHwgcHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENT
U1ZhbHVlV2Via2l0TWluQ29udGVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApp
bmRleCAwMTUzYTZlNGYzYzFkZjc1NTYyYzYzYzhmN2I2MDZhYmEyYjYzMDk5Li43YmQzZDZiZDc5
NDFlMTBiMWYyNzU4ZDM4M2E2NTE3ZGUxZTdmZGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCkBAIC00NzEyLDggKzQ3MTIsNiBAQCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
JiBJbnRlcm5hbHM6Om1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MoKQogCiAjZW5kaWYKIAotI2lm
IEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0KIHN0YXRpYyB2b2lkIGFwcGVuZE9mZnNldHMoU3Ry
aW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgVmVjdG9yPFNuYXBPZmZzZXQ8TGF5b3V0VW5pdD4+
JiBzbmFwT2Zmc2V0cykKIHsKICAgICBib29sIGp1c3RTdGFydGluZyA9IHRydWU7CkBAIC00Nzc2
LDcgKzQ3NzQsNiBAQCBFeGNlcHRpb25Pcjxib29sPiBJbnRlcm5hbHM6OmlzU2Nyb2xsU25hcElu
UHJvZ3Jlc3MoRWxlbWVudCYgZWxlbWVudCkKIAogICAgIHJldHVybiBzY3JvbGxhYmxlQXJlYS0+
aXNTY3JvbGxTbmFwSW5Qcm9ncmVzcygpOwogfQotI2VuZGlmCiAKIGJvb2wgSW50ZXJuYWxzOjp0
ZXN0UHJlbG9hZGVyU2V0dGluZ1ZpZXdwb3J0KCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5oCmluZGV4IDkyMmNiMDAxNGVjNmM1NzVhODliNDRkY2RhNDkzMDEwNmM1MzVkZmEuLjYyOWNj
ZGMzMzAwYWFiZjcxYTk4MjY1NWZmYzg1MDZkMjZiNGZmYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaApAQCAtNzQyLDExICs3NDIsOSBAQCBwdWJsaWM6CiAgICAgTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5ncyYgbW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncygpOwogI2VuZGlmCiAKLSNp
ZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIEV4Y2VwdGlvbk9yPFN0cmluZz4gc2Nyb2xs
U25hcE9mZnNldHMoRWxlbWVudCYpOwogICAgIEV4Y2VwdGlvbk9yPGJvb2w+IGlzU2Nyb2xsU25h
cEluUHJvZ3Jlc3MoRWxlbWVudCYpOwogICAgIHZvaWQgc2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9s
bGluZ1ByZWRpY3Rpb25FbmFibGVkKGJvb2wpOwotI2VuZGlmCiAKICAgICBFeGNlcHRpb25PcjxT
dHJpbmc+IHBhdGhTdHJpbmdXaXRoU2hyaW5rV3JhcHBlZFJlY3RzKGNvbnN0IFZlY3Rvcjxkb3Vi
bGU+JiByZWN0Q29tcG9uZW50cywgZG91YmxlIHJhZGl1cyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmlkbAppbmRleCA5OTMzZTgxMDgyZjQzNzlkZjUxM2Y1MzE0OTgxYjFhNmJmZjU4
ZmEzLi5jZGI5Nzk5MzAzMTE4MzU4YTdmNzYwY2VkY2IwMjViMjA3YTRiZGY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC03NzgsOSArNzc4LDkgQEAgZW51bSBUcmVlVHlw
ZSB7CiAKICAgICBbQ29uZGl0aW9uYWw9Q09OVEVOVF9GSUxURVJJTkddIHJlYWRvbmx5IGF0dHJp
YnV0ZSBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzIG1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M7
CiAKLSAgICBbQ29uZGl0aW9uYWw9Q1NTX1NDUk9MTF9TTkFQXSBET01TdHJpbmcgc2Nyb2xsU25h
cE9mZnNldHMoRWxlbWVudCBlbGVtZW50KTsKLSAgICBbQ29uZGl0aW9uYWw9Q1NTX1NDUk9MTF9T
TkFQXSBib29sZWFuIGlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoRWxlbWVudCBlbGVtZW50KTsKLSAg
ICBbQ29uZGl0aW9uYWw9Q1NTX1NDUk9MTF9TTkFQXSB1bmRlZmluZWQgc2V0UGxhdGZvcm1Nb21l
bnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7CisgICAgRE9N
U3RyaW5nIHNjcm9sbFNuYXBPZmZzZXRzKEVsZW1lbnQgZWxlbWVudCk7CisgICAgYm9vbGVhbiBp
c1Njcm9sbFNuYXBJblByb2dyZXNzKEVsZW1lbnQgZWxlbWVudCk7CisgICAgdW5kZWZpbmVkIHNl
dFBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZChib29sZWFuIGVuYWJs
ZWQpOwogCiAgICAgRE9NU3RyaW5nIHBhdGhTdHJpbmdXaXRoU2hyaW5rV3JhcHBlZFJlY3RzKHNl
cXVlbmNlPGRvdWJsZT4gcmVjdENvbXBvbmVudHMsIGRvdWJsZSByYWRpdXMpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5n
Q29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKaW5kZXgg
Nzc4NDgyNzk1MGMwYWE0MzEzYjY4MjZlNGI1YWVlMjMyMTFiOTExNS4uOTFlNGQ4OWEyYzIxZmFk
Y2YwZjk2MDgzZTc2ZTgzMzQzZGY3NTk0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcApAQCAtMjEyLDExICsyMTIsOSBAQCB2b2lk
IEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlPjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0CiAgICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0
YXRlTm9kZTo6UHJvcGVydHk6OlJlYWNoYWJsZUNvbnRlbnRzU2l6ZSwgcmVhY2hhYmxlQ29udGVu
dHNTaXplKQogICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlBy
b3BlcnR5OjpTY3JvbGxQb3NpdGlvbiwgc2Nyb2xsUG9zaXRpb24pCiAgICAgU0NST0xMSU5HX05P
REVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9sbE9yaWdpbiwgc2Ny
b2xsT3JpZ2luKQotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgU0NST0xMSU5HX05P
REVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNuYXBPZmZzZXRzSW5mbywg
c25hcE9mZnNldHNJbmZvKQogICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0
ZU5vZGU6OlByb3BlcnR5OjpDdXJyZW50SG9yaXpvbnRhbFNuYXBPZmZzZXRJbmRleCwgY3VycmVu
dEhvcml6b250YWxTbmFwUG9pbnRJbmRleCkKICAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Ny
b2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Q3VycmVudFZlcnRpY2FsU25hcE9mZnNldEluZGV4
LCBjdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCkKLSNlbmRpZgogICAgIFNDUk9MTElOR19O
T0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTY3JvbGxhYmxlQXJlYVBh
cmFtcywgc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzKQogICAgIC8vIFVJLXNpZGUgY29tcG9zaXRp
bmcgY2FuJ3QgZG8gc3luY2hyb25vdXMgc2Nyb2xsaW5nIHNvIGRvbid0IGVuY29kZSBzeW5jaHJv
bm91c1Njcm9sbGluZ1JlYXNvbnMuCiAgICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGlu
Z1N0YXRlTm9kZTo6UHJvcGVydHk6OlJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uLCByZXF1ZXN0ZWRT
Y3JvbGxEYXRhKQpAQCAtMzA5LDExICszMDcsOSBAQCBib29sIEFyZ3VtZW50Q29kZXI8U2Nyb2xs
aW5nU3RhdGVTY3JvbGxpbmdOb2RlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFNjcm9sbAog
ICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpS
ZWFjaGFibGVDb250ZW50c1NpemUsIEZsb2F0U2l6ZSwgc2V0UmVhY2hhYmxlQ29udGVudHNTaXpl
KTsKICAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0
eTo6U2Nyb2xsUG9zaXRpb24sIEZsb2F0UG9pbnQsIHNldFNjcm9sbFBvc2l0aW9uKTsKICAgICBT
Q1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6U2Nyb2xs
T3JpZ2luLCBJbnRQb2ludCwgc2V0U2Nyb2xsT3JpZ2luKTsKLSNpZiBFTkFCTEUoQ1NTX1NDUk9M
TF9TTkFQKQogICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlBy
b3BlcnR5OjpTbmFwT2Zmc2V0c0luZm8sIEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvLCBzZXRT
bmFwT2Zmc2V0c0luZm8pOwogICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0
ZU5vZGU6OlByb3BlcnR5OjpDdXJyZW50SG9yaXpvbnRhbFNuYXBPZmZzZXRJbmRleCwgc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4sIHNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgpOwog
ICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpD
dXJyZW50VmVydGljYWxTbmFwT2Zmc2V0SW5kZXgsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+LCBz
ZXRDdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCk7Ci0jZW5kaWYKICAgICBTQ1JPTExJTkdf
Tk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6U2Nyb2xsYWJsZUFyZWFQ
YXJhbXMsIFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycywgc2V0U2Nyb2xsYWJsZUFyZWFQYXJhbWV0
ZXJzKTsKICAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9w
ZXJ0eTo6UmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24sIFJlcXVlc3RlZFNjcm9sbERhdGEsIHNldFJl
cXVlc3RlZFNjcm9sbERhdGEpOwogCkBAIC03MzYsMTQgKzczMiwxMiBAQCBzdGF0aWMgdm9pZCBk
dW1wKFRleHRTdHJlYW0mIHRzLCBjb25zdCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUmIG5v
ZGUsIGJvb2wgYwogICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hh
bmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9sbGVkQ29udGVu
dHNMYXllcikpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2Nyb2xsZWQtY29udGVudHMtbGF5
ZXIiLCBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+KG5vZGUuc2Ny
b2xsZWRDb250ZW50c0xheWVyKCkpKTsKIAotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAg
ICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHko
U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6U25hcE9mZnNldHNJbmZvKSkgewogICAgICAg
ICB0cy5kdW1wUHJvcGVydHkoImhvcml6b250YWwgc25hcCBvZmZzZXRzIiwgbm9kZS5zbmFwT2Zm
c2V0c0luZm8oKS5ob3Jpem9udGFsU25hcE9mZnNldHMpOwogICAgICAgICB0cy5kdW1wUHJvcGVy
dHkoInZlcnRpY2FsIHNuYXAgb2Zmc2V0cyIsIG5vZGUuc25hcE9mZnNldHNJbmZvKCkudmVydGlj
YWxTbmFwT2Zmc2V0cyk7CiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiY3VycmVudCBob3Jpem9u
dGFsIHNuYXAgcG9pbnQgaW5kZXgiLCBub2RlLmN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5k
ZXgoKSk7CiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiY3VycmVudCB2ZXJ0aWNhbCBzbmFwIHBv
aW50IGluZGV4Iiwgbm9kZS5jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCgpKTsKICAgICB9
Ci0jZW5kaWYKIH0KIAogc3RhdGljIHZvaWQgZHVtcChUZXh0U3RyZWFtJiB0cywgY29uc3QgU2Ny
b2xsaW5nU3RhdGVGcmFtZUhvc3RpbmdOb2RlJiBub2RlLCBib29sIGNoYW5nZWRQcm9wZXJ0aWVz
T25seSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJW
aWV3SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1Mu
bW0KaW5kZXggYjhkZjEzNzU5MWJlYzU1YmU4MTRiYTY1YzliYjIyZmYyZTBiMDNkYS4uOGZjYWFk
MzRjZDNlNjBmNTBmODI2ZTAzY2E1ZjUzNjM5NGE3MWE2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KQEAgLTE1NDAsNyArMTU0MCw4IEBA
IC0gKHZvaWQpc2Nyb2xsVmlld1dpbGxCZWdpbkRyYWdnaW5nOihVSVNjcm9sbFZpZXcgKilzY3Jv
bGxWaWV3CiAgICAgICAgIFtfY29udGVudFZpZXcgc2Nyb2xsVmlld1dpbGxTdGFydFBhbk9yUGlu
Y2hHZXN0dXJlXTsKIAogICAgIFtfY29udGVudFZpZXcgd2lsbFN0YXJ0Wm9vbU9yU2Nyb2xsXTsK
LSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKSAmJiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQor
CisjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKICAgICAvLyBGSVhNRTogV2Ugd2lsbCB3YW50
IHRvIGRldGVjdCB3aGV0aGVyIHNuYXBwaW5nIHdpbGwgb2NjdXIgYmVmb3JlIGJlZ2lubmluZyB0
byBkcmFnLiBTZWUgV2ViUGFnZVByb3h5OjpkaWRDb21taXRMYXllclRyZWUuCiAgICAgV2ViS2l0
OjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5KiBjb29yZGluYXRvciA9IF9wYWdlLT5z
Y3JvbGxpbmdDb29yZGluYXRvclByb3h5KCk7CiAgICAgQVNTRVJUKHNjcm9sbFZpZXcgPT0gX3Nj
cm9sbFZpZXcuZ2V0KCkpOwpAQCAtMTU3MSw3ICsxNTcyLDcgQEAgLSAodm9pZClzY3JvbGxWaWV3
V2lsbEVuZERyYWdnaW5nOihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3IHdpdGhWZWxvY2l0eToo
Q0dQb2kKICAgICAgICAgaWYgKFtfY29udGVudFZpZXcgcHJldmVudHNQYW5uaW5nSW5ZQXhpc10p
CiAgICAgICAgICAgICB0YXJnZXRDb250ZW50T2Zmc2V0LT55ID0gc2Nyb2xsVmlldy5jb250ZW50
T2Zmc2V0Lnk7CiAgICAgfQotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApICYmIEVOQUJMRShB
U1lOQ19TQ1JPTExJTkcpCisjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKICAgICBpZiAoV2Vi
S2l0OjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5KiBjb29yZGluYXRvciA9IF9wYWdl
LT5zY3JvbGxpbmdDb29yZGluYXRvclByb3h5KCkpIHsKICAgICAgICAgLy8gRklYTUU6IEhlcmUs
IEknbSBmaW5kaW5nIHRoZSBtYXhpbXVtIGhvcml6b250YWwvdmVydGljYWwgc2Nyb2xsIG9mZnNl
dHMuIFRoZXJlJ3MgcHJvYmFibHkgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMuCiAgICAgICAgIENH
U2l6ZSBtYXhTY3JvbGxPZmZzZXRzID0gQ0dTaXplTWFrZShzY3JvbGxWaWV3LmNvbnRlbnRTaXpl
LndpZHRoIC0gc2Nyb2xsVmlldy5ib3VuZHMuc2l6ZS53aWR0aCwgc2Nyb2xsVmlldy5jb250ZW50
U2l6ZS5oZWlnaHQgLSBzY3JvbGxWaWV3LmJvdW5kcy5zaXplLmhlaWdodCk7CkBAIC0yMTIwLDcg
KzIxMjEsNyBAQCAtICh2b2lkKV91cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzCiAKICAgICBhdXRv
IGNvbnRlbnRJbnNldHMgPSBbc2VsZiBjdXJyZW50bHlWaXNpYmxlQ29udGVudEluc2V0c1dpdGhT
Y2FsZTpzY2FsZUZhY3RvciBvYnNjdXJlZEluc2V0czpjb21wdXRlZENvbnRlbnRJbnNldFVuYWRq
dXN0ZWRGb3JLZXlib2FyZF07CiAKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKSAmJiBFTkFC
TEUoQVNZTkNfU0NST0xMSU5HKQorI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCiAgICAgaWYg
KHZpZXdTdGFiaWxpdHkuaXNFbXB0eSgpKSB7CiAgICAgICAgIFdlYktpdDo6UmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3JQcm94eSogY29vcmRpbmF0b3IgPSBfcGFnZS0+c2Nyb2xsaW5nQ29vcmRp
bmF0b3JQcm94eSgpOwogICAgICAgICBpZiAoY29vcmRpbmF0b3IgJiYgY29vcmRpbmF0b3ItPmhh
c0FjdGl2ZVNuYXBQb2ludCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29v
cmRpbmF0b3JQcm94eS5jcHAKaW5kZXggNGNhYjE5MDdhNGZjZWU2YzA1ODc0OGRjZjRhZWZjZTNi
YTRkNzQzMS4uOWJiMDUxODhlZGEzYzQxZjc3ZTlkYThkN2Q0NjAxOWY0NmI1OTRhZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmNwcApAQCAtMzAy
LDEwICszMDIsOCBAQCB2b2lkIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OnNlbmRV
SVN0YXRlQ2hhbmdlZElmTmVjZXNzYXJ5KCkKIAogdm9pZCBSZW1vdGVTY3JvbGxpbmdDb29yZGlu
YXRvclByb3h5OjpyZXNldFN0YXRlQWZ0ZXJQcm9jZXNzRXhpdGVkKCkKIHsKLSNpZiBFTkFCTEUo
Q1NTX1NDUk9MTF9TTkFQKQogICAgIG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCA9
IDA7CiAgICAgbV9jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCA9IDA7Ci0jZW5kaWYKICAg
ICBtX3VpU3RhdGUucmVzZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdD
b29yZGluYXRvclByb3h5LmgKaW5kZXggMWQ3YmMzZDY1ZTY3ZDdiMGQzNzMyNDkyNDVmMTczMmIx
MGJlNzA5Mi4uMDBkMGQ0YWY4M2EzM2FlNzU5M2E3NDJkNDc3NmNjNzY2MGE3NTc1NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oCkBAIC05OSwxMiAr
OTksMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2Nyb2xsaW5nVHJlZU5vZGVXaWxsU3RhcnRQYW5H
ZXN0dXJlKFdlYkNvcmU6OlNjcm9sbGluZ05vZGVJRCk7CiAgICAgdm9pZCBzY3JvbGxpbmdUcmVl
Tm9kZVdpbGxTdGFydFNjcm9sbChXZWJDb3JlOjpTY3JvbGxpbmdOb2RlSUQpOwogICAgIHZvaWQg
c2Nyb2xsaW5nVHJlZU5vZGVEaWRFbmRTY3JvbGwoV2ViQ29yZTo6U2Nyb2xsaW5nTm9kZUlEKTsK
LSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIHZvaWQgYWRqdXN0VGFyZ2V0Q29udGVu
dE9mZnNldEZvclNuYXBwaW5nKENHU2l6ZSBtYXhTY3JvbGxEaW1lbnNpb25zLCBDR1BvaW50IHZl
bG9jaXR5LCBDR0Zsb2F0IHRvcEluc2V0LCBDR1BvaW50IGN1cnJlbnRDb250ZW50T2Zmc2V0LCBD
R1BvaW50KiB0YXJnZXRDb250ZW50T2Zmc2V0KTsKICAgICBib29sIGhhc0FjdGl2ZVNuYXBQb2lu
dCgpIGNvbnN0OwogICAgIENHUG9pbnQgbmVhcmVzdEFjdGl2ZUNvbnRlbnRJbnNldEFkanVzdGVk
U25hcE9mZnNldChDR0Zsb2F0IHRvcEluc2V0LCBjb25zdCBDR1BvaW50JikgY29uc3Q7CiAgICAg
Ym9vbCBzaG91bGRTZXRTY3JvbGxWaWV3RGVjZWxlcmF0aW9uUmF0ZUZhc3QoKSBjb25zdDsKLSNl
bmRpZgogI2VuZGlmCiAKICAgICBTdHJpbmcgc2Nyb2xsaW5nVHJlZUFzVGV4dCgpIGNvbnN0OwpA
QCAtMTE5LDEwICsxMTcsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgY29ubmVjdFN0YXRlTm9kZUxh
eWVycyhXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVRyZWUmLCBjb25zdCBSZW1vdGVMYXllclRyZWVI
b3N0Jik7CiAgICAgdm9pZCBlc3RhYmxpc2hMYXllclRyZWVTY3JvbGxpbmdSZWxhdGlvbnMoY29u
c3QgUmVtb3RlTGF5ZXJUcmVlSG9zdCYpOwogCi0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkK
ICAgICBib29sIHNob3VsZFNuYXBGb3JNYWluRnJhbWVTY3JvbGxpbmcoV2ViQ29yZTo6U2Nyb2xs
RXZlbnRBeGlzKSBjb25zdDsKICAgICBzdGQ6OnBhaXI8ZmxvYXQsIHN0ZDo6b3B0aW9uYWw8dW5z
aWduZWQ+PiBjbG9zZXN0U25hcE9mZnNldEZvck1haW5GcmFtZVNjcm9sbGluZyhXZWJDb3JlOjpT
Y3JvbGxFdmVudEF4aXMsIGZsb2F0IGN1cnJlbnRTY3JvbGxPZmZzZXQsIGZsb2F0IHNjcm9sbERl
c3RpbmF0aW9uLCBmbG9hdCB2ZWxvY2l0eSkgY29uc3Q7Ci0jZW5kaWYKIAogICAgIHZvaWQgc2Vu
ZFVJU3RhdGVDaGFuZ2VkSWZOZWNlc3NhcnkoKTsKIApAQCAtMTMxLDEwICsxMjcsOCBAQCBwcml2
YXRlOgogICAgIEhhc2hNYXA8dW5zaWduZWQsIE9wdGlvblNldDxXZWJDb3JlOjpUb3VjaEFjdGlv
bj4+IG1fdG91Y2hBY3Rpb25zQnlUb3VjaElkZW50aWZpZXI7CiAgICAgUmVxdWVzdGVkU2Nyb2xs
SW5mbyogbV9yZXF1ZXN0ZWRTY3JvbGxJbmZvIHsgbnVsbHB0ciB9OwogICAgIFJlbW90ZVNjcm9s
bGluZ1VJU3RhdGUgbV91aVN0YXRlOwotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAg
c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbV9jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4
OwogICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1fY3VycmVudFZlcnRpY2FsU25hcFBvaW50
SW5kZXg7Ci0jZW5kaWYKICAgICBib29sIG1fcHJvcGFnYXRlc01haW5GcmFtZVNjcm9sbHMgeyB0
cnVlIH07CiAgICAgSGFzaFNldDxXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVy
SUQ+IG1fbGF5ZXJzV2l0aFNjcm9sbGluZ1JlbGF0aW9uczsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0KaW5kZXggY2Yy
ZTI1ZGVmMzI3NDRkNDUyYzNiMmRjOTFiNTc1NDRhYTEwMTQ5ZC4uZmI2NGVlYzNhMTdkZTJjNjQ4
ZTgwNDhmNzRkMGUzYjY0NDQ1Yzk4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVt
b3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbQpAQCAtMzUsMjEgKzM1LDE4IEBACiAj
aW1wb3J0ICJTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmgiCiAjaW1wb3J0
ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgPFVJS2l0L1VJVmlldy5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsVHlw
ZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbFByb3h5Tm9k
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxpbmdTdGF0ZVBvc2l0aW9uZWROb2RlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1Njcm9sbGluZ1N0YXRlVHJlZS5oPgotCi0jaWYgRU5BQkxFKENTU19T
Q1JPTExfU05BUCkKLSNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL1Njcm9sbFR5cGVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbGlu
Z1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsaW5nVHJl
ZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsaW5nVHJl
ZVBvc2l0aW9uZWROb2RlLmg+CiAjaW1wb3J0IDx0dXBsZT4KLSNlbmRpZgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMTk1LDcgKzE5Miw2IEBAIHZv
aWQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6ZXN0YWJsaXNoTGF5ZXJUcmVlU2Ny
b2xsaW5nUmVsYXRpb25zKGNvbnN0CiAgICAgfQogfQogCi0jaWYgRU5BQkxFKENTU19TQ1JPTExf
U05BUCkKIHZvaWQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6YWRqdXN0VGFyZ2V0
Q29udGVudE9mZnNldEZvclNuYXBwaW5nKENHU2l6ZSBtYXhTY3JvbGxPZmZzZXRzLCBDR1BvaW50
IHZlbG9jaXR5LCBDR0Zsb2F0IHRvcEluc2V0LCBDR1BvaW50IGN1cnJlbnRDb250ZW50T2Zmc2V0
LCBDR1BvaW50KiB0YXJnZXRDb250ZW50T2Zmc2V0KQogewogICAgIC8vIFRoZSBib3VuZHMgY2hl
Y2tpbmcgd2l0aCBtYXhTY3JvbGxPZmZzZXRzIGlzIHRvIGVuc3VyZSB0aGF0IHdlIHdvbid0IGlu
dGVyZmVyZSB3aXRoIHJ1YmJlci1iYW5kaW5nIHdoZW4gc2Nyb2xsaW5nIHRvIHRoZSBlZGdlIG9m
IHRoZSBwYWdlLgpAQCAtMjkyLDggKzI4OCw2IEBAIENHUG9pbnQgUmVtb3RlU2Nyb2xsaW5nQ29v
cmRpbmF0b3JQcm94eTo6bmVhcmVzdEFjdGl2ZUNvbnRlbnRJbnNldEFkanVzdGVkU25hcE9mCiAg
ICAgcmV0dXJuIGFjdGl2ZVBvaW50OwogfQogCi0jZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlSU9TLm1tCmluZGV4IDI4NGZiNmFhZTQ3NWIzNGE2Yzc1MzFjYzQyMTk2
NGY0OWM1MzE1NGUuLjY3YzM4ODY1NWY2YmE4ZGRiNTkwYjdlMTg0MTA0MDFmMDBmMTljZDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVJT1MubW0KQEAgLTM3LDYgKzM3LDcgQEAKICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVh
cnR6Q29yZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlQYW5HZXN0dXJlUmVjb2duaXplci5oPgogI2lt
cG9ydCA8VUlLaXQvVUlTY3JvbGxWaWV3Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbFNuYXBP
ZmZzZXRzSW5mby5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxpbmdUcmVlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaD4KQEAgLTQ0LDEwICs0
NSw2IEBACiAjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8d3Rm
L1NldEZvclNjb3BlLmg+CiAKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotI2ltcG9ydCA8
V2ViQ29yZS9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaD4KLSNlbmRpZgotCiAKIEBpbXBsZW1lbnRh
dGlvbiBXS1Njcm9sbGluZ05vZGVTY3JvbGxWaWV3RGVsZWdhdGUKIApAQCAtOTksNyArOTYsNiBA
QCAtICh2b2lkKXNjcm9sbFZpZXdXaWxsRW5kRHJhZ2dpbmc6KFVJU2Nyb2xsVmlldyAqKXNjcm9s
bFZpZXcgd2l0aFZlbG9jaXR5OihDR1BvaQogICAgICAgICB9CiAgICAgfQogCi0jaWYgRU5BQkxF
KENTU19TQ1JPTExfU05BUCkKICAgICBDR0Zsb2F0IGhvcml6b250YWxUYXJnZXQgPSB0YXJnZXRD
b250ZW50T2Zmc2V0LT54OwogICAgIENHRmxvYXQgdmVydGljYWxUYXJnZXQgPSB0YXJnZXRDb250
ZW50T2Zmc2V0LT55OwogCkBAIC0xMjYsNyArMTIyLDYgQEAgLSAodm9pZClzY3JvbGxWaWV3V2ls
bEVuZERyYWdnaW5nOihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3IHdpdGhWZWxvY2l0eTooQ0dQ
b2kKICAgICAgICAgfHwgb3JpZ2luYWxWZXJ0aWNhbFNuYXBQb3NpdGlvbiAhPSBfc2Nyb2xsaW5n
VHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLmN1cnJlbnRWZXJ0aWNhbFNuYXBQb2lu
dEluZGV4KCkpIHsKICAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPmN1cnJlbnRT
bmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3Jv
bGxpbmdOb2RlKCkuY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCgpLCBfc2Nyb2xsaW5n
VHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLmN1cnJlbnRWZXJ0aWNhbFNuYXBQb2lu
dEluZGV4KCkpOwogICAgIH0KLSNlbmRpZgogfQogCiAtICh2b2lkKXNjcm9sbFZpZXdEaWRFbmRE
cmFnZ2luZzooVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldyB3aWxsRGVjZWxlcmF0ZTooQk9PTCl3
aWxsRGVjZWxlcmF0ZQpAQCAtMjc4LDE0ICsyNzMsMTIgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlSU9TOjpjb21taXRTdGF0ZUFmdGVyQ2hpbGRyZW4oY29uc3QgU2Ny
b2wKICAgICAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogICAgIH0KIAotI2lmIEVOQUJM
RShDU1NfU0NST0xMX1NOQVApCiAgICAgLy8gRklYTUU6IElmIG9ubHkgb25lIGF4aXMgc25hcHMg
aW4gMkQgc2Nyb2xsaW5nLCB0aGUgb3RoZXIgYXhpcyB3aWxsIGRlY2VsZXJhdGUgZmFzdCBhcyB3
ZWxsLiBJcyB0aGlzIHdoYXQgd2Ugd2FudD8KICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhh
c0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTbmFwT2Zmc2V0
c0luZm8pKSB7CiAgICAgICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogICAgICAgICBz
Y3JvbGxWaWV3KCkuZGVjZWxlcmF0aW9uUmF0ZSA9IHNjcm9sbGluZ05vZGUoKS5zbmFwT2Zmc2V0
c0luZm8oKS5ob3Jpem9udGFsU25hcE9mZnNldHMuc2l6ZSgpIHx8IHNjcm9sbGluZ05vZGUoKS5z
bmFwT2Zmc2V0c0luZm8oKS52ZXJ0aWNhbFNuYXBPZmZzZXRzLnNpemUoKSA/IFVJU2Nyb2xsVmll
d0RlY2VsZXJhdGlvblJhdGVGYXN0IDogVUlTY3JvbGxWaWV3RGVjZWxlcmF0aW9uUmF0ZU5vcm1h
bDsKICAgICAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogICAgIH0KLSNlbmRpZgogCiAg
ICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3Rh
dGVOb2RlOjpQcm9wZXJ0eTo6U2Nyb2xsYWJsZUFyZWFQYXJhbXMpKSB7CiAgICAgICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
U2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAppbmRleCBlOGVmYTQ0ZTA4ZTAyYTQ5OGZjNTAxNGE5NDg5
ZWQ2M2EwNjI5ZDdhLi4xM2ViZTJhMDA2Zjg4ZjNjZmFiZDFjNzFkMTBiNDkwY2Q2YWM5OTgxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3Iu
aApAQCAtNzAsOSArNzAsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBpc1J1YmJlckJhbmRJblBy
b2dyZXNzKFdlYkNvcmU6OlNjcm9sbGluZ05vZGVJRCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBp
c1VzZXJTY3JvbGxJblByb2dyZXNzKFdlYkNvcmU6OlNjcm9sbGluZ05vZGVJRCkgY29uc3QgZmlu
YWw7Ci0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICBib29sIGlzU2Nyb2xsU25hcElu
UHJvZ3Jlc3MoV2ViQ29yZTo6U2Nyb2xsaW5nTm9kZUlEKSBjb25zdCBmaW5hbDsKLSNlbmRpZgog
CiAgICAgdm9pZCBzZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IoV2ViQ29yZTo6U2Nyb2xsUGlubmlu
Z0JlaGF2aW9yKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL1dlYktpdEZl
YXR1cmVzLmNtYWtlIGIvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCmluZGV4IGQ1
ZmZiYjQ5ZGMyMGQ2N2ZmMGZkNjBlOTUxZWNhMTZlZjkzZWNiMTEuLmI5Mjk0YWQxMTZhYjFjYjY5
NWExOTlkN2FkOWIzNmYyOGE1OWIzMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9XZWJLaXRG
ZWF0dXJlcy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKQEAg
LTE1MCw3ICsxNTAsNiBAQCBtYWNybyhXRUJLSVRfT1BUSU9OX0JFR0lOKQogICAgIFdFQktJVF9P
UFRJT05fREVGSU5FKEVOQUJMRV9DU1NfREVWSUNFX0FEQVBUQVRJT04gIlRvZ2dsZSBDU1MgRGV2
aWNlIEFkYXB0YXRpb24gc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9E
RUZJTkUoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OICJUb2dnbGUgQ1NTIGltYWdlLXJlc29s
dXRpb24gc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5B
QkxFX0NTU19QQUlOVElOR19BUEkgIlRvZ2dsZSBDU1MgUGFpbnRpbmcgQVBJIHN1cHBvcnQiIFBS
SVZBVEUgT0ZGKQotICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9DU1NfU0NST0xMX1NO
QVAgIlRvZ2dsZSBDU1Mgc25hcCBzY3JvbGwgc3VwcG9ydCIgUFJJVkFURSBPTikKICAgICBXRUJL
SVRfT1BUSU9OX0RFRklORShFTkFCTEVfQ1NTX1NFTEVDVE9SU19MRVZFTDQgIlRvZ2dsZSBDU1Mg
U2VsZWN0b3JzIExldmVsIDQgc3VwcG9ydCIgUFJJVkFURSBPTikKICAgICBXRUJLSVRfT1BUSU9O
X0RFRklORShFTkFCTEVfQ1NTX1RSQUlMSU5HX1dPUkQgIlRvZ2dsZSBjc3MgdHJhaWxpbmcgd29y
ZCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0NTU19UWVBF
RF9PTSAiVG9nZ2xlIENTUyBUeXBlZCBPTSBzdXBwb3J0IiBQUklWQVRFIE9GRikKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmMTI3YTU3N2IyYmFk
YTYwY2QzN2UyNjI0MTU4ZTY0Zjc4MjYwYmRjLi5hNjgxN2IyZmFlYjBkY2Q1NzBkYjhjNmFmODli
ZjBiNWM2NTI1Y2NmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDYtMTYgIE1hcnRpbiBSb2JpbnNvbiAgPG1y
b2JpbnNvbkB3ZWJraXQub3JnPgorCisgICAgICAgIFtjc3Mtc2Nyb2xsLXNuYXBdIFJlbW92ZSBF
TkFCTEVfU0NST0xMX1NOQVAgY29tcGlsZS10aW1lIG9wdGlvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3MDY3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIFJlbW92ZSBjb21waWxlLXRpbWUgRU5BQkxFX1ND
Uk9MTF9TTkFQIGNvbmZpZ3VyYXRpb24gb3B0aW9uLgorCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRwZXJsL0ZlYXR1cmVMaXN0LnBtOiBSZW1vdmUgdGhlIG9wdGlvbiBmcm9tIHRoZSBsaXN0IG9m
IGZlYXR1cmVzLgorCiAyMDIxLTA2LTIzICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlh
LmNvbT4KIAogICAgICAgICBbV1BFXSBXZWJLaXRHTGliQVBJVGVzdHNDb3JlIHNob3VsZCBtb3Jl
IGV4cGxpY2l0bHkgbGluayBhZ2FpbnN0IGxpYnJhcnkgZGVwZW5kZW5jaWVzCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0gYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KaW5kZXggNzMzNzRjZTZlYTVjMWIzODdjMjEzZjQ5
NDljOTMzZWI3MDllMTljMS4uZjNkZTY4MmMyNTIxNmJmNGFlNzA0MDAxZTE1ZTFjM2Q5NDMxZGFl
OSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQpAQCAtMjYwLDkgKzI2
MCw2IEBAIG15IEBmZWF0dXJlcyA9ICgKICAgICB7IG9wdGlvbiA9PiAiY3NzLXBhaW50aW5nLWFw
aSIsIGRlc2MgPT4gIlRvZ2dsZSBDU1MgUGFpbnRpbmcgQVBJIHN1cHBvcnQiLAogICAgICAgZGVm
aW5lID0+ICJFTkFCTEVfQ1NTX1BBSU5USU5HX0FQSSIsIHZhbHVlID0+IFwkY3NzUGFpbnRpbmdB
UElTdXBwb3J0IH0sCiAKLSAgICB7IG9wdGlvbiA9PiAiY3NzLXNjcm9sbC1zbmFwIiwgZGVzYyA9
PiAiVG9nZ2xlIENTUyBzbmFwIHNjcm9sbCBzdXBwb3J0IiwKLSAgICAgIGRlZmluZSA9PiAiRU5B
QkxFX0NTU19TQ1JPTExfU05BUCIsIHZhbHVlID0+IFwkY3NzU2Nyb2xsU25hcFN1cHBvcnQgfSwK
LQogICAgIHsgb3B0aW9uID0+ICJjc3Mtc2VsZWN0b3JzLWxldmVsNCIsIGRlc2MgPT4gIlRvZ2ds
ZSBDU1MgU2VsZWN0b3JzIExldmVsIDQgc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJM
RV9DU1NfU0VMRUNUT1JTX0xFVkVMNCIsIHZhbHVlID0+IFwkY3NzU2VsZWN0b3JzTGV2ZWw0U3Vw
cG9ydCB9LAogCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggM2JiODU2
ZDJiYWUzMzBjNzU2MTg0ZGIwNGFmMTQ3MWY3ZmJmOTRhOC4uYzZhNTQ2Y2YyZWI3OGQ1NmQ5Nzk1
M2IzOWZkNWI3YTE2NzMwYjdhZSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTA2LTE2ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5z
b25Ad2Via2l0Lm9yZz4KKworICAgICAgICBbY3NzLXNjcm9sbC1zbmFwXSBSZW1vdmUgRU5BQkxF
X1NDUk9MTF9TTkFQIGNvbXBpbGUtdGltZSBvcHRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzA2NworCisgICAgICAgIFJldmlld2VkIGJ5IFNp
bW9uIEZyYXNlci4KKworICAgICAgICBSZW1vdmUgY29tcGlsZS10aW1lIEVOQUJMRV9TQ1JPTExf
U05BUCBjb25maWd1cmF0aW9uIG9wdGlvbi4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9XZWJL
aXRGZWF0dXJlcy5jbWFrZTogUmVtb3ZlIHRoZSBmbGFnIGZyb20gdGhlIENNYWtlIGNvbmZpZ3Vy
YXRpb24uCisKIDIwMjEtMDYtMjEgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29u
eS5jb20+CiAKICAgICAgICAgW1dpbkNhaXJvXSBUdXJuIEVOQUJMRV9TSEFSRUFCTEVfUkVTT1VS
Q0Ugb24K
</data>

          </attachment>
      

    </bug>

</bugzilla>