<?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>233500</bug_id>
          
          <creation_ts>2021-11-25 13:21:42 -0800</creation_ts>
          <short_desc>Remove the code under #if HAVE(ARM_NEON_INTRINSICS)</short_desc>
          <delta_ts>2022-02-10 16:18:48 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=235410</see_also>
          <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>231253</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>heycam</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1817842</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-25 13:21:42 -0800</bug_when>
    <thetext>The sources and headers under platform/graphics/cpu/arm/ do not compile anymore.

1. The file platform/graphics/cpu/arm/filters/FEBlendNEON.h won&apos;t compile because it references FilterEffect::pixelBufferResult() which does not exist anymore.
2. The file platform/graphics/cpu/arm/filters/FELightingNEON.cpp won&apos;t compile because it references FELighting:LightingData which does not exist anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817843</commentid>
    <comment_count>1</comment_count>
      <attachid>445153</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-25 13:28:51 -0800</bug_when>
    <thetext>Created attachment 445153
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817854</commentid>
    <comment_count>2</comment_count>
      <attachid>445158</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-25 15:11:27 -0800</bug_when>
    <thetext>Created attachment 445158
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817893</commentid>
    <comment_count>3</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-25 23:27:33 -0800</bug_when>
    <thetext>These header files were not referenced in the code:

platform/graphics/cpu/arm/filters/FECompositeArithmeticNEON.h
platform/graphics/cpu/arm/filters/FEGaussianBlurNEON.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819849</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-02 13:22:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/85986173&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833865</commentid>
    <comment_count>5</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-01-25 14:23:17 -0800</bug_when>
    <thetext>Bug 235410 is the opposite of this bug. It tries to get the code under  HAVE(ARM_NEON_INTRINSICS) be compiled. So close this one for now. My understanding is a new bot for armv7 might be added to WebKit build system soon.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445153</attachid>
            <date>2021-11-25 13:28:51 -0800</date>
            <delta_ts>2021-11-25 15:11:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233500-20211125132850.patch</filename>
            <type>text/plain</type>
            <size>97273</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGVhYjNiMjBkYTVmNDFhMjYwMTM4NDhj
OTViMmViNTZmMzFjZDE3ODEuLmI4ZDgwNTk0YTJhZTE5YzZkMWQzMjJkMWNhYjMyYWRlZGYwNmIw
ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMTEtMjUgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHRoZSBjb2RlIHVuZGVyICNpZiBIQVZF
KEFSTV9ORU9OX0lOVFJJTlNJQ1MpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzM1MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZW1vdmUgdGhlIG1hY3JvIEhBVkVfQVJNX05FT05fSU5UUklOU0lDUyBz
aW5jZSBpdCBpcyBkaXNhYmxlZCBmb3IKKyAgICAgICAgSU9TX0ZBTUlMWS4gQW5kIGl0IHNlZW1z
IG5vIG90aGVyIHBvcnQgZW5hYmxlcyBpdC4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUhhdmUu
aDoKKwogMjAyMS0xMS0xOSAgQW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBbTW9kZWxdIGFkZCBhdWRpbyBzdXBwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmE2OGJhM2Yz
YjU0MjA2YzZkMGM4M2Y2NDJjZDE0ZmU4NzdhMGIzZS4uMGQ5N2I2YmMyZDY1NjA1ZDAxODc2MTRi
NWMxOWI4ZTkxOWI3YWU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIxLTExLTI1
ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB0
aGUgY29kZSB1bmRlciAjaWYgSEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNTAwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGRlYWQgY29kZSB3aGlj
aCBkb2VzIG5vdCBjb21waWxlIGFueW1vcmUuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTaW5jUmVzYW1wbGVyOjpjb252b2x2ZSk6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vVmVjdG9yTWF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWZWN0b3JN
YXRoOjptdWx0aXBseUJ5U2NhbGFyVGhlbkFkZFRvT3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6
OlZlY3Rvck1hdGg6Om11bHRpcGx5QnlTY2FsYXIpOgorICAgICAgICAoV2ViQ29yZTo6VmVjdG9y
TWF0aDo6YWRkU2NhbGFyKToKKyAgICAgICAgKFdlYkNvcmU6OlZlY3Rvck1hdGg6OmFkZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpWZWN0b3JNYXRoOjpzdWJzdHJhY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6VmVjdG9yTWF0aDo6bXVsdGlwbHkpOgorICAgICAgICAoV2ViQ29yZTo6VmVjdG9yTWF0aDo6
bXVsdGlwbHlDb21wbGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlZlY3Rvck1hdGg6OnN1bU9mU3F1
YXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpWZWN0b3JNYXRoOjptYXhpbXVtTWFnbml0dWRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlZlY3Rvck1hdGg6OmNsYW1wKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9Gb3JtYXRDb252ZXJ0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dWludDhf
dD4pOgorICAgICAgICAoV2ViQ29yZTo6dWludDE2X3Q+KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jcHUvYXJtL0dyYXBoaWNzQ29udGV4dEdMTkVPTi5oOiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycy9GRUJsZW5kTkVPTi5oOiBSZW1v
dmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycy9GRUNvbXBv
c2l0ZUFyaXRobWV0aWNORU9OLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY3B1L2FybS9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyTkVPTi5oOiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycy9GRUxpZ2h0aW5nTkVPTi5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3B1L2FybS9maWx0ZXJzL0ZF
TGlnaHRpbmdORU9OLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3B1
L2FybS9maWx0ZXJzL05FT05IZWxwZXJzLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQmxlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ29tcG9zaXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxp
Z2h0aW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJJbWFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJJbWFnZTo6Y29ycmVjdFByZW11bHRpcGxp
ZWRQaXhlbEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0
d2FyZS9GRUJsZW5kU29mdHdhcmVBcHBsaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQmxl
bmRTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL3NvZnR3YXJlL0ZFQ29tcG9zaXRlU29mdHdhcmVBcHBsaWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZFQ29tcG9zaXRlU29mdHdhcmVBcHBsaWVyOjphcHBseVBsYXRmb3JtQXJpdGht
ZXRpYyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUdh
dXNzaWFuQmx1clNvZnR3YXJlQXBwbGllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUdhdXNz
aWFuQmx1clNvZnR3YXJlQXBwbGllcjo6Ym94Qmx1clVuYWNjZWxlcmF0ZWQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVMaWdodGluZ1NvZnR3YXJlQXBw
bGllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUxpZ2h0aW5nU29mdHdhcmVBcHBsaWVyOjph
cHBseVBsYXRmb3JtR2VuZXJpYyk6CisKIDIwMjEtMTEtMjUgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2FpZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBNYWtlIEZpbHRlckVmZmVj
dCBhcHBsaWVycyB0YWtlIEZpbHRlckltYWdlcyBpbiB0aGVpciBhcHBseSgpIG1ldGhvZHMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oIGIvU291cmNlL1dURi93dGYv
UGxhdGZvcm1IYXZlLmgKaW5kZXggY2NlYzFlZmQxMWQyOTg3NTkxOTI1NWZlZTdhNmFjMjM2NDM3
NjY4MS4uOWNkNmM5NTZiODMxZTYwNzg1M2Y0NTM3Y2JhNGY2Nzc3NmFkOGVlMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxh
dGZvcm1IYXZlLmgKQEAgLTQyLDExICs0Miw2IEBACiAjZW5kaWYKIAogCi0jaWYgQ1BVKEFSTV9O
RU9OKQotLyogQWxsIE5FT04gaW50cmluc2ljcyB1c2FnZSBjYW4gYmUgZGlzYWJsZWQgYnkgdGhp
cyBtYWNyby4gKi8KLSNkZWZpbmUgSEFWRV9BUk1fTkVPTl9JTlRSSU5TSUNTIDEKLSNlbmRpZgot
CiAvKiBGSVhNRTogVGhpcyBzaG91bGQgYmUgcmVuYW1lZCB0byBXVEZfQ1BVX0FSTV9JRElWX0lO
U1RSVUNUSU9OUyBhbmQgbW92ZWQgdG8gQ1BVLmggKi8KICNpZiBkZWZpbmVkKF9fQVJNX0FSQ0hf
RVhUX0lESVZfXykgfHwgQ1BVKEFQUExFX0FSTVY3UykKICNkZWZpbmUgSEFWRV9BUk1fSURJVl9J
TlNUUlVDVElPTlMgMQpAQCAtNzYsMTEgKzcxLDYgQEAKICNkZWZpbmUgSEFWRV9SRUFETElORSAx
CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIENQVShBUk1fTkVPTikKLSN1
bmRlZiBIQVZFX0FSTV9ORU9OX0lOVFJJTlNJQ1MKLSNkZWZpbmUgSEFWRV9BUk1fTkVPTl9JTlRS
SU5TSUNTIDAKLSNlbmRpZgotCiAjaWYgIWRlZmluZWQoSEFWRV9WSVNJQklMSVRZX1BST1BBR0FU
SU9OX1ZJRVcpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjZGVmaW5lIEhBVkVfVklTSUJJTElU
WV9QUk9QQUdBVElPTl9WSUVXIDEKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA4MGQ4
ZDRjYjM1NDM5MWE0NTBiNjI2MGZmNjlhYTYwMmJkMDE4ZjU2Li45OWZmYjg5NDFlYjViM2E4Yjhm
OThkMzZlMDFlNjM0NzhhN2VmYmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTM3LDggKzEz
Nyw2IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dF
QkNPUkVfRElSfS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYSIKICAgICAiJHtXRUJDT1JFX0RJUn0v
cGxhdGZvcm0vZ2FtZXBhZCIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3Mi
Ci0gICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0iCi0gICAgIiR7
V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycyIKICAgICAiJHtX
RUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzIgogICAgICIke1dFQkNP
UkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzIgogICAgICIke1dFQkNPUkVfRElSfS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBiNmVj
MTQ0OWE4NDljZGI0ZjliMTY2NzE3ODc2MmM3ODQ4YmYxMjQ2Li4xZjc4ODc4Yzc1N2E1NTY3ZGE5
ZmQ0OTUwMzYxNDY0ZDhiMzc2Y2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjA3MSw3ICsyMDcxLDYg
QEAgcGxhdGZvcm0vZ3JhcGhpY3MvVlA5VXRpbGl0aWVzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
VmVsb2NpdHlEYXRhLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcAotcGxhdGZvcm0vZ3JhcGhpY3MvY3B1
L2FybS9maWx0ZXJzL0ZFTGlnaHRpbmdORU9OLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjNmMyNGE0ZmYyNzk1ZjExZDQ1ZDBlNTAyM2Zj
ZDZkNDhlODY0YjgxLi5jYTc4ZTM1NTBmZDQzMTlmYWE2MmU5YThmN2M2YTIzMjYxMTg5ZGI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xMjIyNSwxMyArMTIyMjUsNiBAQAogCQk5MzMwOURENTA5OUU2NDkxMDA1NkU1ODEgLyog
V3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdyYXBDb250ZW50c0luRHVtbXlTcGFuQ29tbWFuZC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5MzMwOUVBMDA5OUVCNzhDMDA1NkU1ODEgLyogU2hhcmVkVGltZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkVGltZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMzMDlFQTEwOTlFQjc4QzAwNTZFNTgxIC8qIFRpbWVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRpbWVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTMzMkFCM0QxNjUxNUQ3NzAwRDgyN0VDIC8qIEdy
YXBoaWNzQ29udGV4dEdMTkVPTi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBH
cmFwaGljc0NvbnRleHRHTE5FT04uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTMz
MkFCODcxNjUzQTk3OTAwRDgyN0VDIC8qIEZFQmxlbmRORU9OLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZFQmxlbmRORU9OLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTkzMzJBQjg4MTY1M0E5NzkwMEQ4MjdFQyAvKiBGRUNvbXBvc2l0ZUFyaXRobWV0aWNORU9O
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZFQ29tcG9zaXRlQXJpdGhtZXRp
Y05FT04uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTMzMkFCODkxNjUzQTk3OTAw
RDgyN0VDIC8qIEZFR2F1c3NpYW5CbHVyTkVPTi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBGRUdhdXNzaWFuQmx1ck5FT04uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJOTMzMkFCOEExNjUzQTk3OTAwRDgyN0VDIC8qIEZFTGlnaHRpbmdORU9OLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZFTGlnaHRpbmdORU9OLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTMzMkFCOEIxNjUzQTk3OTAwRDgyN0VDIC8qIEZFTGln
aHRpbmdORU9OLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZFTGlnaHRpbmdO
RU9OLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTkzMzJBQjhDMTY1M0E5NzkwMEQ4
MjdFQyAvKiBORU9OSGVscGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBO
RU9OSGVscGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzM1NEEzQjBCMjRG
OEM5MDAzRjZERUEgLyogVUlFdmVudFdpdGhLZXlTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBVSUV2ZW50V2l0aEtleVN0YXRlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTMzQTE0MkIwQjdEMTg4NjAwQTUzRkZEIC8qIFRleHRFdmVudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0RXZlbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzNBMTQyQzBCN0QxODg2MDBBNTNGRkQgLyog
VGV4dEV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBUZXh0RXZlbnQuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjQ0OTEsMzYgKzI0NDg0LDYgQEAKIAkJCXRhYldp
ZHRoID0gNDsKIAkJCXVzZXNUYWJzID0gMDsKIAkJfTsKLQkJOTMzMkFCM0IxNjUxNUQ3NzAwRDgy
N0VDIC8qIGNwdSAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0J
CQkJOTMzMkFCM0MxNjUxNUQ3NzAwRDgyN0VDIC8qIGFybSAqLywKLQkJCSk7Ci0JCQlwYXRoID0g
Y3B1OwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKLQkJOTMzMkFCM0MxNjUxNUQ3
NzAwRDgyN0VDIC8qIGFybSAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4g
PSAoCi0JCQkJOTMzMkFCODYxNjUzQTk3OTAwRDgyN0VDIC8qIGZpbHRlcnMgKi8sCi0JCQkJOTMz
MkFCM0QxNjUxNUQ3NzAwRDgyN0VDIC8qIEdyYXBoaWNzQ29udGV4dEdMTkVPTi5oICovLAotCQkJ
KTsKLQkJCXBhdGggPSBhcm07Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwotCQk5
MzMyQUI4NjE2NTNBOTc5MDBEODI3RUMgLyogZmlsdGVycyAqLyA9IHsKLQkJCWlzYSA9IFBCWEdy
b3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJOTMzMkFCODcxNjUzQTk3OTAwRDgyN0VDIC8qIEZF
QmxlbmRORU9OLmggKi8sCi0JCQkJOTMzMkFCODgxNjUzQTk3OTAwRDgyN0VDIC8qIEZFQ29tcG9z
aXRlQXJpdGhtZXRpY05FT04uaCAqLywKLQkJCQk5MzMyQUI4OTE2NTNBOTc5MDBEODI3RUMgLyog
RkVHYXVzc2lhbkJsdXJORU9OLmggKi8sCi0JCQkJOTMzMkFCOEExNjUzQTk3OTAwRDgyN0VDIC8q
IEZFTGlnaHRpbmdORU9OLmNwcCAqLywKLQkJCQk5MzMyQUI4QjE2NTNBOTc5MDBEODI3RUMgLyog
RkVMaWdodGluZ05FT04uaCAqLywKLQkJCQk5MzMyQUI4QzE2NTNBOTc5MDBEODI3RUMgLyogTkVP
TkhlbHBlcnMuaCAqLywKLQkJCSk7Ci0JCQlwYXRoID0gZmlsdGVyczsKLQkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7Ci0JCX07CiAJCTkzQTFFQUEyMEE1NjM0RDgwMDY5NjBBMCAvKiBtYWMgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjc4OTQsNyArMjc4
NTcsNiBAQAogCQkJCUI1MzIwRDY4MTIyQTI0RTkwMDJEMTQ0MCAvKiBjb2NvYSAqLywKIAkJCQky
Q0UxMTg5ODI0QzI0MDJDMDAzNzcwRTkgLyogY29yZWltYWdlICovLAogCQkJCTFDNkZEOTIwMjUw
Q0NBNjQwMEQ2RTkyMCAvKiBjb3JldGV4dCAqLywKLQkJCQk5MzMyQUIzQjE2NTE1RDc3MDBEODI3
RUMgLyogY3B1ICovLAogCQkJCUNEOUQ4MjdDMUM3QkIyRUQwMDZGRjA2NiAvKiBjdiAqLywKIAkJ
CQkwRkU1RkJDOTFDM0RENTA2MDAwN0EyQ0EgLyogZGlzcGxheWxpc3RzICovLAogCQkJCUE3NUU4
QjdGMEUxREUyQjAwMDdGMjQ4MSAvKiBmaWx0ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmNwcAppbmRleCA5MjJlMTA0MjBiNThmMzdiMzc2
MzIxOWU3YWFlMDU4NDIxNDNjZjNmLi4yOWMwYzk2NDc1ZWJmNzBmMjJjMjEyMjAyZGEwZjU5NDRh
ZDEyNTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVz
YW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1w
bGVyLmNwcApAQCAtNDAsOCArNDAsNiBAQAogI2luY2x1ZGUgPEFjY2VsZXJhdGUvQWNjZWxlcmF0
ZS5oPgogI2VsaWYgQ1BVKFg4Nl9TU0UyKQogI2luY2x1ZGUgPHhtbWludHJpbi5oPgotI2VsaWYg
SEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQotI2luY2x1ZGUgPGFybV9uZW9uLmg+CiAjZW5kaWYK
IAogLy8gSW5pdGlhbCBpbnB1dCBidWZmZXIgbGF5b3V0LCBkaXZpZGluZyBpbnRvIHJlZ2lvbnMg
cjAgdG8gcjQgKG5vdGU6IHIwLCByMwpAQCAtMzMxLDI3ICszMjksNiBAQCBmbG9hdCBTaW5jUmVz
YW1wbGVyOjpjb252b2x2ZShjb25zdCBmbG9hdCogaW5wdXRQLCBjb25zdCBmbG9hdCogazEsIGNv
bnN0IGZsb2F0KgogICAgIF9tbV9zdG9yZV9zcygmcmVzdWx0LCBfbW1fYWRkX3NzKG1fc3VtczIs
IF9tbV9zaHVmZmxlX3BzKG1fc3VtczIsIG1fc3VtczIsIDEpKSk7CiAKICAgICByZXR1cm4gcmVz
dWx0OwotI2VsaWYgSEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQotICAgIGZsb2F0MzJ4NF90IG1f
aW5wdXQ7Ci0gICAgZmxvYXQzMng0X3QgbV9zdW1zMSA9IHZtb3ZxX25fZjMyKDApOwotICAgIGZs
b2F0MzJ4NF90IG1fc3VtczIgPSB2bW92cV9uX2YzMigwKTsKLQotICAgIGNvbnN0IGZsb2F0KiB1
cHBlciA9IGlucHV0UCArIGtlcm5lbFNpemU7Ci0gICAgZm9yICg7IGlucHV0UCA8IHVwcGVyOyAp
IHsKLSAgICAgICAgbV9pbnB1dCA9IHZsZDFxX2YzMihpbnB1dFApOwotICAgICAgICBpbnB1dFAg
Kz0gNDsKLSAgICAgICAgbV9zdW1zMSA9IHZtbGFxX2YzMihtX3N1bXMxLCBtX2lucHV0LCB2bGQx
cV9mMzIoazEpKTsKLSAgICAgICAgazEgKz0gNDsKLSAgICAgICAgbV9zdW1zMiA9IHZtbGFxX2Yz
MihtX3N1bXMyLCBtX2lucHV0LCB2bGQxcV9mMzIoazIpKTsKLSAgICAgICAgazIgKz0gNDsKLSAg
ICB9Ci0KLSAgICAvLyBMaW5lYXJseSBpbnRlcnBvbGF0ZSB0aGUgdHdvICJjb252b2x1dGlvbnMi
LgotICAgIG1fc3VtczEgPSB2bWxhcV9mMzIodm11bHFfZjMyKG1fc3VtczEsIHZtb3ZxX25fZjMy
KDEuMCAtIGtlcm5lbEludGVycG9sYXRpb25GYWN0b3IpKSwgbV9zdW1zMiwgdm1vdnFfbl9mMzIo
a2VybmVsSW50ZXJwb2xhdGlvbkZhY3RvcikpOwotCi0gICAgLy8gU3VtIGNvbXBvbmVudHMgdG9n
ZXRoZXIuCi0gICAgZmxvYXQzMngyX3QgbV9oYWxmID0gdmFkZF9mMzIodmdldF9oaWdoX2YzMiht
X3N1bXMxKSwgdmdldF9sb3dfZjMyKG1fc3VtczEpKTsKLSAgICByZXR1cm4gdmdldF9sYW5lX2Yz
Mih2cGFkZF9mMzIobV9oYWxmLCBtX2hhbGYpLCAwKTsKICNlbHNlCiAgICAgZmxvYXQgc3VtMSA9
IDA7CiAgICAgZmxvYXQgc3VtMiA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9WZWN0b3JNYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L1ZlY3Rvck1hdGguY3BwCmluZGV4IDk1MWZkZjU2ZDcxNjAzODBlZGQ4YjIxYTY2ZTY0ODIyZGNi
NDA3MjEuLjFmOGM4OTJjNTVjYjU0OGI2YmYzNDEyZWQzMjQ5ODFmMTkwNTAwZGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1ZlY3Rvck1hdGguY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1ZlY3Rvck1hdGguY3BwCkBAIC0zOCwxMCArMzgs
NiBAQAogI2luY2x1ZGUgPGVtbWludHJpbi5oPgogI2VuZGlmCiAKLSNpZiBIQVZFKEFSTV9ORU9O
X0lOVFJJTlNJQ1MpCi0jaW5jbHVkZSA8YXJtX25lb24uaD4KLSNlbmRpZgotCiAjaW5jbHVkZSA8
YWxnb3JpdGhtPgogI2luY2x1ZGUgPG1hdGguaD4KIApAQCAtMTkwLDIyICsxODYsNiBAQCB2b2lk
IG11bHRpcGx5QnlTY2FsYXJUaGVuQWRkVG9PdXRwdXQoY29uc3QgZmxvYXQqIGlucHV0VmVjdG9y
LCBmbG9hdCBzY2FsYXIsIGZsbwogICAgIGVsc2UKICAgICAgICAgU1NFMl9NVUxUX0FERChsb2Fk
dSwgc3RvcmV1KQogCi0gICAgbiA9IHRhaWxGcmFtZXM7Ci0jZWxpZiBIQVZFKEFSTV9ORU9OX0lO
VFJJTlNJQ1MpCi0gICAgc2l6ZV90IHRhaWxGcmFtZXMgPSBuICUgNDsKLSAgICBjb25zdCBmbG9h
dCogZW5kUCA9IG91dHB1dFZlY3RvciArIG4gLSB0YWlsRnJhbWVzOwotCi0gICAgZmxvYXQzMng0
X3QgayA9IHZkdXBxX25fZjMyKHNjYWxhcik7Ci0gICAgd2hpbGUgKG91dHB1dFZlY3RvciA8IGVu
ZFApIHsKLSAgICAgICAgZmxvYXQzMng0X3Qgc291cmNlID0gdmxkMXFfZjMyKGlucHV0VmVjdG9y
KTsKLSAgICAgICAgZmxvYXQzMng0X3QgZGVzdCA9IHZsZDFxX2YzMihvdXRwdXRWZWN0b3IpOwot
Ci0gICAgICAgIGRlc3QgPSB2bWxhcV9mMzIoZGVzdCwgc291cmNlLCBrKTsKLSAgICAgICAgdnN0
MXFfZjMyKG91dHB1dFZlY3RvciwgZGVzdCk7Ci0KLSAgICAgICAgaW5wdXRWZWN0b3IgKz0gNDsK
LSAgICAgICAgb3V0cHV0VmVjdG9yICs9IDQ7Ci0gICAgfQogICAgIG4gPSB0YWlsRnJhbWVzOwog
I2VuZGlmCiAgICAgd2hpbGUgKG4tLSkgewpAQCAtMjU4LDE4ICsyMzgsNiBAQCB2b2lkIG11bHRp
cGx5QnlTY2FsYXIoY29uc3QgZmxvYXQqIGlucHV0VmVjdG9yLCBmbG9hdCBzY2FsYXIsIGZsb2F0
KiBvdXRwdXRWZWN0bwogCiAgICAgLy8gTm9uLVNTRSBoYW5kbGluZyBmb3IgcmVtYWluaW5nIGZy
YW1lcyB3aGljaCBpcyBsZXNzIHRoYW4gNC4KICAgICBuICU9IDQ7Ci0jZWxpZiBIQVZFKEFSTV9O
RU9OX0lOVFJJTlNJQ1MpCi0gICAgc2l6ZV90IHRhaWxGcmFtZXMgPSBuICUgNDsKLSAgICBjb25z
dCBmbG9hdCogZW5kUCA9IG91dHB1dFZlY3RvciArIG4gLSB0YWlsRnJhbWVzOwotCi0gICAgd2hp
bGUgKG91dHB1dFZlY3RvciA8IGVuZFApIHsKLSAgICAgICAgZmxvYXQzMng0X3Qgc291cmNlID0g
dmxkMXFfZjMyKGlucHV0VmVjdG9yKTsKLSAgICAgICAgdnN0MXFfZjMyKG91dHB1dFZlY3Rvciwg
dm11bHFfbl9mMzIoc291cmNlLCBzY2FsYXIpKTsKLQotICAgICAgICBpbnB1dFZlY3RvciArPSA0
OwotICAgICAgICBvdXRwdXRWZWN0b3IgKz0gNDsKLSAgICB9Ci0gICAgbiA9IHRhaWxGcmFtZXM7
CiAjZW5kaWYKICAgICB3aGlsZSAobi0tKSB7CiAgICAgICAgICpvdXRwdXRWZWN0b3IgPSBzY2Fs
YXIgKiAqaW5wdXRWZWN0b3I7CkBAIC0zMjEsMTkgKzI4OSw2IEBAIHZvaWQgYWRkU2NhbGFyKGNv
bnN0IGZsb2F0KiBpbnB1dFZlY3RvciwgZmxvYXQgc2NhbGFyLCBmbG9hdCogb3V0cHV0VmVjdG9y
LCBzaXplCiAKICAgICAvLyBOb24tU1NFIGhhbmRsaW5nIGZvciByZW1haW5pbmcgZnJhbWVzIHdo
aWNoIGlzIGxlc3MgdGhhbiA0LgogICAgIG4gJT0gNDsKLSNlbGlmIEhBVkUoQVJNX05FT05fSU5U
UklOU0lDUykKLSAgICBzaXplX3QgdGFpbEZyYW1lcyA9IG4gJSA0OwotICAgIGNvbnN0IGZsb2F0
KiBlbmRQID0gb3V0cHV0VmVjdG9yICsgbiAtIHRhaWxGcmFtZXM7Ci0gICAgZmxvYXQzMng0X3Qg
c2NhbGFyVmVjdG9yID0gdmR1cHFfbl9mMzIoc2NhbGFyKTsKLQotICAgIHdoaWxlIChvdXRwdXRW
ZWN0b3IgPCBlbmRQKSB7Ci0gICAgICAgIGZsb2F0MzJ4NF90IHNvdXJjZSA9IHZsZDFxX2YzMihp
bnB1dFZlY3Rvcik7Ci0gICAgICAgIHZzdDFxX2YzMihvdXRwdXRWZWN0b3IsIHZhZGRxX2YzMihz
b3VyY2UsIHNjYWxhclZlY3RvcikpOwotCi0gICAgICAgIGlucHV0VmVjdG9yICs9IDQ7Ci0gICAg
ICAgIG91dHB1dFZlY3RvciArPSA0OwotICAgIH0KLSAgICBuID0gdGFpbEZyYW1lczsKICNlbmRp
ZgogICAgIHdoaWxlIChuLS0pIHsKICAgICAgICAgKm91dHB1dFZlY3RvciA9ICppbnB1dFZlY3Rv
ciArIHNjYWxhcjsKQEAgLTQxNywyMCArMzcyLDYgQEAgdm9pZCBhZGQoY29uc3QgZmxvYXQqIGlu
cHV0VmVjdG9yMSwgY29uc3QgZmxvYXQqIGlucHV0VmVjdG9yMiwgZmxvYXQqIG91dHB1dFZlY3QK
IAogICAgIC8vIE5vbi1TU0UgaGFuZGxpbmcgZm9yIHJlbWFpbmluZyBmcmFtZXMgd2hpY2ggaXMg
bGVzcyB0aGFuIDQuCiAgICAgbiAlPSA0OwotI2VsaWYgSEFWRShBUk1fTkVPTl9JTlRSSU5TSUNT
KQotICAgIHNpemVfdCB0YWlsRnJhbWVzID0gbiAlIDQ7Ci0gICAgY29uc3QgZmxvYXQqIGVuZFAg
PSBvdXRwdXRWZWN0b3IgKyBuIC0gdGFpbEZyYW1lczsKLQotICAgIHdoaWxlIChvdXRwdXRWZWN0
b3IgPCBlbmRQKSB7Ci0gICAgICAgIGZsb2F0MzJ4NF90IHNvdXJjZTEgPSB2bGQxcV9mMzIoaW5w
dXRWZWN0b3IxKTsKLSAgICAgICAgZmxvYXQzMng0X3Qgc291cmNlMiA9IHZsZDFxX2YzMihpbnB1
dFZlY3RvcjIpOwotICAgICAgICB2c3QxcV9mMzIob3V0cHV0VmVjdG9yLCB2YWRkcV9mMzIoc291
cmNlMSwgc291cmNlMikpOwotCi0gICAgICAgIGlucHV0VmVjdG9yMSArPSA0OwotICAgICAgICBp
bnB1dFZlY3RvcjIgKz0gNDsKLSAgICAgICAgb3V0cHV0VmVjdG9yICs9IDQ7Ci0gICAgfQotICAg
IG4gPSB0YWlsRnJhbWVzOwogI2VuZGlmCiAgICAgd2hpbGUgKG4tLSkgewogICAgICAgICAqb3V0
cHV0VmVjdG9yID0gKmlucHV0VmVjdG9yMSArICppbnB1dFZlY3RvcjI7CkBAIC01MTMsMjAgKzQ1
NCw2IEBAIHZvaWQgc3Vic3RyYWN0KGNvbnN0IGZsb2F0KiBpbnB1dFZlY3RvcjEsIGNvbnN0IGZs
b2F0KiBpbnB1dFZlY3RvcjIsIGZsb2F0KiBvdXRwCiAKICAgICAvLyBOb24tU1NFIGhhbmRsaW5n
IGZvciByZW1haW5pbmcgZnJhbWVzIHdoaWNoIGlzIGxlc3MgdGhhbiA0LgogICAgIG4gJT0gNDsK
LSNlbGlmIEhBVkUoQVJNX05FT05fSU5UUklOU0lDUykKLSAgICBzaXplX3QgdGFpbEZyYW1lcyA9
IG4gJSA0OwotICAgIGNvbnN0IGZsb2F0KiBlbmRQID0gb3V0cHV0VmVjdG9yICsgbiAtIHRhaWxG
cmFtZXM7Ci0KLSAgICB3aGlsZSAob3V0cHV0VmVjdG9yIDwgZW5kUCkgewotICAgICAgICBmbG9h
dDMyeDRfdCBzb3VyY2UxID0gdmxkMXFfZjMyKGlucHV0VmVjdG9yMSk7Ci0gICAgICAgIGZsb2F0
MzJ4NF90IHNvdXJjZTIgPSB2bGQxcV9mMzIoaW5wdXRWZWN0b3IyKTsKLSAgICAgICAgdnN0MXFf
ZjMyKG91dHB1dFZlY3RvciwgdnN1YnFfZjMyKHNvdXJjZTEsIHNvdXJjZTIpKTsKLQotICAgICAg
ICBpbnB1dFZlY3RvcjEgKz0gNDsKLSAgICAgICAgaW5wdXRWZWN0b3IyICs9IDQ7Ci0gICAgICAg
IG91dHB1dFZlY3RvciArPSA0OwotICAgIH0KLSAgICBuID0gdGFpbEZyYW1lczsKICNlbmRpZgog
ICAgIHdoaWxlIChuLS0pIHsKICAgICAgICAgKm91dHB1dFZlY3RvciA9ICppbnB1dFZlY3RvcjEg
LSAqaW5wdXRWZWN0b3IyOwpAQCAtNTk0LDIwICs1MjEsNiBAQCB2b2lkIG11bHRpcGx5KGNvbnN0
IGZsb2F0KiBpbnB1dFZlY3RvcjEsIGNvbnN0IGZsb2F0KiBpbnB1dFZlY3RvcjIsIGZsb2F0KiBv
dXRwdQogICAgIGVsc2UgLy8gTmVpdGhlciBhbGlnbmVkLgogICAgICAgICBTU0UyX01VTFQobG9h
ZHUsIHN0b3JldSkKIAotICAgIG4gPSB0YWlsRnJhbWVzOwotI2VsaWYgSEFWRShBUk1fTkVPTl9J
TlRSSU5TSUNTKQotICAgIHNpemVfdCB0YWlsRnJhbWVzID0gbiAlIDQ7Ci0gICAgY29uc3QgZmxv
YXQqIGVuZFAgPSBvdXRwdXRWZWN0b3IgKyBuIC0gdGFpbEZyYW1lczsKLQotICAgIHdoaWxlIChv
dXRwdXRWZWN0b3IgPCBlbmRQKSB7Ci0gICAgICAgIGZsb2F0MzJ4NF90IHNvdXJjZTEgPSB2bGQx
cV9mMzIoaW5wdXRWZWN0b3IxKTsKLSAgICAgICAgZmxvYXQzMng0X3Qgc291cmNlMiA9IHZsZDFx
X2YzMihpbnB1dFZlY3RvcjIpOwotICAgICAgICB2c3QxcV9mMzIob3V0cHV0VmVjdG9yLCB2bXVs
cV9mMzIoc291cmNlMSwgc291cmNlMikpOwotCi0gICAgICAgIGlucHV0VmVjdG9yMSArPSA0Owot
ICAgICAgICBpbnB1dFZlY3RvcjIgKz0gNDsKLSAgICAgICAgb3V0cHV0VmVjdG9yICs9IDQ7Ci0g
ICAgfQogICAgIG4gPSB0YWlsRnJhbWVzOwogI2VuZGlmCiAgICAgd2hpbGUgKG4tLSkgewpAQCAt
NjQwLDIyICs1NTMsNiBAQCB2b2lkIG11bHRpcGx5Q29tcGxleChjb25zdCBmbG9hdCogcmVhbFZl
Y3RvcjEsIGNvbnN0IGZsb2F0KiBpbWFnVmVjdG9yMSwgY29uc3QgZgogICAgICAgICAgICAgaSAr
PSA0OwogICAgICAgICB9CiAgICAgfQotI2VsaWYgSEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQot
ICAgICAgICB1bnNpZ25lZCBlbmRTaXplID0gbnVtYmVyT2ZFbGVtZW50c1RvUHJvY2VzcyAtIG51
bWJlck9mRWxlbWVudHNUb1Byb2Nlc3MgJSA0OwotICAgICAgICB3aGlsZSAoaSA8IGVuZFNpemUp
IHsKLSAgICAgICAgICAgIGZsb2F0MzJ4NF90IHJlYWwxID0gdmxkMXFfZjMyKHJlYWxWZWN0b3Ix
ICsgaSk7Ci0gICAgICAgICAgICBmbG9hdDMyeDRfdCByZWFsMiA9IHZsZDFxX2YzMihyZWFsVmVj
dG9yMiArIGkpOwotICAgICAgICAgICAgZmxvYXQzMng0X3QgaW1hZzEgPSB2bGQxcV9mMzIoaW1h
Z1ZlY3RvcjEgKyBpKTsKLSAgICAgICAgICAgIGZsb2F0MzJ4NF90IGltYWcyID0gdmxkMXFfZjMy
KGltYWcyUCArIGkpOwotCi0gICAgICAgICAgICBmbG9hdDMyeDRfdCByZWFsUmVzdWx0ID0gdm1s
c3FfZjMyKHZtdWxxX2YzMihyZWFsMSwgcmVhbDIpLCBpbWFnMSwgaW1hZzIpOwotICAgICAgICAg
ICAgZmxvYXQzMng0X3QgaW1hZ1Jlc3VsdCA9IHZtbGFxX2YzMih2bXVscV9mMzIocmVhbDEsIGlt
YWcyKSwgaW1hZzEsIHJlYWwyKTsKLQotICAgICAgICAgICAgdnN0MXFfZjMyKHJlYWxPdXRwdXRW
ZWN0b3IgKyBpLCByZWFsUmVzdWx0KTsKLSAgICAgICAgICAgIHZzdDFxX2YzMihpbWFnRGVzdFAg
KyBpLCBpbWFnUmVzdWx0KTsKLQotICAgICAgICAgICAgaSArPSA0OwotICAgICAgICB9CiAjZW5k
aWYKICAgICBmb3IgKDsgaSA8IG51bWJlck9mRWxlbWVudHNUb1Byb2Nlc3M7ICsraSkgewogICAg
ICAgICAvLyBSZWFkIGFuZCBjb21wdXRlIHJlc3VsdCBiZWZvcmUgc3RvcmluZyB0aGVtLCBpbiBj
YXNlIHRoZQpAQCAtNjk2LDIzICs1OTMsNiBAQCBmbG9hdCBzdW1PZlNxdWFyZXMoY29uc3QgZmxv
YXQqIGlucHV0VmVjdG9yLCBzaXplX3QgbnVtYmVyT2ZFbGVtZW50c1RvUHJvY2VzcykKICAgICBj
b25zdCBmbG9hdCogZ3JvdXBTdW1QID0gcmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+KCZtU3VtKTsK
ICAgICBzdW0gKz0gZ3JvdXBTdW1QWzBdICsgZ3JvdXBTdW1QWzFdICsgZ3JvdXBTdW1QWzJdICsg
Z3JvdXBTdW1QWzNdOwogCi0gICAgbiA9IHRhaWxGcmFtZXM7Ci0jZWxpZiBIQVZFKEFSTV9ORU9O
X0lOVFJJTlNJQ1MpCi0gICAgc2l6ZV90IHRhaWxGcmFtZXMgPSBuICUgNDsKLSAgICBjb25zdCBm
bG9hdCogZW5kUCA9IGlucHV0VmVjdG9yICsgbiAtIHRhaWxGcmFtZXM7Ci0KLSAgICBmbG9hdDMy
eDRfdCBmb3VyU3VtID0gdmR1cHFfbl9mMzIoMCk7Ci0gICAgd2hpbGUgKGlucHV0VmVjdG9yIDwg
ZW5kUCkgewotICAgICAgICBmbG9hdDMyeDRfdCBzb3VyY2UgPSB2bGQxcV9mMzIoaW5wdXRWZWN0
b3IpOwotICAgICAgICBmb3VyU3VtID0gdm1sYXFfZjMyKGZvdXJTdW0sIHNvdXJjZSwgc291cmNl
KTsKLSAgICAgICAgaW5wdXRWZWN0b3IgKz0gNDsKLSAgICB9Ci0gICAgZmxvYXQzMngyX3QgdHdv
U3VtID0gdmFkZF9mMzIodmdldF9sb3dfZjMyKGZvdXJTdW0pLCB2Z2V0X2hpZ2hfZjMyKGZvdXJT
dW0pKTsKLQotICAgIGZsb2F0IGdyb3VwU3VtWzJdOwotICAgIHZzdDFfZjMyKGdyb3VwU3VtLCB0
d29TdW0pOwotICAgIHN1bSArPSBncm91cFN1bVswXSArIGdyb3VwU3VtWzFdOwotCiAgICAgbiA9
IHRhaWxGcmFtZXM7CiAjZW5kaWYKIApAQCAtNzYxLDIzICs2NDEsNiBAQCBmbG9hdCBtYXhpbXVt
TWFnbml0dWRlKGNvbnN0IGZsb2F0KiBpbnB1dFZlY3Rvciwgc2l6ZV90IG51bWJlck9mRWxlbWVu
dHNUb1Byb2NlcwogICAgIG1heCA9IHN0ZDo6bWF4KG1heCwgZ3JvdXBNYXhQWzJdKTsKICAgICBt
YXggPSBzdGQ6Om1heChtYXgsIGdyb3VwTWF4UFszXSk7CiAKLSAgICBuID0gdGFpbEZyYW1lczsK
LSNlbGlmIEhBVkUoQVJNX05FT05fSU5UUklOU0lDUykKLSAgICBzaXplX3QgdGFpbEZyYW1lcyA9
IG4gJSA0OwotICAgIGNvbnN0IGZsb2F0KiBlbmRQID0gaW5wdXRWZWN0b3IgKyBuIC0gdGFpbEZy
YW1lczsKLQotICAgIGZsb2F0MzJ4NF90IGZvdXJNYXggPSB2ZHVwcV9uX2YzMigwKTsKLSAgICB3
aGlsZSAoaW5wdXRWZWN0b3IgPCBlbmRQKSB7Ci0gICAgICAgIGZsb2F0MzJ4NF90IHNvdXJjZSA9
IHZsZDFxX2YzMihpbnB1dFZlY3Rvcik7Ci0gICAgICAgIGZvdXJNYXggPSB2bWF4cV9mMzIoZm91
ck1heCwgdmFic3FfZjMyKHNvdXJjZSkpOwotICAgICAgICBpbnB1dFZlY3RvciArPSA0OwotICAg
IH0KLSAgICBmbG9hdDMyeDJfdCB0d29NYXggPSB2bWF4X2YzMih2Z2V0X2xvd19mMzIoZm91ck1h
eCksIHZnZXRfaGlnaF9mMzIoZm91ck1heCkpOwotCi0gICAgZmxvYXQgZ3JvdXBNYXhbMl07Ci0g
ICAgdnN0MV9mMzIoZ3JvdXBNYXgsIHR3b01heCk7Ci0gICAgbWF4ID0gc3RkOjptYXgoZ3JvdXBN
YXhbMF0sIGdyb3VwTWF4WzFdKTsKLQogICAgIG4gPSB0YWlsRnJhbWVzOwogI2VuZGlmCiAKQEAg
LTc5NCwyMCArNjU3LDYgQEAgdm9pZCBjbGFtcChjb25zdCBmbG9hdCogaW5wdXRWZWN0b3IsIGZs
b2F0IG1pbmltdW0sIGZsb2F0IG1heGltdW0sIGZsb2F0KiBvdXRwdXQKICAgICBzaXplX3QgbiA9
IG51bWJlck9mRWxlbWVudHNUb1Byb2Nlc3M7CiAKICAgICAvLyBGSVhNRTogT3B0aW1pemUgZm9y
IFNTRTIuCi0jaWYgSEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQotICAgIHNpemVfdCB0YWlsRnJh
bWVzID0gbiAlIDQ7Ci0gICAgY29uc3QgZmxvYXQqIGVuZFAgPSBvdXRwdXRWZWN0b3IgKyBuIC0g
dGFpbEZyYW1lczsKLQotICAgIGZsb2F0MzJ4NF90IGxvdyA9IHZkdXBxX25fZjMyKG1pbmltdW0p
OwotICAgIGZsb2F0MzJ4NF90IGhpZ2ggPSB2ZHVwcV9uX2YzMihtYXhpbXVtKTsKLSAgICB3aGls
ZSAob3V0cHV0VmVjdG9yIDwgZW5kUCkgewotICAgICAgICBmbG9hdDMyeDRfdCBzb3VyY2UgPSB2
bGQxcV9mMzIoaW5wdXRWZWN0b3IpOwotICAgICAgICB2c3QxcV9mMzIob3V0cHV0VmVjdG9yLCB2
bWF4cV9mMzIodm1pbnFfZjMyKHNvdXJjZSwgaGlnaCksIGxvdykpOwotICAgICAgICBpbnB1dFZl
Y3RvciArPSA0OwotICAgICAgICBvdXRwdXRWZWN0b3IgKz0gNDsKLSAgICB9Ci0gICAgbiA9IHRh
aWxGcmFtZXM7Ci0jZW5kaWYKICAgICB3aGlsZSAobi0tKSB7CiAgICAgICAgICpvdXRwdXRWZWN0
b3IgPSBzdGQ6OmNsYW1wKCppbnB1dFZlY3RvciwgbWluaW11bSwgbWF4aW11bSk7CiAgICAgICAg
ICsraW5wdXRWZWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb3JtYXRDb252ZXJ0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9ybWF0Q29udmVydGVyLmNwcAppbmRleCA5YTA1MjMwODg2MjE4YWMzYmQzZWVhYmU1MTI3
NGQ3NGRiZjYzNDRlLi43NTJiMTg3ODU4NzA4ZjM3M2U0NjM2OGRiNzVmNTM5NTg3MWUxMDI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3JtYXRDb252ZXJ0
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zvcm1hdENvbnZl
cnRlci5jcHAKQEAgLTMxLDEwICszMSw2IEBACiAKICNpbmNsdWRlICJGb3JtYXRDb252ZXJ0ZXIu
aCIKIAotI2lmIEhBVkUoQVJNX05FT05fSU5UUklOU0lDUykKLSNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHRHTE5FT04uaCIKLSNlbmRpZgotCiAjaWYgVVNFKEFDQ0VMRVJBVEUpCiAjaW5jbHVkZSA8
QWNjZWxlcmF0ZS9BY2NlbGVyYXRlLmg+CiAjZW5kaWYKQEAgLTI1MSw5ICsyNDcsNiBAQCB0ZW1w
bGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCB1bnBhY2s8R3JhcGhpY3NDb250ZXh0R0w6OkRhdGFG
b3JtYXQ6OkJHUkE4LCB1aW50OAogCiB0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCB1bnBh
Y2s8R3JhcGhpY3NDb250ZXh0R0w6OkRhdGFGb3JtYXQ6OlJHQkE1NTUxLCB1aW50MTZfdCwgdWlu
dDhfdD4oY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2ln
bmVkIHBpeGVsc1BlclJvdykKIHsKLSNpZiBIQVZFKEFSTV9ORU9OX0lOVFJJTlNJQ1MpCi0gICAg
U0lNRDo6dW5wYWNrT25lUm93T2ZSR0JBNTU1MVRvUkdCQTgoc291cmNlLCBkZXN0aW5hdGlvbiwg
cGl4ZWxzUGVyUm93KTsKLSNlbmRpZgogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwg
cGl4ZWxzUGVyUm93OyArK2kpIHsKICAgICAgICAgdWludDE2X3QgcGFja2VkVmFsdWUgPSBzb3Vy
Y2VbMF07CiAgICAgICAgIHVpbnQ4X3QgciA9IHBhY2tlZFZhbHVlID4+IDExOwpAQCAtMjcwLDkg
KzI2Myw2IEBAIHRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHVucGFjazxHcmFwaGljc0Nv
bnRleHRHTDo6RGF0YUZvcm1hdDo6UkdCQTU1NTEsIHVpCiAKIHRlbXBsYXRlPD4gQUxXQVlTX0lO
TElORSB2b2lkIHVucGFjazxHcmFwaGljc0NvbnRleHRHTDo6RGF0YUZvcm1hdDo6UkdCQTQ0NDQs
IHVpbnQxNl90LCB1aW50OF90Pihjb25zdCB1aW50MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0
aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQogewotI2lmIEhBVkUoQVJNX05FT05fSU5U
UklOU0lDUykKLSAgICBTSU1EOjp1bnBhY2tPbmVSb3dPZlJHQkE0NDQ0VG9SR0JBOChzb3VyY2Us
IGRlc3RpbmF0aW9uLCBwaXhlbHNQZXJSb3cpOwotI2VuZGlmCiAgICAgZm9yICh1bnNpZ25lZCBp
bnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewogICAgICAgICB1aW50MTZfdCBwYWNr
ZWRWYWx1ZSA9IHNvdXJjZVswXTsKICAgICAgICAgdWludDhfdCByID0gcGFja2VkVmFsdWUgPj4g
MTI7CkBAIC00NjgsOSArNDU4LDYgQEAgdGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgdW5w
YWNrPEdyYXBoaWNzQ29udGV4dEdMOjpEYXRhRm9ybWF0OjpCR1I4LCB1aW50OF8KIAogdGVtcGxh
dGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgdW5wYWNrPEdyYXBoaWNzQ29udGV4dEdMOjpEYXRhRm9y
bWF0OjpSR0I1NjUsIHVpbnQxNl90LCB1aW50OF90Pihjb25zdCB1aW50MTZfdCogc291cmNlLCB1
aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQogewotI2lmIEhBVkUo
QVJNX05FT05fSU5UUklOU0lDUykKLSAgICBTSU1EOjp1bnBhY2tPbmVSb3dPZlJHQjU2NVRvUkdC
QTgoc291cmNlLCBkZXN0aW5hdGlvbiwgcGl4ZWxzUGVyUm93KTsKLSNlbmRpZgogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewogICAgICAgICB1aW50MTZf
dCBwYWNrZWRWYWx1ZSA9IHNvdXJjZVswXTsKICAgICAgICAgdWludDhfdCByID0gcGFja2VkVmFs
dWUgPj4gMTE7CkBAIC02NjEsOSArNjQ4LDYgQEAgdGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZv
aWQgcGFjazxHcmFwaGljc0NvbnRleHRHTDo6RGF0YUZvcm1hdDo6UkdCQTgsIEdyYXBoaWMKIAog
dGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHRHTDo6RGF0
YUZvcm1hdDo6UkdCQTQ0NDQsIEdyYXBoaWNzQ29udGV4dEdMOjpBbHBoYU9wOjpEb05vdGhpbmcs
IHVpbnQ4X3QsIHVpbnQxNl90Pihjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQxNl90KiBkZXN0
aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQogewotI2lmIEhBVkUoQVJNX05FT05fSU5U
UklOU0lDUykKLSAgICBTSU1EOjpwYWNrT25lUm93T2ZSR0JBOFRvVW5zaWduZWRTaG9ydDQ0NDQo
c291cmNlLCBkZXN0aW5hdGlvbiwgcGl4ZWxzUGVyUm93KTsKLSNlbmRpZgogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewogICAgICAgICAqZGVzdGluYXRp
b24gPSAoKChzb3VyY2VbMF0gJiAweEYwKSA8PCA4KQogICAgICAgICAgICAgICAgICAgICAgICAg
fCAoKHNvdXJjZVsxXSAmIDB4RjApIDw8IDQpCkBAIC03MDksOSArNjkzLDYgQEAgdGVtcGxhdGU8
PiBBTFdBWVNfSU5MSU5FIHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHRHTDo6RGF0YUZvcm1hdDo6
UkdCQTQ0NDQsIEdyYXAKIAogdGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgcGFjazxHcmFw
aGljc0NvbnRleHRHTDo6RGF0YUZvcm1hdDo6UkdCQTU1NTEsIEdyYXBoaWNzQ29udGV4dEdMOjpB
bHBoYU9wOjpEb05vdGhpbmcsIHVpbnQ4X3QsIHVpbnQxNl90Pihjb25zdCB1aW50OF90KiBzb3Vy
Y2UsIHVpbnQxNl90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQogewotI2lm
IEhBVkUoQVJNX05FT05fSU5UUklOU0lDUykKLSAgICBTSU1EOjpwYWNrT25lUm93T2ZSR0JBOFRv
VW5zaWduZWRTaG9ydDU1NTEoc291cmNlLCBkZXN0aW5hdGlvbiwgcGl4ZWxzUGVyUm93KTsKLSNl
bmRpZgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewog
ICAgICAgICAqZGVzdGluYXRpb24gPSAoKChzb3VyY2VbMF0gJiAweEY4KSA8PCA4KQogICAgICAg
ICAgICAgICAgICAgICAgICAgfCAoKHNvdXJjZVsxXSAmIDB4RjgpIDw8IDMpCkBAIC03NTcsOSAr
NzM4LDYgQEAgdGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgcGFjazxHcmFwaGljc0NvbnRl
eHRHTDo6RGF0YUZvcm1hdDo6UkdCQTU1NTEsIEdyYXAKIAogdGVtcGxhdGU8PiBBTFdBWVNfSU5M
SU5FIHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHRHTDo6RGF0YUZvcm1hdDo6UkdCNTY1LCBHcmFw
aGljc0NvbnRleHRHTDo6QWxwaGFPcDo6RG9Ob3RoaW5nLCB1aW50OF90LCB1aW50MTZfdD4oY29u
c3QgdWludDhfdCogc291cmNlLCB1aW50MTZfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVs
c1BlclJvdykKIHsKLSNpZiBIQVZFKEFSTV9ORU9OX0lOVFJJTlNJQ1MpCi0gICAgU0lNRDo6cGFj
a09uZVJvd09mUkdCQThUb1Vuc2lnbmVkU2hvcnQ1NjUoc291cmNlLCBkZXN0aW5hdGlvbiwgcGl4
ZWxzUGVyUm93KTsKLSNlbmRpZgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwaXhlbHNQ
ZXJSb3c7ICsraSkgewogICAgICAgICAqZGVzdGluYXRpb24gPSAoKChzb3VyY2VbMF0gJiAweEY4
KSA8PCA4KQogICAgICAgICAgICAgICAgICAgICAgICAgfCAoKHNvdXJjZVsxXSAmIDB4RkMpIDw8
IDMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRHTENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCmluZGV4IGY3OWYyMmUzMTNlYTExNzM4OWM1ZjQwOWRk
MGY0OTRhZTE1YWViOTMuLjdlY2UwNmNjN2NhMjllM2ZiZGM1YjE4MDhmMTMwZmQ0OWMyYTI4MmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dEdMQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCkBAIC0zNiwxMCArMzYsNiBAQAogI2luY2x1ZGUgIklt
YWdlQnVmZmVyVXRpbGl0aWVzQ0cuaCIKICNpbmNsdWRlICJQaXhlbEJ1ZmZlci5oIgogCi0jaWYg
SEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMTkVP
Ti5oIgotI2VuZGlmCi0KICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dCaXRtYXBDb250ZXh0Lmg+
CiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHQ29udGV4dC5oPgogI2luY2x1ZGUgPENvcmVHcmFw
aGljcy9DR0RhdGFQcm92aWRlci5oPgpAQCAtMTE1LDkgKzExMSw2IEBAIEFMV0FZU19JTkxJTkUg
dm9pZCBjb252ZXJ0MTZCaXRGb3JtYXRUb1JHQkE4KGNvbnN0IFNvdXJjZVR5cGUqLCBEc3RUeXBl
KiwgdW5zaWduCiAKIHRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIGNvbnZlcnQxNkJpdEZv
cm1hdFRvUkdCQTg8R3JhcGhpY3NDb250ZXh0R0w6OkRhdGFGb3JtYXQ6OlJHQkExNkxpdHRsZSwg
dWludDE2X3QsIHVpbnQ4X3Q+KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3Rp
bmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCiB7Ci0jaWYgSEFWRShBUk1fTkVPTl9JTlRS
SU5TSUNTKQotICAgIFNJTUQ6OnVucGFja09uZVJvd09mUkdCQTE2TGl0dGxlVG9SR0JBOChzb3Vy
Y2UsIGRlc3RpbmF0aW9uLCBwaXhlbHNQZXJSb3cpOwotI2VuZGlmCiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CiAgICAgICAgIGRlc3RpbmF0aW9uWzBd
ID0gY29udmVydENvbG9yMTZMaXR0bGVUbzgoc291cmNlWzBdKTsKICAgICAgICAgZGVzdGluYXRp
b25bMV0gPSBjb252ZXJ0Q29sb3IxNkxpdHRsZVRvOChzb3VyY2VbMV0pOwpAQCAtMTQyLDkgKzEz
NSw2IEBAIHRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIGNvbnZlcnQxNkJpdEZvcm1hdFRv
UkdCQTg8R3JhcGhpY3NDb250ZXh0R0w6OkRhdGFGCiAKIHRlbXBsYXRlPD4gQUxXQVlTX0lOTElO
RSB2b2lkIGNvbnZlcnQxNkJpdEZvcm1hdFRvUkdCQTg8R3JhcGhpY3NDb250ZXh0R0w6OkRhdGFG
b3JtYXQ6OlJHQjE2TGl0dGxlLCB1aW50MTZfdCwgdWludDhfdD4oY29uc3QgdWludDE2X3QqIHNv
dXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKIHsKLSNp
ZiBIQVZFKEFSTV9ORU9OX0lOVFJJTlNJQ1MpCi0gICAgU0lNRDo6dW5wYWNrT25lUm93T2ZSR0Ix
NkxpdHRsZVRvUkdCQTgoc291cmNlLCBkZXN0aW5hdGlvbiwgcGl4ZWxzUGVyUm93KTsKLSNlbmRp
ZgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewogICAg
ICAgICBkZXN0aW5hdGlvblswXSA9IGNvbnZlcnRDb2xvcjE2TGl0dGxlVG84KHNvdXJjZVswXSk7
CiAgICAgICAgIGRlc3RpbmF0aW9uWzFdID0gY29udmVydENvbG9yMTZMaXR0bGVUbzgoc291cmNl
WzFdKTsKQEAgLTE2OSw5ICsxNTksNiBAQCB0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBj
b252ZXJ0MTZCaXRGb3JtYXRUb1JHQkE4PEdyYXBoaWNzQ29udGV4dEdMOjpEYXRhRgogCiB0ZW1w
bGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBjb252ZXJ0MTZCaXRGb3JtYXRUb1JHQkE4PEdyYXBo
aWNzQ29udGV4dEdMOjpEYXRhRm9ybWF0OjpBUkdCMTZMaXR0bGUsIHVpbnQxNl90LCB1aW50OF90
Pihjb25zdCB1aW50MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQg
cGl4ZWxzUGVyUm93KQogewotI2lmIEhBVkUoQVJNX05FT05fSU5UUklOU0lDUykKLSAgICBTSU1E
Ojp1bnBhY2tPbmVSb3dPZkFSR0IxNkxpdHRsZVRvUkdCQTgoc291cmNlLCBkZXN0aW5hdGlvbiwg
cGl4ZWxzUGVyUm93KTsKLSNlbmRpZgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwaXhl
bHNQZXJSb3c7ICsraSkgewogICAgICAgICBkZXN0aW5hdGlvblswXSA9IGNvbnZlcnRDb2xvcjE2
TGl0dGxlVG84KHNvdXJjZVsxXSk7CiAgICAgICAgIGRlc3RpbmF0aW9uWzFdID0gY29udmVydENv
bG9yMTZMaXR0bGVUbzgoc291cmNlWzJdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vR3JhcGhpY3NDb250ZXh0R0xORU9OLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJtL0dyYXBoaWNzQ29udGV4dEdMTkVPTi5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTlhYzQ0NGUxOWQ0MzZjZTJhYWE1NGNh
YzlkYzAwN2M0OWU2YmU0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vR3JhcGhpY3ND
b250ZXh0R0xORU9OLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzMDEgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMiBHYWJvciBSYXBjc2FueWkgKHJnYWJvckBpbmYudS1zemVnZWQuaHUp
LCBVbml2ZXJzaXR5IG9mIFN6ZWdlZAotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVU5JVkVSU0lUWSBPRiBTWkVHRUQgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBVTklWRVJTSVRZIE9GIFNaRUdFRCBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgSEFWRShB
Uk1fTkVPTl9JTlRSSU5TSUNTKQotCi0jaW5jbHVkZSA8YXJtX25lb24uaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1uYW1lc3BhY2UgU0lNRCB7Ci0KLUFMV0FZU19JTkxJTkUgdm9pZCB1bnBh
Y2tPbmVSb3dPZlJHQkExNkxpdHRsZVRvUkdCQTgoY29uc3QgdWludDE2X3QqJiBzb3VyY2UsIHVp
bnQ4X3QqJiBkZXN0aW5hdGlvbiwgdW5zaWduZWQmIHBpeGVsc1BlclJvdykKLXsKLSAgICB1bnNp
Z25lZCBjb21wb25lbnRzUGVyUm93ID0gcGl4ZWxzUGVyUm93ICogNDsKLSAgICB1bnNpZ25lZCB0
YWlsQ29tcG9uZW50cyA9IGNvbXBvbmVudHNQZXJSb3cgJSAxNjsKLSAgICB1bnNpZ25lZCBjb21w
b25lbnRzU2l6ZSA9IGNvbXBvbmVudHNQZXJSb3cgLSB0YWlsQ29tcG9uZW50czsKLSAgICBjb25z
dCB1aW50OF90KiBzcmMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzb3VyY2Up
OwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvbXBvbmVudHNTaXplOyBpICs9IDE2
KSB7Ci0gICAgICAgIHVpbnQ4eDE2eDJfdCBjb21wb25lbnRzID0gdmxkMnFfdTgoc3JjICsgaSAq
IDIpOwotICAgICAgICB2c3QxcV91OChkZXN0aW5hdGlvbiArIGksIGNvbXBvbmVudHMudmFsWzFd
KTsKLSAgICB9Ci0KLSAgICBzb3VyY2UgKz0gY29tcG9uZW50c1NpemU7Ci0gICAgZGVzdGluYXRp
b24gKz0gY29tcG9uZW50c1NpemU7Ci0gICAgcGl4ZWxzUGVyUm93ID0gdGFpbENvbXBvbmVudHMg
LyA0OwotfQotCi1BTFdBWVNfSU5MSU5FIHZvaWQgdW5wYWNrT25lUm93T2ZSR0IxNkxpdHRsZVRv
UkdCQTgoY29uc3QgdWludDE2X3QqJiBzb3VyY2UsIHVpbnQ4X3QqJiBkZXN0aW5hdGlvbiwgdW5z
aWduZWQmIHBpeGVsc1BlclJvdykKLXsKLSAgICB1bnNpZ25lZCBjb21wb25lbnRzUGVyUm93ID0g
cGl4ZWxzUGVyUm93ICogMzsKLSAgICB1bnNpZ25lZCB0YWlsQ29tcG9uZW50cyA9IGNvbXBvbmVu
dHNQZXJSb3cgJSAyNDsKLSAgICB1bnNpZ25lZCBjb21wb25lbnRzU2l6ZSA9IGNvbXBvbmVudHNQ
ZXJSb3cgLSB0YWlsQ29tcG9uZW50czsKLQotICAgIHVpbnQ4eDhfdCBjb21wb25lbnRBID0gdmR1
cF9uX3U4KDB4RkYpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb21wb25lbnRzU2l6
ZTsgaSArPSAyNCkgewotICAgICAgICB1aW50MTZ4OHgzX3QgUkdCMTYgPSB2bGQzcV91MTYoc291
cmNlICsgaSk7Ci0gICAgICAgIHVpbnQ4eDhfdCBjb21wb25lbnRSID0gdnFtb3ZuX3UxNih2c2hy
cV9uX3UxNihSR0IxNi52YWxbMF0sIDgpKTsKLSAgICAgICAgdWludDh4OF90IGNvbXBvbmVudEcg
PSB2cW1vdm5fdTE2KHZzaHJxX25fdTE2KFJHQjE2LnZhbFsxXSwgOCkpOwotICAgICAgICB1aW50
OHg4X3QgY29tcG9uZW50QiA9IHZxbW92bl91MTYodnNocnFfbl91MTYoUkdCMTYudmFsWzJdLCA4
KSk7Ci0gICAgICAgIHVpbnQ4eDh4NF90IFJHQkE4ID0ge3tjb21wb25lbnRSLCBjb21wb25lbnRH
LCBjb21wb25lbnRCLCBjb21wb25lbnRBfX07Ci0gICAgICAgIHZzdDRfdTgoZGVzdGluYXRpb24s
IFJHQkE4KTsKLSAgICAgICAgZGVzdGluYXRpb24gKz0gMzI7Ci0gICAgfQotCi0gICAgc291cmNl
ICs9IGNvbXBvbmVudHNTaXplOwotICAgIHBpeGVsc1BlclJvdyA9IHRhaWxDb21wb25lbnRzIC8g
MzsKLX0KLQotQUxXQVlTX0lOTElORSB2b2lkIHVucGFja09uZVJvd09mQVJHQjE2TGl0dGxlVG9S
R0JBOChjb25zdCB1aW50MTZfdComIHNvdXJjZSwgdWludDhfdComIGRlc3RpbmF0aW9uLCB1bnNp
Z25lZCYgcGl4ZWxzUGVyUm93KQotewotICAgIHVuc2lnbmVkIGNvbXBvbmVudHNQZXJSb3cgPSBw
aXhlbHNQZXJSb3cgKiA0OwotICAgIHVuc2lnbmVkIHRhaWxDb21wb25lbnRzID0gY29tcG9uZW50
c1BlclJvdyAlIDMyOwotICAgIHVuc2lnbmVkIGNvbXBvbmVudHNTaXplID0gY29tcG9uZW50c1Bl
clJvdyAtIHRhaWxDb21wb25lbnRzOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNv
bXBvbmVudHNTaXplOyBpICs9IDMyKSB7Ci0gICAgICAgIHVpbnQxNng4eDRfdCBBUkdCMTYgPSB2
bGQ0cV91MTYoc291cmNlICsgaSk7Ci0gICAgICAgIHVpbnQ4eDhfdCBjb21wb25lbnRBID0gdnFt
b3ZuX3UxNih2c2hycV9uX3UxNihBUkdCMTYudmFsWzBdLCA4KSk7Ci0gICAgICAgIHVpbnQ4eDhf
dCBjb21wb25lbnRSID0gdnFtb3ZuX3UxNih2c2hycV9uX3UxNihBUkdCMTYudmFsWzFdLCA4KSk7
Ci0gICAgICAgIHVpbnQ4eDhfdCBjb21wb25lbnRHID0gdnFtb3ZuX3UxNih2c2hycV9uX3UxNihB
UkdCMTYudmFsWzJdLCA4KSk7Ci0gICAgICAgIHVpbnQ4eDhfdCBjb21wb25lbnRCID0gdnFtb3Zu
X3UxNih2c2hycV9uX3UxNihBUkdCMTYudmFsWzNdLCA4KSk7Ci0gICAgICAgIHVpbnQ4eDh4NF90
IFJHQkE4ID0ge3tjb21wb25lbnRSLCBjb21wb25lbnRHLCBjb21wb25lbnRCLCBjb21wb25lbnRB
fX07Ci0gICAgICAgIHZzdDRfdTgoZGVzdGluYXRpb24gKyBpLCBSR0JBOCk7Ci0gICAgfQotCi0g
ICAgc291cmNlICs9IGNvbXBvbmVudHNTaXplOwotICAgIGRlc3RpbmF0aW9uICs9IGNvbXBvbmVu
dHNTaXplOwotICAgIHBpeGVsc1BlclJvdyA9IHRhaWxDb21wb25lbnRzIC8gNDsKLX0KLQotQUxX
QVlTX0lOTElORSB2b2lkIHVucGFja09uZVJvd09mQkdSQTE2TGl0dGxlVG9SR0JBOChjb25zdCB1
aW50MTZfdComIHNvdXJjZSwgdWludDhfdComIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCYgcGl4ZWxz
UGVyUm93KQotewotICAgIHVuc2lnbmVkIGNvbXBvbmVudHNQZXJSb3cgPSBwaXhlbHNQZXJSb3cg
KiA0OwotICAgIHVuc2lnbmVkIHRhaWxDb21wb25lbnRzID0gY29tcG9uZW50c1BlclJvdyAlIDMy
OwotICAgIHVuc2lnbmVkIGNvbXBvbmVudHNTaXplID0gY29tcG9uZW50c1BlclJvdyAtIHRhaWxD
b21wb25lbnRzOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvbXBvbmVudHNTaXpl
OyBpICs9IDMyKSB7Ci0gICAgICAgIHVpbnQxNng4eDRfdCBBUkdCMTYgPSB2bGQ0cV91MTYoc291
cmNlICsgaSk7Ci0gICAgICAgIHVpbnQ4eDhfdCBjb21wb25lbnRCID0gdnFtb3ZuX3UxNih2c2hy
cV9uX3UxNihBUkdCMTYudmFsWzBdLCA4KSk7Ci0gICAgICAgIHVpbnQ4eDhfdCBjb21wb25lbnRH
ID0gdnFtb3ZuX3UxNih2c2hycV9uX3UxNihBUkdCMTYudmFsWzFdLCA4KSk7Ci0gICAgICAgIHVp
bnQ4eDhfdCBjb21wb25lbnRSID0gdnFtb3ZuX3UxNih2c2hycV9uX3UxNihBUkdCMTYudmFsWzJd
LCA4KSk7Ci0gICAgICAgIHVpbnQ4eDhfdCBjb21wb25lbnRBID0gdnFtb3ZuX3UxNih2c2hycV9u
X3UxNihBUkdCMTYudmFsWzNdLCA4KSk7Ci0gICAgICAgIHVpbnQ4eDh4NF90IFJHQkE4ID0ge3tj
b21wb25lbnRSLCBjb21wb25lbnRHLCBjb21wb25lbnRCLCBjb21wb25lbnRBfX07Ci0gICAgICAg
IHZzdDRfdTgoZGVzdGluYXRpb24gKyBpLCBSR0JBOCk7Ci0gICAgfQotCi0gICAgc291cmNlICs9
IGNvbXBvbmVudHNTaXplOwotICAgIGRlc3RpbmF0aW9uICs9IGNvbXBvbmVudHNTaXplOwotICAg
IHBpeGVsc1BlclJvdyA9IHRhaWxDb21wb25lbnRzIC8gNDsKLX0KLQotQUxXQVlTX0lOTElORSB2
b2lkIHVucGFja09uZVJvd09mUkdCQTQ0NDRUb1JHQkE4KGNvbnN0IHVpbnQxNl90KiYgc291cmNl
LCB1aW50OF90KiYgZGVzdGluYXRpb24sIHVuc2lnbmVkJiBwaXhlbHNQZXJSb3cpCi17Ci0gICAg
dW5zaWduZWQgdGFpbFBpeGVscyA9IHBpeGVsc1BlclJvdyAlIDg7Ci0gICAgdW5zaWduZWQgcGl4
ZWxTaXplID0gcGl4ZWxzUGVyUm93IC0gdGFpbFBpeGVsczsKLQotICAgIHVpbnQxNng4X3QgaW1t
ZWRpYXRlMHgwZiA9IHZkdXBxX25fdTE2KDB4MEYpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBwaXhlbFNpemU7IGkgKz0gOCkgewotICAgICAgICB1aW50MTZ4OF90IGVpZ2h0UGl4ZWxz
ID0gdmxkMXFfdTE2KHNvdXJjZSArIGkpOwotCi0gICAgICAgIHVpbnQ4eDhfdCBjb21wb25lbnRS
ID0gdnFtb3ZuX3UxNih2c2hycV9uX3UxNihlaWdodFBpeGVscywgMTIpKTsKLSAgICAgICAgdWlu
dDh4OF90IGNvbXBvbmVudEcgPSB2cW1vdm5fdTE2KHZhbmRxX3UxNih2c2hycV9uX3UxNihlaWdo
dFBpeGVscywgOCksIGltbWVkaWF0ZTB4MGYpKTsKLSAgICAgICAgdWludDh4OF90IGNvbXBvbmVu
dEIgPSB2cW1vdm5fdTE2KHZhbmRxX3UxNih2c2hycV9uX3UxNihlaWdodFBpeGVscywgNCksIGlt
bWVkaWF0ZTB4MGYpKTsKLSAgICAgICAgdWludDh4OF90IGNvbXBvbmVudEEgPSB2cW1vdm5fdTE2
KHZhbmRxX3UxNihlaWdodFBpeGVscywgaW1tZWRpYXRlMHgwZikpOwotCi0gICAgICAgIGNvbXBv
bmVudFIgPSB2b3JyX3U4KHZzaGxfbl91OChjb21wb25lbnRSLCA0KSwgY29tcG9uZW50Uik7Ci0g
ICAgICAgIGNvbXBvbmVudEcgPSB2b3JyX3U4KHZzaGxfbl91OChjb21wb25lbnRHLCA0KSwgY29t
cG9uZW50Ryk7Ci0gICAgICAgIGNvbXBvbmVudEIgPSB2b3JyX3U4KHZzaGxfbl91OChjb21wb25l
bnRCLCA0KSwgY29tcG9uZW50Qik7Ci0gICAgICAgIGNvbXBvbmVudEEgPSB2b3JyX3U4KHZzaGxf
bl91OChjb21wb25lbnRBLCA0KSwgY29tcG9uZW50QSk7Ci0KLSAgICAgICAgdWludDh4OHg0X3Qg
ZGVzdENvbXBvbmVudHMgPSB7e2NvbXBvbmVudFIsIGNvbXBvbmVudEcsIGNvbXBvbmVudEIsIGNv
bXBvbmVudEF9fTsKLSAgICAgICAgdnN0NF91OChkZXN0aW5hdGlvbiwgZGVzdENvbXBvbmVudHMp
OwotICAgICAgICBkZXN0aW5hdGlvbiArPSAzMjsKLSAgICB9Ci0KLSAgICBzb3VyY2UgKz0gcGl4
ZWxTaXplOwotICAgIHBpeGVsc1BlclJvdyA9IHRhaWxQaXhlbHM7Ci19Ci0KLUFMV0FZU19JTkxJ
TkUgdm9pZCBwYWNrT25lUm93T2ZSR0JBOFRvVW5zaWduZWRTaG9ydDQ0NDQoY29uc3QgdWludDhf
dComIHNvdXJjZSwgdWludDE2X3QqJiBkZXN0aW5hdGlvbiwgdW5zaWduZWQmIHBpeGVsc1BlclJv
dykKLXsKLSAgICB1bnNpZ25lZCBjb21wb25lbnRzUGVyUm93ID0gcGl4ZWxzUGVyUm93ICogNDsK
LSAgICB1bnNpZ25lZCB0YWlsQ29tcG9uZW50cyA9IGNvbXBvbmVudHNQZXJSb3cgJSAzMjsKLSAg
ICB1bnNpZ25lZCBjb21wb25lbnRzU2l6ZSA9IGNvbXBvbmVudHNQZXJSb3cgLSB0YWlsQ29tcG9u
ZW50czsKLQotICAgIHVpbnQ4X3QqIGRzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRl
c3RpbmF0aW9uKTsKLSAgICB1aW50OHg4X3QgaW1tZWRpYXRlMHhmMCA9IHZkdXBfbl91OCgweEYw
KTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29tcG9uZW50c1NpemU7IGkgKz0gMzIp
IHsKLSAgICAgICAgdWludDh4OHg0X3QgUkdCQTggPSB2bGQ0X3U4KHNvdXJjZSArIGkpOwotCi0g
ICAgICAgIHVpbnQ4eDhfdCBjb21wb25lbnRSID0gdmFuZF91OChSR0JBOC52YWxbMF0sIGltbWVk
aWF0ZTB4ZjApOwotICAgICAgICB1aW50OHg4X3QgY29tcG9uZW50RyA9IHZzaHJfbl91OCh2YW5k
X3U4KFJHQkE4LnZhbFsxXSwgaW1tZWRpYXRlMHhmMCksIDQpOwotICAgICAgICB1aW50OHg4X3Qg
Y29tcG9uZW50QiA9IHZhbmRfdTgoUkdCQTgudmFsWzJdLCBpbW1lZGlhdGUweGYwKTsKLSAgICAg
ICAgdWludDh4OF90IGNvbXBvbmVudEEgPSB2c2hyX25fdTgodmFuZF91OChSR0JBOC52YWxbM10s
IGltbWVkaWF0ZTB4ZjApLCA0KTsKLQotICAgICAgICB1aW50OHg4eDJfdCBSR0JBNDsKLSAgICAg
ICAgUkdCQTQudmFsWzBdID0gdm9ycl91OChjb21wb25lbnRCLCBjb21wb25lbnRBKTsKLSAgICAg
ICAgUkdCQTQudmFsWzFdID0gdm9ycl91OChjb21wb25lbnRSLCBjb21wb25lbnRHKTsKLSAgICAg
ICAgdnN0Ml91OChkc3QsIFJHQkE0KTsKLSAgICAgICAgZHN0ICs9IDE2OwotICAgIH0KLQotICAg
IHNvdXJjZSArPSBjb21wb25lbnRzU2l6ZTsKLSAgICBkZXN0aW5hdGlvbiArPSBjb21wb25lbnRz
U2l6ZSAvIDQ7Ci0gICAgcGl4ZWxzUGVyUm93ID0gdGFpbENvbXBvbmVudHMgLyA0OwotfQotCi1B
TFdBWVNfSU5MSU5FIHZvaWQgdW5wYWNrT25lUm93T2ZSR0JBNTU1MVRvUkdCQTgoY29uc3QgdWlu
dDE2X3QqJiBzb3VyY2UsIHVpbnQ4X3QqJiBkZXN0aW5hdGlvbiwgdW5zaWduZWQmIHBpeGVsc1Bl
clJvdykKLXsKLSAgICB1bnNpZ25lZCB0YWlsUGl4ZWxzID0gcGl4ZWxzUGVyUm93ICUgODsKLSAg
ICB1bnNpZ25lZCBwaXhlbFNpemUgPSBwaXhlbHNQZXJSb3cgLSB0YWlsUGl4ZWxzOwotCi0gICAg
dWludDh4OF90IGltbWVkaWF0ZTB4NyA9IHZkdXBfbl91OCgweDcpOwotICAgIHVpbnQ4eDhfdCBp
bW1lZGlhdGUweGZmID0gdmR1cF9uX3U4KDB4RkYpOwotICAgIHVpbnQxNng4X3QgaW1tZWRpYXRl
MHgxZiA9IHZkdXBxX25fdTE2KDB4MUYpOwotICAgIHVpbnQxNng4X3QgaW1tZWRpYXRlMHgxID0g
dmR1cHFfbl91MTYoMHgxKTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwaXhlbFNp
emU7IGkgKz0gOCkgewotICAgICAgICB1aW50MTZ4OF90IGVpZ2h0UGl4ZWxzID0gdmxkMXFfdTE2
KHNvdXJjZSArIGkpOwotCi0gICAgICAgIHVpbnQ4eDhfdCBjb21wb25lbnRSID0gdnFtb3ZuX3Ux
Nih2c2hycV9uX3UxNihlaWdodFBpeGVscywgMTEpKTsKLSAgICAgICAgdWludDh4OF90IGNvbXBv
bmVudEcgPSB2cW1vdm5fdTE2KHZhbmRxX3UxNih2c2hycV9uX3UxNihlaWdodFBpeGVscywgNiks
IGltbWVkaWF0ZTB4MWYpKTsKLSAgICAgICAgdWludDh4OF90IGNvbXBvbmVudEIgPSB2cW1vdm5f
dTE2KHZhbmRxX3UxNih2c2hycV9uX3UxNihlaWdodFBpeGVscywgMSksIGltbWVkaWF0ZTB4MWYp
KTsKLSAgICAgICAgdWludDh4OF90IGNvbXBvbmVudEEgPSB2cW1vdm5fdTE2KHZhbmRxX3UxNihl
aWdodFBpeGVscywgaW1tZWRpYXRlMHgxKSk7Ci0KLSAgICAgICAgY29tcG9uZW50UiA9IHZvcnJf
dTgodnNobF9uX3U4KGNvbXBvbmVudFIsIDMpLCB2YW5kX3U4KGNvbXBvbmVudFIsIGltbWVkaWF0
ZTB4NykpOwotICAgICAgICBjb21wb25lbnRHID0gdm9ycl91OCh2c2hsX25fdTgoY29tcG9uZW50
RywgMyksIHZhbmRfdTgoY29tcG9uZW50RywgaW1tZWRpYXRlMHg3KSk7Ci0gICAgICAgIGNvbXBv
bmVudEIgPSB2b3JyX3U4KHZzaGxfbl91OChjb21wb25lbnRCLCAzKSwgdmFuZF91OChjb21wb25l
bnRCLCBpbW1lZGlhdGUweDcpKTsKLSAgICAgICAgY29tcG9uZW50QSA9IHZtdWxfdTgoY29tcG9u
ZW50QSwgaW1tZWRpYXRlMHhmZik7Ci0KLSAgICAgICAgdWludDh4OHg0X3QgZGVzdENvbXBvbmVu
dHMgPSB7e2NvbXBvbmVudFIsIGNvbXBvbmVudEcsIGNvbXBvbmVudEIsIGNvbXBvbmVudEF9fTsK
LSAgICAgICAgdnN0NF91OChkZXN0aW5hdGlvbiwgZGVzdENvbXBvbmVudHMpOwotICAgICAgICBk
ZXN0aW5hdGlvbiArPSAzMjsKLSAgICB9Ci0KLSAgICBzb3VyY2UgKz0gcGl4ZWxTaXplOwotICAg
IHBpeGVsc1BlclJvdyA9IHRhaWxQaXhlbHM7Ci19Ci0KLUFMV0FZU19JTkxJTkUgdm9pZCBwYWNr
T25lUm93T2ZSR0JBOFRvVW5zaWduZWRTaG9ydDU1NTEoY29uc3QgdWludDhfdComIHNvdXJjZSwg
dWludDE2X3QqJiBkZXN0aW5hdGlvbiwgdW5zaWduZWQmIHBpeGVsc1BlclJvdykKLXsKLSAgICB1
bnNpZ25lZCBjb21wb25lbnRzUGVyUm93ID0gcGl4ZWxzUGVyUm93ICogNDsKLSAgICB1bnNpZ25l
ZCB0YWlsQ29tcG9uZW50cyA9IGNvbXBvbmVudHNQZXJSb3cgJSAzMjsKLSAgICB1bnNpZ25lZCBj
b21wb25lbnRzU2l6ZSA9IGNvbXBvbmVudHNQZXJSb3cgLSB0YWlsQ29tcG9uZW50czsKLQotICAg
IHVpbnQ4X3QqIGRzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRlc3RpbmF0aW9uKTsK
LQotICAgIHVpbnQ4eDhfdCBpbW1lZGlhdGUweGY4ID0gdmR1cF9uX3U4KDB4RjgpOwotICAgIHVp
bnQ4eDhfdCBpbW1lZGlhdGUweDE4ID0gdmR1cF9uX3U4KDB4MTgpOwotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBjb21wb25lbnRzU2l6ZTsgaSArPSAzMikgewotICAgICAgICB1aW50OHg4
eDRfdCBSR0JBOCA9IHZsZDRfdTgoc291cmNlICsgaSk7Ci0KLSAgICAgICAgdWludDh4OF90IGNv
bXBvbmVudFIgPSB2YW5kX3U4KFJHQkE4LnZhbFswXSwgaW1tZWRpYXRlMHhmOCk7Ci0gICAgICAg
IHVpbnQ4eDhfdCBjb21wb25lbnRHM2JpdCA9IHZzaHJfbl91OChSR0JBOC52YWxbMV0sIDUpOwot
Ci0gICAgICAgIHVpbnQ4eDhfdCBjb21wb25lbnRHMmJpdCA9IHZzaGxfbl91OCh2YW5kX3U4KFJH
QkE4LnZhbFsxXSwgaW1tZWRpYXRlMHgxOCksIDMpOwotICAgICAgICB1aW50OHg4X3QgY29tcG9u
ZW50QiA9IHZzaHJfbl91OCh2YW5kX3U4KFJHQkE4LnZhbFsyXSwgaW1tZWRpYXRlMHhmOCksIDIp
OwotICAgICAgICB1aW50OHg4X3QgY29tcG9uZW50QSA9IHZzaHJfbl91OChSR0JBOC52YWxbM10s
IDcpOwotCi0gICAgICAgIHVpbnQ4eDh4Ml90IFJHQkE1NTUxOwotICAgICAgICBSR0JBNTU1MS52
YWxbMF0gPSB2b3JyX3U4KHZvcnJfdTgoY29tcG9uZW50RzJiaXQsIGNvbXBvbmVudEIpLCBjb21w
b25lbnRBKTsKLSAgICAgICAgUkdCQTU1NTEudmFsWzFdID0gdm9ycl91OChjb21wb25lbnRSLCBj
b21wb25lbnRHM2JpdCk7Ci0gICAgICAgIHZzdDJfdTgoZHN0LCBSR0JBNTU1MSk7Ci0gICAgICAg
IGRzdCArPSAxNjsKLSAgICB9Ci0KLSAgICBzb3VyY2UgKz0gY29tcG9uZW50c1NpemU7Ci0gICAg
ZGVzdGluYXRpb24gKz0gY29tcG9uZW50c1NpemUgLyA0OwotICAgIHBpeGVsc1BlclJvdyA9IHRh
aWxDb21wb25lbnRzIC8gNDsKLX0KLQotQUxXQVlTX0lOTElORSB2b2lkIHVucGFja09uZVJvd09m
UkdCNTY1VG9SR0JBOChjb25zdCB1aW50MTZfdComIHNvdXJjZSwgdWludDhfdComIGRlc3RpbmF0
aW9uLCB1bnNpZ25lZCYgcGl4ZWxzUGVyUm93KQotewotICAgIHVuc2lnbmVkIHRhaWxQaXhlbHMg
PSBwaXhlbHNQZXJSb3cgJSA4OwotICAgIHVuc2lnbmVkIHBpeGVsU2l6ZSA9IHBpeGVsc1BlclJv
dyAtIHRhaWxQaXhlbHM7Ci0KLSAgICB1aW50MTZ4OF90IGltbWVkaWF0ZTB4M2YgPSB2ZHVwcV9u
X3UxNigweDNGKTsKLSAgICB1aW50MTZ4OF90IGltbWVkaWF0ZTB4MWYgPSB2ZHVwcV9uX3UxNigw
eDFGKTsKLSAgICB1aW50OHg4X3QgaW1tZWRpYXRlMHgzID0gdmR1cF9uX3U4KDB4Myk7Ci0gICAg
dWludDh4OF90IGltbWVkaWF0ZTB4NyA9IHZkdXBfbl91OCgweDcpOwotCi0gICAgdWludDh4OF90
IGNvbXBvbmVudEEgPSB2ZHVwX25fdTgoMHhGRik7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgcGl4ZWxTaXplOyBpICs9IDgpIHsKLSAgICAgICAgdWludDE2eDhfdCBlaWdodFBpeGVs
cyA9IHZsZDFxX3UxNihzb3VyY2UgKyBpKTsKLQotICAgICAgICB1aW50OHg4X3QgY29tcG9uZW50
UiA9IHZxbW92bl91MTYodnNocnFfbl91MTYoZWlnaHRQaXhlbHMsIDExKSk7Ci0gICAgICAgIHVp
bnQ4eDhfdCBjb21wb25lbnRHID0gdnFtb3ZuX3UxNih2YW5kcV91MTYodnNocnFfbl91MTYoZWln
aHRQaXhlbHMsIDUpLCBpbW1lZGlhdGUweDNmKSk7Ci0gICAgICAgIHVpbnQ4eDhfdCBjb21wb25l
bnRCID0gdnFtb3ZuX3UxNih2YW5kcV91MTYoZWlnaHRQaXhlbHMsIGltbWVkaWF0ZTB4MWYpKTsK
LQotICAgICAgICBjb21wb25lbnRSID0gdm9ycl91OCh2c2hsX25fdTgoY29tcG9uZW50UiwgMyks
IHZhbmRfdTgoY29tcG9uZW50UiwgaW1tZWRpYXRlMHg3KSk7Ci0gICAgICAgIGNvbXBvbmVudEcg
PSB2b3JyX3U4KHZzaGxfbl91OChjb21wb25lbnRHLCAyKSwgdmFuZF91OChjb21wb25lbnRHLCBp
bW1lZGlhdGUweDMpKTsKLSAgICAgICAgY29tcG9uZW50QiA9IHZvcnJfdTgodnNobF9uX3U4KGNv
bXBvbmVudEIsIDMpLCB2YW5kX3U4KGNvbXBvbmVudEIsIGltbWVkaWF0ZTB4NykpOwotCi0gICAg
ICAgIHVpbnQ4eDh4NF90IGRlc3RDb21wb25lbnRzID0ge3tjb21wb25lbnRSLCBjb21wb25lbnRH
LCBjb21wb25lbnRCLCBjb21wb25lbnRBfX07Ci0gICAgICAgIHZzdDRfdTgoZGVzdGluYXRpb24s
IGRlc3RDb21wb25lbnRzKTsKLSAgICAgICAgZGVzdGluYXRpb24gKz0gMzI7Ci0gICAgfQotCi0g
ICAgc291cmNlICs9IHBpeGVsU2l6ZTsKLSAgICBwaXhlbHNQZXJSb3cgPSB0YWlsUGl4ZWxzOwot
fQotCi1BTFdBWVNfSU5MSU5FIHZvaWQgcGFja09uZVJvd09mUkdCQThUb1Vuc2lnbmVkU2hvcnQ1
NjUoY29uc3QgdWludDhfdComIHNvdXJjZSwgdWludDE2X3QqJiBkZXN0aW5hdGlvbiwgdW5zaWdu
ZWQmIHBpeGVsc1BlclJvdykKLXsKLSAgICB1bnNpZ25lZCBjb21wb25lbnRzUGVyUm93ID0gcGl4
ZWxzUGVyUm93ICogNDsKLSAgICB1bnNpZ25lZCB0YWlsQ29tcG9uZW50cyA9IGNvbXBvbmVudHNQ
ZXJSb3cgJSAzMjsKLSAgICB1bnNpZ25lZCBjb21wb25lbnRzU2l6ZSA9IGNvbXBvbmVudHNQZXJS
b3cgLSB0YWlsQ29tcG9uZW50czsKLSAgICB1aW50OF90KiBkc3QgPSByZWludGVycHJldF9jYXN0
PHVpbnQ4X3QqPihkZXN0aW5hdGlvbik7Ci0KLSAgICB1aW50OHg4X3QgaW1tZWRpYXRlMHhmOCA9
IHZkdXBfbl91OCgweEY4KTsKLSAgICB1aW50OHg4X3QgaW1tZWRpYXRlMHgxYyA9IHZkdXBfbl91
OCgweDFDKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29tcG9uZW50c1NpemU7IGkg
Kz0gMzIpIHsKLSAgICAgICAgdWludDh4OHg0X3QgUkdCQTggPSB2bGQ0X3U4KHNvdXJjZSArIGkp
OwotCi0gICAgICAgIHVpbnQ4eDhfdCBjb21wb25lbnRSID0gdmFuZF91OChSR0JBOC52YWxbMF0s
IGltbWVkaWF0ZTB4ZjgpOwotICAgICAgICB1aW50OHg4X3QgY29tcG9uZW50R0xlZnQgPSB2c2hy
X25fdTgoUkdCQTgudmFsWzFdLCA1KTsKLSAgICAgICAgdWludDh4OF90IGNvbXBvbmVudEdSaWdo
dCA9IHZzaGxfbl91OCh2YW5kX3U4KFJHQkE4LnZhbFsxXSwgaW1tZWRpYXRlMHgxYyksIDMpOwot
ICAgICAgICB1aW50OHg4X3QgY29tcG9uZW50QiA9IHZzaHJfbl91OCh2YW5kX3U4KFJHQkE4LnZh
bFsyXSwgaW1tZWRpYXRlMHhmOCksIDMpOwotCi0gICAgICAgIHVpbnQ4eDh4Ml90IFJHQjU2NTsK
LSAgICAgICAgUkdCNTY1LnZhbFswXSA9IHZvcnJfdTgoY29tcG9uZW50R1JpZ2h0LCBjb21wb25l
bnRCKTsKLSAgICAgICAgUkdCNTY1LnZhbFsxXSA9IHZvcnJfdTgoY29tcG9uZW50UiwgY29tcG9u
ZW50R0xlZnQpOwotICAgICAgICB2c3QyX3U4KGRzdCwgUkdCNTY1KTsKLSAgICAgICAgZHN0ICs9
IDE2OwotICAgIH0KLQotICAgIHNvdXJjZSArPSBjb21wb25lbnRzU2l6ZTsKLSAgICBkZXN0aW5h
dGlvbiArPSBjb21wb25lbnRzU2l6ZSAvIDQ7Ci0gICAgcGl4ZWxzUGVyUm93ID0gdGFpbENvbXBv
bmVudHMgLyA0OwotfQotCi19IC8vIG5hbWVzcGFjZSBTSU1ECi0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEhBVkUoQVJNX05FT05fSU5UUklOU0lDUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycy9GRUJsZW5k
TkVPTi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3B1L2FybS9maWx0ZXJz
L0ZFQmxlbmRORU9OLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1MmI4YWNkMzgz
ZWM4Mzk0ZDljNzhhOWUxODNkNDU4MjllYmRiMTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3B1
L2FybS9maWx0ZXJzL0ZFQmxlbmRORU9OLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMDcgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBVbml2ZXJzaXR5IG9mIFN6ZWdlZAotICogQ29w
eXJpZ2h0IChDKSAyMDEyIEdhYm9yIFJhcGNzYW55aQotICogQ29weXJpZ2h0IChDKSAyMDE0IEFk
b2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVU5JVkVSU0lUWSBPRiBTWkVHRUQg
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBVTklWRVJTSVRZIE9GIFNaRUdFRCBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgSEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQotCi0jaW5jbHVkZSAi
RkVCbGVuZC5oIgotI2luY2x1ZGUgIlBpeGVsQnVmZmVyLmgiCi0jaW5jbHVkZSA8YXJtX25lb24u
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBGRUJsZW5kVXRpbGl0aWVzTkVPTiB7
Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGlubGluZSB1aW50MTZ4OF90IGRpdjI1NSh1aW50MTZ4OF90
IG51bSwgdWludDE2eDhfdCBzaXh0ZWVuQ29uc3QyNTUsIHVpbnQxNng4X3Qgc2l4dGVlbkNvbnN0
T25lKQotICAgIHsKLSAgICAgICAgdWludDE2eDhfdCBxdW90aWVudCA9IHZzaHJxX25fdTE2KG51
bSwgOCk7Ci0gICAgICAgIHVpbnQxNng4X3QgcmVtYWluZGVyID0gdmFkZHFfdTE2KHZzdWJxX3Ux
NihudW0sIHZtdWxxX3UxNihzaXh0ZWVuQ29uc3QyNTUsIHF1b3RpZW50KSksIHNpeHRlZW5Db25z
dE9uZSk7Ci0gICAgICAgIHJldHVybiB2YWRkcV91MTYocXVvdGllbnQsIHZzaHJxX25fdTE2KHJl
bWFpbmRlciwgOCkpOwotICAgIH0KLQotICAgIHN0YXRpYyBpbmxpbmUgdWludDE2eDhfdCBub3Jt
YWwodWludDE2eDhfdCBwaXhlbEEsIHVpbnQxNng4X3QgcGl4ZWxCLCB1aW50MTZ4OF90IGFscGhh
QSwgdWludDE2eDhfdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQx
Nng4X3Qgc2l4dGVlbkNvbnN0MjU1LCB1aW50MTZ4OF90IHNpeHRlZW5Db25zdE9uZSkKLSAgICB7
Ci0gICAgICAgIHVpbnQxNng4X3QgdG1wMSA9IHZzdWJxX3UxNihzaXh0ZWVuQ29uc3QyNTUsIGFs
cGhhQSk7Ci0gICAgICAgIHVpbnQxNng4X3QgdG1wMiA9IHZtdWxxX3UxNih0bXAxLCBwaXhlbEIp
OwotICAgICAgICB1aW50MTZ4OF90IHRtcDMgPSBkaXYyNTUodG1wMiwgc2l4dGVlbkNvbnN0MjU1
LCBzaXh0ZWVuQ29uc3RPbmUpOwotICAgICAgICByZXR1cm4gdmFkZHFfdTE2KHRtcDMsIHBpeGVs
QSk7Ci0gICAgfQotCi0gICAgc3RhdGljIGlubGluZSB1aW50MTZ4OF90IG11bHRpcGx5KHVpbnQx
Nng4X3QgcGl4ZWxBLCB1aW50MTZ4OF90IHBpeGVsQiwgdWludDE2eDhfdCBhbHBoYUEsIHVpbnQx
Nng4X3QgYWxwaGFCLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50
MTZ4OF90IHNpeHRlZW5Db25zdDI1NSwgdWludDE2eDhfdCBzaXh0ZWVuQ29uc3RPbmUpCi0gICAg
ewotICAgICAgICB1aW50MTZ4OF90IHRtcDEgPSB2c3VicV91MTYoc2l4dGVlbkNvbnN0MjU1LCBh
bHBoYUEpOwotICAgICAgICB1aW50MTZ4OF90IHRtcDIgPSB2bXVscV91MTYodG1wMSwgcGl4ZWxC
KTsKLSAgICAgICAgdWludDE2eDhfdCB0bXAzID0gdmFkZHFfdTE2KHZzdWJxX3UxNihzaXh0ZWVu
Q29uc3QyNTUsIGFscGhhQiksIHBpeGVsQik7Ci0gICAgICAgIHVpbnQxNng4X3QgdG1wNCA9IHZt
dWxxX3UxNih0bXAzLCBwaXhlbEEpOwotICAgICAgICB1aW50MTZ4OF90IHRtcDUgPSB2YWRkcV91
MTYodG1wMiwgdG1wNCk7Ci0gICAgICAgIHJldHVybiBkaXYyNTUodG1wNSwgc2l4dGVlbkNvbnN0
MjU1LCBzaXh0ZWVuQ29uc3RPbmUpOwotICAgIH0KLQotICAgIHN0YXRpYyBpbmxpbmUgdWludDE2
eDhfdCBzY3JlZW4odWludDE2eDhfdCBwaXhlbEEsIHVpbnQxNng4X3QgcGl4ZWxCLCB1aW50MTZ4
OF90LCB1aW50MTZ4OF90LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDE2eDhfdCBzaXh0ZWVuQ29uc3QyNTUsIHVpbnQxNng4X3Qgc2l4dGVlbkNvbnN0T25lKQotICAg
IHsKLSAgICAgICAgdWludDE2eDhfdCB0bXAxID0gdmFkZHFfdTE2KHBpeGVsQSwgcGl4ZWxCKTsK
LSAgICAgICAgdWludDE2eDhfdCB0bXAyID0gdm11bHFfdTE2KHBpeGVsQSwgcGl4ZWxCKTsKLSAg
ICAgICAgdWludDE2eDhfdCB0bXAzID0gZGl2MjU1KHRtcDIsIHNpeHRlZW5Db25zdDI1NSwgc2l4
dGVlbkNvbnN0T25lKTsKLSAgICAgICAgcmV0dXJuIHZzdWJxX3UxNih0bXAxLCB0bXAzKTsKLSAg
ICB9Ci0KLSAgICBzdGF0aWMgaW5saW5lIHVpbnQxNng4X3QgZGFya2VuKHVpbnQxNng4X3QgcGl4
ZWxBLCB1aW50MTZ4OF90IHBpeGVsQiwgdWludDE2eDhfdCBhbHBoYUEsIHVpbnQxNng4X3QgYWxw
aGFCLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2eDhfdCBzaXh0
ZWVuQ29uc3QyNTUsIHVpbnQxNng4X3Qgc2l4dGVlbkNvbnN0T25lKQotICAgIHsKLSAgICAgICAg
dWludDE2eDhfdCB0bXAxID0gdnN1YnFfdTE2KHNpeHRlZW5Db25zdDI1NSwgYWxwaGFBKTsKLSAg
ICAgICAgdWludDE2eDhfdCB0bXAyID0gdm11bHFfdTE2KHRtcDEsIHBpeGVsQik7Ci0gICAgICAg
IHVpbnQxNng4X3QgdG1wMyA9IGRpdjI1NSh0bXAyLCBzaXh0ZWVuQ29uc3QyNTUsIHNpeHRlZW5D
b25zdE9uZSk7Ci0gICAgICAgIHVpbnQxNng4X3QgdG1wNCA9IHZhZGRxX3UxNih0bXAzLCBwaXhl
bEEpOwotCi0gICAgICAgIHVpbnQxNng4X3QgdG1wNSA9IHZzdWJxX3UxNihzaXh0ZWVuQ29uc3Qy
NTUsIGFscGhhQik7Ci0gICAgICAgIHVpbnQxNng4X3QgdG1wNiA9IHZtdWxxX3UxNih0bXA1LCBw
aXhlbEEpOwotICAgICAgICB1aW50MTZ4OF90IHRtcDcgPSBkaXYyNTUodG1wNiwgc2l4dGVlbkNv
bnN0MjU1LCBzaXh0ZWVuQ29uc3RPbmUpOwotICAgICAgICB1aW50MTZ4OF90IHRtcDggPSB2YWRk
cV91MTYodG1wNywgcGl4ZWxCKTsKLQotICAgICAgICByZXR1cm4gdm1pbnFfdTE2KHRtcDQsIHRt
cDgpOwotICAgIH0KLQotICAgIHN0YXRpYyBpbmxpbmUgdWludDE2eDhfdCBsaWdodGVuKHVpbnQx
Nng4X3QgcGl4ZWxBLCB1aW50MTZ4OF90IHBpeGVsQiwgdWludDE2eDhfdCBhbHBoYUEsIHVpbnQx
Nng4X3QgYWxwaGFCLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQx
Nng4X3Qgc2l4dGVlbkNvbnN0MjU1LCB1aW50MTZ4OF90IHNpeHRlZW5Db25zdE9uZSkKLSAgICB7
Ci0gICAgICAgIHVpbnQxNng4X3QgdG1wMSA9IHZzdWJxX3UxNihzaXh0ZWVuQ29uc3QyNTUsIGFs
cGhhQSk7Ci0gICAgICAgIHVpbnQxNng4X3QgdG1wMiA9IHZtdWxxX3UxNih0bXAxLCBwaXhlbEIp
OwotICAgICAgICB1aW50MTZ4OF90IHRtcDMgPSBkaXYyNTUodG1wMiwgc2l4dGVlbkNvbnN0MjU1
LCBzaXh0ZWVuQ29uc3RPbmUpOwotICAgICAgICB1aW50MTZ4OF90IHRtcDQgPSB2YWRkcV91MTYo
dG1wMywgcGl4ZWxBKTsKLQotICAgICAgICB1aW50MTZ4OF90IHRtcDUgPSB2c3VicV91MTYoc2l4
dGVlbkNvbnN0MjU1LCBhbHBoYUIpOwotICAgICAgICB1aW50MTZ4OF90IHRtcDYgPSB2bXVscV91
MTYodG1wNSwgcGl4ZWxBKTsKLSAgICAgICAgdWludDE2eDhfdCB0bXA3ID0gZGl2MjU1KHRtcDYs
IHNpeHRlZW5Db25zdDI1NSwgc2l4dGVlbkNvbnN0T25lKTsKLSAgICAgICAgdWludDE2eDhfdCB0
bXA4ID0gdmFkZHFfdTE2KHRtcDcsIHBpeGVsQik7Ci0KLSAgICAgICAgcmV0dXJuIHZtYXhxX3Ux
Nih0bXA0LCB0bXA4KTsKLSAgICB9Ci19OwotCi1ib29sIEZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlT
b2Z0d2FyZShjb25zdCBGaWx0ZXImKQotewotICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVm
ZmVjdCgwKTsKLSAgICBGaWx0ZXJFZmZlY3QqIGluMiA9IGlucHV0RWZmZWN0KDEpOwotCi0gICAg
YXV0byYgZGVzdGluYXRpb25QaXhlbEJ1ZmZlciA9IHBpeGVsQnVmZmVyUmVzdWx0KEFscGhhUHJl
bXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQpOwotICAgIGlmICghZGVzdGluYXRpb25QaXhl
bEJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byYgZGVzdGluYXRpb25Q
aXhlbEFycmF5ID0gZGVzdGluYXRpb25QaXhlbEJ1ZmZlci0+ZGF0YSgpOwotCi0gICAgSW50UmVj
dCBlZmZlY3RBRHJhd2luZ1JlY3QgPSByZXF1ZXN0ZWRSZWdpb25PZklucHV0UGl4ZWxCdWZmZXIo
aW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOwotICAgIGF1dG8gc291cmNlUGl4ZWxBcnJheUEgPSBp
bi0+Z2V0UGl4ZWxCdWZmZXJSZXN1bHQoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlw
bGllZCwgZWZmZWN0QURyYXdpbmdSZWN0KTsKLQotICAgIEludFJlY3QgZWZmZWN0QkRyYXdpbmdS
ZWN0ID0gcmVxdWVzdGVkUmVnaW9uT2ZJbnB1dFBpeGVsQnVmZmVyKGluMi0+YWJzb2x1dGVQYWlu
dFJlY3QoKSk7Ci0gICAgYXV0byBzb3VyY2VQaXhlbEFycmF5QiA9IGluMi0+Z2V0UGl4ZWxCdWZm
ZXJSZXN1bHQoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgZWZmZWN0QkRy
YXdpbmdSZWN0KTsKLQotICAgIHVuc2lnbmVkIHNvdXJjZVBpeGVsQXJyYXlMZW5ndGggPSBzb3Vy
Y2VQaXhlbEFycmF5QS0+bGVuZ3RoKCk7Ci0gICAgQVNTRVJUKHBpeGVsQXJyYXlMZW5ndGggPT0g
c291cmNlUGl4ZWxBcnJheUItPmxlbmd0aCgpKTsKLQotICAgIGlmIChzb3VyY2VQaXhlbEFycmF5
TGVuZ3RoID49IDgpIHsKLSAgICAgICAgcGxhdGZvcm1BcHBseU5FT04oc291cmNlUGl4ZWxBcnJh
eUEtPmRhdGEoKSwgc291cmNlUGl4ZWxBcnJheUItPmRhdGEoKSwgZGVzdGluYXRpb25QaXhlbEFy
cmF5LmRhdGEoKSwgc291cmNlUGl4ZWxBcnJheUxlbmd0aCk7Ci0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KLSAgICAvLyBJZiB0aGVyZSBpcyBqdXN0IG9uZSBwaXhlbCB3ZSBleHBhbmQgaXQg
dG8gdHdvLgotICAgIEFTU0VSVChzb3VyY2VQaXhlbEFycmF5TGVuZ3RoID4gMCk7Ci0gICAgdWlu
dDMyX3Qgc291cmNlQVsyXSA9IHswLCAwfTsKLSAgICB1aW50MzJfdCBzb3VyY2VCQW5kRGVzdFsy
XSA9IHswLCAwfTsKLQotICAgIHNvdXJjZUFbMF0gPSByZWludGVycHJldF9jYXN0PHVpbnQzMl90
Kj4oc291cmNlUGl4ZWxBcnJheUEtPmRhdGEoKSlbMF07Ci0gICAgc291cmNlQkFuZERlc3RbMF0g
PSByZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4oc291cmNlUGl4ZWxBcnJheUItPmRhdGEoKSlb
MF07Ci0gICAgcGxhdGZvcm1BcHBseU5FT04ocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oc291
cmNlQSksIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHNvdXJjZUJBbmREZXN0KSwgcmVpbnRl
cnByZXRfY2FzdDx1aW50OF90Kj4oc291cmNlQkFuZERlc3QpLCA4KTsKLSAgICByZWludGVycHJl
dF9jYXN0PHVpbnQzMl90Kj4oZGVzdGluYXRpb25QaXhlbEFycmF5LmRhdGEoKSlbMF0gPSBzb3Vy
Y2VCQW5kRGVzdFswXTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBGRUJsZW5kOjpwbGF0
Zm9ybUFwcGx5TkVPTih1bnNpZ25lZCBjaGFyKiBzcmNQaXhlbEFycmF5QSwgdW5zaWduZWQgY2hh
ciogc3JjUGl4ZWxBcnJheUIsIHVuc2lnbmVkIGNoYXIqIGRzdFBpeGVsQXJyYXksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNvbG9yQXJyYXlMZW5ndGgpCi17Ci0g
ICAgdWludDhfdCogc291cmNlUGl4ZWxBID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oc3Jj
UGl4ZWxBcnJheUEpOwotICAgIHVpbnQ4X3QqIHNvdXJjZVBpeGVsQiA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDhfdCo+KHNyY1BpeGVsQXJyYXlCKTsKLSAgICB1aW50OF90KiBkZXN0aW5hdGlvblBp
eGVsID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZHN0UGl4ZWxBcnJheSk7Ci0KLSAgICB1
aW50MTZ4OF90IHNpeHRlZW5Db25zdDI1NSA9IHZkdXBxX25fdTE2KDI1NSk7Ci0gICAgdWludDE2
eDhfdCBzaXh0ZWVuQ29uc3RPbmUgPSB2ZHVwcV9uX3UxNigxKTsKLQotICAgIHVuc2lnbmVkIGNv
bG9yT2Zmc2V0ID0gMDsKLSAgICB3aGlsZSAoY29sb3JPZmZzZXQgPCBjb2xvckFycmF5TGVuZ3Ro
KSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgYWxwaGFBMSA9IHNyY1BpeGVsQXJyYXlBW2NvbG9y
T2Zmc2V0ICsgM107Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgYWxwaGFCMSA9IHNyY1BpeGVsQXJy
YXlCW2NvbG9yT2Zmc2V0ICsgM107Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgYWxwaGFBMiA9IHNy
Y1BpeGVsQXJyYXlBW2NvbG9yT2Zmc2V0ICsgN107Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgYWxw
aGFCMiA9IHNyY1BpeGVsQXJyYXlCW2NvbG9yT2Zmc2V0ICsgN107Ci0KLSAgICAgICAgdWludDE2
eDhfdCBkb3ViYmxlUGl4ZWxBID0gdm1vdmxfdTgodmxkMV91OChzb3VyY2VQaXhlbEEgKyBjb2xv
ck9mZnNldCkpOwotICAgICAgICB1aW50MTZ4OF90IGRvdWJibGVQaXhlbEIgPSB2bW92bF91OCh2
bGQxX3U4KHNvdXJjZVBpeGVsQiArIGNvbG9yT2Zmc2V0KSk7Ci0gICAgICAgIHVpbnQxNng4X3Qg
YWxwaGFBID0gdmNvbWJpbmVfdTE2KHZkdXBfbl91MTYoYWxwaGFBMSksIHZkdXBfbl91MTYoYWxw
aGFBMikpOwotICAgICAgICB1aW50MTZ4OF90IGFscGhhQiA9IHZjb21iaW5lX3UxNih2ZHVwX25f
dTE2KGFscGhhQjEpLCB2ZHVwX25fdTE2KGFscGhhQjIpKTsKLQotICAgICAgICB1aW50MTZ4OF90
IHJlc3VsdDsKLSAgICAgICAgc3dpdGNoIChtX21vZGUpIHsKLSAgICAgICAgY2FzZSBCbGVuZE1v
ZGU6Ok5vcm1hbDoKLSAgICAgICAgICAgIHJlc3VsdCA9IEZFQmxlbmRVdGlsaXRpZXNORU9OOjpu
b3JtYWwoZG91YmJsZVBpeGVsQSwgZG91YmJsZVBpeGVsQiwgYWxwaGFBLCBhbHBoYUIsIHNpeHRl
ZW5Db25zdDI1NSwgc2l4dGVlbkNvbnN0T25lKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIEJsZW5kTW9kZTo6TXVsdGlwbHk6Ci0gICAgICAgICAgICByZXN1bHQgPSBGRUJsZW5k
VXRpbGl0aWVzTkVPTjo6bXVsdGlwbHkoZG91YmJsZVBpeGVsQSwgZG91YmJsZVBpeGVsQiwgYWxw
aGFBLCBhbHBoYUIsIHNpeHRlZW5Db25zdDI1NSwgc2l4dGVlbkNvbnN0T25lKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIEJsZW5kTW9kZTo6U2NyZWVuOgotICAgICAgICAgICAg
cmVzdWx0ID0gRkVCbGVuZFV0aWxpdGllc05FT046OnNjcmVlbihkb3ViYmxlUGl4ZWxBLCBkb3Vi
YmxlUGl4ZWxCLCBhbHBoYUEsIGFscGhhQiwgc2l4dGVlbkNvbnN0MjU1LCBzaXh0ZWVuQ29uc3RP
bmUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQmxlbmRNb2RlOjpEYXJrZW46
Ci0gICAgICAgICAgICByZXN1bHQgPSBGRUJsZW5kVXRpbGl0aWVzTkVPTjo6ZGFya2VuKGRvdWJi
bGVQaXhlbEEsIGRvdWJibGVQaXhlbEIsIGFscGhhQSwgYWxwaGFCLCBzaXh0ZWVuQ29uc3QyNTUs
IHNpeHRlZW5Db25zdE9uZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBCbGVu
ZE1vZGU6OkxpZ2h0ZW46Ci0gICAgICAgICAgICByZXN1bHQgPSBGRUJsZW5kVXRpbGl0aWVzTkVP
Tjo6bGlnaHRlbihkb3ViYmxlUGl4ZWxBLCBkb3ViYmxlUGl4ZWxCLCBhbHBoYUEsIGFscGhhQiwg
c2l4dGVlbkNvbnN0MjU1LCBzaXh0ZWVuQ29uc3RPbmUpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXN1bHQgPSB2ZHVwcV9uX3UxNigwKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgdnN0MV91OChkZXN0aW5hdGlv
blBpeGVsICsgY29sb3JPZmZzZXQsIHZtb3ZuX3UxNihyZXN1bHQpKTsKLQotICAgICAgICB1bnNp
Z25lZCBjaGFyIGFscGhhUjEgPSAyNTUgLSAoKDI1NSAtIGFscGhhQTEpICogKDI1NSAtIGFscGhh
QjEpKSAvIDI1NTsKLSAgICAgICAgdW5zaWduZWQgY2hhciBhbHBoYVIyID0gMjU1IC0gKCgyNTUg
LSBhbHBoYUEyKSAqICgyNTUgLSBhbHBoYUIyKSkgLyAyNTU7Ci0KLSAgICAgICAgZHN0UGl4ZWxB
cnJheVtjb2xvck9mZnNldCArIDNdID0gYWxwaGFSMTsKLSAgICAgICAgZHN0UGl4ZWxBcnJheVtj
b2xvck9mZnNldCArIDddID0gYWxwaGFSMjsKLQotICAgICAgICBjb2xvck9mZnNldCArPSA4Owot
ICAgICAgICBpZiAoY29sb3JPZmZzZXQgPiBjb2xvckFycmF5TGVuZ3RoKSB7Ci0gICAgICAgICAg
ICBBU1NFUlQoY29sb3JPZmZzZXQgLSA0ID09IGNvbG9yQXJyYXlMZW5ndGgpOwotICAgICAgICAg
ICAgY29sb3JPZmZzZXQgPSBjb2xvckFycmF5TGVuZ3RoIC0gODsKLSAgICAgICAgfQotICAgIH0K
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gSEFWRShBUk1fTkVPTl9J
TlRSSU5TSUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3B1L2FybS9maWx0ZXJzL0ZFQ29tcG9zaXRlQXJpdGhtZXRpY05FT04uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycy9GRUNvbXBvc2l0ZUFyaXRobWV0
aWNORU9OLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0Y2JhZWEyOWM5ZWRhMjk4
YThmNjZiMGRkNDkxMGUxODFmM2NkMDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3B1L2FybS9m
aWx0ZXJzL0ZFQ29tcG9zaXRlQXJpdGhtZXRpY05FT04uaAorKysgL2Rldi9udWxsCkBAIC0xLDkz
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgVW5pdmVyc2l0eSBvZiBTemVnZWQK
LSAqIENvcHlyaWdodCAoQykgMjAxMSBGZWxpY2lhbiBNYXJ0b24KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFVOSVZFUlNJVFkgT0YgU1pFR0VEIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVU5JVkVSU0lUWSBPRiBTWkVHRUQgT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEZF
Q29tcG9zaXRlQXJpdGhtZXRpY05FT05faAotI2RlZmluZSBGRUNvbXBvc2l0ZUFyaXRobWV0aWNO
RU9OX2gKLQotI2lmIEhBVkUoQVJNX05FT05fSU5UUklOU0lDUykKLQotI2luY2x1ZGUgIkZFQ29t
cG9zaXRlLmgiCi0jaW5jbHVkZSAiTkVPTkhlbHBlcnMuaCIKLSNpbmNsdWRlIDxhcm1fbmVvbi5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXRlbXBsYXRlIDxpbnQgYjEsIGludCBiND4KLWlu
bGluZSB2b2lkIEZFQ29tcG9zaXRlOjpjb21wdXRlQXJpdGhtZXRpY1BpeGVsc05lb24oY29uc3Qg
dWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxBcnJh
eUxlbmd0aCwgZmxvYXQgazEsIGZsb2F0IGsyLCBmbG9hdCBrMywgZmxvYXQgazQpCi17Ci0gICAg
ZmxvYXQzMng0X3QgazF4NCA9IHZkdXBxX25fZjMyKGsxIC8gMjU1KTsKLSAgICBmbG9hdDMyeDRf
dCBrMng0ID0gdmR1cHFfbl9mMzIoazIpOwotICAgIGZsb2F0MzJ4NF90IGszeDQgPSB2ZHVwcV9u
X2YzMihrMyk7Ci0gICAgZmxvYXQzMng0X3QgazR4NCA9IHZkdXBxX25fZjMyKGs0ICogMjU1KTsK
LSAgICB1aW50MzJ4NF90IG1heDI1NSA9IHZkdXBxX25fdTMyKDI1NSk7Ci0KLSAgICBjb25zdCB1
aW50MzJfdCogc291cmNlUGl4ZWwgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4o
c291cmNlKTsKLSAgICB1aW50MzJfdCogZGVzdGluYXRpb25QaXhlbCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDMyX3QqPihkZXN0aW5hdGlvbik7Ci0gICAgdWludDMyX3QqIGRlc3RpbmF0aW9uRW5k
UGl4ZWwgPSBkZXN0aW5hdGlvblBpeGVsICsgKHBpeGVsQXJyYXlMZW5ndGggPj4gMik7Ci0KLSAg
ICB3aGlsZSAoZGVzdGluYXRpb25QaXhlbCA8IGRlc3RpbmF0aW9uRW5kUGl4ZWwpIHsKLSAgICAg
ICAgZmxvYXQzMng0X3Qgc291cmNlUGl4ZWxBc0Zsb2F0ID0gbG9hZFJHQkE4QXNGbG9hdChzb3Vy
Y2VQaXhlbCk7Ci0gICAgICAgIGZsb2F0MzJ4NF90IGRlc3RpbmF0aW9uUGl4ZWxBc0Zsb2F0ID0g
bG9hZFJHQkE4QXNGbG9hdChkZXN0aW5hdGlvblBpeGVsKTsKLQotICAgICAgICBmbG9hdDMyeDRf
dCByZXN1bHQgPSB2bXVscV9mMzIoc291cmNlUGl4ZWxBc0Zsb2F0LCBrMng0KTsKLSAgICAgICAg
cmVzdWx0ID0gdm1sYXFfZjMyKHJlc3VsdCwgZGVzdGluYXRpb25QaXhlbEFzRmxvYXQsIGszeDQp
OwotICAgICAgICBpZiAoYjEpCi0gICAgICAgICAgICByZXN1bHQgPSB2bWxhcV9mMzIocmVzdWx0
LCB2bXVscV9mMzIoc291cmNlUGl4ZWxBc0Zsb2F0LCBkZXN0aW5hdGlvblBpeGVsQXNGbG9hdCks
IGsxeDQpOwotICAgICAgICBpZiAoYjQpCi0gICAgICAgICAgICByZXN1bHQgPSB2YWRkcV9mMzIo
cmVzdWx0LCBrNHg0KTsKLQotICAgICAgICAvLyBDb252ZXJ0IHJlc3VsdCB0byB1aW50IHNvIG5l
Z2F0aXZlIHZhbHVlcyBhcmUgY29udmVydGVkIHRvIHplcm8uCi0gICAgICAgIHVpbnQxNng0X3Qg
dGVtcG9yYXJ5MyA9IHZtb3ZuX3UzMih2bWlucV91MzIodmN2dHFfdTMyX2YzMihyZXN1bHQpLCBt
YXgyNTUpKTsKLSAgICAgICAgdWludDh4OF90IHRlbXBvcmFyeTQgPSB2bW92bl91MTYodmNvbWJp
bmVfdTE2KHRlbXBvcmFyeTMsIHRlbXBvcmFyeTMpKTsKLSAgICAgICAgKmRlc3RpbmF0aW9uUGl4
ZWwrKyA9IHZnZXRfbGFuZV91MzIodnJlaW50ZXJwcmV0X3UzMl91OCh0ZW1wb3Jhcnk0KSwgMCk7
Ci0gICAgICAgICsrc291cmNlUGl4ZWw7Ci0gICAgfQotfQotCi1pbmxpbmUgdm9pZCBGRUNvbXBv
c2l0ZTo6cGxhdGZvcm1Bcml0aG1ldGljTmVvbihjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4
X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbEFycmF5TGVuZ3RoLCBmbG9hdCBrMSwgZmxv
YXQgazIsIGZsb2F0IGszLCBmbG9hdCBrNCkKLXsKLSAgICBpZiAoIWs0KSB7Ci0gICAgICAgIGlm
ICghazEpIHsKLSAgICAgICAgICAgIGNvbXB1dGVBcml0aG1ldGljUGl4ZWxzTmVvbjwwLCAwPihz
b3VyY2UsIGRlc3RpbmF0aW9uLCBwaXhlbEFycmF5TGVuZ3RoLCBrMSwgazIsIGszLCBrNCk7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBjb21wdXRlQXJpdGhtZXRp
Y1BpeGVsc05lb248MSwgMD4oc291cmNlLCBkZXN0aW5hdGlvbiwgcGl4ZWxBcnJheUxlbmd0aCwg
azEsIGsyLCBrMywgazQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFrMSkg
ewotICAgICAgICBjb21wdXRlQXJpdGhtZXRpY1BpeGVsc05lb248MCwgMT4oc291cmNlLCBkZXN0
aW5hdGlvbiwgcGl4ZWxBcnJheUxlbmd0aCwgazEsIGsyLCBrMywgazQpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGNvbXB1dGVBcml0aG1ldGljUGl4ZWxzTmVvbjwxLCAxPihzb3VyY2Us
IGRlc3RpbmF0aW9uLCBwaXhlbEFycmF5TGVuZ3RoLCBrMSwgazIsIGszLCBrNCk7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEhBVkUoQVJNX05FT05fSU5UUklOU0lD
UykKLQotI2VuZGlmIC8vIEZFQ29tcG9zaXRlQXJpdGhtZXRpY05FT05faApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3B1L2FybS9maWx0ZXJzL0ZFR2F1c3Np
YW5CbHVyTkVPTi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3B1L2FybS9m
aWx0ZXJzL0ZFR2F1c3NpYW5CbHVyTkVPTi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBlY2I3YjM2N2Q5ZTU4YjNlMGUzNWIxMzE0Yzc2OWY0YjQzMjNhZmNjLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycy9GRUdhdXNzaWFuQmx1ck5FT04uaAorKysgL2Rldi9u
dWxsCkBAIC0xLDc4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgVW5pdmVyc2l0
eSBvZiBTemVnZWQKLSAqIENvcHlyaWdodCAoQykgMjAxMSBab2x0YW4gSGVyY3plZwotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVU5JVkVSU0lUWSBPRiBTWkVH
RUQgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBVTklWRVJTSVRZIE9GIFNaRUdF
RCBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpZm5kZWYgRkVHYXVzc2lhbkJsdXJORU9OX2gKLSNkZWZpbmUgRkVHYXVzc2lhbkJsdXJORU9O
X2gKLQotI2lmIEhBVkUoQVJNX05FT05fSU5UUklOU0lDUykKLQotI2luY2x1ZGUgIkZFR2F1c3Np
YW5CbHVyLmgiCi0jaW5jbHVkZSAiTkVPTkhlbHBlcnMuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1pbmxpbmUgdm9pZCBib3hCbHVyTkVPTihjb25zdCBVaW50OENsYW1wZWRBcnJheSYgc3Jj
UGl4ZWxBcnJheSwgVWludDhDbGFtcGVkQXJyYXkmIGRzdFBpeGVsQXJyYXksCi0gICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBkeCwgaW50IGR4TGVmdCwgaW50IGR4UmlnaHQsIGludCBz
dHJpZGUsIGludCBzdHJpZGVMaW5lLCBpbnQgZWZmZWN0V2lkdGgsIGludCBlZmZlY3RIZWlnaHQp
Ci17Ci0gICAgY29uc3QgdWludDMyX3QqIHNvdXJjZVBpeGVsID0gcmVpbnRlcnByZXRfY2FzdDx1
aW50MzJfdCo+KHNyY1BpeGVsQXJyYXkuZGF0YSgpKTsKLSAgICB1aW50MzJfdCogZGVzdGluYXRp
b25QaXhlbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihkc3RQaXhlbEFycmF5LmRhdGEo
KSk7Ci0KLSAgICBmbG9hdDMyeDRfdCBkZWx0YVggPSB2ZHVwcV9uX2YzMigxLjAgLyBkeCk7Ci0g
ICAgaW50IHBpeGVsTGluZSA9IHN0cmlkZUxpbmUgLyA0OwotICAgIGludCBwaXhlbFN0cmlkZSA9
IHN0cmlkZSAvIDQ7Ci0KLSAgICBmb3IgKGludCB5ID0gMDsgeSA8IGVmZmVjdEhlaWdodDsgKyt5
KSB7Ci0gICAgICAgIGludCBsaW5lID0geSAqIHBpeGVsTGluZTsKLSAgICAgICAgZmxvYXQzMng0
X3Qgc3VtID0gdmR1cHFfbl9mMzIoMCk7Ci0gICAgICAgIC8vIEZpbGwgdGhlIGtlcm5lbAotICAg
ICAgICBpbnQgbWF4S2VybmVsU2l6ZSA9IHN0ZDo6bWluKGR4UmlnaHQsIGVmZmVjdFdpZHRoKTsK
LSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtYXhLZXJuZWxTaXplOyArK2kpIHsKLSAgICAg
ICAgICAgIGZsb2F0MzJ4NF90IHNvdXJjZVBpeGVsQXNGbG9hdCA9IGxvYWRSR0JBOEFzRmxvYXQo
c291cmNlUGl4ZWwgKyBsaW5lICsgaSAqIHBpeGVsU3RyaWRlKTsKLSAgICAgICAgICAgIHN1bSA9
IHZhZGRxX2YzMihzdW0sIHNvdXJjZVBpeGVsQXNGbG9hdCk7Ci0gICAgICAgIH0KLQotICAgICAg
ICAvLyBCbHVycmluZwotICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IGVmZmVjdFdpZHRoOyAr
K3gpIHsKLSAgICAgICAgICAgIGludCBwaXhlbE9mZnNldCA9IGxpbmUgKyB4ICogcGl4ZWxTdHJp
ZGU7Ci0gICAgICAgICAgICBmbG9hdDMyeDRfdCByZXN1bHQgPSB2bXVscV9mMzIoc3VtLCBkZWx0
YVgpOwotICAgICAgICAgICAgc3RvcmVGbG9hdEFzUkdCQTgocmVzdWx0LCBkZXN0aW5hdGlvblBp
eGVsICsgcGl4ZWxPZmZzZXQpOwotICAgICAgICAgICAgaWYgKHggPj0gZHhMZWZ0KSB7Ci0gICAg
ICAgICAgICAgICAgZmxvYXQzMng0X3Qgc291cmNlUGl4ZWxBc0Zsb2F0ID0gbG9hZFJHQkE4QXNG
bG9hdChzb3VyY2VQaXhlbCArIHBpeGVsT2Zmc2V0IC0gZHhMZWZ0ICogcGl4ZWxTdHJpZGUpOwot
ICAgICAgICAgICAgICAgIHN1bSA9IHZzdWJxX2YzMihzdW0sIHNvdXJjZVBpeGVsQXNGbG9hdCk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoeCArIGR4UmlnaHQgPCBlZmZlY3RXaWR0
aCkgewotICAgICAgICAgICAgICAgIGZsb2F0MzJ4NF90IHNvdXJjZVBpeGVsQXNGbG9hdCA9IGxv
YWRSR0JBOEFzRmxvYXQoc291cmNlUGl4ZWwgKyBwaXhlbE9mZnNldCArIGR4UmlnaHQgKiBwaXhl
bFN0cmlkZSk7Ci0gICAgICAgICAgICAgICAgc3VtID0gdmFkZHFfZjMyKHN1bSwgc291cmNlUGl4
ZWxBc0Zsb2F0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gSEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQot
Ci0jZW5kaWYgLy8gRkVHYXVzc2lhbkJsdXJORU9OX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycy9GRUxpZ2h0aW5nTkVPTi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJtL2ZpbHRlcnMvRkVMaWdo
dGluZ05FT04uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNmZmOGMyMGE1YThh
YTg0MDYzYmJjNDBiODQ2NjQ5YjdiZWI1MmM1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NwdS9h
cm0vZmlsdGVycy9GRUxpZ2h0aW5nTkVPTi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MDMgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBVbml2ZXJzaXR5IG9mIFN6ZWdlZAotICog
Q29weXJpZ2h0IChDKSAyMDExIFpvbHRhbiBIZXJjemVnCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBVTklWRVJTSVRZIE9GIFNaRUdFRCBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIFVOSVZFUlNJVFkgT0YgU1pFR0VEIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIkZFTGlnaHRpbmdORU9OLmgiCi0KLSNpZiBDUFUoQVJNX05FT04pICYm
IENQVShBUk1fVFJBRElUSU9OQUwpICYmIENPTVBJTEVSKEdDQ19DT01QQVRJQkxFKQotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLS8vIFRoZXNlIGNvbnN0YW50cyBhcmUgY29waWVkIHRvIHRoZSBm
b2xsb3dpbmcgU0lNRCByZWdpc3RlcnM6Ci0vLyAgIEFMUEhBWF9RIEFMUEhBWV9RIFJFTUFQWF9E
IFJFTUFQWV9ECi0KLQotc3RhdGljIGFsaWduYXMoMTYpIHNob3J0IHNfRkVMaWdodGluZ0NvbnN0
YW50c0Zvck5lb25bXSA9IHsKLSAgICAvLyBBbHBoYSBjb2VmZmljaWVudHMuCi0gICAgLTIsIDEs
IDAsIC0xLCAyLCAxLCAwLCAtMSwKLSAgICAwLCAtMSwgLTIsIC0xLCAwLCAxLCAyLCAxLAotICAg
IC8vIFJlbWFwcGluZyBpbmRpY2VzLgotICAgIDB4MGYwZSwgMHgwMzAyLCAweDA1MDQsIDB4MDcw
NiwKLSAgICAweDBiMGEsIDB4MTMxMiwgMHgxNTE0LCAweDE3MTYsCi19OwotCi1zaG9ydCogZmVM
aWdodGluZ0NvbnN0YW50c0Zvck5lb24oKQotewotICAgIHJldHVybiBzX0ZFTGlnaHRpbmdDb25z
dGFudHNGb3JOZW9uOwotfQotCi12b2lkIEZFTGlnaHRpbmc6OnBsYXRmb3JtQXBwbHlOZW9uV29y
a2VyKEZFTGlnaHRpbmdQYWludGluZ0RhdGFGb3JOZW9uKiBwYXJhbWV0ZXJzKQotewotICAgIG5l
b25EcmF3TGlnaHRpbmcocGFyYW1ldGVycyk7Ci19Ci0KLSNkZWZpbmUgQVNTVFJJTkcoc3RyKSAj
c3RyCi0jZGVmaW5lIFRPU1RSSU5HKHZhbHVlKSBBU1NUUklORyh2YWx1ZSkKLQotI2RlZmluZSBQ
SVhFTFNfT0ZGU0VUIFRPU1RSSU5HKDApCi0jZGVmaW5lIFlTVEFSVF9PRkZTRVQgVE9TVFJJTkco
NCkKLSNkZWZpbmUgV0lEVEhfT0ZGU0VUIFRPU1RSSU5HKDgpCi0jZGVmaW5lIEhFSUdIVF9PRkZT
RVQgVE9TVFJJTkcoMTIpCi0jZGVmaW5lIEZMQUdTX09GRlNFVCBUT1NUUklORygxNikKLSNkZWZp
bmUgU1BFQ1VMQVJfRVhQT05FTlRfT0ZGU0VUIFRPU1RSSU5HKDIwKQotI2RlZmluZSBDT05FX0VY
UE9ORU5UX09GRlNFVCBUT1NUUklORygyNCkKLSNkZWZpbmUgRkxPQVRfQVJHVU1FTlRTX09GRlNF
VCBUT1NUUklORygyOCkKLSNkZWZpbmUgUEFJTlRJTkdfQ09OU1RBTlRTX09GRlNFVCBUT1NUUklO
RygzMikKLSNkZWZpbmUgTkwgIlxuIgotCi0vLyBSZWdpc3RlciBhbGxvY2F0aW9uCi0jZGVmaW5l
IFBBSU5USU5HX0RBVEFfUiAgICAgICAicjExIgotI2RlZmluZSBSRVNFVF9XSURUSF9SICAgICAg
ICAgUEFJTlRJTkdfREFUQV9SCi0jZGVmaW5lIFBJWEVMU19SICAgICAgICAgICAgICAicjQiCi0j
ZGVmaW5lIFdJRFRIX1IgICAgICAgICAgICAgICAicjUiCi0jZGVmaW5lIEhFSUdIVF9SICAgICAg
ICAgICAgICAicjYiCi0jZGVmaW5lIEZMQUdTX1IgICAgICAgICAgICAgICAicjciCi0jZGVmaW5l
IFNQRUNVTEFSX0VYUE9ORU5UX1IgICAicjgiCi0jZGVmaW5lIENPTkVfRVhQT05FTlRfUiAgICAg
ICAicjEwIgotI2RlZmluZSBTQ0FOTElORV9SICAgICAgICAgICAgInIxMiIKLQotI2RlZmluZSBU
TVAxX1EgICAgICAgICAgICAgICAgInEwIgotI2RlZmluZSBUTVAxX0QwICAgICAgICAgICAgICAg
ImQwIgotI2RlZmluZSBUTVAxX1MwICAgICAgICAgICAgICAgInMwIgotI2RlZmluZSBUTVAxX1Mx
ICAgICAgICAgICAgICAgInMxIgotI2RlZmluZSBUTVAxX0QxICAgICAgICAgICAgICAgImQxIgot
I2RlZmluZSBUTVAxX1MyICAgICAgICAgICAgICAgInMyIgotI2RlZmluZSBUTVAxX1MzICAgICAg
ICAgICAgICAgInMzIgotI2RlZmluZSBUTVAyX1EgICAgICAgICAgICAgICAgInExIgotI2RlZmlu
ZSBUTVAyX0QwICAgICAgICAgICAgICAgImQyIgotI2RlZmluZSBUTVAyX1MwICAgICAgICAgICAg
ICAgInM0IgotI2RlZmluZSBUTVAyX1MxICAgICAgICAgICAgICAgInM1IgotI2RlZmluZSBUTVAy
X0QxICAgICAgICAgICAgICAgImQzIgotI2RlZmluZSBUTVAyX1MyICAgICAgICAgICAgICAgInM2
IgotI2RlZmluZSBUTVAyX1MzICAgICAgICAgICAgICAgInM3IgotI2RlZmluZSBUTVAzX1EgICAg
ICAgICAgICAgICAgInEyIgotI2RlZmluZSBUTVAzX0QwICAgICAgICAgICAgICAgImQ0IgotI2Rl
ZmluZSBUTVAzX1MwICAgICAgICAgICAgICAgInM4IgotI2RlZmluZSBUTVAzX1MxICAgICAgICAg
ICAgICAgInM5IgotI2RlZmluZSBUTVAzX0QxICAgICAgICAgICAgICAgImQ1IgotI2RlZmluZSBU
TVAzX1MyICAgICAgICAgICAgICAgInMxMCIKLSNkZWZpbmUgVE1QM19TMyAgICAgICAgICAgICAg
ICJzMTEiCi0KLSNkZWZpbmUgQ09TSU5FX09GX0FOR0xFICAgICAgICJzMTIiCi0jZGVmaW5lIFBP
V0ZfSU5UX1MgICAgICAgICAgICAiczEzIgotI2RlZmluZSBQT1dGX0ZSQUNfUyAgICAgICAgICAg
InMxNCIKLSNkZWZpbmUgU1BPVF9DT0xPUl9RICAgICAgICAgICJxNCIKLQotLy8gQmVjYXVzZSBv
ZiBWTUlOIGFuZCBWTUFYIENPTlNUX1pFUk9fUyBhbmQgQ09OU1RfT05FX1MKLS8vIG11c3QgYmUg
cGxhY2VkIG9uIHRoZSBzYW1lIHNpZGUgb2YgdGhlIGRvdWJsZSB2ZWN0b3IKLQotLy8gQ3VycmVu
dCBwaXhlbCBwb3NpdGlvbgotI2RlZmluZSBQT1NJVElPTl9RICAgICAgICAgICAgInE1IgotI2Rl
ZmluZSBQT1NJVElPTl9YX1MgICAgICAgICAgInMyMCIKLSNkZWZpbmUgUE9TSVRJT05fWV9TICAg
ICAgICAgICJzMjEiCi0jZGVmaW5lIFBPU0lUSU9OX1pfUyAgICAgICAgICAiczIyIgotI2RlZmlu
ZSBDT05TVF9aRVJPX0hJX0QgICAgICAgImQxMSIKLSNkZWZpbmUgQ09OU1RfWkVST19TICAgICAg
ICAgICJzMjMiCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vICAgICBW
YXJpYWJsZSBhcmd1bWVudHMKLS8vIE1pc2MgYXJndW1lbnRzCi0jZGVmaW5lIFJFQUQxX1JBTkdF
ICAgICAgICAgICAiZDEyLWQxNSIKLSNkZWZpbmUgUkVBRDJfUkFOR0UgICAgICAgICAgICJkMTYt
ZDE5IgotI2RlZmluZSBSRUFEM19SQU5HRSAgICAgICAgICAgImQyMC1kMjEiCi0KLSNkZWZpbmUg
U0NBTEVfUyAgICAgICAgICAgICAgICJzMjQiCi0jZGVmaW5lIFNDQUxFX0RJVjRfUyAgICAgICAg
ICAiczI1IgotI2RlZmluZSBESUZGVVNFX0NPTlNUX1MgICAgICAgInMyNiIKLQotLy8gTGlnaHQg
c291cmNlIHBvc2l0aW9uCi0jZGVmaW5lIENPTkVfQ1VUX09GRl9TICAgICAgICAiczI4IgotI2Rl
ZmluZSBDT05FX0ZVTExfTElHSFRfUyAgICAgInMyOSIKLSNkZWZpbmUgQ09ORV9DVVRfT0ZGX1JB
TkdFX1MgICJzMzAiCi0jZGVmaW5lIENPTlNUX09ORV9ISV9EICAgICAgICAiZDE1IgotI2RlZmlu
ZSBDT05TVF9PTkVfUyAgICAgICAgICAgInMzMSIKLQotI2RlZmluZSBMSUdIVF9RICAgICAgICAg
ICAgICAgInE4IgotI2RlZmluZSBESVJFQ1RJT05fUSAgICAgICAgICAgInE5IgotI2RlZmluZSBD
T0xPUl9RICAgICAgICAgICAgICAgInExMCIKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLS8vICAgIENvbnN0YW50IGNvZWZmaWNpZW50cwotI2RlZmluZSBSRUFENF9SQU5HRSAg
ICAgICAgICAgImQyMi1kMjUiCi0jZGVmaW5lIFJFQUQ1X1JBTkdFICAgICAgICAgICAiZDI2LWQy
NyIKLQotI2RlZmluZSBBTFBIQVhfUSAgICAgICAgICAgICAgInExMSIKLSNkZWZpbmUgQUxQSEFZ
X1EgICAgICAgICAgICAgICJxMTIiCi0jZGVmaW5lIFJFTUFQWF9EICAgICAgICAgICAgICAiZDI2
IgotI2RlZmluZSBSRU1BUFlfRCAgICAgICAgICAgICAgImQyNyIKLS8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLQotI2RlZmluZSBBTExfUk9XU19EICAgICAgICAgICAgIntkMjgs
ZDI5LGQzMH0iCi0jZGVmaW5lIFRPUF9ST1dfRCAgICAgICAgICAgICAiZDI4IgotI2RlZmluZSBN
SURETEVfUk9XX0QgICAgICAgICAgImQyOSIKLSNkZWZpbmUgQk9UVE9NX1JPV19EICAgICAgICAg
ICJkMzAiCi0KLSNkZWZpbmUgR0VUX0xFTkdUSChzb3VyY2UsIHRlbXApIFwKLSAgICAidm11bC5m
MzIgIiB0ZW1wIyNfUSAiLCAiIHNvdXJjZSMjX1EgIiwgIiBzb3VyY2UjI19RIE5MIFwKLSAgICAi
dmFkZC5mMzIgIiBzb3VyY2UjI19TMyAiLCAiIHRlbXAjI19TMCAiLCAiIHRlbXAjI19TMSBOTCBc
Ci0gICAgInZhZGQuZjMyICIgc291cmNlIyNfUzMgIiwgIiBzb3VyY2UjI19TMyAiLCAiIHRlbXAj
I19TMiBOTCBcCi0gICAgInZzcXJ0LmYzMiAiIHNvdXJjZSMjX1MzICIsICIgc291cmNlIyNfUzMg
TkwKLQotLy8gZGVzdGluYXRpb24jI19TMyBjYW4gY29udGFpbiB0aGUgbXVsdGlwbHkgb2YgbGVu
Z3RoLgotI2RlZmluZSBET1RfUFJPRFVDVChkZXN0aW5hdGlvbiwgc291cmNlMSwgc291cmNlMikg
XAotICAgICJ2bXVsLmYzMiAiIGRlc3RpbmF0aW9uIyNfUSAiLCAiIHNvdXJjZTEjI19RICIsICIg
c291cmNlMiMjX1EgTkwgXAotICAgICJ2YWRkLmYzMiAiIGRlc3RpbmF0aW9uIyNfUzAgIiwgIiBk
ZXN0aW5hdGlvbiMjX1MwICIsICIgZGVzdGluYXRpb24jI19TMSBOTCBcCi0gICAgInZhZGQuZjMy
ICIgZGVzdGluYXRpb24jI19TMCAiLCAiIGRlc3RpbmF0aW9uIyNfUzAgIiwgIiBkZXN0aW5hdGlv
biMjX1MyIE5MCi0KLSNkZWZpbmUgTVVMVElQTFlfQllfRElGRlVTRV9DT05TVChub3JtYWxWZWN0
b3JMZW5ndGgsIGRvdFByb2R1Y3RMZW5ndGgpIFwKLSAgICAidHN0ICIgRkxBR1NfUiAiLCAjIiBU
T1NUUklORyhGTEFHX0RJRkZVU0VfQ09OU1RfSVNfMSkgTkwgXAotICAgICJ2bXVsZXEuZjMyICIg
VE1QMl9TMSAiLCAiIERJRkZVU0VfQ09OU1RfUyAiLCAiIG5vcm1hbFZlY3Rvckxlbmd0aCBOTCBc
Ci0gICAgInZkaXZlcS5mMzIgIiBUTVAyX1MxICIsICIgVE1QMl9TMSAiLCAiIGRvdFByb2R1Y3RM
ZW5ndGggTkwgXAotICAgICJ2ZGl2bmUuZjMyICIgVE1QMl9TMSAiLCAiIG5vcm1hbFZlY3Rvckxl
bmd0aCAiLCAiIGRvdFByb2R1Y3RMZW5ndGggTkwKLQotI2RlZmluZSBQT1dGX1NRUih2YWx1ZSwg
ZXhwb25lbnQsIGN1cnJlbnQsIHJlbWFpbmluZykgXAotICAgICJ0c3QgIiBleHBvbmVudCAiLCAj
IiBBU1NUUklORyhjdXJyZW50KSBOTCBcCi0gICAgInZtdWxuZS5mMzIgIiB2YWx1ZSAiLCAiIHZh
bHVlICIsICIgUE9XRl9JTlRfUyBOTCBcCi0gICAgInRzdCAiIGV4cG9uZW50ICIsICMiIEFTU1RS
SU5HKHJlbWFpbmluZykgTkwgXAotICAgICJ2bXVsbmUuZjMyICIgUE9XRl9JTlRfUyAiLCAiIFBP
V0ZfSU5UX1MgIiwgIiBQT1dGX0lOVF9TIE5MCi0KLSNkZWZpbmUgUE9XRl9TUVJUKHZhbHVlLCBl
eHBvbmVudCwgY3VycmVudCwgcmVtYWluaW5nKSBcCi0gICAgInRzdCAiIGV4cG9uZW50ICIsICMi
IEFTU1RSSU5HKHJlbWFpbmluZykgTkwgXAotICAgICJ2c3FydG5lLmYzMiAiIFBPV0ZfRlJBQ19T
ICIsICIgUE9XRl9GUkFDX1MgTkwgXAotICAgICJ0c3QgIiBleHBvbmVudCAiLCAjIiBBU1NUUklO
RyhjdXJyZW50KSBOTCBcCi0gICAgInZtdWxuZS5mMzIgIiB2YWx1ZSAiLCAiIHZhbHVlICIsICIg
UE9XRl9GUkFDX1MgTkwKLQotLy8gVGhpcyBzaW1wbGlmaWVkIHBvd2YgZnVuY3Rpb24gaXMgc3Vm
ZmljaWVudGx5IGFjY3VyYXRlLgotI2RlZmluZSBQT1dGKHZhbHVlLCBleHBvbmVudCkgXAotICAg
ICJ0c3QgIiBleHBvbmVudCAiLCAjMHhmYzAiIE5MIFwKLSAgICAidm1vdm5lLmYzMiAiIFBPV0Zf
SU5UX1MgIiwgIiB2YWx1ZSBOTCBcCi0gICAgInRzdCAiIGV4cG9uZW50ICIsICMweDAzZiIgTkwg
XAotICAgICJ2bW92bmUuZjMyICIgUE9XRl9GUkFDX1MgIiwgIiB2YWx1ZSBOTCBcCi0gICAgInZt
b3YuZjMyICIgdmFsdWUgIiwgIiBDT05TVF9PTkVfUyBOTCBcCi0gICAgXAotICAgIFBPV0ZfU1FS
KHZhbHVlLCBleHBvbmVudCwgMHgwNDAsIDB4ZjgwKSBcCi0gICAgUE9XRl9TUVIodmFsdWUsIGV4
cG9uZW50LCAweDA4MCwgMHhmMDApIFwKLSAgICBQT1dGX1NRUih2YWx1ZSwgZXhwb25lbnQsIDB4
MTAwLCAweGUwMCkgXAotICAgIFBPV0ZfU1FSKHZhbHVlLCBleHBvbmVudCwgMHgyMDAsIDB4YzAw
KSBcCi0gICAgUE9XRl9TUVIodmFsdWUsIGV4cG9uZW50LCAweDQwMCwgMHg4MDApIFwKLSAgICAi
dHN0ICIgZXhwb25lbnQgIiwgIzB4ODAwIiBOTCBcCi0gICAgInZtdWxuZS5mMzIgIiB2YWx1ZSAi
LCAiIHZhbHVlICIsICIgUE9XRl9JTlRfUyBOTCBcCi0gICAgXAotICAgIFBPV0ZfU1FSVCh2YWx1
ZSwgZXhwb25lbnQsIDB4MjAsIDB4M2YpIFwKLSAgICBQT1dGX1NRUlQodmFsdWUsIGV4cG9uZW50
LCAweDEwLCAweDFmKSBcCi0gICAgUE9XRl9TUVJUKHZhbHVlLCBleHBvbmVudCwgMHgwOCwgMHgw
ZikgXAotICAgIFBPV0ZfU1FSVCh2YWx1ZSwgZXhwb25lbnQsIDB4MDQsIDB4MDcpIFwKLSAgICBQ
T1dGX1NRUlQodmFsdWUsIGV4cG9uZW50LCAweDAyLCAweDAzKSBcCi0gICAgUE9XRl9TUVJUKHZh
bHVlLCBleHBvbmVudCwgMHgwMSwgMHgwMSkKLQotLy8gVGhlIGZvbGxvd2luZyBhbGdvcml0aG0g
aXMgYW4gQVJNLU5FT04gb3B0aW1pemVkIHZlcnNpb24gb2YKLS8vIHRoZSBtYWluIGxvb3AgZm91
bmQgaW4gRkVMaWdodGluZy5jcHAuIFNpbmNlIHRoZSB3aG9sZSBjb2RlCi0vLyBpcyByZWRlc2ln
bmVkIHRvIGJlIGFzIGVmZmVjdGl2ZSBhcyBwb3NzaWJsZSAoQVJNIHNwZWNpZmljCi0vLyB0aGlu
a2luZyksIGl0IGlzIGZvdXIgdGltZXMgZmFzdGVyIHRoYW4gaXRzIEMrKyBjb3VudGVycGFydC4K
LQotYXNtICggLy8gTk9MSU5UCi0iLmdsb2JsICIgVE9TVFJJTkcobmVvbkRyYXdMaWdodGluZykg
TkwKLVRPU1RSSU5HKG5lb25EcmF3TGlnaHRpbmcpICI6IiBOTAotICAgIC8vIEJlY2F1c2Ugb2Yg
dGhlIGNsZXZlciByZWdpc3RlciBhbGxvY2F0aW9uLCBub3RoaW5nIGlzIHN0b3JlZCBvbiB0aGUg
c3RhY2sKLSAgICAvLyBleGNlcHQgdGhlIHNhdmVkIHJlZ2lzdGVycy4KLSAgICAvLyBTdGFjayBt
dXN0IGJlIGFsaWduZWQgdG8gOCBieXRlcy4KLSAgICAic3RtZGIgc3AhLCB7cjQtcjgsIHIxMCwg
cjExLCBscn0iIE5MCi0gICAgInZzdG1kYiBzcCEsIHtkOC1kMTV9IiBOTAotICAgICJtb3YgIiBQ
QUlOVElOR19EQVRBX1IgIiwgcjAiIE5MCi0KLSAgICAvLyBUaGUgZm9sbG93aW5nIHR3byBhcmd1
bWVudHMgYXJlIGxvYWRlZCB0byBTSU1EIHJlZ2lzdGVycy4KLSAgICAibGRyIHIwLCBbIiBQQUlO
VElOR19EQVRBX1IgIiwgIyIgRkxPQVRfQVJHVU1FTlRTX09GRlNFVCAiXSIgTkwKLSAgICAibGRy
IHIxLCBbIiBQQUlOVElOR19EQVRBX1IgIiwgIyIgUEFJTlRJTkdfQ09OU1RBTlRTX09GRlNFVCAi
XSIgTkwKLSAgICAibGRyICIgUElYRUxTX1IgIiwgWyIgUEFJTlRJTkdfREFUQV9SICIsICMiIFBJ
WEVMU19PRkZTRVQgIl0iIE5MCi0gICAgInZsZHIuZjMyICIgUE9TSVRJT05fWV9TICIsIFsiIFBB
SU5USU5HX0RBVEFfUiAiLCAjIiBZU1RBUlRfT0ZGU0VUICJdIiAgTkwKLSAgICAibGRyICIgV0lE
VEhfUiAiLCBbIiBQQUlOVElOR19EQVRBX1IgIiwgIyIgV0lEVEhfT0ZGU0VUICJdIiBOTAotICAg
ICJsZHIgIiBIRUlHSFRfUiAiLCBbIiBQQUlOVElOR19EQVRBX1IgIiwgIyIgSEVJR0hUX09GRlNF
VCAiXSIgTkwKLSAgICAibGRyICIgRkxBR1NfUiAiLCBbIiBQQUlOVElOR19EQVRBX1IgIiwgIyIg
RkxBR1NfT0ZGU0VUICJdIiBOTAotICAgICJsZHIgIiBTUEVDVUxBUl9FWFBPTkVOVF9SICIsIFsi
IFBBSU5USU5HX0RBVEFfUiAiLCAjIiBTUEVDVUxBUl9FWFBPTkVOVF9PRkZTRVQgIl0iIE5MCi0g
ICAgImxkciAiIENPTkVfRVhQT05FTlRfUiAiLCBbIiBQQUlOVElOR19EQVRBX1IgIiwgIyIgQ09O
RV9FWFBPTkVOVF9PRkZTRVQgIl0iIE5MCi0KLSAgICAvLyBMb2FkIGFsbCBkYXRhIHRvIHRoZSBT
SU1EIHJlZ2lzdGVycyB3aXRoIHRoZSBsZWFzdCBudW1iZXIgb2YgaW5zdHJ1Y3Rpb25zLgotICAg
ICJ2bGQxLmYzMiB7ICIgUkVBRDFfUkFOR0UgIiB9LCBbcjBdISIgTkwKLSAgICAidmxkMS5mMzIg
eyAiIFJFQUQyX1JBTkdFICIgfSwgW3IwXSEiIE5MCi0gICAgInZsZDEuZjMyIHsgIiBSRUFEM19S
QU5HRSAiIH0sIFtyMF0hIiBOTAotICAgICJ2bGQxLnMxNiB7IiBSRUFENF9SQU5HRSAifSwgW3Ix
XSEiIE5MCi0gICAgInZsZDEuczE2IHsiIFJFQUQ1X1JBTkdFICJ9LCBbcjFdISIgTkwKLQotICAg
IC8vIEluaXRpYWxpemluZyBsb2NhbCB2YXJpYWJsZXMuCi0gICAgIm1vdiAiIFNDQU5MSU5FX1Ig
IiwgIiBXSURUSF9SICIsIGxzbCAjMiIgTkwKLSAgICAiYWRkICIgU0NBTkxJTkVfUiAiLCAiIFND
QU5MSU5FX1IgIiwgIzgiIE5MCi0gICAgImFkZCAiIFBJWEVMU19SICIsICIgUElYRUxTX1IgIiwg
IiBTQ0FOTElORV9SIE5MCi0gICAgImFkZCAiIFBJWEVMU19SICIsICIgUElYRUxTX1IgIiwgIzMi
IE5MCi0gICAgIm1vdiByMCwgIzAiIE5MCi0gICAgInZtb3YuZjMyICIgQ09OU1RfWkVST19TICIs
IHIwIiBOTAotICAgICJ0c3QgIiBGTEFHU19SICIsICMiIFRPU1RSSU5HKEZMQUdfU1BPVF9MSUdI
VCkgTkwKLSAgICAidm1vdi5mMzIgIiBTUE9UX0NPTE9SX1EgIiwgIiBDT0xPUl9RIE5MCi0gICAg
Im1vdiAiIFJFU0VUX1dJRFRIX1IgIiwgIiBXSURUSF9SIE5MCi0KLSIubWFpbkxvb3A6IiBOTAot
ICAgICJtb3YgcjMsICMzIiBOTAotICAgICJ2bW92LmYzMiAiIFBPU0lUSU9OX1hfUyAiLCAiIENP
TlNUX09ORV9TIE5MCi0KLSIuc2NhbmxpbmU6IiBOTAotICAgIC8vIFRoZSBST1cgcmVnaXN0ZXJz
IGFyZSBzdG9yaW5nIHRoZSBhbHBoYSBjaGFubmVsIG9mIHRoZSBsYXN0IHRocmVlIHBpeGVscy4K
LSAgICAvLyBUaGUgYWxwaGEgY2hhbm5lbCBpcyBzdG9yZWQgYXMgc2lnbmVkIHNob3J0IChzaW50
MTYpIHZhbHVlcy4gVGhlIGZvdXJ0aCB2YWx1ZQotICAgIC8vIGlzIGdhcmJhZ2UuIFRoZSBmb2xs
b3dpbmcgaW5zdHJ1Y3Rpb25zIGFyZSBzaGlmdGluZyBvdXQgdGhlIHVubmVjZXNzYXJ5IGFscGhh
Ci0gICAgLy8gdmFsdWVzIGFuZCBsb2FkIHRoZSBuZXh0IG9uZXMuCi0gICAgImxkcmIgcjAsIFsi
IFBJWEVMU19SICIsIC0iIFNDQU5MSU5FX1IgIl0iIE5MCi0gICAgImxkcmIgcjEsIFsiIFBJWEVM
U19SICIsICsiIFNDQU5MSU5FX1IgIl0iIE5MCi0gICAgImxkcmIgcjIsIFsiIFBJWEVMU19SICJd
LCAjNCIgTkwKLSAgICAidmV4dC5zMTYgIiBUT1BfUk9XX0QgIiwgIiBUT1BfUk9XX0QgIiwgIiBU
T1BfUk9XX0QgIiwgIzMiIE5MCi0gICAgInZleHQuczE2ICIgTUlERExFX1JPV19EICIsICIgTUlE
RExFX1JPV19EICIsICIgTUlERExFX1JPV19EICIsICMzIiBOTAotICAgICJ2ZXh0LnMxNiAiIEJP
VFRPTV9ST1dfRCAiLCAiIEJPVFRPTV9ST1dfRCAiLCAiIEJPVFRPTV9ST1dfRCAiLCAjMyIgTkwK
LSAgICAidm1vdi5zMTYgIiBUT1BfUk9XX0QgIlsxXSwgcjAiIE5MCi0gICAgInZtb3YuczE2ICIg
TUlERExFX1JPV19EICJbMV0sIHIyIiBOTAotICAgICJ2bW92LnMxNiAiIEJPVFRPTV9ST1dfRCAi
WzFdLCByMSIgTkwKLQotICAgIC8vIFRoZSB0d28gYm9yZGVyIHBpeGVscyAocmlnaHRtb3N0IGFu
ZCBsZWZ0bW9zdCkgYXJlIHNraXBwZWQgd2hlbgotICAgIC8vIHRoZSBuZXh0IHNjYW5saW5lIGlz
IHJlYWNoZWQuIEl0IGFsc28ganVtcHMsIHdoZW4gdGhlIGFsZ29yaXRobQotICAgIC8vIGlzIHN0
YXJ0ZWQsIGFuZCB0aGUgZmlyc3QgZnJlZSBhbHBoYSB2YWx1ZXMgYXJlIGxvYWRlZCB0byBlYWNo
IHJvdy4KLSAgICAic3VicyByMywgcjMsICMxIiBOTAotICAgICJibmUgLnNjYW5saW5lIiBOTAot
Ci0gICAgLy8gVGhlIGxpZ2h0IHZlY3RvciBnb2VzIHRvIFRNUDFfUS4gSXQgaXMgY29uc3RhbnQg
aW4gY2FzZSBvZiBkaXN0YW50IGxpZ2h0LgotICAgIC8vIFRoZSBmb3VydGggdmFsdWUgY29udGFp
bnMgdGhlIGxlbmd0aCBvZiB0aGUgbGlnaHQgdmVjdG9yLgotICAgICJ0c3QgIiBGTEFHU19SICIs
ICMiIFRPU1RSSU5HKEZMQUdfUE9JTlRfTElHSFQgfCBGTEFHX1NQT1RfTElHSFQpIE5MCi0gICAg
ImJlcSAuZGlzdGFudExpZ2h0IiBOTAotCi0gICAgInZtb3YuczE2IHIzLCAiIE1JRERMRV9ST1df
RCAiWzJdIiBOTAotICAgICJ2bW92LmYzMiAiIFBPU0lUSU9OX1pfUyAiLCByMyIgTkwKLSAgICAi
dmN2dC5mMzIuczMyICIgUE9TSVRJT05fWl9TICIsICIgUE9TSVRJT05fWl9TIE5MCi0gICAgInZt
dWwuZjMyICIgUE9TSVRJT05fWl9TICIsICIgUE9TSVRJT05fWl9TICIsICIgU0NBTEVfUyBOTAot
Ci0gICAgInZzdWIuZjMyICIgVE1QMV9RICIsICIgTElHSFRfUSAiLCAiIFBPU0lUSU9OX1EgTkwK
LSAgICBHRVRfTEVOR1RIKFRNUDEsIFRNUDIpCi0KLSAgICAidHN0ICIgRkxBR1NfUiAiLCAjIiBU
T1NUUklORyhGTEFHX1NQT1RfTElHSFQpIE5MCi0gICAgImJuZSAuY29zaW5lT2ZBbmdsZSIgTkwK
LSIudmlzaWJsZVBpeGVsOiIgTkwKLQotICAgIC8vICAgICB8IC0xICAwICAxIHwgICAgICB8IC0x
IC0yIC0xIHwKLSAgICAvLyBYID0gfCAtMiAgMCAgMiB8ICBZID0gfCAgMCAgMCAgMCB8Ci0gICAg
Ly8gICAgIHwgLTEgIDAgIDEgfCAgICAgIHwgIDEgIDIgIDEgfAotCi0gICAgLy8gTXVsdGlwbHkg
dGhlIGFscGhhIHZhbHVlcyBieSB0aGUgWCBhbmQgWSBtYXRyaWNlcy4KLQotICAgIC8vIE1vdmlu
ZyB0aGUgOCBhbHBoYSB2YWx1ZSB0byBUTVAzLgotICAgICJ2dGJsLjggIiBUTVAzX0QwICIsICIg
QUxMX1JPV1NfRCAiLCAiIFJFTUFQWF9EIE5MCi0gICAgInZ0YmwuOCAiIFRNUDNfRDEgIiwgIiBB
TExfUk9XU19EICIsICIgUkVNQVBZX0QgTkwKLQotICAgICJ2bXVsLnMxNiAiIFRNUDJfUSAiLCAi
IFRNUDNfUSAiLCAiIEFMUEhBWF9RIE5MCi0gICAgInZwYWRkLnMxNiAiIFRNUDJfRDAgIiwgIiBU
TVAyX0QwICIsICIgVE1QMl9EMSBOTAotICAgICJ2cGFkZC5zMTYgIiBUTVAyX0QwICIsICIgVE1Q
Ml9EMCAiLCAiIFRNUDJfRDAgTkwKLSAgICAidnBhZGQuczE2ICIgVE1QMl9EMCAiLCAiIFRNUDJf
RDAgIiwgIiBUTVAyX0QwIE5MCi0gICAgInZtb3YuczE2IHIwLCAiIFRNUDJfRDAgIlswXSIgTkwK
LQotICAgICJ2bXVsLnMxNiAiIFRNUDJfUSAiLCAiIFRNUDNfUSAiLCAiIEFMUEhBWV9RIE5MCi0g
ICAgInZwYWRkLnMxNiAiIFRNUDJfRDAgIiwgIiBUTVAyX0QwICIsICIgVE1QMl9EMSBOTAotICAg
ICJ2cGFkZC5zMTYgIiBUTVAyX0QwICIsICIgVE1QMl9EMCAiLCAiIFRNUDJfRDAgTkwKLSAgICAi
dnBhZGQuczE2ICIgVE1QMl9EMCAiLCAiIFRNUDJfRDAgIiwgIiBUTVAyX0QwIE5MCi0gICAgInZt
b3YuczE2IHIxLCAiIFRNUDJfRDAgIlswXSIgTkwKLQotICAgIC8vIHIwIGFuZCByMSBjb250YWlu
cyB0aGUgWCBhbmQgWSBjb29yZGluYXRlcyBvZiB0aGUKLSAgICAvLyBub3JtYWwgdmVjdG9yLCBy
ZXNwZWN0aXZlbHkuCi0KLSAgICAvLyBDYWxjdWxhdGluZyB0aGUgc3BvdCBsaWdodCBzdHJlbmd0
aC4KLSAgICAidHN0ICIgRkxBR1NfUiAiLCAjIiBUT1NUUklORyhGTEFHX1NQT1RfTElHSFQpIE5M
Ci0gICAgImJlcSAuZW5kTGlnaHQiIE5MCi0KLSAgICAidm5lZy5mMzIgIiBUTVAzX1MxICIsICIg
Q09TSU5FX09GX0FOR0xFIE5MCi0gICAgInRzdCAiIEZMQUdTX1IgIiwgIyIgVE9TVFJJTkcoRkxB
R19DT05FX0VYUE9ORU5UX0lTXzEpIE5MCi0gICAgImJlcSAuY29uZUV4cFBvd2YiIE5MCi0iLmNv
bmVFeHBQb3dmRmluaXNoZWQ6IiBOTAotCi0gICAgLy8gU21vb3RoaW5nIHRoZSBjb25lIGVkZ2Ug
aWYgbmVjZXNzYXJ5LgotICAgICJ2Y21wLmYzMiAiIENPU0lORV9PRl9BTkdMRSAiLCAiIENPTkVf
RlVMTF9MSUdIVF9TIE5MCi0gICAgImZtc3RhdCIgTkwKLSAgICAiYmhpIC5jdXRPZmYiIE5MCi0i
LmN1dE9mZkZpbmlzaGVkOiIgTkwKLQotICAgICJ2bWluLmYzMiAiIFRNUDNfRDAgIiwgIiBUTVAz
X0QwICIsICIgQ09OU1RfT05FX0hJX0QgTkwKLSAgICAidm11bC5mMzIgIiBDT0xPUl9RICIsICIg
U1BPVF9DT0xPUl9RICIsICIgVE1QM19EMCAiWzFdIiBOTAotCi0iLmVuZExpZ2h0OiIgTkwKLSAg
ICAvLyBTdW1tYXJpemU6Ci0gICAgLy8gcjAgYW5kIHIxIGNvbnRhaW5zIHRoZSBub3JtYWxWZWN0
b3IuCi0gICAgLy8gVE1QMV9RIGNvbnRhaW5zIHRoZSBsaWdodCB2ZWN0b3IgYW5kIGl0cyBsZW5n
dGguCi0gICAgLy8gQ09MT1JfUSBjb250YWlucyB0aGUgY29sb3Igb2YgdGhlIGxpZ2h0IHZlY3Rv
ci4KLQotICAgIC8vIFRlc3Qgd2hldGhlciBib3RoIHIwIGFuZCByMSBhcmUgemVybyAoTm9ybWFs
IHZlY3RvciBpcyAoMCwgMCwgMSkpLgotICAgICJvcnJzIHIyLCByMCwgcjEiIE5MCi0gICAgImJu
ZSAubm9ybWFsVmVjdG9ySXNOb25aZXJvIiBOTAotCi0gICAgInRzdCAiIEZMQUdTX1IgIiwgIyIg
VE9TVFJJTkcoRkxBR19TUEVDVUxBUl9MSUdIVCkgTkwKLSAgICAiYm5lIC5zcGVjdWxhckxpZ2h0
MSIgTkwKLQotICAgIC8vIENhbGN1bGF0ZSBkaWZmdXNlIGxpZ2h0IHN0cmVuZ3RoLgotICAgIE1V
TFRJUExZX0JZX0RJRkZVU0VfQ09OU1QoVE1QMV9TMiwgVE1QMV9TMykKLSAgICAiYiAubGlnaHRT
dHJlbmd0aENhbGN1bGF0ZWQiIE5MCi0KLSIuc3BlY3VsYXJMaWdodDE6IiBOTAotICAgIC8vIENh
bGN1bGF0aW5nIHNwZWN1bGFyIGxpZ2h0IHN0cmVuZ3RoLgotICAgICJ2YWRkLmYzMiAiIFRNUDFf
UzIgIiwgIiBUTVAxX1MyICIsICIgVE1QMV9TMyBOTAotICAgIEdFVF9MRU5HVEgoVE1QMSwgVE1Q
MikKLQotICAgIC8vIFdoZW4gdGhlIGV4cG9uZW50IGlzIDEsIHdlIGRvbid0IG5lZWQgdG8gY2Fs
bCBhbiBleHBlbnNpdmUgcG93ZiBmdW5jdGlvbi4KLSAgICAidHN0ICIgRkxBR1NfUiAiLCAjIiBU
T1NUUklORyhGTEFHX1NQRUNVTEFSX0VYUE9ORU5UX0lTXzEpIE5MCi0gICAgInZkaXZlcS5mMzIg
IiBUTVAyX1MxICIsICIgVE1QMV9TMiAiLCAiIFRNUDFfUzMgTkwKLSAgICAiYmVxIC5zcGVjdWxh
ckV4cFBvd2YiIE5MCi0KLSAgICBNVUxUSVBMWV9CWV9ESUZGVVNFX0NPTlNUKFRNUDFfUzIsIFRN
UDFfUzMpCi0gICAgImIgLmxpZ2h0U3RyZW5ndGhDYWxjdWxhdGVkIiBOTAotCi0iLm5vcm1hbFZl
Y3RvcklzTm9uWmVybzoiIE5MCi0gICAgLy8gTm9ybWFsIHZlY3RvciBnb2VzIHRvIFRNUDIsIGFu
ZCBpdHMgbGVuZ3RoIGlzIGNhbGN1bGF0ZWQgYXMgd2VsbC4KLSAgICAidm1vdi5zMzIgIiBUTVAy
X1MwICIsIHIwIiBOTAotICAgICJ2Y3Z0LmYzMi5zMzIgIiBUTVAyX1MwICIsICIgVE1QMl9TMCBO
TAotICAgICJ2bXVsLmYzMiAiIFRNUDJfUzAgIiwgIiBUTVAyX1MwICIsICIgU0NBTEVfRElWNF9T
IE5MCi0gICAgInZtb3YuczMyICIgVE1QMl9TMSAiLCByMSIgTkwKLSAgICAidmN2dC5mMzIuczMy
ICIgVE1QMl9TMSAiLCAiIFRNUDJfUzEgTkwKLSAgICAidm11bC5mMzIgIiBUTVAyX1MxICIsICIg
VE1QMl9TMSAiLCAiIFNDQUxFX0RJVjRfUyBOTAotICAgICJ2bW92LmYzMiAiIFRNUDJfUzIgIiwg
IiBDT05TVF9PTkVfUyBOTAotICAgIEdFVF9MRU5HVEgoVE1QMiwgVE1QMykKLQotICAgICJ0c3Qg
IiBGTEFHU19SICIsICMiIFRPU1RSSU5HKEZMQUdfU1BFQ1VMQVJfTElHSFQpIE5MCi0gICAgImJu
ZSAuc3BlY3VsYXJMaWdodDIiIE5MCi0KLSAgICAvLyBDYWxjdWxhdGluZyBkaWZmdXNlIGxpZ2h0
IHN0cmVuZ3RoLgotICAgIERPVF9QUk9EVUNUKFRNUDMsIFRNUDIsIFRNUDEpCi0gICAgTVVMVElQ
TFlfQllfRElGRlVTRV9DT05TVChUTVAzX1MwLCBUTVAzX1MzKQotICAgICJiIC5saWdodFN0cmVu
Z3RoQ2FsY3VsYXRlZCIgTkwKLQotIi5zcGVjdWxhckxpZ2h0MjoiIE5MCi0gICAgLy8gQ2FsY3Vs
YXRpbmcgc3BlY3VsYXIgbGlnaHQgc3RyZW5ndGguCi0gICAgInZhZGQuZjMyICIgVE1QMV9TMiAi
LCAiIFRNUDFfUzIgIiwgIiBUTVAxX1MzIE5MCi0gICAgR0VUX0xFTkdUSChUTVAxLCBUTVAzKQot
ICAgIERPVF9QUk9EVUNUKFRNUDMsIFRNUDIsIFRNUDEpCi0KLSAgICAvLyBXaGVuIHRoZSBleHBv
bmVudCBpcyAxLCB3ZSBkb24ndCBuZWVkIHRvIGNhbGwgYW4gZXhwZW5zaXZlIHBvd2YgZnVuY3Rp
b24uCi0gICAgInRzdCAiIEZMQUdTX1IgIiwgIyIgVE9TVFJJTkcoRkxBR19TUEVDVUxBUl9FWFBP
TkVOVF9JU18xKSBOTAotICAgICJ2ZGl2ZXEuZjMyICIgVE1QMl9TMSAiLCAiIFRNUDNfUzAgIiwg
IiBUTVAzX1MzIE5MCi0gICAgImJlcSAuc3BlY3VsYXJFeHBQb3dmIiBOTAotICAgIE1VTFRJUExZ
X0JZX0RJRkZVU0VfQ09OU1QoVE1QM19TMCwgVE1QM19TMykKLQotIi5saWdodFN0cmVuZ3RoQ2Fs
Y3VsYXRlZDoiIE5MCi0gICAgLy8gVE1QMl9TMSBjb250YWlucyB0aGUgbGlnaHQgc3RyZW5ndGgu
IENsYW1wIGl0IHRvIFswLCAxXQotICAgICJ2bWF4LmYzMiAiIFRNUDJfRDAgIiwgIiBUTVAyX0Qw
ICIsICIgQ09OU1RfWkVST19ISV9EIE5MCi0gICAgInZtaW4uZjMyICIgVE1QMl9EMCAiLCAiIFRN
UDJfRDAgIiwgIiBDT05TVF9PTkVfSElfRCBOTAotICAgICJ2bXVsLmYzMiAiIFRNUDNfUSAiLCAi
IENPTE9SX1EgIiwgIiBUTVAyX0QwICJbMV0iIE5MCi0gICAgInZjdnQudTMyLmYzMiAiIFRNUDNf
USAiLCAiIFRNUDNfUSBOTAotICAgICJ2bW92LnUzMiByMiwgcjMsICIgVE1QM19TMCAiLCAiIFRN
UDNfUzEgTkwKLSAgICAvLyBUaGUgY29sb3IgdmFsdWVzIGFyZSBzdG9yZWQgaW4tcGxhY2UuCi0g
ICAgInN0cmIgcjIsIFsiIFBJWEVMU19SICIsICMtMTFdIiBOTAotICAgICJzdHJiIHIzLCBbIiBQ
SVhFTFNfUiAiLCAjLTEwXSIgTkwKLSAgICAidm1vdi51MzIgcjIsICIgVE1QM19TMiBOTAotICAg
ICJzdHJiIHIyLCBbIiBQSVhFTFNfUiAiLCAjLTldIiBOTAotCi0gICAgLy8gQ29udGludWUgdG8g
dGhlIG5leHQgcGl4ZWwuCi0iLmJsYWNrUGl4ZWw6IiBOTAotICAgICJ2YWRkLmYzMiAiIFBPU0lU
SU9OX1hfUyAiLCAiIENPTlNUX09ORV9TIE5MCi0gICAgIm1vdiByMywgIzEiIE5MCi0gICAgInN1
YnMgIiBXSURUSF9SICIsICIgV0lEVEhfUiAiLCAjMSIgTkwKLSAgICAiYm5lIC5zY2FubGluZSIg
TkwKLQotICAgIC8vIElmIHRoZSBlbmQgb2YgdGhlIHNjYW5saW5lIGlzIHJlYWNoZWQsIHdlIGNv
bnRpbnVlCi0gICAgLy8gdG8gdGhlIG5leHQgc2NhbmxpbmUuCi0gICAgInZhZGQuZjMyICIgUE9T
SVRJT05fWV9TICIsICIgQ09OU1RfT05FX1MgTkwKLSAgICAibW92ICIgV0lEVEhfUiAiLCAiIFJF
U0VUX1dJRFRIX1IgTkwKLSAgICAic3VicyAiIEhFSUdIVF9SICIsICIgSEVJR0hUX1IgIiwgIzEi
IE5MCi0gICAgImJuZSAubWFpbkxvb3AiIE5MCi0KLSAgICAvLyBSZXR1cm4uCi0gICAgInZsZG1p
YSBzcCEsIHtkOC1kMTV9IiBOTAotICAgICJsZG1pYSBzcCEsIHtyNC1yOCwgcjEwLCByMTEsIHBj
fSIgTkwKLQotIi5kaXN0YW50TGlnaHQ6IiBOTAotICAgIC8vIEluIGNhc2Ugb2YgZGlzdGFudCBs
aWdodCwgdGhlIGxpZ2h0IHZlY3RvciBpcyBjb25zdGFudCwKLSAgICAvLyB3ZSBzaW1wbHkgY29w
eSBpdC4KLSAgICAidm1vdi5mMzIgIiBUTVAxX1EgIiwgIiBMSUdIVF9RIE5MCi0gICAgImIgLnZp
c2libGVQaXhlbCIgTkwKLQotIi5jb3NpbmVPZkFuZ2xlOiIgTkwKLSAgICAvLyBJZiB0aGUgcGl4
ZWwgaXMgb3V0c2lkZSBvZiB0aGUgY29uZSBhbmdsZSwgaXQgaXMgc2ltcGx5IGEgYmxhY2sgcGl4
ZWwuCi0gICAgRE9UX1BST0RVQ1QoVE1QMywgVE1QMSwgRElSRUNUSU9OKQotICAgICJ2ZGl2LmYz
MiAiIENPU0lORV9PRl9BTkdMRSAiLCAiIFRNUDNfUzAgIiwgIiBUTVAxX1MzIE5MCi0gICAgInZj
bXAuZjMyICIgQ09TSU5FX09GX0FOR0xFICIsICIgQ09ORV9DVVRfT0ZGX1MgTkwKLSAgICAiZm1z
dGF0IiBOTAotICAgICJibHMgLnZpc2libGVQaXhlbCIgTkwKLSAgICAibW92IHIwLCAjMCIgTkwK
LSAgICAic3RyaCByMCwgWyIgUElYRUxTX1IgIiwgIy0xMV0iIE5MCi0gICAgInN0cmIgcjAsIFsi
IFBJWEVMU19SICIsICMtOV0iIE5MCi0gICAgImIgLmJsYWNrUGl4ZWwiIE5MCi0KLSIuY3V0T2Zm
OiIgTkwKLSAgICAvLyBTbW9vdGhpbmcgdGhlIGxpZ2h0IHN0cmVuZ3RoIG9uIHRoZSBjb25lIGVk
Z2UuCi0gICAgInZzdWIuZjMyICIgVE1QM19TMCAiLCAiIENPTkVfQ1VUX09GRl9TICIsICIgQ09T
SU5FX09GX0FOR0xFIE5MCi0gICAgInZkaXYuZjMyICIgVE1QM19TMCAiLCAiIFRNUDNfUzAgIiwg
IiBDT05FX0NVVF9PRkZfUkFOR0VfUyBOTAotICAgICJ2bXVsLmYzMiAiIFRNUDNfUzEgIiwgIiBU
TVAzX1MxICIsICIgVE1QM19TMCBOTAotICAgICJiIC5jdXRPZmZGaW5pc2hlZCIgTkwKLQotIi5j
b25lRXhwUG93ZjoiIE5MCi0gICAgUE9XRihUTVAzX1MxLCBDT05FX0VYUE9ORU5UX1IpCi0gICAg
ImIgLmNvbmVFeHBQb3dmRmluaXNoZWQiIE5MCi0KLSIuc3BlY3VsYXJFeHBQb3dmOiIgTkwKLSAg
ICBQT1dGKFRNUDJfUzEsIFNQRUNVTEFSX0VYUE9ORU5UX1IpCi0gICAgInRzdCAiIEZMQUdTX1Ig
IiwgIyIgVE9TVFJJTkcoRkxBR19ESUZGVVNFX0NPTlNUX0lTXzEpIE5MCi0gICAgInZtdWxlcS5m
MzIgIiBUTVAyX1MxICIsICIgVE1QMl9TMSAiLCAiIERJRkZVU0VfQ09OU1RfUyBOTAotICAgICJi
IC5saWdodFN0cmVuZ3RoQ2FsY3VsYXRlZCIgTkwKLSk7IC8vIE5PTElOVAotCi1pbnQgRkVMaWdo
dGluZzo6Z2V0UG93ZXJDb2VmZmljaWVudHMoZmxvYXQgZXhwb25lbnQpCi17Ci0gICAgLy8gQ2Fs
bGluZyBhIHBvd2YgZnVuY3Rpb24gZnJvbSB0aGUgYXNzZW1ibHkgY29kZSB3b3VsZCByZXF1aXJl
IHRvIHNhdmUKLSAgICAvLyBhbmQgcmVsb2FkIGEgbG90IG9mIE5FT04gcmVnaXN0ZXJzLiBTaW5j
ZSB0aGUgYmFzZSBpcyBpbiByYW5nZSBbMC4uMV0KLSAgICAvLyBhbmQgb25seSA4IGJpdCBwcmVj
aXNpb24gaXMgcmVxdWlyZWQsIHdlIHVzZSBvdXIgb3duIHBvd2YgZnVuY3Rpb24uCi0gICAgLy8g
VGhpcyBpcyBwcm9iYWJseSBub3QgdGhlIGJlc3QsIGJ1dCBpdCB1c2VzIG9ubHkgYSBmZXcgcmVn
aXN0ZXJzIGFuZAotICAgIC8vIGdpdmVzIHVzIGVub3VnaCBwcmVjaXNpb24gKG1vZGlmeWluZyB0
aGUgZXhwb25lbnQgZmllbGQgZGlyZWN0bHkgd291bGQKLSAgICAvLyBhbHNvIGJlIHBvc3NpYmxl
KS4KLQotICAgIC8vIEZpcnN0LCB3ZSBsaW1pdCB0aGUgZXhwb25lbnQgdG8gbWF4aW11bSBvZiA2
NCwgd2hpY2ggZ2l2ZXMgdXMgZW5vdWdoCi0gICAgLy8gcHJlY2lzaW9uLiBXZSBzcGxpdCB0aGUg
ZXhwb25lbnQgdG8gYW4gaW50ZWdlciBhbmQgZnJhY3Rpb24gcGFydCwKLSAgICAvLyBzaW5jZSBh
XnggPSAoYV55KSooYV56KSB3aGVyZSB4ID0geSt6LiBUaGUgaW50ZWdlciBleHBvbmVudCBvZiB0
aGUKLSAgICAvLyBwb3dlciBpcyBlc3RpbWF0ZWQgYnkgc3F1YXJlLCBhbmQgdGhlIGZyYWN0aW9u
IGV4cG9uZW50IG9mIHRoZSBwb3dlcgotICAgIC8vIGlzIGVzdGltYXRlZCBieSBzcXVhcmUgcm9v
dCBhc3NlbWJseSBpbnN0cnVjdGlvbnMuCi0gICAgaW50IGksIHJlc3VsdDsKLQotICAgIGlmIChl
eHBvbmVudCA8IDApCi0gICAgICAgIGV4cG9uZW50ID0gMSAvICgtZXhwb25lbnQpOwotCi0gICAg
aWYgKGV4cG9uZW50ID4gNjMuOTkpCi0gICAgICAgIGV4cG9uZW50ID0gNjMuOTk7Ci0KLSAgICBl
eHBvbmVudCAvPSA2NDsKLSAgICByZXN1bHQgPSAwOwotICAgIGZvciAoaSA9IDExOyBpID49IDA7
IC0taSkgewotICAgICAgICBleHBvbmVudCAqPSAyOwotICAgICAgICBpZiAoZXhwb25lbnQgPj0g
MSkgewotICAgICAgICAgICAgcmVzdWx0IHw9IDEgPDwgaTsKLSAgICAgICAgICAgIGV4cG9uZW50
IC09IDE7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gQ1BVKEFSTV9ORU9OKSAmJiBDT01QSUxFUihH
Q0NfQ09NUEFUSUJMRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NwdS9hcm0vZmlsdGVycy9GRUxpZ2h0aW5nTkVPTi5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY3B1L2FybS9maWx0ZXJzL0ZFTGlnaHRpbmdORU9OLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExNjM4OTFkMWU0MDdmMzdlODQyMjMzODc5MjkwMDNiNWI1
ZTM0NTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3B1L2FybS9maWx0ZXJzL0ZFTGlnaHRpbmdO
RU9OLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMSBVbml2ZXJzaXR5IG9mIFN6ZWdlZAotICogQ29weXJpZ2h0IChDKSAyMDExIFpvbHRh
biBIZXJjemVnCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBV
TklWRVJTSVRZIE9GIFNaRUdFRCBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFVO
SVZFUlNJVFkgT0YgU1pFR0VEIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBGRUxpZ2h0aW5nTkVPTl9oCi0jZGVmaW5lIEZFTGln
aHRpbmdORU9OX2gKLQotI2lmIENQVShBUk1fTkVPTikgJiYgQ1BVKEFSTV9UUkFESVRJT05BTCkg
JiYgQ09NUElMRVIoR0NDX0NPTVBBVElCTEUpCi0KLSNpbmNsdWRlICJGRUxpZ2h0aW5nLmgiCi0j
aW5jbHVkZSAiUG9pbnRMaWdodFNvdXJjZS5oIgotI2luY2x1ZGUgIlNwb3RMaWdodFNvdXJjZS5o
IgotI2luY2x1ZGUgPHd0Zi9QYXJhbGxlbEpvYnMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci0vLyBPdGhlcndpc2U6IERpc3RhbnQgTGlnaHQuCi0jZGVmaW5lIEZMQUdfUE9JTlRfTElHSFQg
ICAgICAgICAgICAgICAgIDB4MDEKLSNkZWZpbmUgRkxBR19TUE9UX0xJR0hUICAgICAgICAgICAg
ICAgICAgMHgwMgotI2RlZmluZSBGTEFHX0NPTkVfRVhQT05FTlRfSVNfMSAgICAgICAgICAweDA0
Ci0KLS8vIE90aGVyd2lzZTogRGlmZnVzZSBsaWdodC4KLSNkZWZpbmUgRkxBR19TUEVDVUxBUl9M
SUdIVCAgICAgICAgICAgICAgMHgxMAotI2RlZmluZSBGTEFHX0RJRkZVU0VfQ09OU1RfSVNfMSAg
ICAgICAgICAweDIwCi0jZGVmaW5lIEZMQUdfU1BFQ1VMQVJfRVhQT05FTlRfSVNfMSAgICAgIDB4
NDAKLQotLy8gTXVzdCBiZSBhbGlnbmVkIHRvIDE2IGJ5dGVzLgotc3RydWN0IEZFTGlnaHRpbmdG
bG9hdEFyZ3VtZW50c0Zvck5lb24gewotICAgIGZsb2F0IHN1cmZhY2VTY2FsZTsKLSAgICBmbG9h
dCBtaW51c1N1cmZhY2VTY2FsZURpdmlkZWRCeUZvdXI7Ci0gICAgZmxvYXQgZGlmZnVzZUNvbnN0
YW50OwotICAgIGZsb2F0IHBhZGRpbmcxOwotCi0gICAgZmxvYXQgY29uZUN1dE9mZkxpbWl0Owot
ICAgIGZsb2F0IGNvbmVGdWxsTGlnaHQ7Ci0gICAgZmxvYXQgY29uZUN1dE9mZlJhbmdlOwotICAg
IGZsb2F0IGNvbnN0T25lOwotCi0gICAgZmxvYXQgbGlnaHRYOwotICAgIGZsb2F0IGxpZ2h0WTsK
LSAgICBmbG9hdCBsaWdodFo7Ci0gICAgZmxvYXQgcGFkZGluZzI7Ci0KLSAgICBmbG9hdCBkaXJl
Y3Rpb25YOwotICAgIGZsb2F0IGRpcmVjdGlvblk7Ci0gICAgZmxvYXQgZGlyZWN0aW9uWjsKLSAg
ICBmbG9hdCBwYWRkaW5nMzsKLQotICAgIGZsb2F0IGNvbG9yUmVkOwotICAgIGZsb2F0IGNvbG9y
R3JlZW47Ci0gICAgZmxvYXQgY29sb3JCbHVlOwotICAgIGZsb2F0IHBhZGRpbmc0OwotfTsKLQot
c3RydWN0IEZFTGlnaHRpbmdQYWludGluZ0RhdGFGb3JOZW9uIHsKLSAgICB1bnNpZ25lZCBjaGFy
KiBwaXhlbHM7Ci0gICAgZmxvYXQgeVN0YXJ0OwotICAgIGludCB3aWR0aERlY3JlYXNlZEJ5VHdv
OwotICAgIGludCBhYnNvbHV0ZUhlaWdodDsKLSAgICAvLyBDb21iaW5hdGlvbiBvZiBGTEFHIGNv
bnN0YW50cyBhYm92ZS4KLSAgICBpbnQgZmxhZ3M7Ci0gICAgaW50IHNwZWN1bGFyRXhwb25lbnQ7
Ci0gICAgaW50IGNvbmVFeHBvbmVudDsKLSAgICBGRUxpZ2h0aW5nRmxvYXRBcmd1bWVudHNGb3JO
ZW9uKiBmbG9hdEFyZ3VtZW50czsKLSAgICBzaG9ydCogcGFpbnRpbmdDb25zdGFudHM7Ci19Owot
Ci1zaG9ydCogZmVMaWdodGluZ0NvbnN0YW50c0Zvck5lb24oKTsKLQotZXh0ZXJuICJDIiB7Ci12
b2lkIG5lb25EcmF3TGlnaHRpbmcoRkVMaWdodGluZ1BhaW50aW5nRGF0YUZvck5lb24qKTsKLX0K
LQotaW5saW5lIHZvaWQgRkVMaWdodGluZzo6cGxhdGZvcm1BcHBseU5lb24oY29uc3QgTGlnaHRp
bmdEYXRhJiBkYXRhLCBjb25zdCBMaWdodFNvdXJjZTo6UGFpbnRpbmdEYXRhJiBwYWludGluZ0Rh
dGEpCi17Ci0gICAgYWxpZ25hcygxNikgRkVMaWdodGluZ0Zsb2F0QXJndW1lbnRzRm9yTmVvbiBm
bG9hdEFyZ3VtZW50czsKLSAgICBGRUxpZ2h0aW5nUGFpbnRpbmdEYXRhRm9yTmVvbiBuZW9uRGF0
YSA9IHsKLSAgICAgICAgZGF0YS5waXhlbHMtPmRhdGEoKSwKLSAgICAgICAgMSwKLSAgICAgICAg
ZGF0YS53aWR0aERlY3JlYXNlZEJ5T25lIC0gMSwKLSAgICAgICAgZGF0YS5oZWlnaHREZWNyZWFz
ZWRCeU9uZSAtIDEsCi0gICAgICAgIDAsCi0gICAgICAgIDAsCi0gICAgICAgIDAsCi0gICAgICAg
ICZmbG9hdEFyZ3VtZW50cywKLSAgICAgICAgZmVMaWdodGluZ0NvbnN0YW50c0Zvck5lb24oKQot
ICAgIH07Ci0KLSAgICAvLyBTZXQgbGlnaHQgc291cmNlIGFyZ3VtZW50cy4KLSAgICBmbG9hdEFy
Z3VtZW50cy5jb25zdE9uZSA9IDE7Ci0KLSAgICBhdXRvIGNvbG9yID0gbV9saWdodGluZ0NvbG9y
LnRvU1JHQkFMb3NzeTx1aW50OF90PigpOwotCi0gICAgZmxvYXRBcmd1bWVudHMuY29sb3JSZWQg
PSBjb2xvci5yZWQ7Ci0gICAgZmxvYXRBcmd1bWVudHMuY29sb3JHcmVlbiA9IGNvbG9yLmdyZWVu
OwotICAgIGZsb2F0QXJndW1lbnRzLmNvbG9yQmx1ZSA9IGNvbG9yLmJsdWU7Ci0gICAgZmxvYXRB
cmd1bWVudHMucGFkZGluZzQgPSAwOwotCi0gICAgaWYgKG1fbGlnaHRTb3VyY2UtPnR5cGUoKSA9
PSBMU19QT0lOVCkgewotICAgICAgICBuZW9uRGF0YS5mbGFncyB8PSBGTEFHX1BPSU5UX0xJR0hU
OwotICAgICAgICBQb2ludExpZ2h0U291cmNlJiBwb2ludExpZ2h0U291cmNlID0gc3RhdGljX2Nh
c3Q8UG9pbnRMaWdodFNvdXJjZSY+KG1fbGlnaHRTb3VyY2UuZ2V0KCkpOwotICAgICAgICBmbG9h
dEFyZ3VtZW50cy5saWdodFggPSBwb2ludExpZ2h0U291cmNlLnBvc2l0aW9uKCkueCgpOwotICAg
ICAgICBmbG9hdEFyZ3VtZW50cy5saWdodFkgPSBwb2ludExpZ2h0U291cmNlLnBvc2l0aW9uKCku
eSgpOwotICAgICAgICBmbG9hdEFyZ3VtZW50cy5saWdodFogPSBwb2ludExpZ2h0U291cmNlLnBv
c2l0aW9uKCkueigpOwotICAgICAgICBmbG9hdEFyZ3VtZW50cy5wYWRkaW5nMiA9IDA7Ci0gICAg
fSBlbHNlIGlmIChtX2xpZ2h0U291cmNlLT50eXBlKCkgPT0gTFNfU1BPVCkgewotICAgICAgICBu
ZW9uRGF0YS5mbGFncyB8PSBGTEFHX1NQT1RfTElHSFQ7Ci0gICAgICAgIFNwb3RMaWdodFNvdXJj
ZSYgc3BvdExpZ2h0U291cmNlID0gc3RhdGljX2Nhc3Q8U3BvdExpZ2h0U291cmNlJj4obV9saWdo
dFNvdXJjZS5nZXQoKSk7Ci0gICAgICAgIGZsb2F0QXJndW1lbnRzLmxpZ2h0WCA9IHNwb3RMaWdo
dFNvdXJjZS5wb3NpdGlvbigpLngoKTsKLSAgICAgICAgZmxvYXRBcmd1bWVudHMubGlnaHRZID0g
c3BvdExpZ2h0U291cmNlLnBvc2l0aW9uKCkueSgpOwotICAgICAgICBmbG9hdEFyZ3VtZW50cy5s
aWdodFogPSBzcG90TGlnaHRTb3VyY2UucG9zaXRpb24oKS56KCk7Ci0gICAgICAgIGZsb2F0QXJn
dW1lbnRzLnBhZGRpbmcyID0gMDsKLQotICAgICAgICBmbG9hdEFyZ3VtZW50cy5kaXJlY3Rpb25Y
ID0gcGFpbnRpbmdEYXRhLmRpcmVjdGlvblZlY3Rvci54KCk7Ci0gICAgICAgIGZsb2F0QXJndW1l
bnRzLmRpcmVjdGlvblkgPSBwYWludGluZ0RhdGEuZGlyZWN0aW9uVmVjdG9yLnkoKTsKLSAgICAg
ICAgZmxvYXRBcmd1bWVudHMuZGlyZWN0aW9uWiA9IHBhaW50aW5nRGF0YS5kaXJlY3Rpb25WZWN0
b3IueigpOwotICAgICAgICBmbG9hdEFyZ3VtZW50cy5wYWRkaW5nMyA9IDA7Ci0KLSAgICAgICAg
ZmxvYXRBcmd1bWVudHMuY29uZUN1dE9mZkxpbWl0ID0gcGFpbnRpbmdEYXRhLmNvbmVDdXRPZmZM
aW1pdDsKLSAgICAgICAgZmxvYXRBcmd1bWVudHMuY29uZUZ1bGxMaWdodCA9IHBhaW50aW5nRGF0
YS5jb25lRnVsbExpZ2h0OwotICAgICAgICBmbG9hdEFyZ3VtZW50cy5jb25lQ3V0T2ZmUmFuZ2Ug
PSBwYWludGluZ0RhdGEuY29uZUN1dE9mZkxpbWl0IC0gcGFpbnRpbmdEYXRhLmNvbmVGdWxsTGln
aHQ7Ci0gICAgICAgIG5lb25EYXRhLmNvbmVFeHBvbmVudCA9IGdldFBvd2VyQ29lZmZpY2llbnRz
KHNwb3RMaWdodFNvdXJjZS5zcGVjdWxhckV4cG9uZW50KCkpOwotICAgICAgICBpZiAoc3BvdExp
Z2h0U291cmNlLnNwZWN1bGFyRXhwb25lbnQoKSA9PSAxKQotICAgICAgICAgICAgbmVvbkRhdGEu
ZmxhZ3MgfD0gRkxBR19DT05FX0VYUE9ORU5UX0lTXzE7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAg
QVNTRVJUKG1fbGlnaHRTb3VyY2UtPnR5cGUoKSA9PSBMU19ESVNUQU5UKTsKLSAgICAgICAgZmxv
YXRBcmd1bWVudHMubGlnaHRYID0gcGFpbnRpbmdEYXRhLmluaXRpYWxMaWdodGluZ0RhdGEubGln
aHRWZWN0b3IueCgpOwotICAgICAgICBmbG9hdEFyZ3VtZW50cy5saWdodFkgPSBwYWludGluZ0Rh
dGEuaW5pdGlhbExpZ2h0aW5nRGF0YS5saWdodFZlY3Rvci55KCk7Ci0gICAgICAgIGZsb2F0QXJn
dW1lbnRzLmxpZ2h0WiA9IHBhaW50aW5nRGF0YS5pbml0aWFsTGlnaHRpbmdEYXRhLmxpZ2h0VmVj
dG9yLnooKTsKLSAgICAgICAgZmxvYXRBcmd1bWVudHMucGFkZGluZzIgPSAxOwotICAgIH0KLQot
ICAgIC8vIFNldCBsaWdodGluZyBhcmd1bWVudHMuCi0gICAgZmxvYXRBcmd1bWVudHMuc3VyZmFj
ZVNjYWxlID0gZGF0YS5zdXJmYWNlU2NhbGU7Ci0gICAgZmxvYXRBcmd1bWVudHMubWludXNTdXJm
YWNlU2NhbGVEaXZpZGVkQnlGb3VyID0gLWRhdGEuc3VyZmFjZVNjYWxlIC8gNDsKLSAgICBpZiAo
bV9saWdodGluZ1R5cGUgPT0gRkVMaWdodGluZzo6RGlmZnVzZUxpZ2h0aW5nKQotICAgICAgICBm
bG9hdEFyZ3VtZW50cy5kaWZmdXNlQ29uc3RhbnQgPSBtX2RpZmZ1c2VDb25zdGFudDsKLSAgICBl
bHNlIHsKLSAgICAgICAgbmVvbkRhdGEuZmxhZ3MgfD0gRkxBR19TUEVDVUxBUl9MSUdIVDsKLSAg
ICAgICAgZmxvYXRBcmd1bWVudHMuZGlmZnVzZUNvbnN0YW50ID0gbV9zcGVjdWxhckNvbnN0YW50
OwotICAgICAgICBuZW9uRGF0YS5zcGVjdWxhckV4cG9uZW50ID0gZ2V0UG93ZXJDb2VmZmljaWVu
dHMobV9zcGVjdWxhckV4cG9uZW50KTsKLSAgICAgICAgaWYgKG1fc3BlY3VsYXJFeHBvbmVudCA9
PSAxKQotICAgICAgICAgICAgbmVvbkRhdGEuZmxhZ3MgfD0gRkxBR19TUEVDVUxBUl9FWFBPTkVO
VF9JU18xOwotICAgIH0KLSAgICBpZiAoZmxvYXRBcmd1bWVudHMuZGlmZnVzZUNvbnN0YW50ID09
IDEpCi0gICAgICAgIG5lb25EYXRhLmZsYWdzIHw9IEZMQUdfRElGRlVTRV9DT05TVF9JU18xOwot
Ci0gICAgaW50IG9wdGltYWxUaHJlYWROdW1iZXIgPSAoKGRhdGEud2lkdGhEZWNyZWFzZWRCeU9u
ZSAtIDEpICogKGRhdGEuaGVpZ2h0RGVjcmVhc2VkQnlPbmUgLSAxKSkgLyBzX21pbmltYWxSZWN0
RGltZW5zaW9uOwotICAgIGlmIChvcHRpbWFsVGhyZWFkTnVtYmVyID4gMSkgewotICAgICAgICAv
LyBJbml0aWFsaXplIHBhcmFsbGVsIGpvYnMKLSAgICAgICAgUGFyYWxsZWxKb2JzPEZFTGlnaHRp
bmdQYWludGluZ0RhdGFGb3JOZW9uPiBwYXJhbGxlbEpvYnMoJldlYkNvcmU6OkZFTGlnaHRpbmc6
OnBsYXRmb3JtQXBwbHlOZW9uV29ya2VyLCBvcHRpbWFsVGhyZWFkTnVtYmVyKTsKLQotICAgICAg
ICAvLyBGaWxsIHRoZSBwYXJhbWV0ZXIgYXJyYXkKLSAgICAgICAgaW50IGpvYiA9IHBhcmFsbGVs
Sm9icy5udW1iZXJPZkpvYnMoKTsKLSAgICAgICAgaWYgKGpvYiA+IDEpIHsKLSAgICAgICAgICAg
IGludCB5U3RhcnQgPSAxOwotICAgICAgICAgICAgaW50IHlTdGVwID0gKGRhdGEuaGVpZ2h0RGVj
cmVhc2VkQnlPbmUgLSAxKSAvIGpvYjsKLSAgICAgICAgICAgIGZvciAoLS1qb2I7IGpvYiA+PSAw
OyAtLWpvYikgewotICAgICAgICAgICAgICAgIEZFTGlnaHRpbmdQYWludGluZ0RhdGFGb3JOZW9u
JiBwYXJhbXMgPSBwYXJhbGxlbEpvYnMucGFyYW1ldGVyKGpvYik7Ci0gICAgICAgICAgICAgICAg
cGFyYW1zID0gbmVvbkRhdGE7Ci0gICAgICAgICAgICAgICAgcGFyYW1zLnlTdGFydCA9IHlTdGFy
dDsKLSAgICAgICAgICAgICAgICBwYXJhbXMucGl4ZWxzICs9ICh5U3RhcnQgLSAxKSAqIChkYXRh
LndpZHRoRGVjcmVhc2VkQnlPbmUgKyAxKSAqIDQ7Ci0gICAgICAgICAgICAgICAgaWYgKGpvYiA+
IDApIHsKLSAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmFic29sdXRlSGVpZ2h0ID0geVN0ZXA7
Ci0gICAgICAgICAgICAgICAgICAgIHlTdGFydCArPSB5U3RlcDsKLSAgICAgICAgICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmFic29sdXRlSGVpZ2h0ID0gZGF0YS5o
ZWlnaHREZWNyZWFzZWRCeU9uZSAtIHlTdGFydDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHBhcmFsbGVsSm9icy5leGVjdXRlKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICBuZW9uRHJhd0xpZ2h0aW5nKCZuZW9uRGF0YSk7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIENQVShBUk1fTkVPTikgJiYgQ09NUElMRVIoR0ND
X0NPTVBBVElCTEUpCi0KLSNlbmRpZiAvLyBGRUxpZ2h0aW5nTkVPTl9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJtL2ZpbHRlcnMvTkVPTkhlbHBl
cnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycy9O
RU9OSGVscGVycy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNjZhZDhkMTg4ZmE0
OTkxZWUxNzE5YTY0NjNiNTQ2ZWQ5NjdhYTYxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NwdS9h
cm0vZmlsdGVycy9ORU9OSGVscGVycy5oCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBVbml2ZXJzaXR5IG9mIFN6ZWdlZAotICogQ29weXJp
Z2h0IChDKSAyMDEyIEdhYm9yIFJhcGNzYW55aQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVU5JVkVSU0lUWSBPRiBTWkVHRUQgYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBVTklWRVJTSVRZIE9GIFNaRUdFRCBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgTkVPTkhlbHBlcnNf
aAotI2RlZmluZSBORU9OSGVscGVyc19oCi0KLSNpZiBIQVZFKEFSTV9ORU9OX0lOVFJJTlNJQ1Mp
Ci0KLSNpbmNsdWRlIDxhcm1fbmVvbi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWlubGlu
ZSBmbG9hdDMyeDRfdCBsb2FkUkdCQThBc0Zsb2F0KGNvbnN0IHVpbnQzMl90KiBzb3VyY2UpCi17
Ci0gICAgdWludDMyeDJfdCB0ZW1wb3JhcnkxID0gezAsIDB9OwotICAgIHRlbXBvcmFyeTEgPSB2
c2V0X2xhbmVfdTMyKCpzb3VyY2UsIHRlbXBvcmFyeTEsIDApOwotICAgIHVpbnQxNng0X3QgdGVt
cG9yYXJ5MiA9IHZnZXRfbG93X3UxNih2bW92bF91OCh2cmVpbnRlcnByZXRfdThfdTMyKHRlbXBv
cmFyeTEpKSk7Ci0gICAgcmV0dXJuIHZjdnRxX2YzMl91MzIodm1vdmxfdTE2KHRlbXBvcmFyeTIp
KTsKLX0KLQotaW5saW5lIHZvaWQgc3RvcmVGbG9hdEFzUkdCQTgoZmxvYXQzMng0X3QgZGF0YSwg
dWludDMyX3QqIGRlc3RpbmF0aW9uKQotewotICAgIHVpbnQxNng0X3QgdGVtcG9yYXJ5MSA9IHZt
b3ZuX3UzMih2Y3Z0cV91MzJfZjMyKGRhdGEpKTsKLSAgICB1aW50OHg4X3QgdGVtcG9yYXJ5MiA9
IHZtb3ZuX3UxNih2Y29tYmluZV91MTYodGVtcG9yYXJ5MSwgdGVtcG9yYXJ5MSkpOwotICAgICpk
ZXN0aW5hdGlvbiA9IHZnZXRfbGFuZV91MzIodnJlaW50ZXJwcmV0X3UzMl91OCh0ZW1wb3Jhcnky
KSwgMCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEhBVkUoQVJN
X05FT05fSU5UUklOU0lDUykKLQotI2VuZGlmIC8vIE5FT05IZWxwZXJzX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCmluZGV4
IDM1Y2Q2NTVmNmI2MjJiZTAwYzJjMTBhZGMwNDg5ZWUzYzVkY2U0YTQuLmQ0Mzk5NWI1NTczMzg4
MWJmMmUwZTQxYTZlNTJiMDkzOTg3MzUzYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcApAQCAtMjYsNyArMjYsNiBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZFQmxlbmQuaCIKIAotI2luY2x1ZGUgIkZF
QmxlbmRORU9OLmgiCiAjaW5jbHVkZSAiRkVCbGVuZFNvZnR3YXJlQXBwbGllci5oIgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuaAppbmRleCA0N2NmODVlOTg5NWE3MGY0MzQ2
MWUxMGMyNDMyZGNmYTdkMGE0ZTlmLi5lOWY3ZDlmNDk2MDk4ZmExNjhkNTQzZDgwMTI1MjAwM2I2
MzRjMjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQmxlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQmxlbmQuaApAQCAtNDAsOSArNDAsNiBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBwbGF0
Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHBs
YXRmb3JtQXBwbHlORU9OKHVuc2lnbmVkIGNoYXIqIHNyY1BpeGVsQXJyYXlBLCB1bnNpZ25lZCBj
aGFyKiBzcmNQaXhlbEFycmF5QiwgdW5zaWduZWQgY2hhciogZHN0UGl4ZWxBcnJheSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNvbG9yQXJyYXlMZW5ndGgpOwotCiAgICAg
V1RGOjpUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6VGV4dFN0cmVhbSYs
IFJlcHJlc2VudGF0aW9uVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBCbGVuZE1vZGUgbV9t
b2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUNvbXBvc2l0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUNvbXBvc2l0ZS5oCmluZGV4IGY1ZTQ5NzQwMjY5YzBkNmVmOTlkMDg3MjA0MTFkMzRlZThk
Njc0MTMuLjZmNzA4MWVkN2E3NjlmYTZjNWY3ZDgzMTdlMzlhMGE0NTBkMTNkY2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9z
aXRlLmgKQEAgLTcwLDEzICs3MCw2IEBAIHByaXZhdGU6CiAKICAgICBpbmxpbmUgdm9pZCBwbGF0
Zm9ybUFyaXRobWV0aWNTb2Z0d2FyZShjb25zdCBVaW50OENsYW1wZWRBcnJheSYgc291cmNlLCBV
aW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIGZsb2F0IGsxLCBmbG9hdCBrMiwgZmxvYXQg
azMsIGZsb2F0IGs0KTsKIAotI2lmIEhBVkUoQVJNX05FT05fSU5UUklOU0lDUykKLSAgICB0ZW1w
bGF0ZSA8aW50IGIxLCBpbnQgYjQ+Ci0gICAgc3RhdGljIGlubGluZSB2b2lkIGNvbXB1dGVBcml0
aG1ldGljUGl4ZWxzTmVvbihjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0
aW9uLCB1bnNpZ25lZCBwaXhlbEFycmF5TGVuZ3RoLCBmbG9hdCBrMSwgZmxvYXQgazIsIGZsb2F0
IGszLCBmbG9hdCBrNCk7Ci0KLSAgICBzdGF0aWMgaW5saW5lIHZvaWQgcGxhdGZvcm1Bcml0aG1l
dGljTmVvbihjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNp
Z25lZCBwaXhlbEFycmF5TGVuZ3RoLCBmbG9hdCBrMSwgZmxvYXQgazIsIGZsb2F0IGszLCBmbG9h
dCBrNCk7Ci0jZW5kaWYKLQogICAgIENvbXBvc2l0ZU9wZXJhdGlvblR5cGUgbV90eXBlOwogICAg
IGZsb2F0IG1fazE7CiAgICAgZmxvYXQgbV9rMjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmgKaW5kZXggMzExODlhNDBhNjA1
YTA1Y2NhMGI4MTBlY2E5MmIzYTExZmQ5NGU5Ni4uZTkzMDkzYTg0YjcxMjkwNjg2ZWQ1N2E1YzFi
NDFlMjc4YWFkNTc3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUxpZ2h0aW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmgKQEAgLTYyLDExICs2Miw2IEBAIHByb3RlY3RlZDoK
IAogICAgIGJvb2wgcGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0IEZpbHRlciYpIG92ZXJyaWRl
OwogCi0jaWYgQ1BVKEFSTV9ORU9OKSAmJiBDUFUoQVJNX1RSQURJVElPTkFMKSAmJiBDT01QSUxF
UihHQ0NfQ09NUEFUSUJMRSkKLSAgICBzdGF0aWMgaW50IGdldFBvd2VyQ29lZmZpY2llbnRzKGZs
b2F0IGV4cG9uZW50KTsKLSAgICBpbmxpbmUgdm9pZCBwbGF0Zm9ybUFwcGx5TmVvbihjb25zdCBM
aWdodGluZ0RhdGEmLCBjb25zdCBMaWdodFNvdXJjZTo6UGFpbnRpbmdEYXRhJik7Ci0jZW5kaWYK
LQogICAgIENvbG9yIG1fbGlnaHRpbmdDb2xvcjsKICAgICBmbG9hdCBtX3N1cmZhY2VTY2FsZTsK
ICAgICBmbG9hdCBtX2RpZmZ1c2VDb25zdGFudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJJbWFnZS5jcHAKaW5kZXggNzY5MTY3
ODQ2OWQxNDk0OTZmYmIwYmFkMmVhYmQ4M2M4YjNkNDcxOS4uNDdlYjhjNjFhYWYwODgwOGU1Y2My
ZDM3ZjkzMzE0YTliY2NhYmRmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJJbWFnZS5jcHAKQEAgLTMxLDEwICszMSw2IEBA
CiAjaW5jbHVkZSAiUGl4ZWxCdWZmZXIuaCIKICNpbmNsdWRlICJQaXhlbEJ1ZmZlckNvbnZlcnNp
b24uaCIKIAotI2lmIEhBVkUoQVJNX05FT05fSU5UUklOU0lDUykKLSNpbmNsdWRlIDxhcm1fbmVv
bi5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVmUHRyPEZpbHRlckltYWdl
PiBGaWx0ZXJJbWFnZTo6Y3JlYXRlKGNvbnN0IEZsb2F0UmVjdCYgcHJpbWl0aXZlU3VicmVnaW9u
LCBjb25zdCBJbnRSZWN0JiBhYnNvbHV0ZUltYWdlUmVjdCwgYm9vbCBpc0FscGhhSW1hZ2UsIFJl
bmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBj
b2xvclNwYWNlKQpAQCAtMjY1LDI1ICsyNjEsNiBAQCB2b2lkIEZpbHRlckltYWdlOjpjb3JyZWN0
UHJlbXVsdGlwbGllZFBpeGVsQnVmZmVyKCkKICAgICAvLyBXZSBtdXN0IGhhdmUgZm91ciBieXRl
cyBwZXIgcGl4ZWwsIGFuZCBjb21wbGV0ZSBwaXhlbHMKICAgICBBU1NFUlQoIShwaXhlbEFycmF5
TGVuZ3RoICUgNCkpOwogCi0jaWYgSEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQotICAgIGlmIChw
aXhlbEFycmF5TGVuZ3RoID49IDY0KSB7Ci0gICAgICAgIHVpbnQ4X3QqIGxhc3RQaXhlbCA9IHBp
eGVsRGF0YSArIChwaXhlbEFycmF5TGVuZ3RoICYgfjB4M2YpOwotICAgICAgICBkbyB7Ci0gICAg
ICAgICAgICAvLyBJbmNyZW1lbnRzIHBpeGVsRGF0YSBieSA2NC4KLSAgICAgICAgICAgIHVpbnQ4
eDE2eDRfdCBzaXh0ZWVuUGl4ZWxzID0gdmxkNHFfdTgocGl4ZWxEYXRhKTsKLSAgICAgICAgICAg
IHNpeHRlZW5QaXhlbHMudmFsWzBdID0gdm1pbnFfdTgoc2l4dGVlblBpeGVscy52YWxbMF0sIHNp
eHRlZW5QaXhlbHMudmFsWzNdKTsKLSAgICAgICAgICAgIHNpeHRlZW5QaXhlbHMudmFsWzFdID0g
dm1pbnFfdTgoc2l4dGVlblBpeGVscy52YWxbMV0sIHNpeHRlZW5QaXhlbHMudmFsWzNdKTsKLSAg
ICAgICAgICAgIHNpeHRlZW5QaXhlbHMudmFsWzJdID0gdm1pbnFfdTgoc2l4dGVlblBpeGVscy52
YWxbMl0sIHNpeHRlZW5QaXhlbHMudmFsWzNdKTsKLSAgICAgICAgICAgIHZzdDRxX3U4KHBpeGVs
RGF0YSwgc2l4dGVlblBpeGVscyk7Ci0gICAgICAgICAgICBwaXhlbERhdGEgKz0gNjQ7Ci0gICAg
ICAgIH0gd2hpbGUgKHBpeGVsRGF0YSA8IGxhc3RQaXhlbCk7Ci0KLSAgICAgICAgcGl4ZWxBcnJh
eUxlbmd0aCAmPSAweDNmOwotICAgICAgICBpZiAoIXBpeGVsQXJyYXlMZW5ndGgpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0KICAgICBpbnQgbnVtUGl4ZWxzID0gcGl4ZWxB
cnJheUxlbmd0aCAvIDQ7CiAKICAgICAvLyBJdGVyYXRlIG92ZXIgZWFjaCBwaXhlbCwgY2hlY2tp
bmcgYWxwaGEgYW5kIGFkanVzdGluZyBjb2xvciBjb21wb25lbnRzIGlmIG5lY2Vzc2FyeQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2Fy
ZS9GRUJsZW5kU29mdHdhcmVBcHBsaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVCbGVuZFNvZnR3YXJlQXBwbGllci5jcHAKaW5kZXgg
NGFmNzc3YTVjY2YyZDU0MTdlZGQ0MzUzYjRiNGViYTFhNjBhMTBiOC4uNGZjMDMwNmI5ZDVhNGFm
ODkzNzIxOWUwMDNmNmZlOGQxZWU0YzU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUJsZW5kU29mdHdhcmVBcHBsaWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJl
L0ZFQmxlbmRTb2Z0d2FyZUFwcGxpZXIuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotI2lmICFIQVZFKEFSTV9ORU9OX0lOVFJJTlNJQ1MpCiBib29sIEZFQmxl
bmRTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlckltYWdl
VmVjdG9yJiBpbnB1dHMsIEZpbHRlckltYWdlJiByZXN1bHQpCiB7CiAgICAgYXV0byYgaW5wdXQg
PSBpbnB1dHNbMF0uZ2V0KCk7CkBAIC01Myw2ICs1Miw1IEBAIGJvb2wgRkVCbGVuZFNvZnR3YXJl
QXBwbGllcjo6YXBwbHkoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlu
cHV0CiAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmlucHV0SW1hZ2UsIG1fZWZm
ZWN0LmRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW5wdXQuYWJzb2x1dGVJbWFnZVJlY3QoKSks
IHsgeyB9LCBpbnB1dEltYWdlLT5sb2dpY2FsU2l6ZSgpIH0sIHsgQ29tcG9zaXRlT3BlcmF0b3I6
OlNvdXJjZU92ZXIsIG1fZWZmZWN0LmJsZW5kTW9kZSgpIH0pOwogICAgIHJldHVybiB0cnVlOwog
fQotI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVDb21wb3NpdGVTb2Z0
d2FyZUFwcGxpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9zb2Z0d2FyZS9GRUNvbXBvc2l0ZVNvZnR3YXJlQXBwbGllci5jcHAKaW5kZXggMmM2YmI0YTQw
MmJlZDNkZTI3ODNmNTRmMjQyZmMyODA5YmZhMTMxMC4uYjZkZWYyMjBjY2NmZjE1MThkYWMxOWU5
YjU4NGJmMjljYzg0MTEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUNvbXBvc2l0ZVNvZnR3YXJlQXBwbGllci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUNv
bXBvc2l0ZVNvZnR3YXJlQXBwbGllci5jcHAKQEAgLTkyLDcgKzkyLDYgQEAgaW5saW5lIHZvaWQg
RkVDb21wb3NpdGVTb2Z0d2FyZUFwcGxpZXI6OmNvbXB1dGVBcml0aG1ldGljUGl4ZWxzVW5jbGFt
cGVkKHVuc2lnbmUKICAgICB9CiB9CiAKLSNpZiAhSEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQog
aW5saW5lIHZvaWQgRkVDb21wb3NpdGVTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5UGxhdGZvcm1Bcml0
aG1ldGljKHVuc2lnbmVkIGNoYXIqIHNvdXJjZSwgdW5zaWduZWQgY2hhciogZGVzdGluYXRpb24s
IGludCBwaXhlbEFycmF5TGVuZ3RoLCBmbG9hdCBrMSwgZmxvYXQgazIsIGZsb2F0IGszLCBmbG9h
dCBrNCkKIHsKICAgICBmbG9hdCB1cHBlckxpbWl0ID0gc3RkOjptYXgoMC4wZiwgazEpICsgc3Rk
OjptYXgoMC4wZiwgazIpICsgc3RkOjptYXgoMC4wZiwgazMpICsgazQ7CkBAIC0xMjQsNyArMTIz
LDYgQEAgaW5saW5lIHZvaWQgRkVDb21wb3NpdGVTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5UGxhdGZv
cm1Bcml0aG1ldGljKHVuc2lnbmVkIGNoYXIqIHMKICAgICAgICAgICAgIGNvbXB1dGVBcml0aG1l
dGljUGl4ZWxzPDAsIDA+KHNvdXJjZSwgZGVzdGluYXRpb24sIHBpeGVsQXJyYXlMZW5ndGgsIGsx
LCBrMiwgazMsIGs0KTsKICAgICB9CiB9Ci0jZW5kaWYKIAogYm9vbCBGRUNvbXBvc2l0ZVNvZnR3
YXJlQXBwbGllcjo6YXBwbHlBcml0aG1ldGljKEZpbHRlckltYWdlJiBpbnB1dCwgRmlsdGVySW1h
Z2UmIGlucHV0MiwgRmlsdGVySW1hZ2UmIHJlc3VsdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVHYXVzc2lhbkJsdXJT
b2Z0d2FyZUFwcGxpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9zb2Z0d2FyZS9GRUdhdXNzaWFuQmx1clNvZnR3YXJlQXBwbGllci5jcHAKaW5kZXggMWRm
YTk3ZTljOTE5ZTc3M2IyMWYzNTkzNzcxMDFmNjM4ODg3ZTBlOC4uOGJjZWYxOGY2ZDI5NjY5ZjAw
MGVjZGY2OTA4MTUyZDM1MDliZjcyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUdhdXNzaWFuQmx1clNvZnR3YXJlQXBwbGll
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0
d2FyZS9GRUdhdXNzaWFuQmx1clNvZnR3YXJlQXBwbGllci5jcHAKQEAgLTI5OCwyNyArMjk4LDEz
IEBAIGlubGluZSB2b2lkIEZFR2F1c3NpYW5CbHVyU29mdHdhcmVBcHBsaWVyOjpib3hCbHVyVW5h
Y2NlbGVyYXRlZChVaW50OENsYW1wZWRBcnJhCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyAr
K2kpIHsKICAgICAgICAgaWYgKGtlcm5lbFNpemVYKSB7CiAgICAgICAgICAgICBrZXJuZWxQb3Np
dGlvbihpLCBrZXJuZWxTaXplWCwgZHhMZWZ0LCBkeFJpZ2h0KTsKLSNpZiBIQVZFKEFSTV9ORU9O
X0lOVFJJTlNJQ1MpCi0gICAgICAgICAgICBpZiAoIWlzQWxwaGFJbWFnZSkKLSAgICAgICAgICAg
ICAgICBib3hCbHVyTkVPTigqZnJvbUJ1ZmZlciwgKnRvQnVmZmVyLCBrZXJuZWxTaXplWCwgZHhM
ZWZ0LCBkeFJpZ2h0LCA0LCBzdHJpZGUsIHBhaW50U2l6ZS53aWR0aCgpLCBwYWludFNpemUuaGVp
Z2h0KCkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGJveEJsdXIoKmZyb21C
dWZmZXIsICp0b0J1ZmZlciwga2VybmVsU2l6ZVgsIGR4TGVmdCwgZHhSaWdodCwgNCwgc3RyaWRl
LCBwYWludFNpemUud2lkdGgoKSwgcGFpbnRTaXplLmhlaWdodCgpLCB0cnVlLCBlZGdlTW9kZSk7
Ci0jZWxzZQogICAgICAgICAgICAgYm94Qmx1cigqZnJvbUJ1ZmZlciwgKnRvQnVmZmVyLCBrZXJu
ZWxTaXplWCwgZHhMZWZ0LCBkeFJpZ2h0LCA0LCBzdHJpZGUsIHBhaW50U2l6ZS53aWR0aCgpLCBw
YWludFNpemUuaGVpZ2h0KCksIGlzQWxwaGFJbWFnZSwgZWRnZU1vZGUpOwotI2VuZGlmCiAgICAg
ICAgICAgICBzdGQ6OnN3YXAoZnJvbUJ1ZmZlciwgdG9CdWZmZXIpOwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKGtlcm5lbFNpemVZKSB7CiAgICAgICAgICAgICBrZXJuZWxQb3NpdGlvbihpLCBr
ZXJuZWxTaXplWSwgZHlMZWZ0LCBkeVJpZ2h0KTsKLSNpZiBIQVZFKEFSTV9ORU9OX0lOVFJJTlNJ
Q1MpCi0gICAgICAgICAgICBpZiAoIWlzQWxwaGFJbWFnZSkKLSAgICAgICAgICAgICAgICBib3hC
bHVyTkVPTigqZnJvbUJ1ZmZlciwgKnRvQnVmZmVyLCBrZXJuZWxTaXplWSwgZHlMZWZ0LCBkeVJp
Z2h0LCBzdHJpZGUsIDQsIHBhaW50U2l6ZS5oZWlnaHQoKSwgcGFpbnRTaXplLndpZHRoKCkpOwot
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGJveEJsdXIoKmZyb21CdWZmZXIsICp0
b0J1ZmZlciwga2VybmVsU2l6ZVksIGR5TGVmdCwgZHlSaWdodCwgc3RyaWRlLCA0LCBwYWludFNp
emUuaGVpZ2h0KCksIHBhaW50U2l6ZS53aWR0aCgpLCB0cnVlLCBlZGdlTW9kZSk7Ci0jZWxzZQog
ICAgICAgICAgICAgYm94Qmx1cigqZnJvbUJ1ZmZlciwgKnRvQnVmZmVyLCBrZXJuZWxTaXplWSwg
ZHlMZWZ0LCBkeVJpZ2h0LCBzdHJpZGUsIDQsIHBhaW50U2l6ZS5oZWlnaHQoKSwgcGFpbnRTaXpl
LndpZHRoKCksIGlzQWxwaGFJbWFnZSwgZWRnZU1vZGUpOwotI2VuZGlmCiAgICAgICAgICAgICBz
dGQ6OnN3YXAoZnJvbUJ1ZmZlciwgdG9CdWZmZXIpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9G
RUxpZ2h0aW5nU29mdHdhcmVBcHBsaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVMaWdodGluZ1NvZnR3YXJlQXBwbGllci5jcHAKaW5k
ZXggYzE5OGY0NjkwMzMzNTRmZmQxYjNlMTUxYjVhMGQ5Njg2NDNkNTE0ZS4uNmJlZDQzYzBlZTYz
Yzc4YmU0NzRjY2ZkYTQ0NTc5YjcxOTVkZGU0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUxpZ2h0aW5nU29mdHdhcmVBcHBs
aWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3Nv
ZnR3YXJlL0ZFTGlnaHRpbmdTb2Z0d2FyZUFwcGxpZXIuY3BwCkBAIC0yODIsNyArMjgyLDYgQEAg
dm9pZCBGRUxpZ2h0aW5nU29mdHdhcmVBcHBsaWVyOjphcHBseVBsYXRmb3JtR2VuZXJpY1dvcmtl
cihBcHBseVBhcmFtZXRlcnMqIHBhcmEKICAgICBhcHBseVBsYXRmb3JtR2VuZXJpY1BhaW50KHBh
cmFtZXRlcnMtPmRhdGEsIHBhcmFtZXRlcnMtPnBhaW50aW5nRGF0YSwgcGFyYW1ldGVycy0+eVN0
YXJ0LCBwYXJhbWV0ZXJzLT55RW5kKTsKIH0KIAotI2lmICEoQ1BVKEFSTV9ORU9OKSAmJiBDUFUo
QVJNX1RSQURJVElPTkFMKSAmJiBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkpCiB2b2lkIEZFTGln
aHRpbmdTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5UGxhdGZvcm1HZW5lcmljKGNvbnN0IExpZ2h0aW5n
RGF0YSYgZGF0YSwgY29uc3QgTGlnaHRTb3VyY2U6OlBhaW50aW5nRGF0YSYgcGFpbnRpbmdEYXRh
KQogewogICAgIHVuc2lnbmVkIHJvd3NUb1Byb2Nlc3MgPSBkYXRhLmhlaWdodCAtIDI7CkBAIC0z
MjAsNyArMzE5LDYgQEAgdm9pZCBGRUxpZ2h0aW5nU29mdHdhcmVBcHBsaWVyOjphcHBseVBsYXRm
b3JtR2VuZXJpYyhjb25zdCBMaWdodGluZ0RhdGEmIGRhdGEsIGMKIAogICAgIGFwcGx5UGxhdGZv
cm1HZW5lcmljUGFpbnQoZGF0YSwgcGFpbnRpbmdEYXRhLCAxLCBkYXRhLmhlaWdodCAtIDEpOwog
fQotI2VuZGlmCiAKIHZvaWQgRkVMaWdodGluZ1NvZnR3YXJlQXBwbGllcjo6YXBwbHlQbGF0Zm9y
bShjb25zdCBMaWdodGluZ0RhdGEmIGRhdGEpCiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445158</attachid>
            <date>2021-11-25 15:11:27 -0800</date>
            <delta_ts>2022-02-10 16:18:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233500-20211125151126.patch</filename>
            <type>text/plain</type>
            <size>98518</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGVhYjNiMjBkYTVmNDFhMjYwMTM4NDhj
OTViMmViNTZmMzFjZDE3ODEuLmI4ZDgwNTk0YTJhZTE5YzZkMWQzMjJkMWNhYjMyYWRlZGYwNmIw
ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMTEtMjUgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHRoZSBjb2RlIHVuZGVyICNpZiBIQVZF
KEFSTV9ORU9OX0lOVFJJTlNJQ1MpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzM1MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZW1vdmUgdGhlIG1hY3JvIEhBVkVfQVJNX05FT05fSU5UUklOU0lDUyBz
aW5jZSBpdCBpcyBkaXNhYmxlZCBmb3IKKyAgICAgICAgSU9TX0ZBTUlMWS4gQW5kIGl0IHNlZW1z
IG5vIG90aGVyIHBvcnQgZW5hYmxlcyBpdC4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUhhdmUu
aDoKKwogMjAyMS0xMS0xOSAgQW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBbTW9kZWxdIGFkZCBhdWRpbyBzdXBwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzIzMGY5ZDc3
ZjY4OTE2YWUxZmVjZGY0ZDI4ZDM1ZmVhMWUzNjE5ZS4uZGFkOWY2M2E2MjhmNWE1NDRiMTZlZDAy
ZTYxZTEyYWU3OWEwMGQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIxLTExLTI1
ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB0
aGUgY29kZSB1bmRlciAjaWYgSEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNTAwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGRlYWQgY29kZSB3aGlj
aCBkb2VzIG5vdCBjb21waWxlIGFueW1vcmUuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTaW5jUmVzYW1wbGVyOjpjb252b2x2ZSk6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vVmVjdG9yTWF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWZWN0b3JN
YXRoOjptdWx0aXBseUJ5U2NhbGFyVGhlbkFkZFRvT3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6
OlZlY3Rvck1hdGg6Om11bHRpcGx5QnlTY2FsYXIpOgorICAgICAgICAoV2ViQ29yZTo6VmVjdG9y
TWF0aDo6YWRkU2NhbGFyKToKKyAgICAgICAgKFdlYkNvcmU6OlZlY3Rvck1hdGg6OmFkZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpWZWN0b3JNYXRoOjpzdWJzdHJhY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6VmVjdG9yTWF0aDo6bXVsdGlwbHkpOgorICAgICAgICAoV2ViQ29yZTo6VmVjdG9yTWF0aDo6
bXVsdGlwbHlDb21wbGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlZlY3Rvck1hdGg6OnN1bU9mU3F1
YXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpWZWN0b3JNYXRoOjptYXhpbXVtTWFnbml0dWRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlZlY3Rvck1hdGg6OmNsYW1wKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9Gb3JtYXRDb252ZXJ0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dWludDhf
dD4pOgorICAgICAgICAoV2ViQ29yZTo6dWludDE2X3Q+KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jcHUvYXJtL0dyYXBoaWNzQ29udGV4dEdMTkVPTi5oOiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycy9GRUJsZW5kTkVPTi5oOiBSZW1v
dmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycy9GRUNvbXBv
c2l0ZUFyaXRobWV0aWNORU9OLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY3B1L2FybS9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyTkVPTi5oOiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycy9GRUxpZ2h0aW5nTkVPTi5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3B1L2FybS9maWx0ZXJzL0ZF
TGlnaHRpbmdORU9OLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3B1
L2FybS9maWx0ZXJzL05FT05IZWxwZXJzLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQmxlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ29tcG9zaXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxp
Z2h0aW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJJbWFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJJbWFnZTo6Y29ycmVjdFByZW11bHRpcGxp
ZWRQaXhlbEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0
d2FyZS9GRUJsZW5kU29mdHdhcmVBcHBsaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQmxl
bmRTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL3NvZnR3YXJlL0ZFQ29tcG9zaXRlU29mdHdhcmVBcHBsaWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZFQ29tcG9zaXRlU29mdHdhcmVBcHBsaWVyOjphcHBseVBsYXRmb3JtQXJpdGht
ZXRpYyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUdh
dXNzaWFuQmx1clNvZnR3YXJlQXBwbGllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUdhdXNz
aWFuQmx1clNvZnR3YXJlQXBwbGllcjo6Ym94Qmx1clVuYWNjZWxlcmF0ZWQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVMaWdodGluZ1NvZnR3YXJlQXBw
bGllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUxpZ2h0aW5nU29mdHdhcmVBcHBsaWVyOjph
cHBseVBsYXRmb3JtR2VuZXJpYyk6CisKIDIwMjEtMTEtMjUgIEFudHRpIEtvaXZpc3RvICA8YW50
dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFs6aGFzKCkgcHNldWRvLWNsYXNzXSBJbnZhbGlkYXRp
b24gc3VwcG9ydCBmb3IgYWRkaW5nIGFuZCByZW1vdmluZyBub2RlcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUu
aAppbmRleCBjY2VjMWVmZDExZDI5ODc1OTE5MjU1ZmVlN2E2YWMyMzY0Mzc2NjgxLi45Y2Q2Yzk1
NmI4MzFlNjA3ODUzZjQ1MzdjYmE0ZjY3Nzc2YWQ4ZWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybUhhdmUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaApA
QCAtNDIsMTEgKzQyLDYgQEAKICNlbmRpZgogCiAKLSNpZiBDUFUoQVJNX05FT04pCi0vKiBBbGwg
TkVPTiBpbnRyaW5zaWNzIHVzYWdlIGNhbiBiZSBkaXNhYmxlZCBieSB0aGlzIG1hY3JvLiAqLwot
I2RlZmluZSBIQVZFX0FSTV9ORU9OX0lOVFJJTlNJQ1MgMQotI2VuZGlmCi0KIC8qIEZJWE1FOiBU
aGlzIHNob3VsZCBiZSByZW5hbWVkIHRvIFdURl9DUFVfQVJNX0lESVZfSU5TVFJVQ1RJT05TIGFu
ZCBtb3ZlZCB0byBDUFUuaCAqLwogI2lmIGRlZmluZWQoX19BUk1fQVJDSF9FWFRfSURJVl9fKSB8
fCBDUFUoQVBQTEVfQVJNVjdTKQogI2RlZmluZSBIQVZFX0FSTV9JRElWX0lOU1RSVUNUSU9OUyAx
CkBAIC03NiwxMSArNzEsNiBAQAogI2RlZmluZSBIQVZFX1JFQURMSU5FIDEKICNlbmRpZgogCi0j
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgQ1BVKEFSTV9ORU9OKQotI3VuZGVmIEhBVkVfQVJN
X05FT05fSU5UUklOU0lDUwotI2RlZmluZSBIQVZFX0FSTV9ORU9OX0lOVFJJTlNJQ1MgMAotI2Vu
ZGlmCi0KICNpZiAhZGVmaW5lZChIQVZFX1ZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklFVykgJiYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICNkZWZpbmUgSEFWRV9WSVNJQklMSVRZX1BST1BBR0FUSU9O
X1ZJRVcgMQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDgwZDhkNGNiMzU0MzkxYTQ1
MGI2MjYwZmY2OWFhNjAyYmQwMThmNTYuLjk5ZmZiODk0MWViNWIzYThiOGY5OGQzNmUwMWU2MzQ3
OGE3ZWZiZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMzcsOCArMTM3LDYgQEAgc2V0KFdl
YkNvcmVfUFJJVkFURV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9nYW1l
cGFkIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcyIKLSAgICAiJHtXRUJD
T1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvY3B1L2FybSIKLSAgICAiJHtXRUJDT1JFX0RJUn0v
cGxhdGZvcm0vZ3JhcGhpY3MvY3B1L2FybS9maWx0ZXJzIgogICAgICIke1dFQkNPUkVfRElSfS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvc29mdHdhcmUiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGI2ZWMxNDQ5YTg0OWNkYjRm
OWIxNjY3MTc4NzYyYzc4NDhiZjEyNDYuLjFmNzg4NzhjNzU3YTU1NjdkYTlmZDQ5NTAzNjE0NjRk
OGIzNzZjYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yMDcxLDcgKzIwNzEsNiBAQCBwbGF0Zm9ybS9n
cmFwaGljcy9WUDlVdGlsaXRpZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9WZWxvY2l0eURhdGEu
Y3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKIHBsYXRmb3JtL2dyYXBo
aWNzL1dpZHRoSXRlcmF0b3IuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJtL2ZpbHRlcnMv
RkVMaWdodGluZ05FT04uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3QuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3
aW5nQ29udGV4dC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1zLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGEzODhlMTlhMmMxNzczY2E3ZTNhODliZGRmNTM2NmIxOTIyMDY1OGQu
LmJkZmM2NTllZmVlNjQ5OGJiMDM0OGE3M2QxOWIwNGIwNzUyNWM4OGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyMjI3LDEz
ICsxMjIyNyw2IEBACiAJCTkzMzA5REQ1MDk5RTY0OTEwMDU2RTU4MSAvKiBXcmFwQ29udGVudHNJ
bkR1bW15U3BhbkNvbW1hbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV3Jh
cENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTkzMzA5RUEwMDk5RUI3OEMwMDU2RTU4MSAvKiBTaGFyZWRUaW1lci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRUaW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5MzMwOUVBMTA5OUVCNzhDMDA1NkU1ODEgLyogVGltZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGltZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk5MzMyQUIzRDE2NTE1RDc3MDBEODI3RUMgLyogR3JhcGhpY3NDb250ZXh0
R0xORU9OLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4
dEdMTkVPTi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5MzMyQUI4NzE2NTNBOTc5
MDBEODI3RUMgLyogRkVCbGVuZE5FT04uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRkVCbGVuZE5FT04uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTMzMkFCODgx
NjUzQTk3OTAwRDgyN0VDIC8qIEZFQ29tcG9zaXRlQXJpdGhtZXRpY05FT04uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRkVDb21wb3NpdGVBcml0aG1ldGljTkVPTi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5MzMyQUI4OTE2NTNBOTc5MDBEODI3RUMgLyogRkVH
YXVzc2lhbkJsdXJORU9OLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZFR2F1
c3NpYW5CbHVyTkVPTi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5MzMyQUI4QTE2
NTNBOTc5MDBEODI3RUMgLyogRkVMaWdodGluZ05FT04uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRkVMaWdodGluZ05FT04uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk5MzMyQUI4QjE2NTNBOTc5MDBEODI3RUMgLyogRkVMaWdodGluZ05FT04uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRkVMaWdodGluZ05FT04uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTMzMkFCOEMxNjUzQTk3OTAwRDgyN0VDIC8qIE5FT05I
ZWxwZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5FT05IZWxwZXJzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMzU0QTNCMEIyNEY4QzkwMDNGNkRFQSAv
KiBVSUV2ZW50V2l0aEtleVN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFVJRXZlbnRXaXRoS2V5U3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5MzNBMTQyQjBCN0QxODg2MDBBNTNGRkQgLyogVGV4dEV2ZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTkzM0ExNDJDMEI3RDE4ODYwMEE1M0ZGRCAvKiBUZXh0RXZlbnQuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFRleHRFdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0yNDQ5MywzNiArMjQ0ODYsNiBAQAogCQkJdGFiV2lkdGggPSA0OwogCQkJ
dXNlc1RhYnMgPSAwOwogCQl9OwotCQk5MzMyQUIzQjE2NTE1RDc3MDBEODI3RUMgLyogY3B1ICov
ID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQk5MzMyQUIzQzE2
NTE1RDc3MDBEODI3RUMgLyogYXJtICovLAotCQkJKTsKLQkJCXBhdGggPSBjcHU7Ci0JCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwotCQl9OwotCQk5MzMyQUIzQzE2NTE1RDc3MDBEODI3RUMgLyog
YXJtICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQk5MzMy
QUI4NjE2NTNBOTc5MDBEODI3RUMgLyogZmlsdGVycyAqLywKLQkJCQk5MzMyQUIzRDE2NTE1RDc3
MDBEODI3RUMgLyogR3JhcGhpY3NDb250ZXh0R0xORU9OLmggKi8sCi0JCQkpOwotCQkJcGF0aCA9
IGFybTsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07Ci0JCTkzMzJBQjg2MTY1M0E5
NzkwMEQ4MjdFQyAvKiBmaWx0ZXJzICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGls
ZHJlbiA9ICgKLQkJCQk5MzMyQUI4NzE2NTNBOTc5MDBEODI3RUMgLyogRkVCbGVuZE5FT04uaCAq
LywKLQkJCQk5MzMyQUI4ODE2NTNBOTc5MDBEODI3RUMgLyogRkVDb21wb3NpdGVBcml0aG1ldGlj
TkVPTi5oICovLAotCQkJCTkzMzJBQjg5MTY1M0E5NzkwMEQ4MjdFQyAvKiBGRUdhdXNzaWFuQmx1
ck5FT04uaCAqLywKLQkJCQk5MzMyQUI4QTE2NTNBOTc5MDBEODI3RUMgLyogRkVMaWdodGluZ05F
T04uY3BwICovLAotCQkJCTkzMzJBQjhCMTY1M0E5NzkwMEQ4MjdFQyAvKiBGRUxpZ2h0aW5nTkVP
Ti5oICovLAotCQkJCTkzMzJBQjhDMTY1M0E5NzkwMEQ4MjdFQyAvKiBORU9OSGVscGVycy5oICov
LAotCQkJKTsKLQkJCXBhdGggPSBmaWx0ZXJzOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
LQkJfTsKIAkJOTNBMUVBQTIwQTU2MzREODAwNjk2MEEwIC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yNzg5Niw3ICsyNzg1OSw2IEBACiAJCQkJ
QjUzMjBENjgxMjJBMjRFOTAwMkQxNDQwIC8qIGNvY29hICovLAogCQkJCTJDRTExODk4MjRDMjQw
MkMwMDM3NzBFOSAvKiBjb3JlaW1hZ2UgKi8sCiAJCQkJMUM2RkQ5MjAyNTBDQ0E2NDAwRDZFOTIw
IC8qIGNvcmV0ZXh0ICovLAotCQkJCTkzMzJBQjNCMTY1MTVENzcwMEQ4MjdFQyAvKiBjcHUgKi8s
CiAJCQkJQ0Q5RDgyN0MxQzdCQjJFRDAwNkZGMDY2IC8qIGN2ICovLAogCQkJCTBGRTVGQkM5MUMz
REQ1MDYwMDA3QTJDQSAvKiBkaXNwbGF5bGlzdHMgKi8sCiAJCQkJQTc1RThCN0YwRTFERTJCMDAw
N0YyNDgxIC8qIGZpbHRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9TaW5jUmVzYW1wbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L1NpbmNSZXNhbXBsZXIuY3BwCmluZGV4IDkyMmUxMDQyMGI1OGYzN2IzNzYzMjE5ZTdhYWUwNTg0
MjE0M2NmM2YuLjI5YzBjOTY0NzVlYmY3MGYyMmMyMTIyMDJkYTBmNTk0NGFkMTI1ODYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwCkBAIC00
MCw4ICs0MCw2IEBACiAjaW5jbHVkZSA8QWNjZWxlcmF0ZS9BY2NlbGVyYXRlLmg+CiAjZWxpZiBD
UFUoWDg2X1NTRTIpCiAjaW5jbHVkZSA8eG1taW50cmluLmg+Ci0jZWxpZiBIQVZFKEFSTV9ORU9O
X0lOVFJJTlNJQ1MpCi0jaW5jbHVkZSA8YXJtX25lb24uaD4KICNlbmRpZgogCiAvLyBJbml0aWFs
IGlucHV0IGJ1ZmZlciBsYXlvdXQsIGRpdmlkaW5nIGludG8gcmVnaW9ucyByMCB0byByNCAobm90
ZTogcjAsIHIzCkBAIC0zMzEsMjcgKzMyOSw2IEBAIGZsb2F0IFNpbmNSZXNhbXBsZXI6OmNvbnZv
bHZlKGNvbnN0IGZsb2F0KiBpbnB1dFAsIGNvbnN0IGZsb2F0KiBrMSwgY29uc3QgZmxvYXQqCiAg
ICAgX21tX3N0b3JlX3NzKCZyZXN1bHQsIF9tbV9hZGRfc3MobV9zdW1zMiwgX21tX3NodWZmbGVf
cHMobV9zdW1zMiwgbV9zdW1zMiwgMSkpKTsKIAogICAgIHJldHVybiByZXN1bHQ7Ci0jZWxpZiBI
QVZFKEFSTV9ORU9OX0lOVFJJTlNJQ1MpCi0gICAgZmxvYXQzMng0X3QgbV9pbnB1dDsKLSAgICBm
bG9hdDMyeDRfdCBtX3N1bXMxID0gdm1vdnFfbl9mMzIoMCk7Ci0gICAgZmxvYXQzMng0X3QgbV9z
dW1zMiA9IHZtb3ZxX25fZjMyKDApOwotCi0gICAgY29uc3QgZmxvYXQqIHVwcGVyID0gaW5wdXRQ
ICsga2VybmVsU2l6ZTsKLSAgICBmb3IgKDsgaW5wdXRQIDwgdXBwZXI7ICkgewotICAgICAgICBt
X2lucHV0ID0gdmxkMXFfZjMyKGlucHV0UCk7Ci0gICAgICAgIGlucHV0UCArPSA0OwotICAgICAg
ICBtX3N1bXMxID0gdm1sYXFfZjMyKG1fc3VtczEsIG1faW5wdXQsIHZsZDFxX2YzMihrMSkpOwot
ICAgICAgICBrMSArPSA0OwotICAgICAgICBtX3N1bXMyID0gdm1sYXFfZjMyKG1fc3VtczIsIG1f
aW5wdXQsIHZsZDFxX2YzMihrMikpOwotICAgICAgICBrMiArPSA0OwotICAgIH0KLQotICAgIC8v
IExpbmVhcmx5IGludGVycG9sYXRlIHRoZSB0d28gImNvbnZvbHV0aW9ucyIuCi0gICAgbV9zdW1z
MSA9IHZtbGFxX2YzMih2bXVscV9mMzIobV9zdW1zMSwgdm1vdnFfbl9mMzIoMS4wIC0ga2VybmVs
SW50ZXJwb2xhdGlvbkZhY3RvcikpLCBtX3N1bXMyLCB2bW92cV9uX2YzMihrZXJuZWxJbnRlcnBv
bGF0aW9uRmFjdG9yKSk7Ci0KLSAgICAvLyBTdW0gY29tcG9uZW50cyB0b2dldGhlci4KLSAgICBm
bG9hdDMyeDJfdCBtX2hhbGYgPSB2YWRkX2YzMih2Z2V0X2hpZ2hfZjMyKG1fc3VtczEpLCB2Z2V0
X2xvd19mMzIobV9zdW1zMSkpOwotICAgIHJldHVybiB2Z2V0X2xhbmVfZjMyKHZwYWRkX2YzMiht
X2hhbGYsIG1faGFsZiksIDApOwogI2Vsc2UKICAgICBmbG9hdCBzdW0xID0gMDsKICAgICBmbG9h
dCBzdW0yID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Zl
Y3Rvck1hdGguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vVmVjdG9yTWF0aC5j
cHAKaW5kZXggOTUxZmRmNTZkNzE2MDM4MGVkZDhiMjFhNjZlNjQ4MjJkY2I0MDcyMS4uMWY4Yzg5
MmM1NWNiNTQ4YjZiZjM0MTJlZDMyNDk4MWYxOTA1MDBkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vVmVjdG9yTWF0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vVmVjdG9yTWF0aC5jcHAKQEAgLTM4LDEwICszOCw2IEBACiAjaW5jbHVk
ZSA8ZW1taW50cmluLmg+CiAjZW5kaWYKIAotI2lmIEhBVkUoQVJNX05FT05fSU5UUklOU0lDUykK
LSNpbmNsdWRlIDxhcm1fbmVvbi5oPgotI2VuZGlmCi0KICNpbmNsdWRlIDxhbGdvcml0aG0+CiAj
aW5jbHVkZSA8bWF0aC5oPgogCkBAIC0xOTAsMjIgKzE4Niw2IEBAIHZvaWQgbXVsdGlwbHlCeVNj
YWxhclRoZW5BZGRUb091dHB1dChjb25zdCBmbG9hdCogaW5wdXRWZWN0b3IsIGZsb2F0IHNjYWxh
ciwgZmxvCiAgICAgZWxzZQogICAgICAgICBTU0UyX01VTFRfQUREKGxvYWR1LCBzdG9yZXUpCiAK
LSAgICBuID0gdGFpbEZyYW1lczsKLSNlbGlmIEhBVkUoQVJNX05FT05fSU5UUklOU0lDUykKLSAg
ICBzaXplX3QgdGFpbEZyYW1lcyA9IG4gJSA0OwotICAgIGNvbnN0IGZsb2F0KiBlbmRQID0gb3V0
cHV0VmVjdG9yICsgbiAtIHRhaWxGcmFtZXM7Ci0KLSAgICBmbG9hdDMyeDRfdCBrID0gdmR1cHFf
bl9mMzIoc2NhbGFyKTsKLSAgICB3aGlsZSAob3V0cHV0VmVjdG9yIDwgZW5kUCkgewotICAgICAg
ICBmbG9hdDMyeDRfdCBzb3VyY2UgPSB2bGQxcV9mMzIoaW5wdXRWZWN0b3IpOwotICAgICAgICBm
bG9hdDMyeDRfdCBkZXN0ID0gdmxkMXFfZjMyKG91dHB1dFZlY3Rvcik7Ci0KLSAgICAgICAgZGVz
dCA9IHZtbGFxX2YzMihkZXN0LCBzb3VyY2UsIGspOwotICAgICAgICB2c3QxcV9mMzIob3V0cHV0
VmVjdG9yLCBkZXN0KTsKLQotICAgICAgICBpbnB1dFZlY3RvciArPSA0OwotICAgICAgICBvdXRw
dXRWZWN0b3IgKz0gNDsKLSAgICB9CiAgICAgbiA9IHRhaWxGcmFtZXM7CiAjZW5kaWYKICAgICB3
aGlsZSAobi0tKSB7CkBAIC0yNTgsMTggKzIzOCw2IEBAIHZvaWQgbXVsdGlwbHlCeVNjYWxhcihj
b25zdCBmbG9hdCogaW5wdXRWZWN0b3IsIGZsb2F0IHNjYWxhciwgZmxvYXQqIG91dHB1dFZlY3Rv
CiAKICAgICAvLyBOb24tU1NFIGhhbmRsaW5nIGZvciByZW1haW5pbmcgZnJhbWVzIHdoaWNoIGlz
IGxlc3MgdGhhbiA0LgogICAgIG4gJT0gNDsKLSNlbGlmIEhBVkUoQVJNX05FT05fSU5UUklOU0lD
UykKLSAgICBzaXplX3QgdGFpbEZyYW1lcyA9IG4gJSA0OwotICAgIGNvbnN0IGZsb2F0KiBlbmRQ
ID0gb3V0cHV0VmVjdG9yICsgbiAtIHRhaWxGcmFtZXM7Ci0KLSAgICB3aGlsZSAob3V0cHV0VmVj
dG9yIDwgZW5kUCkgewotICAgICAgICBmbG9hdDMyeDRfdCBzb3VyY2UgPSB2bGQxcV9mMzIoaW5w
dXRWZWN0b3IpOwotICAgICAgICB2c3QxcV9mMzIob3V0cHV0VmVjdG9yLCB2bXVscV9uX2YzMihz
b3VyY2UsIHNjYWxhcikpOwotCi0gICAgICAgIGlucHV0VmVjdG9yICs9IDQ7Ci0gICAgICAgIG91
dHB1dFZlY3RvciArPSA0OwotICAgIH0KLSAgICBuID0gdGFpbEZyYW1lczsKICNlbmRpZgogICAg
IHdoaWxlIChuLS0pIHsKICAgICAgICAgKm91dHB1dFZlY3RvciA9IHNjYWxhciAqICppbnB1dFZl
Y3RvcjsKQEAgLTMyMSwxOSArMjg5LDYgQEAgdm9pZCBhZGRTY2FsYXIoY29uc3QgZmxvYXQqIGlu
cHV0VmVjdG9yLCBmbG9hdCBzY2FsYXIsIGZsb2F0KiBvdXRwdXRWZWN0b3IsIHNpemUKIAogICAg
IC8vIE5vbi1TU0UgaGFuZGxpbmcgZm9yIHJlbWFpbmluZyBmcmFtZXMgd2hpY2ggaXMgbGVzcyB0
aGFuIDQuCiAgICAgbiAlPSA0OwotI2VsaWYgSEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQotICAg
IHNpemVfdCB0YWlsRnJhbWVzID0gbiAlIDQ7Ci0gICAgY29uc3QgZmxvYXQqIGVuZFAgPSBvdXRw
dXRWZWN0b3IgKyBuIC0gdGFpbEZyYW1lczsKLSAgICBmbG9hdDMyeDRfdCBzY2FsYXJWZWN0b3Ig
PSB2ZHVwcV9uX2YzMihzY2FsYXIpOwotCi0gICAgd2hpbGUgKG91dHB1dFZlY3RvciA8IGVuZFAp
IHsKLSAgICAgICAgZmxvYXQzMng0X3Qgc291cmNlID0gdmxkMXFfZjMyKGlucHV0VmVjdG9yKTsK
LSAgICAgICAgdnN0MXFfZjMyKG91dHB1dFZlY3RvciwgdmFkZHFfZjMyKHNvdXJjZSwgc2NhbGFy
VmVjdG9yKSk7Ci0KLSAgICAgICAgaW5wdXRWZWN0b3IgKz0gNDsKLSAgICAgICAgb3V0cHV0VmVj
dG9yICs9IDQ7Ci0gICAgfQotICAgIG4gPSB0YWlsRnJhbWVzOwogI2VuZGlmCiAgICAgd2hpbGUg
KG4tLSkgewogICAgICAgICAqb3V0cHV0VmVjdG9yID0gKmlucHV0VmVjdG9yICsgc2NhbGFyOwpA
QCAtNDE3LDIwICszNzIsNiBAQCB2b2lkIGFkZChjb25zdCBmbG9hdCogaW5wdXRWZWN0b3IxLCBj
b25zdCBmbG9hdCogaW5wdXRWZWN0b3IyLCBmbG9hdCogb3V0cHV0VmVjdAogCiAgICAgLy8gTm9u
LVNTRSBoYW5kbGluZyBmb3IgcmVtYWluaW5nIGZyYW1lcyB3aGljaCBpcyBsZXNzIHRoYW4gNC4K
ICAgICBuICU9IDQ7Ci0jZWxpZiBIQVZFKEFSTV9ORU9OX0lOVFJJTlNJQ1MpCi0gICAgc2l6ZV90
IHRhaWxGcmFtZXMgPSBuICUgNDsKLSAgICBjb25zdCBmbG9hdCogZW5kUCA9IG91dHB1dFZlY3Rv
ciArIG4gLSB0YWlsRnJhbWVzOwotCi0gICAgd2hpbGUgKG91dHB1dFZlY3RvciA8IGVuZFApIHsK
LSAgICAgICAgZmxvYXQzMng0X3Qgc291cmNlMSA9IHZsZDFxX2YzMihpbnB1dFZlY3RvcjEpOwot
ICAgICAgICBmbG9hdDMyeDRfdCBzb3VyY2UyID0gdmxkMXFfZjMyKGlucHV0VmVjdG9yMik7Ci0g
ICAgICAgIHZzdDFxX2YzMihvdXRwdXRWZWN0b3IsIHZhZGRxX2YzMihzb3VyY2UxLCBzb3VyY2Uy
KSk7Ci0KLSAgICAgICAgaW5wdXRWZWN0b3IxICs9IDQ7Ci0gICAgICAgIGlucHV0VmVjdG9yMiAr
PSA0OwotICAgICAgICBvdXRwdXRWZWN0b3IgKz0gNDsKLSAgICB9Ci0gICAgbiA9IHRhaWxGcmFt
ZXM7CiAjZW5kaWYKICAgICB3aGlsZSAobi0tKSB7CiAgICAgICAgICpvdXRwdXRWZWN0b3IgPSAq
aW5wdXRWZWN0b3IxICsgKmlucHV0VmVjdG9yMjsKQEAgLTUxMywyMCArNDU0LDYgQEAgdm9pZCBz
dWJzdHJhY3QoY29uc3QgZmxvYXQqIGlucHV0VmVjdG9yMSwgY29uc3QgZmxvYXQqIGlucHV0VmVj
dG9yMiwgZmxvYXQqIG91dHAKIAogICAgIC8vIE5vbi1TU0UgaGFuZGxpbmcgZm9yIHJlbWFpbmlu
ZyBmcmFtZXMgd2hpY2ggaXMgbGVzcyB0aGFuIDQuCiAgICAgbiAlPSA0OwotI2VsaWYgSEFWRShB
Uk1fTkVPTl9JTlRSSU5TSUNTKQotICAgIHNpemVfdCB0YWlsRnJhbWVzID0gbiAlIDQ7Ci0gICAg
Y29uc3QgZmxvYXQqIGVuZFAgPSBvdXRwdXRWZWN0b3IgKyBuIC0gdGFpbEZyYW1lczsKLQotICAg
IHdoaWxlIChvdXRwdXRWZWN0b3IgPCBlbmRQKSB7Ci0gICAgICAgIGZsb2F0MzJ4NF90IHNvdXJj
ZTEgPSB2bGQxcV9mMzIoaW5wdXRWZWN0b3IxKTsKLSAgICAgICAgZmxvYXQzMng0X3Qgc291cmNl
MiA9IHZsZDFxX2YzMihpbnB1dFZlY3RvcjIpOwotICAgICAgICB2c3QxcV9mMzIob3V0cHV0VmVj
dG9yLCB2c3VicV9mMzIoc291cmNlMSwgc291cmNlMikpOwotCi0gICAgICAgIGlucHV0VmVjdG9y
MSArPSA0OwotICAgICAgICBpbnB1dFZlY3RvcjIgKz0gNDsKLSAgICAgICAgb3V0cHV0VmVjdG9y
ICs9IDQ7Ci0gICAgfQotICAgIG4gPSB0YWlsRnJhbWVzOwogI2VuZGlmCiAgICAgd2hpbGUgKG4t
LSkgewogICAgICAgICAqb3V0cHV0VmVjdG9yID0gKmlucHV0VmVjdG9yMSAtICppbnB1dFZlY3Rv
cjI7CkBAIC01OTQsMjAgKzUyMSw2IEBAIHZvaWQgbXVsdGlwbHkoY29uc3QgZmxvYXQqIGlucHV0
VmVjdG9yMSwgY29uc3QgZmxvYXQqIGlucHV0VmVjdG9yMiwgZmxvYXQqIG91dHB1CiAgICAgZWxz
ZSAvLyBOZWl0aGVyIGFsaWduZWQuCiAgICAgICAgIFNTRTJfTVVMVChsb2FkdSwgc3RvcmV1KQog
Ci0gICAgbiA9IHRhaWxGcmFtZXM7Ci0jZWxpZiBIQVZFKEFSTV9ORU9OX0lOVFJJTlNJQ1MpCi0g
ICAgc2l6ZV90IHRhaWxGcmFtZXMgPSBuICUgNDsKLSAgICBjb25zdCBmbG9hdCogZW5kUCA9IG91
dHB1dFZlY3RvciArIG4gLSB0YWlsRnJhbWVzOwotCi0gICAgd2hpbGUgKG91dHB1dFZlY3RvciA8
IGVuZFApIHsKLSAgICAgICAgZmxvYXQzMng0X3Qgc291cmNlMSA9IHZsZDFxX2YzMihpbnB1dFZl
Y3RvcjEpOwotICAgICAgICBmbG9hdDMyeDRfdCBzb3VyY2UyID0gdmxkMXFfZjMyKGlucHV0VmVj
dG9yMik7Ci0gICAgICAgIHZzdDFxX2YzMihvdXRwdXRWZWN0b3IsIHZtdWxxX2YzMihzb3VyY2Ux
LCBzb3VyY2UyKSk7Ci0KLSAgICAgICAgaW5wdXRWZWN0b3IxICs9IDQ7Ci0gICAgICAgIGlucHV0
VmVjdG9yMiArPSA0OwotICAgICAgICBvdXRwdXRWZWN0b3IgKz0gNDsKLSAgICB9CiAgICAgbiA9
IHRhaWxGcmFtZXM7CiAjZW5kaWYKICAgICB3aGlsZSAobi0tKSB7CkBAIC02NDAsMjIgKzU1Myw2
IEBAIHZvaWQgbXVsdGlwbHlDb21wbGV4KGNvbnN0IGZsb2F0KiByZWFsVmVjdG9yMSwgY29uc3Qg
ZmxvYXQqIGltYWdWZWN0b3IxLCBjb25zdCBmCiAgICAgICAgICAgICBpICs9IDQ7CiAgICAgICAg
IH0KICAgICB9Ci0jZWxpZiBIQVZFKEFSTV9ORU9OX0lOVFJJTlNJQ1MpCi0gICAgICAgIHVuc2ln
bmVkIGVuZFNpemUgPSBudW1iZXJPZkVsZW1lbnRzVG9Qcm9jZXNzIC0gbnVtYmVyT2ZFbGVtZW50
c1RvUHJvY2VzcyAlIDQ7Ci0gICAgICAgIHdoaWxlIChpIDwgZW5kU2l6ZSkgewotICAgICAgICAg
ICAgZmxvYXQzMng0X3QgcmVhbDEgPSB2bGQxcV9mMzIocmVhbFZlY3RvcjEgKyBpKTsKLSAgICAg
ICAgICAgIGZsb2F0MzJ4NF90IHJlYWwyID0gdmxkMXFfZjMyKHJlYWxWZWN0b3IyICsgaSk7Ci0g
ICAgICAgICAgICBmbG9hdDMyeDRfdCBpbWFnMSA9IHZsZDFxX2YzMihpbWFnVmVjdG9yMSArIGkp
OwotICAgICAgICAgICAgZmxvYXQzMng0X3QgaW1hZzIgPSB2bGQxcV9mMzIoaW1hZzJQICsgaSk7
Ci0KLSAgICAgICAgICAgIGZsb2F0MzJ4NF90IHJlYWxSZXN1bHQgPSB2bWxzcV9mMzIodm11bHFf
ZjMyKHJlYWwxLCByZWFsMiksIGltYWcxLCBpbWFnMik7Ci0gICAgICAgICAgICBmbG9hdDMyeDRf
dCBpbWFnUmVzdWx0ID0gdm1sYXFfZjMyKHZtdWxxX2YzMihyZWFsMSwgaW1hZzIpLCBpbWFnMSwg
cmVhbDIpOwotCi0gICAgICAgICAgICB2c3QxcV9mMzIocmVhbE91dHB1dFZlY3RvciArIGksIHJl
YWxSZXN1bHQpOwotICAgICAgICAgICAgdnN0MXFfZjMyKGltYWdEZXN0UCArIGksIGltYWdSZXN1
bHQpOwotCi0gICAgICAgICAgICBpICs9IDQ7Ci0gICAgICAgIH0KICNlbmRpZgogICAgIGZvciAo
OyBpIDwgbnVtYmVyT2ZFbGVtZW50c1RvUHJvY2VzczsgKytpKSB7CiAgICAgICAgIC8vIFJlYWQg
YW5kIGNvbXB1dGUgcmVzdWx0IGJlZm9yZSBzdG9yaW5nIHRoZW0sIGluIGNhc2UgdGhlCkBAIC02
OTYsMjMgKzU5Myw2IEBAIGZsb2F0IHN1bU9mU3F1YXJlcyhjb25zdCBmbG9hdCogaW5wdXRWZWN0
b3IsIHNpemVfdCBudW1iZXJPZkVsZW1lbnRzVG9Qcm9jZXNzKQogICAgIGNvbnN0IGZsb2F0KiBn
cm91cFN1bVAgPSByZWludGVycHJldF9jYXN0PGZsb2F0Kj4oJm1TdW0pOwogICAgIHN1bSArPSBn
cm91cFN1bVBbMF0gKyBncm91cFN1bVBbMV0gKyBncm91cFN1bVBbMl0gKyBncm91cFN1bVBbM107
CiAKLSAgICBuID0gdGFpbEZyYW1lczsKLSNlbGlmIEhBVkUoQVJNX05FT05fSU5UUklOU0lDUykK
LSAgICBzaXplX3QgdGFpbEZyYW1lcyA9IG4gJSA0OwotICAgIGNvbnN0IGZsb2F0KiBlbmRQID0g
aW5wdXRWZWN0b3IgKyBuIC0gdGFpbEZyYW1lczsKLQotICAgIGZsb2F0MzJ4NF90IGZvdXJTdW0g
PSB2ZHVwcV9uX2YzMigwKTsKLSAgICB3aGlsZSAoaW5wdXRWZWN0b3IgPCBlbmRQKSB7Ci0gICAg
ICAgIGZsb2F0MzJ4NF90IHNvdXJjZSA9IHZsZDFxX2YzMihpbnB1dFZlY3Rvcik7Ci0gICAgICAg
IGZvdXJTdW0gPSB2bWxhcV9mMzIoZm91clN1bSwgc291cmNlLCBzb3VyY2UpOwotICAgICAgICBp
bnB1dFZlY3RvciArPSA0OwotICAgIH0KLSAgICBmbG9hdDMyeDJfdCB0d29TdW0gPSB2YWRkX2Yz
Mih2Z2V0X2xvd19mMzIoZm91clN1bSksIHZnZXRfaGlnaF9mMzIoZm91clN1bSkpOwotCi0gICAg
ZmxvYXQgZ3JvdXBTdW1bMl07Ci0gICAgdnN0MV9mMzIoZ3JvdXBTdW0sIHR3b1N1bSk7Ci0gICAg
c3VtICs9IGdyb3VwU3VtWzBdICsgZ3JvdXBTdW1bMV07Ci0KICAgICBuID0gdGFpbEZyYW1lczsK
ICNlbmRpZgogCkBAIC03NjEsMjMgKzY0MSw2IEBAIGZsb2F0IG1heGltdW1NYWduaXR1ZGUoY29u
c3QgZmxvYXQqIGlucHV0VmVjdG9yLCBzaXplX3QgbnVtYmVyT2ZFbGVtZW50c1RvUHJvY2VzCiAg
ICAgbWF4ID0gc3RkOjptYXgobWF4LCBncm91cE1heFBbMl0pOwogICAgIG1heCA9IHN0ZDo6bWF4
KG1heCwgZ3JvdXBNYXhQWzNdKTsKIAotICAgIG4gPSB0YWlsRnJhbWVzOwotI2VsaWYgSEFWRShB
Uk1fTkVPTl9JTlRSSU5TSUNTKQotICAgIHNpemVfdCB0YWlsRnJhbWVzID0gbiAlIDQ7Ci0gICAg
Y29uc3QgZmxvYXQqIGVuZFAgPSBpbnB1dFZlY3RvciArIG4gLSB0YWlsRnJhbWVzOwotCi0gICAg
ZmxvYXQzMng0X3QgZm91ck1heCA9IHZkdXBxX25fZjMyKDApOwotICAgIHdoaWxlIChpbnB1dFZl
Y3RvciA8IGVuZFApIHsKLSAgICAgICAgZmxvYXQzMng0X3Qgc291cmNlID0gdmxkMXFfZjMyKGlu
cHV0VmVjdG9yKTsKLSAgICAgICAgZm91ck1heCA9IHZtYXhxX2YzMihmb3VyTWF4LCB2YWJzcV9m
MzIoc291cmNlKSk7Ci0gICAgICAgIGlucHV0VmVjdG9yICs9IDQ7Ci0gICAgfQotICAgIGZsb2F0
MzJ4Ml90IHR3b01heCA9IHZtYXhfZjMyKHZnZXRfbG93X2YzMihmb3VyTWF4KSwgdmdldF9oaWdo
X2YzMihmb3VyTWF4KSk7Ci0KLSAgICBmbG9hdCBncm91cE1heFsyXTsKLSAgICB2c3QxX2YzMihn
cm91cE1heCwgdHdvTWF4KTsKLSAgICBtYXggPSBzdGQ6Om1heChncm91cE1heFswXSwgZ3JvdXBN
YXhbMV0pOwotCiAgICAgbiA9IHRhaWxGcmFtZXM7CiAjZW5kaWYKIApAQCAtNzk0LDIwICs2NTcs
NiBAQCB2b2lkIGNsYW1wKGNvbnN0IGZsb2F0KiBpbnB1dFZlY3RvciwgZmxvYXQgbWluaW11bSwg
ZmxvYXQgbWF4aW11bSwgZmxvYXQqIG91dHB1dAogICAgIHNpemVfdCBuID0gbnVtYmVyT2ZFbGVt
ZW50c1RvUHJvY2VzczsKIAogICAgIC8vIEZJWE1FOiBPcHRpbWl6ZSBmb3IgU1NFMi4KLSNpZiBI
QVZFKEFSTV9ORU9OX0lOVFJJTlNJQ1MpCi0gICAgc2l6ZV90IHRhaWxGcmFtZXMgPSBuICUgNDsK
LSAgICBjb25zdCBmbG9hdCogZW5kUCA9IG91dHB1dFZlY3RvciArIG4gLSB0YWlsRnJhbWVzOwot
Ci0gICAgZmxvYXQzMng0X3QgbG93ID0gdmR1cHFfbl9mMzIobWluaW11bSk7Ci0gICAgZmxvYXQz
Mng0X3QgaGlnaCA9IHZkdXBxX25fZjMyKG1heGltdW0pOwotICAgIHdoaWxlIChvdXRwdXRWZWN0
b3IgPCBlbmRQKSB7Ci0gICAgICAgIGZsb2F0MzJ4NF90IHNvdXJjZSA9IHZsZDFxX2YzMihpbnB1
dFZlY3Rvcik7Ci0gICAgICAgIHZzdDFxX2YzMihvdXRwdXRWZWN0b3IsIHZtYXhxX2YzMih2bWlu
cV9mMzIoc291cmNlLCBoaWdoKSwgbG93KSk7Ci0gICAgICAgIGlucHV0VmVjdG9yICs9IDQ7Ci0g
ICAgICAgIG91dHB1dFZlY3RvciArPSA0OwotICAgIH0KLSAgICBuID0gdGFpbEZyYW1lczsKLSNl
bmRpZgogICAgIHdoaWxlIChuLS0pIHsKICAgICAgICAgKm91dHB1dFZlY3RvciA9IHN0ZDo6Y2xh
bXAoKmlucHV0VmVjdG9yLCBtaW5pbXVtLCBtYXhpbXVtKTsKICAgICAgICAgKytpbnB1dFZlY3Rv
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zvcm1hdENv
bnZlcnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3JtYXRDb252
ZXJ0ZXIuY3BwCmluZGV4IDlhMDUyMzA4ODYyMThhYzNiZDNlZWFiZTUxMjc0ZDc0ZGJmNjM0NGUu
Ljc1MmIxODc4NTg3MDhmMzczZTQ2MzY4ZGI3NWY1Mzk1ODcxZTEwMjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zvcm1hdENvbnZlcnRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0Q29udmVydGVyLmNwcApAQCAt
MzEsMTAgKzMxLDYgQEAKIAogI2luY2x1ZGUgIkZvcm1hdENvbnZlcnRlci5oIgogCi0jaWYgSEFW
RShBUk1fTkVPTl9JTlRSSU5TSUNTKQotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMTkVPTi5o
IgotI2VuZGlmCi0KICNpZiBVU0UoQUNDRUxFUkFURSkKICNpbmNsdWRlIDxBY2NlbGVyYXRlL0Fj
Y2VsZXJhdGUuaD4KICNlbmRpZgpAQCAtMjUxLDkgKzI0Nyw2IEBAIHRlbXBsYXRlPD4gQUxXQVlT
X0lOTElORSB2b2lkIHVucGFjazxHcmFwaGljc0NvbnRleHRHTDo6RGF0YUZvcm1hdDo6QkdSQTgs
IHVpbnQ4CiAKIHRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHVucGFjazxHcmFwaGljc0Nv
bnRleHRHTDo6RGF0YUZvcm1hdDo6UkdCQTU1NTEsIHVpbnQxNl90LCB1aW50OF90Pihjb25zdCB1
aW50MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVy
Um93KQogewotI2lmIEhBVkUoQVJNX05FT05fSU5UUklOU0lDUykKLSAgICBTSU1EOjp1bnBhY2tP
bmVSb3dPZlJHQkE1NTUxVG9SR0JBOChzb3VyY2UsIGRlc3RpbmF0aW9uLCBwaXhlbHNQZXJSb3cp
OwotI2VuZGlmCiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7
ICsraSkgewogICAgICAgICB1aW50MTZfdCBwYWNrZWRWYWx1ZSA9IHNvdXJjZVswXTsKICAgICAg
ICAgdWludDhfdCByID0gcGFja2VkVmFsdWUgPj4gMTE7CkBAIC0yNzAsOSArMjYzLDYgQEAgdGVt
cGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgdW5wYWNrPEdyYXBoaWNzQ29udGV4dEdMOjpEYXRh
Rm9ybWF0OjpSR0JBNTU1MSwgdWkKIAogdGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgdW5w
YWNrPEdyYXBoaWNzQ29udGV4dEdMOjpEYXRhRm9ybWF0OjpSR0JBNDQ0NCwgdWludDE2X3QsIHVp
bnQ4X3Q+KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNp
Z25lZCBwaXhlbHNQZXJSb3cpCiB7Ci0jaWYgSEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQotICAg
IFNJTUQ6OnVucGFja09uZVJvd09mUkdCQTQ0NDRUb1JHQkE4KHNvdXJjZSwgZGVzdGluYXRpb24s
IHBpeGVsc1BlclJvdyk7Ci0jZW5kaWYKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8
IHBpeGVsc1BlclJvdzsgKytpKSB7CiAgICAgICAgIHVpbnQxNl90IHBhY2tlZFZhbHVlID0gc291
cmNlWzBdOwogICAgICAgICB1aW50OF90IHIgPSBwYWNrZWRWYWx1ZSA+PiAxMjsKQEAgLTQ2OCw5
ICs0NTgsNiBAQCB0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCB1bnBhY2s8R3JhcGhpY3ND
b250ZXh0R0w6OkRhdGFGb3JtYXQ6OkJHUjgsIHVpbnQ4XwogCiB0ZW1wbGF0ZTw+IEFMV0FZU19J
TkxJTkUgdm9pZCB1bnBhY2s8R3JhcGhpY3NDb250ZXh0R0w6OkRhdGFGb3JtYXQ6OlJHQjU2NSwg
dWludDE2X3QsIHVpbnQ4X3Q+KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3Rp
bmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCiB7Ci0jaWYgSEFWRShBUk1fTkVPTl9JTlRS
SU5TSUNTKQotICAgIFNJTUQ6OnVucGFja09uZVJvd09mUkdCNTY1VG9SR0JBOChzb3VyY2UsIGRl
c3RpbmF0aW9uLCBwaXhlbHNQZXJSb3cpOwotI2VuZGlmCiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CiAgICAgICAgIHVpbnQxNl90IHBhY2tlZFZhbHVl
ID0gc291cmNlWzBdOwogICAgICAgICB1aW50OF90IHIgPSBwYWNrZWRWYWx1ZSA+PiAxMTsKQEAg
LTY2MSw5ICs2NDgsNiBAQCB0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNrPEdyYXBo
aWNzQ29udGV4dEdMOjpEYXRhRm9ybWF0OjpSR0JBOCwgR3JhcGhpYwogCiB0ZW1wbGF0ZTw+IEFM
V0FZU19JTkxJTkUgdm9pZCBwYWNrPEdyYXBoaWNzQ29udGV4dEdMOjpEYXRhRm9ybWF0OjpSR0JB
NDQ0NCwgR3JhcGhpY3NDb250ZXh0R0w6OkFscGhhT3A6OkRvTm90aGluZywgdWludDhfdCwgdWlu
dDE2X3Q+KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDE2X3QqIGRlc3RpbmF0aW9uLCB1bnNp
Z25lZCBwaXhlbHNQZXJSb3cpCiB7Ci0jaWYgSEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQotICAg
IFNJTUQ6OnBhY2tPbmVSb3dPZlJHQkE4VG9VbnNpZ25lZFNob3J0NDQ0NChzb3VyY2UsIGRlc3Rp
bmF0aW9uLCBwaXhlbHNQZXJSb3cpOwotI2VuZGlmCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CiAgICAgICAgICpkZXN0aW5hdGlvbiA9ICgoKHNvdXJj
ZVswXSAmIDB4RjApIDw8IDgpCiAgICAgICAgICAgICAgICAgICAgICAgICB8ICgoc291cmNlWzFd
ICYgMHhGMCkgPDwgNCkKQEAgLTcwOSw5ICs2OTMsNiBAQCB0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJ
TkUgdm9pZCBwYWNrPEdyYXBoaWNzQ29udGV4dEdMOjpEYXRhRm9ybWF0OjpSR0JBNDQ0NCwgR3Jh
cAogCiB0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNrPEdyYXBoaWNzQ29udGV4dEdM
OjpEYXRhRm9ybWF0OjpSR0JBNTU1MSwgR3JhcGhpY3NDb250ZXh0R0w6OkFscGhhT3A6OkRvTm90
aGluZywgdWludDhfdCwgdWludDE2X3Q+KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDE2X3Qq
IGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCiB7Ci0jaWYgSEFWRShBUk1fTkVP
Tl9JTlRSSU5TSUNTKQotICAgIFNJTUQ6OnBhY2tPbmVSb3dPZlJHQkE4VG9VbnNpZ25lZFNob3J0
NTU1MShzb3VyY2UsIGRlc3RpbmF0aW9uLCBwaXhlbHNQZXJSb3cpOwotI2VuZGlmCiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CiAgICAgICAgICpkZXN0
aW5hdGlvbiA9ICgoKHNvdXJjZVswXSAmIDB4RjgpIDw8IDgpCiAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICgoc291cmNlWzFdICYgMHhGOCkgPDwgMykKQEAgLTc1Nyw5ICs3MzgsNiBAQCB0ZW1w
bGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNrPEdyYXBoaWNzQ29udGV4dEdMOjpEYXRhRm9y
bWF0OjpSR0JBNTU1MSwgR3JhcAogCiB0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNr
PEdyYXBoaWNzQ29udGV4dEdMOjpEYXRhRm9ybWF0OjpSR0I1NjUsIEdyYXBoaWNzQ29udGV4dEdM
OjpBbHBoYU9wOjpEb05vdGhpbmcsIHVpbnQ4X3QsIHVpbnQxNl90Pihjb25zdCB1aW50OF90KiBz
b3VyY2UsIHVpbnQxNl90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQogewot
I2lmIEhBVkUoQVJNX05FT05fSU5UUklOU0lDUykKLSAgICBTSU1EOjpwYWNrT25lUm93T2ZSR0JB
OFRvVW5zaWduZWRTaG9ydDU2NShzb3VyY2UsIGRlc3RpbmF0aW9uLCBwaXhlbHNQZXJSb3cpOwot
I2VuZGlmCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7
CiAgICAgICAgICpkZXN0aW5hdGlvbiA9ICgoKHNvdXJjZVswXSAmIDB4RjgpIDw8IDgpCiAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICgoc291cmNlWzFdICYgMHhGQykgPDwgMykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dEdM
Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0R0xDRy5jcHAKaW5kZXggZjc5ZjIyZTMxM2VhMTE3Mzg5YzVmNDA5ZGQwZjQ5NGFlMTVhZWI5
My4uN2VjZTA2Y2M3Y2EyOWUzZmJkYzViMTgwOGYxMzBmZDQ5YzJhMjgyZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0R0xDRy5jcHAKQEAgLTM2LDEwICszNiw2IEBACiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXJVdGls
aXRpZXNDRy5oIgogI2luY2x1ZGUgIlBpeGVsQnVmZmVyLmgiCiAKLSNpZiBIQVZFKEFSTV9ORU9O
X0lOVFJJTlNJQ1MpCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xORU9OLmgiCi0jZW5kaWYK
LQogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0JpdG1hcENvbnRleHQuaD4KICNpbmNsdWRlIDxD
b3JlR3JhcGhpY3MvQ0dDb250ZXh0Lmg+CiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHRGF0YVBy
b3ZpZGVyLmg+CkBAIC0xMTUsOSArMTExLDYgQEAgQUxXQVlTX0lOTElORSB2b2lkIGNvbnZlcnQx
NkJpdEZvcm1hdFRvUkdCQTgoY29uc3QgU291cmNlVHlwZSosIERzdFR5cGUqLCB1bnNpZ24KIAog
dGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgY29udmVydDE2Qml0Rm9ybWF0VG9SR0JBODxH
cmFwaGljc0NvbnRleHRHTDo6RGF0YUZvcm1hdDo6UkdCQTE2TGl0dGxlLCB1aW50MTZfdCwgdWlu
dDhfdD4oY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2ln
bmVkIHBpeGVsc1BlclJvdykKIHsKLSNpZiBIQVZFKEFSTV9ORU9OX0lOVFJJTlNJQ1MpCi0gICAg
U0lNRDo6dW5wYWNrT25lUm93T2ZSR0JBMTZMaXR0bGVUb1JHQkE4KHNvdXJjZSwgZGVzdGluYXRp
b24sIHBpeGVsc1BlclJvdyk7Ci0jZW5kaWYKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
cGl4ZWxzUGVyUm93OyArK2kpIHsKICAgICAgICAgZGVzdGluYXRpb25bMF0gPSBjb252ZXJ0Q29s
b3IxNkxpdHRsZVRvOChzb3VyY2VbMF0pOwogICAgICAgICBkZXN0aW5hdGlvblsxXSA9IGNvbnZl
cnRDb2xvcjE2TGl0dGxlVG84KHNvdXJjZVsxXSk7CkBAIC0xNDIsOSArMTM1LDYgQEAgdGVtcGxh
dGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgY29udmVydDE2Qml0Rm9ybWF0VG9SR0JBODxHcmFwaGlj
c0NvbnRleHRHTDo6RGF0YUYKIAogdGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgY29udmVy
dDE2Qml0Rm9ybWF0VG9SR0JBODxHcmFwaGljc0NvbnRleHRHTDo6RGF0YUZvcm1hdDo6UkdCMTZM
aXR0bGUsIHVpbnQxNl90LCB1aW50OF90Pihjb25zdCB1aW50MTZfdCogc291cmNlLCB1aW50OF90
KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQogewotI2lmIEhBVkUoQVJNX05F
T05fSU5UUklOU0lDUykKLSAgICBTSU1EOjp1bnBhY2tPbmVSb3dPZlJHQjE2TGl0dGxlVG9SR0JB
OChzb3VyY2UsIGRlc3RpbmF0aW9uLCBwaXhlbHNQZXJSb3cpOwotI2VuZGlmCiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CiAgICAgICAgIGRlc3RpbmF0
aW9uWzBdID0gY29udmVydENvbG9yMTZMaXR0bGVUbzgoc291cmNlWzBdKTsKICAgICAgICAgZGVz
dGluYXRpb25bMV0gPSBjb252ZXJ0Q29sb3IxNkxpdHRsZVRvOChzb3VyY2VbMV0pOwpAQCAtMTY5
LDkgKzE1OSw2IEBAIHRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIGNvbnZlcnQxNkJpdEZv
cm1hdFRvUkdCQTg8R3JhcGhpY3NDb250ZXh0R0w6OkRhdGFGCiAKIHRlbXBsYXRlPD4gQUxXQVlT
X0lOTElORSB2b2lkIGNvbnZlcnQxNkJpdEZvcm1hdFRvUkdCQTg8R3JhcGhpY3NDb250ZXh0R0w6
OkRhdGFGb3JtYXQ6OkFSR0IxNkxpdHRsZSwgdWludDE2X3QsIHVpbnQ4X3Q+KGNvbnN0IHVpbnQx
Nl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cp
CiB7Ci0jaWYgSEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQotICAgIFNJTUQ6OnVucGFja09uZVJv
d09mQVJHQjE2TGl0dGxlVG9SR0JBOChzb3VyY2UsIGRlc3RpbmF0aW9uLCBwaXhlbHNQZXJSb3cp
OwotI2VuZGlmCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytp
KSB7CiAgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gY29udmVydENvbG9yMTZMaXR0bGVUbzgoc291
cmNlWzFdKTsKICAgICAgICAgZGVzdGluYXRpb25bMV0gPSBjb252ZXJ0Q29sb3IxNkxpdHRsZVRv
OChzb3VyY2VbMl0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3B1L2FybS9HcmFwaGljc0NvbnRleHRHTE5FT04uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NwdS9hcm0vR3JhcGhpY3NDb250ZXh0R0xORU9OLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDE5OWFjNDQ0ZTE5ZDQzNmNlMmFhYTU0Y2FjOWRjMDA3YzQ5ZTZi
ZTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3B1L2FybS9HcmFwaGljc0NvbnRleHRHTE5FT04u
aAorKysgL2Rldi9udWxsCkBAIC0xLDMwMSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEyIEdhYm9yIFJhcGNzYW55aSAocmdhYm9yQGluZi51LXN6ZWdlZC5odSksIFVuaXZlcnNpdHkg
b2YgU3plZ2VkCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBV
TklWRVJTSVRZIE9GIFNaRUdFRCBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFVO
SVZFUlNJVFkgT0YgU1pFR0VEIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBIQVZFKEFSTV9ORU9OX0lOVFJJ
TlNJQ1MpCi0KLSNpbmNsdWRlIDxhcm1fbmVvbi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LW5hbWVzcGFjZSBTSU1EIHsKLQotQUxXQVlTX0lOTElORSB2b2lkIHVucGFja09uZVJvd09mUkdC
QTE2TGl0dGxlVG9SR0JBOChjb25zdCB1aW50MTZfdComIHNvdXJjZSwgdWludDhfdComIGRlc3Rp
bmF0aW9uLCB1bnNpZ25lZCYgcGl4ZWxzUGVyUm93KQotewotICAgIHVuc2lnbmVkIGNvbXBvbmVu
dHNQZXJSb3cgPSBwaXhlbHNQZXJSb3cgKiA0OwotICAgIHVuc2lnbmVkIHRhaWxDb21wb25lbnRz
ID0gY29tcG9uZW50c1BlclJvdyAlIDE2OwotICAgIHVuc2lnbmVkIGNvbXBvbmVudHNTaXplID0g
Y29tcG9uZW50c1BlclJvdyAtIHRhaWxDb21wb25lbnRzOwotICAgIGNvbnN0IHVpbnQ4X3QqIHNy
YyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNvdXJjZSk7Ci0KLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgY29tcG9uZW50c1NpemU7IGkgKz0gMTYpIHsKLSAgICAgICAg
dWludDh4MTZ4Ml90IGNvbXBvbmVudHMgPSB2bGQycV91OChzcmMgKyBpICogMik7Ci0gICAgICAg
IHZzdDFxX3U4KGRlc3RpbmF0aW9uICsgaSwgY29tcG9uZW50cy52YWxbMV0pOwotICAgIH0KLQot
ICAgIHNvdXJjZSArPSBjb21wb25lbnRzU2l6ZTsKLSAgICBkZXN0aW5hdGlvbiArPSBjb21wb25l
bnRzU2l6ZTsKLSAgICBwaXhlbHNQZXJSb3cgPSB0YWlsQ29tcG9uZW50cyAvIDQ7Ci19Ci0KLUFM
V0FZU19JTkxJTkUgdm9pZCB1bnBhY2tPbmVSb3dPZlJHQjE2TGl0dGxlVG9SR0JBOChjb25zdCB1
aW50MTZfdComIHNvdXJjZSwgdWludDhfdComIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCYgcGl4ZWxz
UGVyUm93KQotewotICAgIHVuc2lnbmVkIGNvbXBvbmVudHNQZXJSb3cgPSBwaXhlbHNQZXJSb3cg
KiAzOwotICAgIHVuc2lnbmVkIHRhaWxDb21wb25lbnRzID0gY29tcG9uZW50c1BlclJvdyAlIDI0
OwotICAgIHVuc2lnbmVkIGNvbXBvbmVudHNTaXplID0gY29tcG9uZW50c1BlclJvdyAtIHRhaWxD
b21wb25lbnRzOwotCi0gICAgdWludDh4OF90IGNvbXBvbmVudEEgPSB2ZHVwX25fdTgoMHhGRik7
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvbXBvbmVudHNTaXplOyBpICs9IDI0KSB7
Ci0gICAgICAgIHVpbnQxNng4eDNfdCBSR0IxNiA9IHZsZDNxX3UxNihzb3VyY2UgKyBpKTsKLSAg
ICAgICAgdWludDh4OF90IGNvbXBvbmVudFIgPSB2cW1vdm5fdTE2KHZzaHJxX25fdTE2KFJHQjE2
LnZhbFswXSwgOCkpOwotICAgICAgICB1aW50OHg4X3QgY29tcG9uZW50RyA9IHZxbW92bl91MTYo
dnNocnFfbl91MTYoUkdCMTYudmFsWzFdLCA4KSk7Ci0gICAgICAgIHVpbnQ4eDhfdCBjb21wb25l
bnRCID0gdnFtb3ZuX3UxNih2c2hycV9uX3UxNihSR0IxNi52YWxbMl0sIDgpKTsKLSAgICAgICAg
dWludDh4OHg0X3QgUkdCQTggPSB7e2NvbXBvbmVudFIsIGNvbXBvbmVudEcsIGNvbXBvbmVudEIs
IGNvbXBvbmVudEF9fTsKLSAgICAgICAgdnN0NF91OChkZXN0aW5hdGlvbiwgUkdCQTgpOwotICAg
ICAgICBkZXN0aW5hdGlvbiArPSAzMjsKLSAgICB9Ci0KLSAgICBzb3VyY2UgKz0gY29tcG9uZW50
c1NpemU7Ci0gICAgcGl4ZWxzUGVyUm93ID0gdGFpbENvbXBvbmVudHMgLyAzOwotfQotCi1BTFdB
WVNfSU5MSU5FIHZvaWQgdW5wYWNrT25lUm93T2ZBUkdCMTZMaXR0bGVUb1JHQkE4KGNvbnN0IHVp
bnQxNl90KiYgc291cmNlLCB1aW50OF90KiYgZGVzdGluYXRpb24sIHVuc2lnbmVkJiBwaXhlbHNQ
ZXJSb3cpCi17Ci0gICAgdW5zaWduZWQgY29tcG9uZW50c1BlclJvdyA9IHBpeGVsc1BlclJvdyAq
IDQ7Ci0gICAgdW5zaWduZWQgdGFpbENvbXBvbmVudHMgPSBjb21wb25lbnRzUGVyUm93ICUgMzI7
Ci0gICAgdW5zaWduZWQgY29tcG9uZW50c1NpemUgPSBjb21wb25lbnRzUGVyUm93IC0gdGFpbENv
bXBvbmVudHM7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29tcG9uZW50c1NpemU7
IGkgKz0gMzIpIHsKLSAgICAgICAgdWludDE2eDh4NF90IEFSR0IxNiA9IHZsZDRxX3UxNihzb3Vy
Y2UgKyBpKTsKLSAgICAgICAgdWludDh4OF90IGNvbXBvbmVudEEgPSB2cW1vdm5fdTE2KHZzaHJx
X25fdTE2KEFSR0IxNi52YWxbMF0sIDgpKTsKLSAgICAgICAgdWludDh4OF90IGNvbXBvbmVudFIg
PSB2cW1vdm5fdTE2KHZzaHJxX25fdTE2KEFSR0IxNi52YWxbMV0sIDgpKTsKLSAgICAgICAgdWlu
dDh4OF90IGNvbXBvbmVudEcgPSB2cW1vdm5fdTE2KHZzaHJxX25fdTE2KEFSR0IxNi52YWxbMl0s
IDgpKTsKLSAgICAgICAgdWludDh4OF90IGNvbXBvbmVudEIgPSB2cW1vdm5fdTE2KHZzaHJxX25f
dTE2KEFSR0IxNi52YWxbM10sIDgpKTsKLSAgICAgICAgdWludDh4OHg0X3QgUkdCQTggPSB7e2Nv
bXBvbmVudFIsIGNvbXBvbmVudEcsIGNvbXBvbmVudEIsIGNvbXBvbmVudEF9fTsKLSAgICAgICAg
dnN0NF91OChkZXN0aW5hdGlvbiArIGksIFJHQkE4KTsKLSAgICB9Ci0KLSAgICBzb3VyY2UgKz0g
Y29tcG9uZW50c1NpemU7Ci0gICAgZGVzdGluYXRpb24gKz0gY29tcG9uZW50c1NpemU7Ci0gICAg
cGl4ZWxzUGVyUm93ID0gdGFpbENvbXBvbmVudHMgLyA0OwotfQotCi1BTFdBWVNfSU5MSU5FIHZv
aWQgdW5wYWNrT25lUm93T2ZCR1JBMTZMaXR0bGVUb1JHQkE4KGNvbnN0IHVpbnQxNl90KiYgc291
cmNlLCB1aW50OF90KiYgZGVzdGluYXRpb24sIHVuc2lnbmVkJiBwaXhlbHNQZXJSb3cpCi17Ci0g
ICAgdW5zaWduZWQgY29tcG9uZW50c1BlclJvdyA9IHBpeGVsc1BlclJvdyAqIDQ7Ci0gICAgdW5z
aWduZWQgdGFpbENvbXBvbmVudHMgPSBjb21wb25lbnRzUGVyUm93ICUgMzI7Ci0gICAgdW5zaWdu
ZWQgY29tcG9uZW50c1NpemUgPSBjb21wb25lbnRzUGVyUm93IC0gdGFpbENvbXBvbmVudHM7Ci0K
LSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29tcG9uZW50c1NpemU7IGkgKz0gMzIpIHsK
LSAgICAgICAgdWludDE2eDh4NF90IEFSR0IxNiA9IHZsZDRxX3UxNihzb3VyY2UgKyBpKTsKLSAg
ICAgICAgdWludDh4OF90IGNvbXBvbmVudEIgPSB2cW1vdm5fdTE2KHZzaHJxX25fdTE2KEFSR0Ix
Ni52YWxbMF0sIDgpKTsKLSAgICAgICAgdWludDh4OF90IGNvbXBvbmVudEcgPSB2cW1vdm5fdTE2
KHZzaHJxX25fdTE2KEFSR0IxNi52YWxbMV0sIDgpKTsKLSAgICAgICAgdWludDh4OF90IGNvbXBv
bmVudFIgPSB2cW1vdm5fdTE2KHZzaHJxX25fdTE2KEFSR0IxNi52YWxbMl0sIDgpKTsKLSAgICAg
ICAgdWludDh4OF90IGNvbXBvbmVudEEgPSB2cW1vdm5fdTE2KHZzaHJxX25fdTE2KEFSR0IxNi52
YWxbM10sIDgpKTsKLSAgICAgICAgdWludDh4OHg0X3QgUkdCQTggPSB7e2NvbXBvbmVudFIsIGNv
bXBvbmVudEcsIGNvbXBvbmVudEIsIGNvbXBvbmVudEF9fTsKLSAgICAgICAgdnN0NF91OChkZXN0
aW5hdGlvbiArIGksIFJHQkE4KTsKLSAgICB9Ci0KLSAgICBzb3VyY2UgKz0gY29tcG9uZW50c1Np
emU7Ci0gICAgZGVzdGluYXRpb24gKz0gY29tcG9uZW50c1NpemU7Ci0gICAgcGl4ZWxzUGVyUm93
ID0gdGFpbENvbXBvbmVudHMgLyA0OwotfQotCi1BTFdBWVNfSU5MSU5FIHZvaWQgdW5wYWNrT25l
Um93T2ZSR0JBNDQ0NFRvUkdCQTgoY29uc3QgdWludDE2X3QqJiBzb3VyY2UsIHVpbnQ4X3QqJiBk
ZXN0aW5hdGlvbiwgdW5zaWduZWQmIHBpeGVsc1BlclJvdykKLXsKLSAgICB1bnNpZ25lZCB0YWls
UGl4ZWxzID0gcGl4ZWxzUGVyUm93ICUgODsKLSAgICB1bnNpZ25lZCBwaXhlbFNpemUgPSBwaXhl
bHNQZXJSb3cgLSB0YWlsUGl4ZWxzOwotCi0gICAgdWludDE2eDhfdCBpbW1lZGlhdGUweDBmID0g
dmR1cHFfbl91MTYoMHgwRik7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBpeGVsU2l6
ZTsgaSArPSA4KSB7Ci0gICAgICAgIHVpbnQxNng4X3QgZWlnaHRQaXhlbHMgPSB2bGQxcV91MTYo
c291cmNlICsgaSk7Ci0KLSAgICAgICAgdWludDh4OF90IGNvbXBvbmVudFIgPSB2cW1vdm5fdTE2
KHZzaHJxX25fdTE2KGVpZ2h0UGl4ZWxzLCAxMikpOwotICAgICAgICB1aW50OHg4X3QgY29tcG9u
ZW50RyA9IHZxbW92bl91MTYodmFuZHFfdTE2KHZzaHJxX25fdTE2KGVpZ2h0UGl4ZWxzLCA4KSwg
aW1tZWRpYXRlMHgwZikpOwotICAgICAgICB1aW50OHg4X3QgY29tcG9uZW50QiA9IHZxbW92bl91
MTYodmFuZHFfdTE2KHZzaHJxX25fdTE2KGVpZ2h0UGl4ZWxzLCA0KSwgaW1tZWRpYXRlMHgwZikp
OwotICAgICAgICB1aW50OHg4X3QgY29tcG9uZW50QSA9IHZxbW92bl91MTYodmFuZHFfdTE2KGVp
Z2h0UGl4ZWxzLCBpbW1lZGlhdGUweDBmKSk7Ci0KLSAgICAgICAgY29tcG9uZW50UiA9IHZvcnJf
dTgodnNobF9uX3U4KGNvbXBvbmVudFIsIDQpLCBjb21wb25lbnRSKTsKLSAgICAgICAgY29tcG9u
ZW50RyA9IHZvcnJfdTgodnNobF9uX3U4KGNvbXBvbmVudEcsIDQpLCBjb21wb25lbnRHKTsKLSAg
ICAgICAgY29tcG9uZW50QiA9IHZvcnJfdTgodnNobF9uX3U4KGNvbXBvbmVudEIsIDQpLCBjb21w
b25lbnRCKTsKLSAgICAgICAgY29tcG9uZW50QSA9IHZvcnJfdTgodnNobF9uX3U4KGNvbXBvbmVu
dEEsIDQpLCBjb21wb25lbnRBKTsKLQotICAgICAgICB1aW50OHg4eDRfdCBkZXN0Q29tcG9uZW50
cyA9IHt7Y29tcG9uZW50UiwgY29tcG9uZW50RywgY29tcG9uZW50QiwgY29tcG9uZW50QX19Owot
ICAgICAgICB2c3Q0X3U4KGRlc3RpbmF0aW9uLCBkZXN0Q29tcG9uZW50cyk7Ci0gICAgICAgIGRl
c3RpbmF0aW9uICs9IDMyOwotICAgIH0KLQotICAgIHNvdXJjZSArPSBwaXhlbFNpemU7Ci0gICAg
cGl4ZWxzUGVyUm93ID0gdGFpbFBpeGVsczsKLX0KLQotQUxXQVlTX0lOTElORSB2b2lkIHBhY2tP
bmVSb3dPZlJHQkE4VG9VbnNpZ25lZFNob3J0NDQ0NChjb25zdCB1aW50OF90KiYgc291cmNlLCB1
aW50MTZfdComIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCYgcGl4ZWxzUGVyUm93KQotewotICAgIHVu
c2lnbmVkIGNvbXBvbmVudHNQZXJSb3cgPSBwaXhlbHNQZXJSb3cgKiA0OwotICAgIHVuc2lnbmVk
IHRhaWxDb21wb25lbnRzID0gY29tcG9uZW50c1BlclJvdyAlIDMyOwotICAgIHVuc2lnbmVkIGNv
bXBvbmVudHNTaXplID0gY29tcG9uZW50c1BlclJvdyAtIHRhaWxDb21wb25lbnRzOwotCi0gICAg
dWludDhfdCogZHN0ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZGVzdGluYXRpb24pOwot
ICAgIHVpbnQ4eDhfdCBpbW1lZGlhdGUweGYwID0gdmR1cF9uX3U4KDB4RjApOwotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBjb21wb25lbnRzU2l6ZTsgaSArPSAzMikgewotICAgICAgICB1
aW50OHg4eDRfdCBSR0JBOCA9IHZsZDRfdTgoc291cmNlICsgaSk7Ci0KLSAgICAgICAgdWludDh4
OF90IGNvbXBvbmVudFIgPSB2YW5kX3U4KFJHQkE4LnZhbFswXSwgaW1tZWRpYXRlMHhmMCk7Ci0g
ICAgICAgIHVpbnQ4eDhfdCBjb21wb25lbnRHID0gdnNocl9uX3U4KHZhbmRfdTgoUkdCQTgudmFs
WzFdLCBpbW1lZGlhdGUweGYwKSwgNCk7Ci0gICAgICAgIHVpbnQ4eDhfdCBjb21wb25lbnRCID0g
dmFuZF91OChSR0JBOC52YWxbMl0sIGltbWVkaWF0ZTB4ZjApOwotICAgICAgICB1aW50OHg4X3Qg
Y29tcG9uZW50QSA9IHZzaHJfbl91OCh2YW5kX3U4KFJHQkE4LnZhbFszXSwgaW1tZWRpYXRlMHhm
MCksIDQpOwotCi0gICAgICAgIHVpbnQ4eDh4Ml90IFJHQkE0OwotICAgICAgICBSR0JBNC52YWxb
MF0gPSB2b3JyX3U4KGNvbXBvbmVudEIsIGNvbXBvbmVudEEpOwotICAgICAgICBSR0JBNC52YWxb
MV0gPSB2b3JyX3U4KGNvbXBvbmVudFIsIGNvbXBvbmVudEcpOwotICAgICAgICB2c3QyX3U4KGRz
dCwgUkdCQTQpOwotICAgICAgICBkc3QgKz0gMTY7Ci0gICAgfQotCi0gICAgc291cmNlICs9IGNv
bXBvbmVudHNTaXplOwotICAgIGRlc3RpbmF0aW9uICs9IGNvbXBvbmVudHNTaXplIC8gNDsKLSAg
ICBwaXhlbHNQZXJSb3cgPSB0YWlsQ29tcG9uZW50cyAvIDQ7Ci19Ci0KLUFMV0FZU19JTkxJTkUg
dm9pZCB1bnBhY2tPbmVSb3dPZlJHQkE1NTUxVG9SR0JBOChjb25zdCB1aW50MTZfdComIHNvdXJj
ZSwgdWludDhfdComIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCYgcGl4ZWxzUGVyUm93KQotewotICAg
IHVuc2lnbmVkIHRhaWxQaXhlbHMgPSBwaXhlbHNQZXJSb3cgJSA4OwotICAgIHVuc2lnbmVkIHBp
eGVsU2l6ZSA9IHBpeGVsc1BlclJvdyAtIHRhaWxQaXhlbHM7Ci0KLSAgICB1aW50OHg4X3QgaW1t
ZWRpYXRlMHg3ID0gdmR1cF9uX3U4KDB4Nyk7Ci0gICAgdWludDh4OF90IGltbWVkaWF0ZTB4ZmYg
PSB2ZHVwX25fdTgoMHhGRik7Ci0gICAgdWludDE2eDhfdCBpbW1lZGlhdGUweDFmID0gdmR1cHFf
bl91MTYoMHgxRik7Ci0gICAgdWludDE2eDhfdCBpbW1lZGlhdGUweDEgPSB2ZHVwcV9uX3UxNigw
eDEpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBpeGVsU2l6ZTsgaSArPSA4KSB7
Ci0gICAgICAgIHVpbnQxNng4X3QgZWlnaHRQaXhlbHMgPSB2bGQxcV91MTYoc291cmNlICsgaSk7
Ci0KLSAgICAgICAgdWludDh4OF90IGNvbXBvbmVudFIgPSB2cW1vdm5fdTE2KHZzaHJxX25fdTE2
KGVpZ2h0UGl4ZWxzLCAxMSkpOwotICAgICAgICB1aW50OHg4X3QgY29tcG9uZW50RyA9IHZxbW92
bl91MTYodmFuZHFfdTE2KHZzaHJxX25fdTE2KGVpZ2h0UGl4ZWxzLCA2KSwgaW1tZWRpYXRlMHgx
ZikpOwotICAgICAgICB1aW50OHg4X3QgY29tcG9uZW50QiA9IHZxbW92bl91MTYodmFuZHFfdTE2
KHZzaHJxX25fdTE2KGVpZ2h0UGl4ZWxzLCAxKSwgaW1tZWRpYXRlMHgxZikpOwotICAgICAgICB1
aW50OHg4X3QgY29tcG9uZW50QSA9IHZxbW92bl91MTYodmFuZHFfdTE2KGVpZ2h0UGl4ZWxzLCBp
bW1lZGlhdGUweDEpKTsKLQotICAgICAgICBjb21wb25lbnRSID0gdm9ycl91OCh2c2hsX25fdTgo
Y29tcG9uZW50UiwgMyksIHZhbmRfdTgoY29tcG9uZW50UiwgaW1tZWRpYXRlMHg3KSk7Ci0gICAg
ICAgIGNvbXBvbmVudEcgPSB2b3JyX3U4KHZzaGxfbl91OChjb21wb25lbnRHLCAzKSwgdmFuZF91
OChjb21wb25lbnRHLCBpbW1lZGlhdGUweDcpKTsKLSAgICAgICAgY29tcG9uZW50QiA9IHZvcnJf
dTgodnNobF9uX3U4KGNvbXBvbmVudEIsIDMpLCB2YW5kX3U4KGNvbXBvbmVudEIsIGltbWVkaWF0
ZTB4NykpOwotICAgICAgICBjb21wb25lbnRBID0gdm11bF91OChjb21wb25lbnRBLCBpbW1lZGlh
dGUweGZmKTsKLQotICAgICAgICB1aW50OHg4eDRfdCBkZXN0Q29tcG9uZW50cyA9IHt7Y29tcG9u
ZW50UiwgY29tcG9uZW50RywgY29tcG9uZW50QiwgY29tcG9uZW50QX19OwotICAgICAgICB2c3Q0
X3U4KGRlc3RpbmF0aW9uLCBkZXN0Q29tcG9uZW50cyk7Ci0gICAgICAgIGRlc3RpbmF0aW9uICs9
IDMyOwotICAgIH0KLQotICAgIHNvdXJjZSArPSBwaXhlbFNpemU7Ci0gICAgcGl4ZWxzUGVyUm93
ID0gdGFpbFBpeGVsczsKLX0KLQotQUxXQVlTX0lOTElORSB2b2lkIHBhY2tPbmVSb3dPZlJHQkE4
VG9VbnNpZ25lZFNob3J0NTU1MShjb25zdCB1aW50OF90KiYgc291cmNlLCB1aW50MTZfdComIGRl
c3RpbmF0aW9uLCB1bnNpZ25lZCYgcGl4ZWxzUGVyUm93KQotewotICAgIHVuc2lnbmVkIGNvbXBv
bmVudHNQZXJSb3cgPSBwaXhlbHNQZXJSb3cgKiA0OwotICAgIHVuc2lnbmVkIHRhaWxDb21wb25l
bnRzID0gY29tcG9uZW50c1BlclJvdyAlIDMyOwotICAgIHVuc2lnbmVkIGNvbXBvbmVudHNTaXpl
ID0gY29tcG9uZW50c1BlclJvdyAtIHRhaWxDb21wb25lbnRzOwotCi0gICAgdWludDhfdCogZHN0
ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZGVzdGluYXRpb24pOwotCi0gICAgdWludDh4
OF90IGltbWVkaWF0ZTB4ZjggPSB2ZHVwX25fdTgoMHhGOCk7Ci0gICAgdWludDh4OF90IGltbWVk
aWF0ZTB4MTggPSB2ZHVwX25fdTgoMHgxOCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGNvbXBvbmVudHNTaXplOyBpICs9IDMyKSB7Ci0gICAgICAgIHVpbnQ4eDh4NF90IFJHQkE4ID0g
dmxkNF91OChzb3VyY2UgKyBpKTsKLQotICAgICAgICB1aW50OHg4X3QgY29tcG9uZW50UiA9IHZh
bmRfdTgoUkdCQTgudmFsWzBdLCBpbW1lZGlhdGUweGY4KTsKLSAgICAgICAgdWludDh4OF90IGNv
bXBvbmVudEczYml0ID0gdnNocl9uX3U4KFJHQkE4LnZhbFsxXSwgNSk7Ci0KLSAgICAgICAgdWlu
dDh4OF90IGNvbXBvbmVudEcyYml0ID0gdnNobF9uX3U4KHZhbmRfdTgoUkdCQTgudmFsWzFdLCBp
bW1lZGlhdGUweDE4KSwgMyk7Ci0gICAgICAgIHVpbnQ4eDhfdCBjb21wb25lbnRCID0gdnNocl9u
X3U4KHZhbmRfdTgoUkdCQTgudmFsWzJdLCBpbW1lZGlhdGUweGY4KSwgMik7Ci0gICAgICAgIHVp
bnQ4eDhfdCBjb21wb25lbnRBID0gdnNocl9uX3U4KFJHQkE4LnZhbFszXSwgNyk7Ci0KLSAgICAg
ICAgdWludDh4OHgyX3QgUkdCQTU1NTE7Ci0gICAgICAgIFJHQkE1NTUxLnZhbFswXSA9IHZvcnJf
dTgodm9ycl91OChjb21wb25lbnRHMmJpdCwgY29tcG9uZW50QiksIGNvbXBvbmVudEEpOwotICAg
ICAgICBSR0JBNTU1MS52YWxbMV0gPSB2b3JyX3U4KGNvbXBvbmVudFIsIGNvbXBvbmVudEczYml0
KTsKLSAgICAgICAgdnN0Ml91OChkc3QsIFJHQkE1NTUxKTsKLSAgICAgICAgZHN0ICs9IDE2Owot
ICAgIH0KLQotICAgIHNvdXJjZSArPSBjb21wb25lbnRzU2l6ZTsKLSAgICBkZXN0aW5hdGlvbiAr
PSBjb21wb25lbnRzU2l6ZSAvIDQ7Ci0gICAgcGl4ZWxzUGVyUm93ID0gdGFpbENvbXBvbmVudHMg
LyA0OwotfQotCi1BTFdBWVNfSU5MSU5FIHZvaWQgdW5wYWNrT25lUm93T2ZSR0I1NjVUb1JHQkE4
KGNvbnN0IHVpbnQxNl90KiYgc291cmNlLCB1aW50OF90KiYgZGVzdGluYXRpb24sIHVuc2lnbmVk
JiBwaXhlbHNQZXJSb3cpCi17Ci0gICAgdW5zaWduZWQgdGFpbFBpeGVscyA9IHBpeGVsc1BlclJv
dyAlIDg7Ci0gICAgdW5zaWduZWQgcGl4ZWxTaXplID0gcGl4ZWxzUGVyUm93IC0gdGFpbFBpeGVs
czsKLQotICAgIHVpbnQxNng4X3QgaW1tZWRpYXRlMHgzZiA9IHZkdXBxX25fdTE2KDB4M0YpOwot
ICAgIHVpbnQxNng4X3QgaW1tZWRpYXRlMHgxZiA9IHZkdXBxX25fdTE2KDB4MUYpOwotICAgIHVp
bnQ4eDhfdCBpbW1lZGlhdGUweDMgPSB2ZHVwX25fdTgoMHgzKTsKLSAgICB1aW50OHg4X3QgaW1t
ZWRpYXRlMHg3ID0gdmR1cF9uX3U4KDB4Nyk7Ci0KLSAgICB1aW50OHg4X3QgY29tcG9uZW50QSA9
IHZkdXBfbl91OCgweEZGKTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwaXhlbFNp
emU7IGkgKz0gOCkgewotICAgICAgICB1aW50MTZ4OF90IGVpZ2h0UGl4ZWxzID0gdmxkMXFfdTE2
KHNvdXJjZSArIGkpOwotCi0gICAgICAgIHVpbnQ4eDhfdCBjb21wb25lbnRSID0gdnFtb3ZuX3Ux
Nih2c2hycV9uX3UxNihlaWdodFBpeGVscywgMTEpKTsKLSAgICAgICAgdWludDh4OF90IGNvbXBv
bmVudEcgPSB2cW1vdm5fdTE2KHZhbmRxX3UxNih2c2hycV9uX3UxNihlaWdodFBpeGVscywgNSks
IGltbWVkaWF0ZTB4M2YpKTsKLSAgICAgICAgdWludDh4OF90IGNvbXBvbmVudEIgPSB2cW1vdm5f
dTE2KHZhbmRxX3UxNihlaWdodFBpeGVscywgaW1tZWRpYXRlMHgxZikpOwotCi0gICAgICAgIGNv
bXBvbmVudFIgPSB2b3JyX3U4KHZzaGxfbl91OChjb21wb25lbnRSLCAzKSwgdmFuZF91OChjb21w
b25lbnRSLCBpbW1lZGlhdGUweDcpKTsKLSAgICAgICAgY29tcG9uZW50RyA9IHZvcnJfdTgodnNo
bF9uX3U4KGNvbXBvbmVudEcsIDIpLCB2YW5kX3U4KGNvbXBvbmVudEcsIGltbWVkaWF0ZTB4Mykp
OwotICAgICAgICBjb21wb25lbnRCID0gdm9ycl91OCh2c2hsX25fdTgoY29tcG9uZW50QiwgMyks
IHZhbmRfdTgoY29tcG9uZW50QiwgaW1tZWRpYXRlMHg3KSk7Ci0KLSAgICAgICAgdWludDh4OHg0
X3QgZGVzdENvbXBvbmVudHMgPSB7e2NvbXBvbmVudFIsIGNvbXBvbmVudEcsIGNvbXBvbmVudEIs
IGNvbXBvbmVudEF9fTsKLSAgICAgICAgdnN0NF91OChkZXN0aW5hdGlvbiwgZGVzdENvbXBvbmVu
dHMpOwotICAgICAgICBkZXN0aW5hdGlvbiArPSAzMjsKLSAgICB9Ci0KLSAgICBzb3VyY2UgKz0g
cGl4ZWxTaXplOwotICAgIHBpeGVsc1BlclJvdyA9IHRhaWxQaXhlbHM7Ci19Ci0KLUFMV0FZU19J
TkxJTkUgdm9pZCBwYWNrT25lUm93T2ZSR0JBOFRvVW5zaWduZWRTaG9ydDU2NShjb25zdCB1aW50
OF90KiYgc291cmNlLCB1aW50MTZfdComIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCYgcGl4ZWxzUGVy
Um93KQotewotICAgIHVuc2lnbmVkIGNvbXBvbmVudHNQZXJSb3cgPSBwaXhlbHNQZXJSb3cgKiA0
OwotICAgIHVuc2lnbmVkIHRhaWxDb21wb25lbnRzID0gY29tcG9uZW50c1BlclJvdyAlIDMyOwot
ICAgIHVuc2lnbmVkIGNvbXBvbmVudHNTaXplID0gY29tcG9uZW50c1BlclJvdyAtIHRhaWxDb21w
b25lbnRzOwotICAgIHVpbnQ4X3QqIGRzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRl
c3RpbmF0aW9uKTsKLQotICAgIHVpbnQ4eDhfdCBpbW1lZGlhdGUweGY4ID0gdmR1cF9uX3U4KDB4
RjgpOwotICAgIHVpbnQ4eDhfdCBpbW1lZGlhdGUweDFjID0gdmR1cF9uX3U4KDB4MUMpOwotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb21wb25lbnRzU2l6ZTsgaSArPSAzMikgewotICAg
ICAgICB1aW50OHg4eDRfdCBSR0JBOCA9IHZsZDRfdTgoc291cmNlICsgaSk7Ci0KLSAgICAgICAg
dWludDh4OF90IGNvbXBvbmVudFIgPSB2YW5kX3U4KFJHQkE4LnZhbFswXSwgaW1tZWRpYXRlMHhm
OCk7Ci0gICAgICAgIHVpbnQ4eDhfdCBjb21wb25lbnRHTGVmdCA9IHZzaHJfbl91OChSR0JBOC52
YWxbMV0sIDUpOwotICAgICAgICB1aW50OHg4X3QgY29tcG9uZW50R1JpZ2h0ID0gdnNobF9uX3U4
KHZhbmRfdTgoUkdCQTgudmFsWzFdLCBpbW1lZGlhdGUweDFjKSwgMyk7Ci0gICAgICAgIHVpbnQ4
eDhfdCBjb21wb25lbnRCID0gdnNocl9uX3U4KHZhbmRfdTgoUkdCQTgudmFsWzJdLCBpbW1lZGlh
dGUweGY4KSwgMyk7Ci0KLSAgICAgICAgdWludDh4OHgyX3QgUkdCNTY1OwotICAgICAgICBSR0I1
NjUudmFsWzBdID0gdm9ycl91OChjb21wb25lbnRHUmlnaHQsIGNvbXBvbmVudEIpOwotICAgICAg
ICBSR0I1NjUudmFsWzFdID0gdm9ycl91OChjb21wb25lbnRSLCBjb21wb25lbnRHTGVmdCk7Ci0g
ICAgICAgIHZzdDJfdTgoZHN0LCBSR0I1NjUpOwotICAgICAgICBkc3QgKz0gMTY7Ci0gICAgfQot
Ci0gICAgc291cmNlICs9IGNvbXBvbmVudHNTaXplOwotICAgIGRlc3RpbmF0aW9uICs9IGNvbXBv
bmVudHNTaXplIC8gNDsKLSAgICBwaXhlbHNQZXJSb3cgPSB0YWlsQ29tcG9uZW50cyAvIDQ7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFNJTUQKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gSEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3B1L2FybS9maWx0ZXJzL0ZFQmxlbmRORU9OLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJtL2ZpbHRlcnMvRkVCbGVuZE5FT04u
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjUyYjhhY2QzODNlYzgzOTRkOWM3OGE5
ZTE4M2Q0NTgyOWViZGIxOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJtL2ZpbHRlcnMv
RkVCbGVuZE5FT04uaAorKysgL2Rldi9udWxsCkBAIC0xLDIwNyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEyIFVuaXZlcnNpdHkgb2YgU3plZ2VkCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR2Fib3IgUmFwY3NhbnlpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQWRvYmUgU3lzdGVtcyBJ
bmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBVTklWRVJTSVRZIE9GIFNaRUdFRCBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIFVOSVZFUlNJVFkgT0YgU1pFR0VEIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpZiBIQVZFKEFSTV9ORU9OX0lOVFJJTlNJQ1MpCi0KLSNpbmNsdWRlICJGRUJsZW5kLmgiCi0j
aW5jbHVkZSAiUGl4ZWxCdWZmZXIuaCIKLSNpbmNsdWRlIDxhcm1fbmVvbi5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEZFQmxlbmRVdGlsaXRpZXNORU9OIHsKLXB1YmxpYzoKLSAg
ICBzdGF0aWMgaW5saW5lIHVpbnQxNng4X3QgZGl2MjU1KHVpbnQxNng4X3QgbnVtLCB1aW50MTZ4
OF90IHNpeHRlZW5Db25zdDI1NSwgdWludDE2eDhfdCBzaXh0ZWVuQ29uc3RPbmUpCi0gICAgewot
ICAgICAgICB1aW50MTZ4OF90IHF1b3RpZW50ID0gdnNocnFfbl91MTYobnVtLCA4KTsKLSAgICAg
ICAgdWludDE2eDhfdCByZW1haW5kZXIgPSB2YWRkcV91MTYodnN1YnFfdTE2KG51bSwgdm11bHFf
dTE2KHNpeHRlZW5Db25zdDI1NSwgcXVvdGllbnQpKSwgc2l4dGVlbkNvbnN0T25lKTsKLSAgICAg
ICAgcmV0dXJuIHZhZGRxX3UxNihxdW90aWVudCwgdnNocnFfbl91MTYocmVtYWluZGVyLCA4KSk7
Ci0gICAgfQotCi0gICAgc3RhdGljIGlubGluZSB1aW50MTZ4OF90IG5vcm1hbCh1aW50MTZ4OF90
IHBpeGVsQSwgdWludDE2eDhfdCBwaXhlbEIsIHVpbnQxNng4X3QgYWxwaGFBLCB1aW50MTZ4OF90
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2eDhfdCBzaXh0ZWVu
Q29uc3QyNTUsIHVpbnQxNng4X3Qgc2l4dGVlbkNvbnN0T25lKQotICAgIHsKLSAgICAgICAgdWlu
dDE2eDhfdCB0bXAxID0gdnN1YnFfdTE2KHNpeHRlZW5Db25zdDI1NSwgYWxwaGFBKTsKLSAgICAg
ICAgdWludDE2eDhfdCB0bXAyID0gdm11bHFfdTE2KHRtcDEsIHBpeGVsQik7Ci0gICAgICAgIHVp
bnQxNng4X3QgdG1wMyA9IGRpdjI1NSh0bXAyLCBzaXh0ZWVuQ29uc3QyNTUsIHNpeHRlZW5Db25z
dE9uZSk7Ci0gICAgICAgIHJldHVybiB2YWRkcV91MTYodG1wMywgcGl4ZWxBKTsKLSAgICB9Ci0K
LSAgICBzdGF0aWMgaW5saW5lIHVpbnQxNng4X3QgbXVsdGlwbHkodWludDE2eDhfdCBwaXhlbEEs
IHVpbnQxNng4X3QgcGl4ZWxCLCB1aW50MTZ4OF90IGFscGhhQSwgdWludDE2eDhfdCBhbHBoYUIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNng4X3Qgc2l4dGVl
bkNvbnN0MjU1LCB1aW50MTZ4OF90IHNpeHRlZW5Db25zdE9uZSkKLSAgICB7Ci0gICAgICAgIHVp
bnQxNng4X3QgdG1wMSA9IHZzdWJxX3UxNihzaXh0ZWVuQ29uc3QyNTUsIGFscGhhQSk7Ci0gICAg
ICAgIHVpbnQxNng4X3QgdG1wMiA9IHZtdWxxX3UxNih0bXAxLCBwaXhlbEIpOwotICAgICAgICB1
aW50MTZ4OF90IHRtcDMgPSB2YWRkcV91MTYodnN1YnFfdTE2KHNpeHRlZW5Db25zdDI1NSwgYWxw
aGFCKSwgcGl4ZWxCKTsKLSAgICAgICAgdWludDE2eDhfdCB0bXA0ID0gdm11bHFfdTE2KHRtcDMs
IHBpeGVsQSk7Ci0gICAgICAgIHVpbnQxNng4X3QgdG1wNSA9IHZhZGRxX3UxNih0bXAyLCB0bXA0
KTsKLSAgICAgICAgcmV0dXJuIGRpdjI1NSh0bXA1LCBzaXh0ZWVuQ29uc3QyNTUsIHNpeHRlZW5D
b25zdE9uZSk7Ci0gICAgfQotCi0gICAgc3RhdGljIGlubGluZSB1aW50MTZ4OF90IHNjcmVlbih1
aW50MTZ4OF90IHBpeGVsQSwgdWludDE2eDhfdCBwaXhlbEIsIHVpbnQxNng4X3QsIHVpbnQxNng4
X3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZ4OF90IHNpeHRl
ZW5Db25zdDI1NSwgdWludDE2eDhfdCBzaXh0ZWVuQ29uc3RPbmUpCi0gICAgewotICAgICAgICB1
aW50MTZ4OF90IHRtcDEgPSB2YWRkcV91MTYocGl4ZWxBLCBwaXhlbEIpOwotICAgICAgICB1aW50
MTZ4OF90IHRtcDIgPSB2bXVscV91MTYocGl4ZWxBLCBwaXhlbEIpOwotICAgICAgICB1aW50MTZ4
OF90IHRtcDMgPSBkaXYyNTUodG1wMiwgc2l4dGVlbkNvbnN0MjU1LCBzaXh0ZWVuQ29uc3RPbmUp
OwotICAgICAgICByZXR1cm4gdnN1YnFfdTE2KHRtcDEsIHRtcDMpOwotICAgIH0KLQotICAgIHN0
YXRpYyBpbmxpbmUgdWludDE2eDhfdCBkYXJrZW4odWludDE2eDhfdCBwaXhlbEEsIHVpbnQxNng4
X3QgcGl4ZWxCLCB1aW50MTZ4OF90IGFscGhhQSwgdWludDE2eDhfdCBhbHBoYUIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZ4OF90IHNpeHRlZW5Db25zdDI1NSwg
dWludDE2eDhfdCBzaXh0ZWVuQ29uc3RPbmUpCi0gICAgewotICAgICAgICB1aW50MTZ4OF90IHRt
cDEgPSB2c3VicV91MTYoc2l4dGVlbkNvbnN0MjU1LCBhbHBoYUEpOwotICAgICAgICB1aW50MTZ4
OF90IHRtcDIgPSB2bXVscV91MTYodG1wMSwgcGl4ZWxCKTsKLSAgICAgICAgdWludDE2eDhfdCB0
bXAzID0gZGl2MjU1KHRtcDIsIHNpeHRlZW5Db25zdDI1NSwgc2l4dGVlbkNvbnN0T25lKTsKLSAg
ICAgICAgdWludDE2eDhfdCB0bXA0ID0gdmFkZHFfdTE2KHRtcDMsIHBpeGVsQSk7Ci0KLSAgICAg
ICAgdWludDE2eDhfdCB0bXA1ID0gdnN1YnFfdTE2KHNpeHRlZW5Db25zdDI1NSwgYWxwaGFCKTsK
LSAgICAgICAgdWludDE2eDhfdCB0bXA2ID0gdm11bHFfdTE2KHRtcDUsIHBpeGVsQSk7Ci0gICAg
ICAgIHVpbnQxNng4X3QgdG1wNyA9IGRpdjI1NSh0bXA2LCBzaXh0ZWVuQ29uc3QyNTUsIHNpeHRl
ZW5Db25zdE9uZSk7Ci0gICAgICAgIHVpbnQxNng4X3QgdG1wOCA9IHZhZGRxX3UxNih0bXA3LCBw
aXhlbEIpOwotCi0gICAgICAgIHJldHVybiB2bWlucV91MTYodG1wNCwgdG1wOCk7Ci0gICAgfQot
Ci0gICAgc3RhdGljIGlubGluZSB1aW50MTZ4OF90IGxpZ2h0ZW4odWludDE2eDhfdCBwaXhlbEEs
IHVpbnQxNng4X3QgcGl4ZWxCLCB1aW50MTZ4OF90IGFscGhhQSwgdWludDE2eDhfdCBhbHBoYUIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2eDhfdCBzaXh0ZWVu
Q29uc3QyNTUsIHVpbnQxNng4X3Qgc2l4dGVlbkNvbnN0T25lKQotICAgIHsKLSAgICAgICAgdWlu
dDE2eDhfdCB0bXAxID0gdnN1YnFfdTE2KHNpeHRlZW5Db25zdDI1NSwgYWxwaGFBKTsKLSAgICAg
ICAgdWludDE2eDhfdCB0bXAyID0gdm11bHFfdTE2KHRtcDEsIHBpeGVsQik7Ci0gICAgICAgIHVp
bnQxNng4X3QgdG1wMyA9IGRpdjI1NSh0bXAyLCBzaXh0ZWVuQ29uc3QyNTUsIHNpeHRlZW5Db25z
dE9uZSk7Ci0gICAgICAgIHVpbnQxNng4X3QgdG1wNCA9IHZhZGRxX3UxNih0bXAzLCBwaXhlbEEp
OwotCi0gICAgICAgIHVpbnQxNng4X3QgdG1wNSA9IHZzdWJxX3UxNihzaXh0ZWVuQ29uc3QyNTUs
IGFscGhhQik7Ci0gICAgICAgIHVpbnQxNng4X3QgdG1wNiA9IHZtdWxxX3UxNih0bXA1LCBwaXhl
bEEpOwotICAgICAgICB1aW50MTZ4OF90IHRtcDcgPSBkaXYyNTUodG1wNiwgc2l4dGVlbkNvbnN0
MjU1LCBzaXh0ZWVuQ29uc3RPbmUpOwotICAgICAgICB1aW50MTZ4OF90IHRtcDggPSB2YWRkcV91
MTYodG1wNywgcGl4ZWxCKTsKLQotICAgICAgICByZXR1cm4gdm1heHFfdTE2KHRtcDQsIHRtcDgp
OwotICAgIH0KLX07Ci0KLWJvb2wgRkVCbGVuZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKGNvbnN0
IEZpbHRlciYpCi17Ci0gICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOwotICAg
IEZpbHRlckVmZmVjdCogaW4yID0gaW5wdXRFZmZlY3QoMSk7Ci0KLSAgICBhdXRvJiBkZXN0aW5h
dGlvblBpeGVsQnVmZmVyID0gcGl4ZWxCdWZmZXJSZXN1bHQoQWxwaGFQcmVtdWx0aXBsaWNhdGlv
bjo6UHJlbXVsdGlwbGllZCk7Ci0gICAgaWYgKCFkZXN0aW5hdGlvblBpeGVsQnVmZmVyKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvJiBkZXN0aW5hdGlvblBpeGVsQXJyYXkgPSBk
ZXN0aW5hdGlvblBpeGVsQnVmZmVyLT5kYXRhKCk7Ci0KLSAgICBJbnRSZWN0IGVmZmVjdEFEcmF3
aW5nUmVjdCA9IHJlcXVlc3RlZFJlZ2lvbk9mSW5wdXRQaXhlbEJ1ZmZlcihpbi0+YWJzb2x1dGVQ
YWludFJlY3QoKSk7Ci0gICAgYXV0byBzb3VyY2VQaXhlbEFycmF5QSA9IGluLT5nZXRQaXhlbEJ1
ZmZlclJlc3VsdChBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBlZmZlY3RB
RHJhd2luZ1JlY3QpOwotCi0gICAgSW50UmVjdCBlZmZlY3RCRHJhd2luZ1JlY3QgPSByZXF1ZXN0
ZWRSZWdpb25PZklucHV0UGl4ZWxCdWZmZXIoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsKLSAg
ICBhdXRvIHNvdXJjZVBpeGVsQXJyYXlCID0gaW4yLT5nZXRQaXhlbEJ1ZmZlclJlc3VsdChBbHBo
YVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBlZmZlY3RCRHJhd2luZ1JlY3QpOwot
Ci0gICAgdW5zaWduZWQgc291cmNlUGl4ZWxBcnJheUxlbmd0aCA9IHNvdXJjZVBpeGVsQXJyYXlB
LT5sZW5ndGgoKTsKLSAgICBBU1NFUlQocGl4ZWxBcnJheUxlbmd0aCA9PSBzb3VyY2VQaXhlbEFy
cmF5Qi0+bGVuZ3RoKCkpOwotCi0gICAgaWYgKHNvdXJjZVBpeGVsQXJyYXlMZW5ndGggPj0gOCkg
ewotICAgICAgICBwbGF0Zm9ybUFwcGx5TkVPTihzb3VyY2VQaXhlbEFycmF5QS0+ZGF0YSgpLCBz
b3VyY2VQaXhlbEFycmF5Qi0+ZGF0YSgpLCBkZXN0aW5hdGlvblBpeGVsQXJyYXkuZGF0YSgpLCBz
b3VyY2VQaXhlbEFycmF5TGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAg
IC8vIElmIHRoZXJlIGlzIGp1c3Qgb25lIHBpeGVsIHdlIGV4cGFuZCBpdCB0byB0d28uCi0gICAg
QVNTRVJUKHNvdXJjZVBpeGVsQXJyYXlMZW5ndGggPiAwKTsKLSAgICB1aW50MzJfdCBzb3VyY2VB
WzJdID0gezAsIDB9OwotICAgIHVpbnQzMl90IHNvdXJjZUJBbmREZXN0WzJdID0gezAsIDB9Owot
Ci0gICAgc291cmNlQVswXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihzb3VyY2VQaXhl
bEFycmF5QS0+ZGF0YSgpKVswXTsKLSAgICBzb3VyY2VCQW5kRGVzdFswXSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDMyX3QqPihzb3VyY2VQaXhlbEFycmF5Qi0+ZGF0YSgpKVswXTsKLSAgICBwbGF0
Zm9ybUFwcGx5TkVPTihyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihzb3VyY2VBKSwgcmVpbnRl
cnByZXRfY2FzdDx1aW50OF90Kj4oc291cmNlQkFuZERlc3QpLCByZWludGVycHJldF9jYXN0PHVp
bnQ4X3QqPihzb3VyY2VCQW5kRGVzdCksIDgpOwotICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMy
X3QqPihkZXN0aW5hdGlvblBpeGVsQXJyYXkuZGF0YSgpKVswXSA9IHNvdXJjZUJBbmREZXN0WzBd
OwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIEZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlORU9O
KHVuc2lnbmVkIGNoYXIqIHNyY1BpeGVsQXJyYXlBLCB1bnNpZ25lZCBjaGFyKiBzcmNQaXhlbEFy
cmF5QiwgdW5zaWduZWQgY2hhciogZHN0UGl4ZWxBcnJheSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgY29sb3JBcnJheUxlbmd0aCkKLXsKLSAgICB1aW50OF90KiBz
b3VyY2VQaXhlbEEgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihzcmNQaXhlbEFycmF5QSk7
Ci0gICAgdWludDhfdCogc291cmNlUGl4ZWxCID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4o
c3JjUGl4ZWxBcnJheUIpOwotICAgIHVpbnQ4X3QqIGRlc3RpbmF0aW9uUGl4ZWwgPSByZWludGVy
cHJldF9jYXN0PHVpbnQ4X3QqPihkc3RQaXhlbEFycmF5KTsKLQotICAgIHVpbnQxNng4X3Qgc2l4
dGVlbkNvbnN0MjU1ID0gdmR1cHFfbl91MTYoMjU1KTsKLSAgICB1aW50MTZ4OF90IHNpeHRlZW5D
b25zdE9uZSA9IHZkdXBxX25fdTE2KDEpOwotCi0gICAgdW5zaWduZWQgY29sb3JPZmZzZXQgPSAw
OwotICAgIHdoaWxlIChjb2xvck9mZnNldCA8IGNvbG9yQXJyYXlMZW5ndGgpIHsKLSAgICAgICAg
dW5zaWduZWQgY2hhciBhbHBoYUExID0gc3JjUGl4ZWxBcnJheUFbY29sb3JPZmZzZXQgKyAzXTsK
LSAgICAgICAgdW5zaWduZWQgY2hhciBhbHBoYUIxID0gc3JjUGl4ZWxBcnJheUJbY29sb3JPZmZz
ZXQgKyAzXTsKLSAgICAgICAgdW5zaWduZWQgY2hhciBhbHBoYUEyID0gc3JjUGl4ZWxBcnJheUFb
Y29sb3JPZmZzZXQgKyA3XTsKLSAgICAgICAgdW5zaWduZWQgY2hhciBhbHBoYUIyID0gc3JjUGl4
ZWxBcnJheUJbY29sb3JPZmZzZXQgKyA3XTsKLQotICAgICAgICB1aW50MTZ4OF90IGRvdWJibGVQ
aXhlbEEgPSB2bW92bF91OCh2bGQxX3U4KHNvdXJjZVBpeGVsQSArIGNvbG9yT2Zmc2V0KSk7Ci0g
ICAgICAgIHVpbnQxNng4X3QgZG91YmJsZVBpeGVsQiA9IHZtb3ZsX3U4KHZsZDFfdTgoc291cmNl
UGl4ZWxCICsgY29sb3JPZmZzZXQpKTsKLSAgICAgICAgdWludDE2eDhfdCBhbHBoYUEgPSB2Y29t
YmluZV91MTYodmR1cF9uX3UxNihhbHBoYUExKSwgdmR1cF9uX3UxNihhbHBoYUEyKSk7Ci0gICAg
ICAgIHVpbnQxNng4X3QgYWxwaGFCID0gdmNvbWJpbmVfdTE2KHZkdXBfbl91MTYoYWxwaGFCMSks
IHZkdXBfbl91MTYoYWxwaGFCMikpOwotCi0gICAgICAgIHVpbnQxNng4X3QgcmVzdWx0OwotICAg
ICAgICBzd2l0Y2ggKG1fbW9kZSkgewotICAgICAgICBjYXNlIEJsZW5kTW9kZTo6Tm9ybWFsOgot
ICAgICAgICAgICAgcmVzdWx0ID0gRkVCbGVuZFV0aWxpdGllc05FT046Om5vcm1hbChkb3ViYmxl
UGl4ZWxBLCBkb3ViYmxlUGl4ZWxCLCBhbHBoYUEsIGFscGhhQiwgc2l4dGVlbkNvbnN0MjU1LCBz
aXh0ZWVuQ29uc3RPbmUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQmxlbmRN
b2RlOjpNdWx0aXBseToKLSAgICAgICAgICAgIHJlc3VsdCA9IEZFQmxlbmRVdGlsaXRpZXNORU9O
OjptdWx0aXBseShkb3ViYmxlUGl4ZWxBLCBkb3ViYmxlUGl4ZWxCLCBhbHBoYUEsIGFscGhhQiwg
c2l4dGVlbkNvbnN0MjU1LCBzaXh0ZWVuQ29uc3RPbmUpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgQmxlbmRNb2RlOjpTY3JlZW46Ci0gICAgICAgICAgICByZXN1bHQgPSBGRUJs
ZW5kVXRpbGl0aWVzTkVPTjo6c2NyZWVuKGRvdWJibGVQaXhlbEEsIGRvdWJibGVQaXhlbEIsIGFs
cGhhQSwgYWxwaGFCLCBzaXh0ZWVuQ29uc3QyNTUsIHNpeHRlZW5Db25zdE9uZSk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBCbGVuZE1vZGU6OkRhcmtlbjoKLSAgICAgICAgICAg
IHJlc3VsdCA9IEZFQmxlbmRVdGlsaXRpZXNORU9OOjpkYXJrZW4oZG91YmJsZVBpeGVsQSwgZG91
YmJsZVBpeGVsQiwgYWxwaGFBLCBhbHBoYUIsIHNpeHRlZW5Db25zdDI1NSwgc2l4dGVlbkNvbnN0
T25lKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEJsZW5kTW9kZTo6TGlnaHRl
bjoKLSAgICAgICAgICAgIHJlc3VsdCA9IEZFQmxlbmRVdGlsaXRpZXNORU9OOjpsaWdodGVuKGRv
dWJibGVQaXhlbEEsIGRvdWJibGVQaXhlbEIsIGFscGhhQSwgYWxwaGFCLCBzaXh0ZWVuQ29uc3Qy
NTUsIHNpeHRlZW5Db25zdE9uZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIHJlc3VsdCA9IHZkdXBxX25fdTE2KDApOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLQotICAgICAgICB2c3QxX3U4KGRlc3RpbmF0aW9uUGl4ZWwgKyBjb2xv
ck9mZnNldCwgdm1vdm5fdTE2KHJlc3VsdCkpOwotCi0gICAgICAgIHVuc2lnbmVkIGNoYXIgYWxw
aGFSMSA9IDI1NSAtICgoMjU1IC0gYWxwaGFBMSkgKiAoMjU1IC0gYWxwaGFCMSkpIC8gMjU1Owot
ICAgICAgICB1bnNpZ25lZCBjaGFyIGFscGhhUjIgPSAyNTUgLSAoKDI1NSAtIGFscGhhQTIpICog
KDI1NSAtIGFscGhhQjIpKSAvIDI1NTsKLQotICAgICAgICBkc3RQaXhlbEFycmF5W2NvbG9yT2Zm
c2V0ICsgM10gPSBhbHBoYVIxOwotICAgICAgICBkc3RQaXhlbEFycmF5W2NvbG9yT2Zmc2V0ICsg
N10gPSBhbHBoYVIyOwotCi0gICAgICAgIGNvbG9yT2Zmc2V0ICs9IDg7Ci0gICAgICAgIGlmIChj
b2xvck9mZnNldCA+IGNvbG9yQXJyYXlMZW5ndGgpIHsKLSAgICAgICAgICAgIEFTU0VSVChjb2xv
ck9mZnNldCAtIDQgPT0gY29sb3JBcnJheUxlbmd0aCk7Ci0gICAgICAgICAgICBjb2xvck9mZnNl
dCA9IGNvbG9yQXJyYXlMZW5ndGggLSA4OwotICAgICAgICB9Ci0gICAgfQotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBIQVZFKEFSTV9ORU9OX0lOVFJJTlNJQ1MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJtL2ZpbHRl
cnMvRkVDb21wb3NpdGVBcml0aG1ldGljTkVPTi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3B1L2FybS9maWx0ZXJzL0ZFQ29tcG9zaXRlQXJpdGhtZXRpY05FT04uaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzRjYmFlYTI5YzllZGEyOThhOGY2NmIwZGQ0OTEw
ZTE4MWYzY2QwOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJtL2ZpbHRlcnMvRkVDb21w
b3NpdGVBcml0aG1ldGljTkVPTi5oCisrKyAvZGV2L251bGwKQEAgLTEsOTMgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMSBVbml2ZXJzaXR5IG9mIFN6ZWdlZAotICogQ29weXJpZ2h0
IChDKSAyMDExIEZlbGljaWFuIE1hcnRvbgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVU5JVkVSU0lUWSBPRiBTWkVHRUQgYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBVTklWRVJTSVRZIE9GIFNaRUdFRCBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRkVDb21wb3NpdGVBcml0
aG1ldGljTkVPTl9oCi0jZGVmaW5lIEZFQ29tcG9zaXRlQXJpdGhtZXRpY05FT05faAotCi0jaWYg
SEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQotCi0jaW5jbHVkZSAiRkVDb21wb3NpdGUuaCIKLSNp
bmNsdWRlICJORU9OSGVscGVycy5oIgotI2luY2x1ZGUgPGFybV9uZW9uLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotdGVtcGxhdGUgPGludCBiMSwgaW50IGI0PgotaW5saW5lIHZvaWQgRkVD
b21wb3NpdGU6OmNvbXB1dGVBcml0aG1ldGljUGl4ZWxzTmVvbihjb25zdCB1aW50OF90KiBzb3Vy
Y2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbEFycmF5TGVuZ3RoLCBmbG9h
dCBrMSwgZmxvYXQgazIsIGZsb2F0IGszLCBmbG9hdCBrNCkKLXsKLSAgICBmbG9hdDMyeDRfdCBr
MXg0ID0gdmR1cHFfbl9mMzIoazEgLyAyNTUpOwotICAgIGZsb2F0MzJ4NF90IGsyeDQgPSB2ZHVw
cV9uX2YzMihrMik7Ci0gICAgZmxvYXQzMng0X3QgazN4NCA9IHZkdXBxX25fZjMyKGszKTsKLSAg
ICBmbG9hdDMyeDRfdCBrNHg0ID0gdmR1cHFfbl9mMzIoazQgKiAyNTUpOwotICAgIHVpbnQzMng0
X3QgbWF4MjU1ID0gdmR1cHFfbl91MzIoMjU1KTsKLQotICAgIGNvbnN0IHVpbnQzMl90KiBzb3Vy
Y2VQaXhlbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihzb3VyY2UpOwotICAg
IHVpbnQzMl90KiBkZXN0aW5hdGlvblBpeGVsID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+
KGRlc3RpbmF0aW9uKTsKLSAgICB1aW50MzJfdCogZGVzdGluYXRpb25FbmRQaXhlbCA9IGRlc3Rp
bmF0aW9uUGl4ZWwgKyAocGl4ZWxBcnJheUxlbmd0aCA+PiAyKTsKLQotICAgIHdoaWxlIChkZXN0
aW5hdGlvblBpeGVsIDwgZGVzdGluYXRpb25FbmRQaXhlbCkgewotICAgICAgICBmbG9hdDMyeDRf
dCBzb3VyY2VQaXhlbEFzRmxvYXQgPSBsb2FkUkdCQThBc0Zsb2F0KHNvdXJjZVBpeGVsKTsKLSAg
ICAgICAgZmxvYXQzMng0X3QgZGVzdGluYXRpb25QaXhlbEFzRmxvYXQgPSBsb2FkUkdCQThBc0Zs
b2F0KGRlc3RpbmF0aW9uUGl4ZWwpOwotCi0gICAgICAgIGZsb2F0MzJ4NF90IHJlc3VsdCA9IHZt
dWxxX2YzMihzb3VyY2VQaXhlbEFzRmxvYXQsIGsyeDQpOwotICAgICAgICByZXN1bHQgPSB2bWxh
cV9mMzIocmVzdWx0LCBkZXN0aW5hdGlvblBpeGVsQXNGbG9hdCwgazN4NCk7Ci0gICAgICAgIGlm
IChiMSkKLSAgICAgICAgICAgIHJlc3VsdCA9IHZtbGFxX2YzMihyZXN1bHQsIHZtdWxxX2YzMihz
b3VyY2VQaXhlbEFzRmxvYXQsIGRlc3RpbmF0aW9uUGl4ZWxBc0Zsb2F0KSwgazF4NCk7Ci0gICAg
ICAgIGlmIChiNCkKLSAgICAgICAgICAgIHJlc3VsdCA9IHZhZGRxX2YzMihyZXN1bHQsIGs0eDQp
OwotCi0gICAgICAgIC8vIENvbnZlcnQgcmVzdWx0IHRvIHVpbnQgc28gbmVnYXRpdmUgdmFsdWVz
IGFyZSBjb252ZXJ0ZWQgdG8gemVyby4KLSAgICAgICAgdWludDE2eDRfdCB0ZW1wb3JhcnkzID0g
dm1vdm5fdTMyKHZtaW5xX3UzMih2Y3Z0cV91MzJfZjMyKHJlc3VsdCksIG1heDI1NSkpOwotICAg
ICAgICB1aW50OHg4X3QgdGVtcG9yYXJ5NCA9IHZtb3ZuX3UxNih2Y29tYmluZV91MTYodGVtcG9y
YXJ5MywgdGVtcG9yYXJ5MykpOwotICAgICAgICAqZGVzdGluYXRpb25QaXhlbCsrID0gdmdldF9s
YW5lX3UzMih2cmVpbnRlcnByZXRfdTMyX3U4KHRlbXBvcmFyeTQpLCAwKTsKLSAgICAgICAgKytz
b3VyY2VQaXhlbDsKLSAgICB9Ci19Ci0KLWlubGluZSB2b2lkIEZFQ29tcG9zaXRlOjpwbGF0Zm9y
bUFyaXRobWV0aWNOZW9uKGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRp
b24sIHVuc2lnbmVkIHBpeGVsQXJyYXlMZW5ndGgsIGZsb2F0IGsxLCBmbG9hdCBrMiwgZmxvYXQg
azMsIGZsb2F0IGs0KQotewotICAgIGlmICghazQpIHsKLSAgICAgICAgaWYgKCFrMSkgewotICAg
ICAgICAgICAgY29tcHV0ZUFyaXRobWV0aWNQaXhlbHNOZW9uPDAsIDA+KHNvdXJjZSwgZGVzdGlu
YXRpb24sIHBpeGVsQXJyYXlMZW5ndGgsIGsxLCBrMiwgazMsIGs0KTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbXB1dGVBcml0aG1ldGljUGl4ZWxzTmVvbjwx
LCAwPihzb3VyY2UsIGRlc3RpbmF0aW9uLCBwaXhlbEFycmF5TGVuZ3RoLCBrMSwgazIsIGszLCBr
NCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWsxKSB7Ci0gICAgICAgIGNv
bXB1dGVBcml0aG1ldGljUGl4ZWxzTmVvbjwwLCAxPihzb3VyY2UsIGRlc3RpbmF0aW9uLCBwaXhl
bEFycmF5TGVuZ3RoLCBrMSwgazIsIGszLCBrNCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgY29tcHV0ZUFyaXRobWV0aWNQaXhlbHNOZW9uPDEsIDE+KHNvdXJjZSwgZGVzdGluYXRpb24s
IHBpeGVsQXJyYXlMZW5ndGgsIGsxLCBrMiwgazMsIGs0KTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gSEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQotCi0jZW5kaWYg
Ly8gRkVDb21wb3NpdGVBcml0aG1ldGljTkVPTl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJtL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXJORU9OLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJtL2ZpbHRlcnMvRkVHYXVz
c2lhbkJsdXJORU9OLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjYjdiMzY3ZDll
NThiM2UwZTM1YjEzMTRjNzY5ZjRiNDMyM2FmY2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3B1
L2FybS9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyTkVPTi5oCisrKyAvZGV2L251bGwKQEAgLTEsNzgg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBVbml2ZXJzaXR5IG9mIFN6ZWdlZAot
ICogQ29weXJpZ2h0IChDKSAyMDExIFpvbHRhbiBIZXJjemVnCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBVTklWRVJTSVRZIE9GIFNaRUdFRCBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFVOSVZFUlNJVFkgT0YgU1pFR0VEIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBGRUdh
dXNzaWFuQmx1ck5FT05faAotI2RlZmluZSBGRUdhdXNzaWFuQmx1ck5FT05faAotCi0jaWYgSEFW
RShBUk1fTkVPTl9JTlRSSU5TSUNTKQotCi0jaW5jbHVkZSAiRkVHYXVzc2lhbkJsdXIuaCIKLSNp
bmNsdWRlICJORU9OSGVscGVycy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWlubGluZSB2
b2lkIGJveEJsdXJORU9OKGNvbnN0IFVpbnQ4Q2xhbXBlZEFycmF5JiBzcmNQaXhlbEFycmF5LCBV
aW50OENsYW1wZWRBcnJheSYgZHN0UGl4ZWxBcnJheSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGR4LCBpbnQgZHhMZWZ0LCBpbnQgZHhSaWdodCwgaW50IHN0cmlkZSwgaW50IHN0
cmlkZUxpbmUsIGludCBlZmZlY3RXaWR0aCwgaW50IGVmZmVjdEhlaWdodCkKLXsKLSAgICBjb25z
dCB1aW50MzJfdCogc291cmNlUGl4ZWwgPSByZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4oc3Jj
UGl4ZWxBcnJheS5kYXRhKCkpOwotICAgIHVpbnQzMl90KiBkZXN0aW5hdGlvblBpeGVsID0gcmVp
bnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KGRzdFBpeGVsQXJyYXkuZGF0YSgpKTsKLQotICAgIGZs
b2F0MzJ4NF90IGRlbHRhWCA9IHZkdXBxX25fZjMyKDEuMCAvIGR4KTsKLSAgICBpbnQgcGl4ZWxM
aW5lID0gc3RyaWRlTGluZSAvIDQ7Ci0gICAgaW50IHBpeGVsU3RyaWRlID0gc3RyaWRlIC8gNDsK
LQotICAgIGZvciAoaW50IHkgPSAwOyB5IDwgZWZmZWN0SGVpZ2h0OyArK3kpIHsKLSAgICAgICAg
aW50IGxpbmUgPSB5ICogcGl4ZWxMaW5lOwotICAgICAgICBmbG9hdDMyeDRfdCBzdW0gPSB2ZHVw
cV9uX2YzMigwKTsKLSAgICAgICAgLy8gRmlsbCB0aGUga2VybmVsCi0gICAgICAgIGludCBtYXhL
ZXJuZWxTaXplID0gc3RkOjptaW4oZHhSaWdodCwgZWZmZWN0V2lkdGgpOwotICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IG1heEtlcm5lbFNpemU7ICsraSkgewotICAgICAgICAgICAgZmxvYXQz
Mng0X3Qgc291cmNlUGl4ZWxBc0Zsb2F0ID0gbG9hZFJHQkE4QXNGbG9hdChzb3VyY2VQaXhlbCAr
IGxpbmUgKyBpICogcGl4ZWxTdHJpZGUpOwotICAgICAgICAgICAgc3VtID0gdmFkZHFfZjMyKHN1
bSwgc291cmNlUGl4ZWxBc0Zsb2F0KTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEJsdXJyaW5n
Ci0gICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgZWZmZWN0V2lkdGg7ICsreCkgewotICAgICAg
ICAgICAgaW50IHBpeGVsT2Zmc2V0ID0gbGluZSArIHggKiBwaXhlbFN0cmlkZTsKLSAgICAgICAg
ICAgIGZsb2F0MzJ4NF90IHJlc3VsdCA9IHZtdWxxX2YzMihzdW0sIGRlbHRhWCk7Ci0gICAgICAg
ICAgICBzdG9yZUZsb2F0QXNSR0JBOChyZXN1bHQsIGRlc3RpbmF0aW9uUGl4ZWwgKyBwaXhlbE9m
ZnNldCk7Ci0gICAgICAgICAgICBpZiAoeCA+PSBkeExlZnQpIHsKLSAgICAgICAgICAgICAgICBm
bG9hdDMyeDRfdCBzb3VyY2VQaXhlbEFzRmxvYXQgPSBsb2FkUkdCQThBc0Zsb2F0KHNvdXJjZVBp
eGVsICsgcGl4ZWxPZmZzZXQgLSBkeExlZnQgKiBwaXhlbFN0cmlkZSk7Ci0gICAgICAgICAgICAg
ICAgc3VtID0gdnN1YnFfZjMyKHN1bSwgc291cmNlUGl4ZWxBc0Zsb2F0KTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGlmICh4ICsgZHhSaWdodCA8IGVmZmVjdFdpZHRoKSB7Ci0gICAgICAg
ICAgICAgICAgZmxvYXQzMng0X3Qgc291cmNlUGl4ZWxBc0Zsb2F0ID0gbG9hZFJHQkE4QXNGbG9h
dChzb3VyY2VQaXhlbCArIHBpeGVsT2Zmc2V0ICsgZHhSaWdodCAqIHBpeGVsU3RyaWRlKTsKLSAg
ICAgICAgICAgICAgICBzdW0gPSB2YWRkcV9mMzIoc3VtLCBzb3VyY2VQaXhlbEFzRmxvYXQpOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBIQVZFKEFSTV9ORU9OX0lOVFJJTlNJQ1MpCi0KLSNlbmRpZiAvLyBG
RUdhdXNzaWFuQmx1ck5FT05faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3B1L2FybS9maWx0ZXJzL0ZFTGlnaHRpbmdORU9OLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycy9GRUxpZ2h0aW5nTkVPTi5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2ZmY4YzIwYTVhOGFhODQwNjNiYmM0MGI4
NDY2NDliN2JlYjUyYzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3B1L2FybS9maWx0ZXJzL0ZF
TGlnaHRpbmdORU9OLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUwMyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDExIFVuaXZlcnNpdHkgb2YgU3plZ2VkCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEgWm9sdGFuIEhlcmN6ZWcKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFVOSVZFUlNJVFkgT0YgU1pFR0VEIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgVU5JVkVSU0lUWSBPRiBTWkVHRUQgT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiRkVMaWdodGluZ05FT04uaCIKLQotI2lmIENQVShBUk1fTkVPTikgJiYgQ1BVKEFSTV9UUkFE
SVRJT05BTCkgJiYgQ09NUElMRVIoR0NDX0NPTVBBVElCTEUpCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotLy8gVGhlc2UgY29uc3RhbnRzIGFyZSBjb3BpZWQgdG8gdGhlIGZvbGxvd2luZyBTSU1E
IHJlZ2lzdGVyczoKLS8vICAgQUxQSEFYX1EgQUxQSEFZX1EgUkVNQVBYX0QgUkVNQVBZX0QKLQot
Ci1zdGF0aWMgYWxpZ25hcygxNikgc2hvcnQgc19GRUxpZ2h0aW5nQ29uc3RhbnRzRm9yTmVvbltd
ID0gewotICAgIC8vIEFscGhhIGNvZWZmaWNpZW50cy4KLSAgICAtMiwgMSwgMCwgLTEsIDIsIDEs
IDAsIC0xLAotICAgIDAsIC0xLCAtMiwgLTEsIDAsIDEsIDIsIDEsCi0gICAgLy8gUmVtYXBwaW5n
IGluZGljZXMuCi0gICAgMHgwZjBlLCAweDAzMDIsIDB4MDUwNCwgMHgwNzA2LAotICAgIDB4MGIw
YSwgMHgxMzEyLCAweDE1MTQsIDB4MTcxNiwKLX07Ci0KLXNob3J0KiBmZUxpZ2h0aW5nQ29uc3Rh
bnRzRm9yTmVvbigpCi17Ci0gICAgcmV0dXJuIHNfRkVMaWdodGluZ0NvbnN0YW50c0Zvck5lb247
Ci19Ci0KLXZvaWQgRkVMaWdodGluZzo6cGxhdGZvcm1BcHBseU5lb25Xb3JrZXIoRkVMaWdodGlu
Z1BhaW50aW5nRGF0YUZvck5lb24qIHBhcmFtZXRlcnMpCi17Ci0gICAgbmVvbkRyYXdMaWdodGlu
ZyhwYXJhbWV0ZXJzKTsKLX0KLQotI2RlZmluZSBBU1NUUklORyhzdHIpICNzdHIKLSNkZWZpbmUg
VE9TVFJJTkcodmFsdWUpIEFTU1RSSU5HKHZhbHVlKQotCi0jZGVmaW5lIFBJWEVMU19PRkZTRVQg
VE9TVFJJTkcoMCkKLSNkZWZpbmUgWVNUQVJUX09GRlNFVCBUT1NUUklORyg0KQotI2RlZmluZSBX
SURUSF9PRkZTRVQgVE9TVFJJTkcoOCkKLSNkZWZpbmUgSEVJR0hUX09GRlNFVCBUT1NUUklORygx
MikKLSNkZWZpbmUgRkxBR1NfT0ZGU0VUIFRPU1RSSU5HKDE2KQotI2RlZmluZSBTUEVDVUxBUl9F
WFBPTkVOVF9PRkZTRVQgVE9TVFJJTkcoMjApCi0jZGVmaW5lIENPTkVfRVhQT05FTlRfT0ZGU0VU
IFRPU1RSSU5HKDI0KQotI2RlZmluZSBGTE9BVF9BUkdVTUVOVFNfT0ZGU0VUIFRPU1RSSU5HKDI4
KQotI2RlZmluZSBQQUlOVElOR19DT05TVEFOVFNfT0ZGU0VUIFRPU1RSSU5HKDMyKQotI2RlZmlu
ZSBOTCAiXG4iCi0KLS8vIFJlZ2lzdGVyIGFsbG9jYXRpb24KLSNkZWZpbmUgUEFJTlRJTkdfREFU
QV9SICAgICAgICJyMTEiCi0jZGVmaW5lIFJFU0VUX1dJRFRIX1IgICAgICAgICBQQUlOVElOR19E
QVRBX1IKLSNkZWZpbmUgUElYRUxTX1IgICAgICAgICAgICAgICJyNCIKLSNkZWZpbmUgV0lEVEhf
UiAgICAgICAgICAgICAgICJyNSIKLSNkZWZpbmUgSEVJR0hUX1IgICAgICAgICAgICAgICJyNiIK
LSNkZWZpbmUgRkxBR1NfUiAgICAgICAgICAgICAgICJyNyIKLSNkZWZpbmUgU1BFQ1VMQVJfRVhQ
T05FTlRfUiAgICJyOCIKLSNkZWZpbmUgQ09ORV9FWFBPTkVOVF9SICAgICAgICJyMTAiCi0jZGVm
aW5lIFNDQU5MSU5FX1IgICAgICAgICAgICAicjEyIgotCi0jZGVmaW5lIFRNUDFfUSAgICAgICAg
ICAgICAgICAicTAiCi0jZGVmaW5lIFRNUDFfRDAgICAgICAgICAgICAgICAiZDAiCi0jZGVmaW5l
IFRNUDFfUzAgICAgICAgICAgICAgICAiczAiCi0jZGVmaW5lIFRNUDFfUzEgICAgICAgICAgICAg
ICAiczEiCi0jZGVmaW5lIFRNUDFfRDEgICAgICAgICAgICAgICAiZDEiCi0jZGVmaW5lIFRNUDFf
UzIgICAgICAgICAgICAgICAiczIiCi0jZGVmaW5lIFRNUDFfUzMgICAgICAgICAgICAgICAiczMi
Ci0jZGVmaW5lIFRNUDJfUSAgICAgICAgICAgICAgICAicTEiCi0jZGVmaW5lIFRNUDJfRDAgICAg
ICAgICAgICAgICAiZDIiCi0jZGVmaW5lIFRNUDJfUzAgICAgICAgICAgICAgICAiczQiCi0jZGVm
aW5lIFRNUDJfUzEgICAgICAgICAgICAgICAiczUiCi0jZGVmaW5lIFRNUDJfRDEgICAgICAgICAg
ICAgICAiZDMiCi0jZGVmaW5lIFRNUDJfUzIgICAgICAgICAgICAgICAiczYiCi0jZGVmaW5lIFRN
UDJfUzMgICAgICAgICAgICAgICAiczciCi0jZGVmaW5lIFRNUDNfUSAgICAgICAgICAgICAgICAi
cTIiCi0jZGVmaW5lIFRNUDNfRDAgICAgICAgICAgICAgICAiZDQiCi0jZGVmaW5lIFRNUDNfUzAg
ICAgICAgICAgICAgICAiczgiCi0jZGVmaW5lIFRNUDNfUzEgICAgICAgICAgICAgICAiczkiCi0j
ZGVmaW5lIFRNUDNfRDEgICAgICAgICAgICAgICAiZDUiCi0jZGVmaW5lIFRNUDNfUzIgICAgICAg
ICAgICAgICAiczEwIgotI2RlZmluZSBUTVAzX1MzICAgICAgICAgICAgICAgInMxMSIKLQotI2Rl
ZmluZSBDT1NJTkVfT0ZfQU5HTEUgICAgICAgInMxMiIKLSNkZWZpbmUgUE9XRl9JTlRfUyAgICAg
ICAgICAgICJzMTMiCi0jZGVmaW5lIFBPV0ZfRlJBQ19TICAgICAgICAgICAiczE0IgotI2RlZmlu
ZSBTUE9UX0NPTE9SX1EgICAgICAgICAgInE0IgotCi0vLyBCZWNhdXNlIG9mIFZNSU4gYW5kIFZN
QVggQ09OU1RfWkVST19TIGFuZCBDT05TVF9PTkVfUwotLy8gbXVzdCBiZSBwbGFjZWQgb24gdGhl
IHNhbWUgc2lkZSBvZiB0aGUgZG91YmxlIHZlY3RvcgotCi0vLyBDdXJyZW50IHBpeGVsIHBvc2l0
aW9uCi0jZGVmaW5lIFBPU0lUSU9OX1EgICAgICAgICAgICAicTUiCi0jZGVmaW5lIFBPU0lUSU9O
X1hfUyAgICAgICAgICAiczIwIgotI2RlZmluZSBQT1NJVElPTl9ZX1MgICAgICAgICAgInMyMSIK
LSNkZWZpbmUgUE9TSVRJT05fWl9TICAgICAgICAgICJzMjIiCi0jZGVmaW5lIENPTlNUX1pFUk9f
SElfRCAgICAgICAiZDExIgotI2RlZmluZSBDT05TVF9aRVJPX1MgICAgICAgICAgInMyMyIKLQot
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gICAgIFZhcmlhYmxlIGFyZ3Vt
ZW50cwotLy8gTWlzYyBhcmd1bWVudHMKLSNkZWZpbmUgUkVBRDFfUkFOR0UgICAgICAgICAgICJk
MTItZDE1IgotI2RlZmluZSBSRUFEMl9SQU5HRSAgICAgICAgICAgImQxNi1kMTkiCi0jZGVmaW5l
IFJFQUQzX1JBTkdFICAgICAgICAgICAiZDIwLWQyMSIKLQotI2RlZmluZSBTQ0FMRV9TICAgICAg
ICAgICAgICAgInMyNCIKLSNkZWZpbmUgU0NBTEVfRElWNF9TICAgICAgICAgICJzMjUiCi0jZGVm
aW5lIERJRkZVU0VfQ09OU1RfUyAgICAgICAiczI2IgotCi0vLyBMaWdodCBzb3VyY2UgcG9zaXRp
b24KLSNkZWZpbmUgQ09ORV9DVVRfT0ZGX1MgICAgICAgICJzMjgiCi0jZGVmaW5lIENPTkVfRlVM
TF9MSUdIVF9TICAgICAiczI5IgotI2RlZmluZSBDT05FX0NVVF9PRkZfUkFOR0VfUyAgInMzMCIK
LSNkZWZpbmUgQ09OU1RfT05FX0hJX0QgICAgICAgICJkMTUiCi0jZGVmaW5lIENPTlNUX09ORV9T
ICAgICAgICAgICAiczMxIgotCi0jZGVmaW5lIExJR0hUX1EgICAgICAgICAgICAgICAicTgiCi0j
ZGVmaW5lIERJUkVDVElPTl9RICAgICAgICAgICAicTkiCi0jZGVmaW5lIENPTE9SX1EgICAgICAg
ICAgICAgICAicTEwIgotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gICAg
Q29uc3RhbnQgY29lZmZpY2llbnRzCi0jZGVmaW5lIFJFQUQ0X1JBTkdFICAgICAgICAgICAiZDIy
LWQyNSIKLSNkZWZpbmUgUkVBRDVfUkFOR0UgICAgICAgICAgICJkMjYtZDI3IgotCi0jZGVmaW5l
IEFMUEhBWF9RICAgICAgICAgICAgICAicTExIgotI2RlZmluZSBBTFBIQVlfUSAgICAgICAgICAg
ICAgInExMiIKLSNkZWZpbmUgUkVNQVBYX0QgICAgICAgICAgICAgICJkMjYiCi0jZGVmaW5lIFJF
TUFQWV9EICAgICAgICAgICAgICAiZDI3IgotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotCi0jZGVmaW5lIEFMTF9ST1dTX0QgICAgICAgICAgICAie2QyOCxkMjksZDMwfSIKLSNk
ZWZpbmUgVE9QX1JPV19EICAgICAgICAgICAgICJkMjgiCi0jZGVmaW5lIE1JRERMRV9ST1dfRCAg
ICAgICAgICAiZDI5IgotI2RlZmluZSBCT1RUT01fUk9XX0QgICAgICAgICAgImQzMCIKLQotI2Rl
ZmluZSBHRVRfTEVOR1RIKHNvdXJjZSwgdGVtcCkgXAotICAgICJ2bXVsLmYzMiAiIHRlbXAjI19R
ICIsICIgc291cmNlIyNfUSAiLCAiIHNvdXJjZSMjX1EgTkwgXAotICAgICJ2YWRkLmYzMiAiIHNv
dXJjZSMjX1MzICIsICIgdGVtcCMjX1MwICIsICIgdGVtcCMjX1MxIE5MIFwKLSAgICAidmFkZC5m
MzIgIiBzb3VyY2UjI19TMyAiLCAiIHNvdXJjZSMjX1MzICIsICIgdGVtcCMjX1MyIE5MIFwKLSAg
ICAidnNxcnQuZjMyICIgc291cmNlIyNfUzMgIiwgIiBzb3VyY2UjI19TMyBOTAotCi0vLyBkZXN0
aW5hdGlvbiMjX1MzIGNhbiBjb250YWluIHRoZSBtdWx0aXBseSBvZiBsZW5ndGguCi0jZGVmaW5l
IERPVF9QUk9EVUNUKGRlc3RpbmF0aW9uLCBzb3VyY2UxLCBzb3VyY2UyKSBcCi0gICAgInZtdWwu
ZjMyICIgZGVzdGluYXRpb24jI19RICIsICIgc291cmNlMSMjX1EgIiwgIiBzb3VyY2UyIyNfUSBO
TCBcCi0gICAgInZhZGQuZjMyICIgZGVzdGluYXRpb24jI19TMCAiLCAiIGRlc3RpbmF0aW9uIyNf
UzAgIiwgIiBkZXN0aW5hdGlvbiMjX1MxIE5MIFwKLSAgICAidmFkZC5mMzIgIiBkZXN0aW5hdGlv
biMjX1MwICIsICIgZGVzdGluYXRpb24jI19TMCAiLCAiIGRlc3RpbmF0aW9uIyNfUzIgTkwKLQot
I2RlZmluZSBNVUxUSVBMWV9CWV9ESUZGVVNFX0NPTlNUKG5vcm1hbFZlY3Rvckxlbmd0aCwgZG90
UHJvZHVjdExlbmd0aCkgXAotICAgICJ0c3QgIiBGTEFHU19SICIsICMiIFRPU1RSSU5HKEZMQUdf
RElGRlVTRV9DT05TVF9JU18xKSBOTCBcCi0gICAgInZtdWxlcS5mMzIgIiBUTVAyX1MxICIsICIg
RElGRlVTRV9DT05TVF9TICIsICIgbm9ybWFsVmVjdG9yTGVuZ3RoIE5MIFwKLSAgICAidmRpdmVx
LmYzMiAiIFRNUDJfUzEgIiwgIiBUTVAyX1MxICIsICIgZG90UHJvZHVjdExlbmd0aCBOTCBcCi0g
ICAgInZkaXZuZS5mMzIgIiBUTVAyX1MxICIsICIgbm9ybWFsVmVjdG9yTGVuZ3RoICIsICIgZG90
UHJvZHVjdExlbmd0aCBOTAotCi0jZGVmaW5lIFBPV0ZfU1FSKHZhbHVlLCBleHBvbmVudCwgY3Vy
cmVudCwgcmVtYWluaW5nKSBcCi0gICAgInRzdCAiIGV4cG9uZW50ICIsICMiIEFTU1RSSU5HKGN1
cnJlbnQpIE5MIFwKLSAgICAidm11bG5lLmYzMiAiIHZhbHVlICIsICIgdmFsdWUgIiwgIiBQT1dG
X0lOVF9TIE5MIFwKLSAgICAidHN0ICIgZXhwb25lbnQgIiwgIyIgQVNTVFJJTkcocmVtYWluaW5n
KSBOTCBcCi0gICAgInZtdWxuZS5mMzIgIiBQT1dGX0lOVF9TICIsICIgUE9XRl9JTlRfUyAiLCAi
IFBPV0ZfSU5UX1MgTkwKLQotI2RlZmluZSBQT1dGX1NRUlQodmFsdWUsIGV4cG9uZW50LCBjdXJy
ZW50LCByZW1haW5pbmcpIFwKLSAgICAidHN0ICIgZXhwb25lbnQgIiwgIyIgQVNTVFJJTkcocmVt
YWluaW5nKSBOTCBcCi0gICAgInZzcXJ0bmUuZjMyICIgUE9XRl9GUkFDX1MgIiwgIiBQT1dGX0ZS
QUNfUyBOTCBcCi0gICAgInRzdCAiIGV4cG9uZW50ICIsICMiIEFTU1RSSU5HKGN1cnJlbnQpIE5M
IFwKLSAgICAidm11bG5lLmYzMiAiIHZhbHVlICIsICIgdmFsdWUgIiwgIiBQT1dGX0ZSQUNfUyBO
TAotCi0vLyBUaGlzIHNpbXBsaWZpZWQgcG93ZiBmdW5jdGlvbiBpcyBzdWZmaWNpZW50bHkgYWNj
dXJhdGUuCi0jZGVmaW5lIFBPV0YodmFsdWUsIGV4cG9uZW50KSBcCi0gICAgInRzdCAiIGV4cG9u
ZW50ICIsICMweGZjMCIgTkwgXAotICAgICJ2bW92bmUuZjMyICIgUE9XRl9JTlRfUyAiLCAiIHZh
bHVlIE5MIFwKLSAgICAidHN0ICIgZXhwb25lbnQgIiwgIzB4MDNmIiBOTCBcCi0gICAgInZtb3Zu
ZS5mMzIgIiBQT1dGX0ZSQUNfUyAiLCAiIHZhbHVlIE5MIFwKLSAgICAidm1vdi5mMzIgIiB2YWx1
ZSAiLCAiIENPTlNUX09ORV9TIE5MIFwKLSAgICBcCi0gICAgUE9XRl9TUVIodmFsdWUsIGV4cG9u
ZW50LCAweDA0MCwgMHhmODApIFwKLSAgICBQT1dGX1NRUih2YWx1ZSwgZXhwb25lbnQsIDB4MDgw
LCAweGYwMCkgXAotICAgIFBPV0ZfU1FSKHZhbHVlLCBleHBvbmVudCwgMHgxMDAsIDB4ZTAwKSBc
Ci0gICAgUE9XRl9TUVIodmFsdWUsIGV4cG9uZW50LCAweDIwMCwgMHhjMDApIFwKLSAgICBQT1dG
X1NRUih2YWx1ZSwgZXhwb25lbnQsIDB4NDAwLCAweDgwMCkgXAotICAgICJ0c3QgIiBleHBvbmVu
dCAiLCAjMHg4MDAiIE5MIFwKLSAgICAidm11bG5lLmYzMiAiIHZhbHVlICIsICIgdmFsdWUgIiwg
IiBQT1dGX0lOVF9TIE5MIFwKLSAgICBcCi0gICAgUE9XRl9TUVJUKHZhbHVlLCBleHBvbmVudCwg
MHgyMCwgMHgzZikgXAotICAgIFBPV0ZfU1FSVCh2YWx1ZSwgZXhwb25lbnQsIDB4MTAsIDB4MWYp
IFwKLSAgICBQT1dGX1NRUlQodmFsdWUsIGV4cG9uZW50LCAweDA4LCAweDBmKSBcCi0gICAgUE9X
Rl9TUVJUKHZhbHVlLCBleHBvbmVudCwgMHgwNCwgMHgwNykgXAotICAgIFBPV0ZfU1FSVCh2YWx1
ZSwgZXhwb25lbnQsIDB4MDIsIDB4MDMpIFwKLSAgICBQT1dGX1NRUlQodmFsdWUsIGV4cG9uZW50
LCAweDAxLCAweDAxKQotCi0vLyBUaGUgZm9sbG93aW5nIGFsZ29yaXRobSBpcyBhbiBBUk0tTkVP
TiBvcHRpbWl6ZWQgdmVyc2lvbiBvZgotLy8gdGhlIG1haW4gbG9vcCBmb3VuZCBpbiBGRUxpZ2h0
aW5nLmNwcC4gU2luY2UgdGhlIHdob2xlIGNvZGUKLS8vIGlzIHJlZGVzaWduZWQgdG8gYmUgYXMg
ZWZmZWN0aXZlIGFzIHBvc3NpYmxlIChBUk0gc3BlY2lmaWMKLS8vIHRoaW5raW5nKSwgaXQgaXMg
Zm91ciB0aW1lcyBmYXN0ZXIgdGhhbiBpdHMgQysrIGNvdW50ZXJwYXJ0LgotCi1hc20gKCAvLyBO
T0xJTlQKLSIuZ2xvYmwgIiBUT1NUUklORyhuZW9uRHJhd0xpZ2h0aW5nKSBOTAotVE9TVFJJTkco
bmVvbkRyYXdMaWdodGluZykgIjoiIE5MCi0gICAgLy8gQmVjYXVzZSBvZiB0aGUgY2xldmVyIHJl
Z2lzdGVyIGFsbG9jYXRpb24sIG5vdGhpbmcgaXMgc3RvcmVkIG9uIHRoZSBzdGFjawotICAgIC8v
IGV4Y2VwdCB0aGUgc2F2ZWQgcmVnaXN0ZXJzLgotICAgIC8vIFN0YWNrIG11c3QgYmUgYWxpZ25l
ZCB0byA4IGJ5dGVzLgotICAgICJzdG1kYiBzcCEsIHtyNC1yOCwgcjEwLCByMTEsIGxyfSIgTkwK
LSAgICAidnN0bWRiIHNwISwge2Q4LWQxNX0iIE5MCi0gICAgIm1vdiAiIFBBSU5USU5HX0RBVEFf
UiAiLCByMCIgTkwKLQotICAgIC8vIFRoZSBmb2xsb3dpbmcgdHdvIGFyZ3VtZW50cyBhcmUgbG9h
ZGVkIHRvIFNJTUQgcmVnaXN0ZXJzLgotICAgICJsZHIgcjAsIFsiIFBBSU5USU5HX0RBVEFfUiAi
LCAjIiBGTE9BVF9BUkdVTUVOVFNfT0ZGU0VUICJdIiBOTAotICAgICJsZHIgcjEsIFsiIFBBSU5U
SU5HX0RBVEFfUiAiLCAjIiBQQUlOVElOR19DT05TVEFOVFNfT0ZGU0VUICJdIiBOTAotICAgICJs
ZHIgIiBQSVhFTFNfUiAiLCBbIiBQQUlOVElOR19EQVRBX1IgIiwgIyIgUElYRUxTX09GRlNFVCAi
XSIgTkwKLSAgICAidmxkci5mMzIgIiBQT1NJVElPTl9ZX1MgIiwgWyIgUEFJTlRJTkdfREFUQV9S
ICIsICMiIFlTVEFSVF9PRkZTRVQgIl0iICBOTAotICAgICJsZHIgIiBXSURUSF9SICIsIFsiIFBB
SU5USU5HX0RBVEFfUiAiLCAjIiBXSURUSF9PRkZTRVQgIl0iIE5MCi0gICAgImxkciAiIEhFSUdI
VF9SICIsIFsiIFBBSU5USU5HX0RBVEFfUiAiLCAjIiBIRUlHSFRfT0ZGU0VUICJdIiBOTAotICAg
ICJsZHIgIiBGTEFHU19SICIsIFsiIFBBSU5USU5HX0RBVEFfUiAiLCAjIiBGTEFHU19PRkZTRVQg
Il0iIE5MCi0gICAgImxkciAiIFNQRUNVTEFSX0VYUE9ORU5UX1IgIiwgWyIgUEFJTlRJTkdfREFU
QV9SICIsICMiIFNQRUNVTEFSX0VYUE9ORU5UX09GRlNFVCAiXSIgTkwKLSAgICAibGRyICIgQ09O
RV9FWFBPTkVOVF9SICIsIFsiIFBBSU5USU5HX0RBVEFfUiAiLCAjIiBDT05FX0VYUE9ORU5UX09G
RlNFVCAiXSIgTkwKLQotICAgIC8vIExvYWQgYWxsIGRhdGEgdG8gdGhlIFNJTUQgcmVnaXN0ZXJz
IHdpdGggdGhlIGxlYXN0IG51bWJlciBvZiBpbnN0cnVjdGlvbnMuCi0gICAgInZsZDEuZjMyIHsg
IiBSRUFEMV9SQU5HRSAiIH0sIFtyMF0hIiBOTAotICAgICJ2bGQxLmYzMiB7ICIgUkVBRDJfUkFO
R0UgIiB9LCBbcjBdISIgTkwKLSAgICAidmxkMS5mMzIgeyAiIFJFQUQzX1JBTkdFICIgfSwgW3Iw
XSEiIE5MCi0gICAgInZsZDEuczE2IHsiIFJFQUQ0X1JBTkdFICJ9LCBbcjFdISIgTkwKLSAgICAi
dmxkMS5zMTYgeyIgUkVBRDVfUkFOR0UgIn0sIFtyMV0hIiBOTAotCi0gICAgLy8gSW5pdGlhbGl6
aW5nIGxvY2FsIHZhcmlhYmxlcy4KLSAgICAibW92ICIgU0NBTkxJTkVfUiAiLCAiIFdJRFRIX1Ig
IiwgbHNsICMyIiBOTAotICAgICJhZGQgIiBTQ0FOTElORV9SICIsICIgU0NBTkxJTkVfUiAiLCAj
OCIgTkwKLSAgICAiYWRkICIgUElYRUxTX1IgIiwgIiBQSVhFTFNfUiAiLCAiIFNDQU5MSU5FX1Ig
TkwKLSAgICAiYWRkICIgUElYRUxTX1IgIiwgIiBQSVhFTFNfUiAiLCAjMyIgTkwKLSAgICAibW92
IHIwLCAjMCIgTkwKLSAgICAidm1vdi5mMzIgIiBDT05TVF9aRVJPX1MgIiwgcjAiIE5MCi0gICAg
InRzdCAiIEZMQUdTX1IgIiwgIyIgVE9TVFJJTkcoRkxBR19TUE9UX0xJR0hUKSBOTAotICAgICJ2
bW92LmYzMiAiIFNQT1RfQ09MT1JfUSAiLCAiIENPTE9SX1EgTkwKLSAgICAibW92ICIgUkVTRVRf
V0lEVEhfUiAiLCAiIFdJRFRIX1IgTkwKLQotIi5tYWluTG9vcDoiIE5MCi0gICAgIm1vdiByMywg
IzMiIE5MCi0gICAgInZtb3YuZjMyICIgUE9TSVRJT05fWF9TICIsICIgQ09OU1RfT05FX1MgTkwK
LQotIi5zY2FubGluZToiIE5MCi0gICAgLy8gVGhlIFJPVyByZWdpc3RlcnMgYXJlIHN0b3Jpbmcg
dGhlIGFscGhhIGNoYW5uZWwgb2YgdGhlIGxhc3QgdGhyZWUgcGl4ZWxzLgotICAgIC8vIFRoZSBh
bHBoYSBjaGFubmVsIGlzIHN0b3JlZCBhcyBzaWduZWQgc2hvcnQgKHNpbnQxNikgdmFsdWVzLiBU
aGUgZm91cnRoIHZhbHVlCi0gICAgLy8gaXMgZ2FyYmFnZS4gVGhlIGZvbGxvd2luZyBpbnN0cnVj
dGlvbnMgYXJlIHNoaWZ0aW5nIG91dCB0aGUgdW5uZWNlc3NhcnkgYWxwaGEKLSAgICAvLyB2YWx1
ZXMgYW5kIGxvYWQgdGhlIG5leHQgb25lcy4KLSAgICAibGRyYiByMCwgWyIgUElYRUxTX1IgIiwg
LSIgU0NBTkxJTkVfUiAiXSIgTkwKLSAgICAibGRyYiByMSwgWyIgUElYRUxTX1IgIiwgKyIgU0NB
TkxJTkVfUiAiXSIgTkwKLSAgICAibGRyYiByMiwgWyIgUElYRUxTX1IgIl0sICM0IiBOTAotICAg
ICJ2ZXh0LnMxNiAiIFRPUF9ST1dfRCAiLCAiIFRPUF9ST1dfRCAiLCAiIFRPUF9ST1dfRCAiLCAj
MyIgTkwKLSAgICAidmV4dC5zMTYgIiBNSURETEVfUk9XX0QgIiwgIiBNSURETEVfUk9XX0QgIiwg
IiBNSURETEVfUk9XX0QgIiwgIzMiIE5MCi0gICAgInZleHQuczE2ICIgQk9UVE9NX1JPV19EICIs
ICIgQk9UVE9NX1JPV19EICIsICIgQk9UVE9NX1JPV19EICIsICMzIiBOTAotICAgICJ2bW92LnMx
NiAiIFRPUF9ST1dfRCAiWzFdLCByMCIgTkwKLSAgICAidm1vdi5zMTYgIiBNSURETEVfUk9XX0Qg
IlsxXSwgcjIiIE5MCi0gICAgInZtb3YuczE2ICIgQk9UVE9NX1JPV19EICJbMV0sIHIxIiBOTAot
Ci0gICAgLy8gVGhlIHR3byBib3JkZXIgcGl4ZWxzIChyaWdodG1vc3QgYW5kIGxlZnRtb3N0KSBh
cmUgc2tpcHBlZCB3aGVuCi0gICAgLy8gdGhlIG5leHQgc2NhbmxpbmUgaXMgcmVhY2hlZC4gSXQg
YWxzbyBqdW1wcywgd2hlbiB0aGUgYWxnb3JpdGhtCi0gICAgLy8gaXMgc3RhcnRlZCwgYW5kIHRo
ZSBmaXJzdCBmcmVlIGFscGhhIHZhbHVlcyBhcmUgbG9hZGVkIHRvIGVhY2ggcm93LgotICAgICJz
dWJzIHIzLCByMywgIzEiIE5MCi0gICAgImJuZSAuc2NhbmxpbmUiIE5MCi0KLSAgICAvLyBUaGUg
bGlnaHQgdmVjdG9yIGdvZXMgdG8gVE1QMV9RLiBJdCBpcyBjb25zdGFudCBpbiBjYXNlIG9mIGRp
c3RhbnQgbGlnaHQuCi0gICAgLy8gVGhlIGZvdXJ0aCB2YWx1ZSBjb250YWlucyB0aGUgbGVuZ3Ro
IG9mIHRoZSBsaWdodCB2ZWN0b3IuCi0gICAgInRzdCAiIEZMQUdTX1IgIiwgIyIgVE9TVFJJTkco
RkxBR19QT0lOVF9MSUdIVCB8IEZMQUdfU1BPVF9MSUdIVCkgTkwKLSAgICAiYmVxIC5kaXN0YW50
TGlnaHQiIE5MCi0KLSAgICAidm1vdi5zMTYgcjMsICIgTUlERExFX1JPV19EICJbMl0iIE5MCi0g
ICAgInZtb3YuZjMyICIgUE9TSVRJT05fWl9TICIsIHIzIiBOTAotICAgICJ2Y3Z0LmYzMi5zMzIg
IiBQT1NJVElPTl9aX1MgIiwgIiBQT1NJVElPTl9aX1MgTkwKLSAgICAidm11bC5mMzIgIiBQT1NJ
VElPTl9aX1MgIiwgIiBQT1NJVElPTl9aX1MgIiwgIiBTQ0FMRV9TIE5MCi0KLSAgICAidnN1Yi5m
MzIgIiBUTVAxX1EgIiwgIiBMSUdIVF9RICIsICIgUE9TSVRJT05fUSBOTAotICAgIEdFVF9MRU5H
VEgoVE1QMSwgVE1QMikKLQotICAgICJ0c3QgIiBGTEFHU19SICIsICMiIFRPU1RSSU5HKEZMQUdf
U1BPVF9MSUdIVCkgTkwKLSAgICAiYm5lIC5jb3NpbmVPZkFuZ2xlIiBOTAotIi52aXNpYmxlUGl4
ZWw6IiBOTAotCi0gICAgLy8gICAgIHwgLTEgIDAgIDEgfCAgICAgIHwgLTEgLTIgLTEgfAotICAg
IC8vIFggPSB8IC0yICAwICAyIHwgIFkgPSB8ICAwICAwICAwIHwKLSAgICAvLyAgICAgfCAtMSAg
MCAgMSB8ICAgICAgfCAgMSAgMiAgMSB8Ci0KLSAgICAvLyBNdWx0aXBseSB0aGUgYWxwaGEgdmFs
dWVzIGJ5IHRoZSBYIGFuZCBZIG1hdHJpY2VzLgotCi0gICAgLy8gTW92aW5nIHRoZSA4IGFscGhh
IHZhbHVlIHRvIFRNUDMuCi0gICAgInZ0YmwuOCAiIFRNUDNfRDAgIiwgIiBBTExfUk9XU19EICIs
ICIgUkVNQVBYX0QgTkwKLSAgICAidnRibC44ICIgVE1QM19EMSAiLCAiIEFMTF9ST1dTX0QgIiwg
IiBSRU1BUFlfRCBOTAotCi0gICAgInZtdWwuczE2ICIgVE1QMl9RICIsICIgVE1QM19RICIsICIg
QUxQSEFYX1EgTkwKLSAgICAidnBhZGQuczE2ICIgVE1QMl9EMCAiLCAiIFRNUDJfRDAgIiwgIiBU
TVAyX0QxIE5MCi0gICAgInZwYWRkLnMxNiAiIFRNUDJfRDAgIiwgIiBUTVAyX0QwICIsICIgVE1Q
Ml9EMCBOTAotICAgICJ2cGFkZC5zMTYgIiBUTVAyX0QwICIsICIgVE1QMl9EMCAiLCAiIFRNUDJf
RDAgTkwKLSAgICAidm1vdi5zMTYgcjAsICIgVE1QMl9EMCAiWzBdIiBOTAotCi0gICAgInZtdWwu
czE2ICIgVE1QMl9RICIsICIgVE1QM19RICIsICIgQUxQSEFZX1EgTkwKLSAgICAidnBhZGQuczE2
ICIgVE1QMl9EMCAiLCAiIFRNUDJfRDAgIiwgIiBUTVAyX0QxIE5MCi0gICAgInZwYWRkLnMxNiAi
IFRNUDJfRDAgIiwgIiBUTVAyX0QwICIsICIgVE1QMl9EMCBOTAotICAgICJ2cGFkZC5zMTYgIiBU
TVAyX0QwICIsICIgVE1QMl9EMCAiLCAiIFRNUDJfRDAgTkwKLSAgICAidm1vdi5zMTYgcjEsICIg
VE1QMl9EMCAiWzBdIiBOTAotCi0gICAgLy8gcjAgYW5kIHIxIGNvbnRhaW5zIHRoZSBYIGFuZCBZ
IGNvb3JkaW5hdGVzIG9mIHRoZQotICAgIC8vIG5vcm1hbCB2ZWN0b3IsIHJlc3BlY3RpdmVseS4K
LQotICAgIC8vIENhbGN1bGF0aW5nIHRoZSBzcG90IGxpZ2h0IHN0cmVuZ3RoLgotICAgICJ0c3Qg
IiBGTEFHU19SICIsICMiIFRPU1RSSU5HKEZMQUdfU1BPVF9MSUdIVCkgTkwKLSAgICAiYmVxIC5l
bmRMaWdodCIgTkwKLQotICAgICJ2bmVnLmYzMiAiIFRNUDNfUzEgIiwgIiBDT1NJTkVfT0ZfQU5H
TEUgTkwKLSAgICAidHN0ICIgRkxBR1NfUiAiLCAjIiBUT1NUUklORyhGTEFHX0NPTkVfRVhQT05F
TlRfSVNfMSkgTkwKLSAgICAiYmVxIC5jb25lRXhwUG93ZiIgTkwKLSIuY29uZUV4cFBvd2ZGaW5p
c2hlZDoiIE5MCi0KLSAgICAvLyBTbW9vdGhpbmcgdGhlIGNvbmUgZWRnZSBpZiBuZWNlc3Nhcnku
Ci0gICAgInZjbXAuZjMyICIgQ09TSU5FX09GX0FOR0xFICIsICIgQ09ORV9GVUxMX0xJR0hUX1Mg
TkwKLSAgICAiZm1zdGF0IiBOTAotICAgICJiaGkgLmN1dE9mZiIgTkwKLSIuY3V0T2ZmRmluaXNo
ZWQ6IiBOTAotCi0gICAgInZtaW4uZjMyICIgVE1QM19EMCAiLCAiIFRNUDNfRDAgIiwgIiBDT05T
VF9PTkVfSElfRCBOTAotICAgICJ2bXVsLmYzMiAiIENPTE9SX1EgIiwgIiBTUE9UX0NPTE9SX1Eg
IiwgIiBUTVAzX0QwICJbMV0iIE5MCi0KLSIuZW5kTGlnaHQ6IiBOTAotICAgIC8vIFN1bW1hcml6
ZToKLSAgICAvLyByMCBhbmQgcjEgY29udGFpbnMgdGhlIG5vcm1hbFZlY3Rvci4KLSAgICAvLyBU
TVAxX1EgY29udGFpbnMgdGhlIGxpZ2h0IHZlY3RvciBhbmQgaXRzIGxlbmd0aC4KLSAgICAvLyBD
T0xPUl9RIGNvbnRhaW5zIHRoZSBjb2xvciBvZiB0aGUgbGlnaHQgdmVjdG9yLgotCi0gICAgLy8g
VGVzdCB3aGV0aGVyIGJvdGggcjAgYW5kIHIxIGFyZSB6ZXJvIChOb3JtYWwgdmVjdG9yIGlzICgw
LCAwLCAxKSkuCi0gICAgIm9ycnMgcjIsIHIwLCByMSIgTkwKLSAgICAiYm5lIC5ub3JtYWxWZWN0
b3JJc05vblplcm8iIE5MCi0KLSAgICAidHN0ICIgRkxBR1NfUiAiLCAjIiBUT1NUUklORyhGTEFH
X1NQRUNVTEFSX0xJR0hUKSBOTAotICAgICJibmUgLnNwZWN1bGFyTGlnaHQxIiBOTAotCi0gICAg
Ly8gQ2FsY3VsYXRlIGRpZmZ1c2UgbGlnaHQgc3RyZW5ndGguCi0gICAgTVVMVElQTFlfQllfRElG
RlVTRV9DT05TVChUTVAxX1MyLCBUTVAxX1MzKQotICAgICJiIC5saWdodFN0cmVuZ3RoQ2FsY3Vs
YXRlZCIgTkwKLQotIi5zcGVjdWxhckxpZ2h0MToiIE5MCi0gICAgLy8gQ2FsY3VsYXRpbmcgc3Bl
Y3VsYXIgbGlnaHQgc3RyZW5ndGguCi0gICAgInZhZGQuZjMyICIgVE1QMV9TMiAiLCAiIFRNUDFf
UzIgIiwgIiBUTVAxX1MzIE5MCi0gICAgR0VUX0xFTkdUSChUTVAxLCBUTVAyKQotCi0gICAgLy8g
V2hlbiB0aGUgZXhwb25lbnQgaXMgMSwgd2UgZG9uJ3QgbmVlZCB0byBjYWxsIGFuIGV4cGVuc2l2
ZSBwb3dmIGZ1bmN0aW9uLgotICAgICJ0c3QgIiBGTEFHU19SICIsICMiIFRPU1RSSU5HKEZMQUdf
U1BFQ1VMQVJfRVhQT05FTlRfSVNfMSkgTkwKLSAgICAidmRpdmVxLmYzMiAiIFRNUDJfUzEgIiwg
IiBUTVAxX1MyICIsICIgVE1QMV9TMyBOTAotICAgICJiZXEgLnNwZWN1bGFyRXhwUG93ZiIgTkwK
LQotICAgIE1VTFRJUExZX0JZX0RJRkZVU0VfQ09OU1QoVE1QMV9TMiwgVE1QMV9TMykKLSAgICAi
YiAubGlnaHRTdHJlbmd0aENhbGN1bGF0ZWQiIE5MCi0KLSIubm9ybWFsVmVjdG9ySXNOb25aZXJv
OiIgTkwKLSAgICAvLyBOb3JtYWwgdmVjdG9yIGdvZXMgdG8gVE1QMiwgYW5kIGl0cyBsZW5ndGgg
aXMgY2FsY3VsYXRlZCBhcyB3ZWxsLgotICAgICJ2bW92LnMzMiAiIFRNUDJfUzAgIiwgcjAiIE5M
Ci0gICAgInZjdnQuZjMyLnMzMiAiIFRNUDJfUzAgIiwgIiBUTVAyX1MwIE5MCi0gICAgInZtdWwu
ZjMyICIgVE1QMl9TMCAiLCAiIFRNUDJfUzAgIiwgIiBTQ0FMRV9ESVY0X1MgTkwKLSAgICAidm1v
di5zMzIgIiBUTVAyX1MxICIsIHIxIiBOTAotICAgICJ2Y3Z0LmYzMi5zMzIgIiBUTVAyX1MxICIs
ICIgVE1QMl9TMSBOTAotICAgICJ2bXVsLmYzMiAiIFRNUDJfUzEgIiwgIiBUTVAyX1MxICIsICIg
U0NBTEVfRElWNF9TIE5MCi0gICAgInZtb3YuZjMyICIgVE1QMl9TMiAiLCAiIENPTlNUX09ORV9T
IE5MCi0gICAgR0VUX0xFTkdUSChUTVAyLCBUTVAzKQotCi0gICAgInRzdCAiIEZMQUdTX1IgIiwg
IyIgVE9TVFJJTkcoRkxBR19TUEVDVUxBUl9MSUdIVCkgTkwKLSAgICAiYm5lIC5zcGVjdWxhckxp
Z2h0MiIgTkwKLQotICAgIC8vIENhbGN1bGF0aW5nIGRpZmZ1c2UgbGlnaHQgc3RyZW5ndGguCi0g
ICAgRE9UX1BST0RVQ1QoVE1QMywgVE1QMiwgVE1QMSkKLSAgICBNVUxUSVBMWV9CWV9ESUZGVVNF
X0NPTlNUKFRNUDNfUzAsIFRNUDNfUzMpCi0gICAgImIgLmxpZ2h0U3RyZW5ndGhDYWxjdWxhdGVk
IiBOTAotCi0iLnNwZWN1bGFyTGlnaHQyOiIgTkwKLSAgICAvLyBDYWxjdWxhdGluZyBzcGVjdWxh
ciBsaWdodCBzdHJlbmd0aC4KLSAgICAidmFkZC5mMzIgIiBUTVAxX1MyICIsICIgVE1QMV9TMiAi
LCAiIFRNUDFfUzMgTkwKLSAgICBHRVRfTEVOR1RIKFRNUDEsIFRNUDMpCi0gICAgRE9UX1BST0RV
Q1QoVE1QMywgVE1QMiwgVE1QMSkKLQotICAgIC8vIFdoZW4gdGhlIGV4cG9uZW50IGlzIDEsIHdl
IGRvbid0IG5lZWQgdG8gY2FsbCBhbiBleHBlbnNpdmUgcG93ZiBmdW5jdGlvbi4KLSAgICAidHN0
ICIgRkxBR1NfUiAiLCAjIiBUT1NUUklORyhGTEFHX1NQRUNVTEFSX0VYUE9ORU5UX0lTXzEpIE5M
Ci0gICAgInZkaXZlcS5mMzIgIiBUTVAyX1MxICIsICIgVE1QM19TMCAiLCAiIFRNUDNfUzMgTkwK
LSAgICAiYmVxIC5zcGVjdWxhckV4cFBvd2YiIE5MCi0gICAgTVVMVElQTFlfQllfRElGRlVTRV9D
T05TVChUTVAzX1MwLCBUTVAzX1MzKQotCi0iLmxpZ2h0U3RyZW5ndGhDYWxjdWxhdGVkOiIgTkwK
LSAgICAvLyBUTVAyX1MxIGNvbnRhaW5zIHRoZSBsaWdodCBzdHJlbmd0aC4gQ2xhbXAgaXQgdG8g
WzAsIDFdCi0gICAgInZtYXguZjMyICIgVE1QMl9EMCAiLCAiIFRNUDJfRDAgIiwgIiBDT05TVF9a
RVJPX0hJX0QgTkwKLSAgICAidm1pbi5mMzIgIiBUTVAyX0QwICIsICIgVE1QMl9EMCAiLCAiIENP
TlNUX09ORV9ISV9EIE5MCi0gICAgInZtdWwuZjMyICIgVE1QM19RICIsICIgQ09MT1JfUSAiLCAi
IFRNUDJfRDAgIlsxXSIgTkwKLSAgICAidmN2dC51MzIuZjMyICIgVE1QM19RICIsICIgVE1QM19R
IE5MCi0gICAgInZtb3YudTMyIHIyLCByMywgIiBUTVAzX1MwICIsICIgVE1QM19TMSBOTAotICAg
IC8vIFRoZSBjb2xvciB2YWx1ZXMgYXJlIHN0b3JlZCBpbi1wbGFjZS4KLSAgICAic3RyYiByMiwg
WyIgUElYRUxTX1IgIiwgIy0xMV0iIE5MCi0gICAgInN0cmIgcjMsIFsiIFBJWEVMU19SICIsICMt
MTBdIiBOTAotICAgICJ2bW92LnUzMiByMiwgIiBUTVAzX1MyIE5MCi0gICAgInN0cmIgcjIsIFsi
IFBJWEVMU19SICIsICMtOV0iIE5MCi0KLSAgICAvLyBDb250aW51ZSB0byB0aGUgbmV4dCBwaXhl
bC4KLSIuYmxhY2tQaXhlbDoiIE5MCi0gICAgInZhZGQuZjMyICIgUE9TSVRJT05fWF9TICIsICIg
Q09OU1RfT05FX1MgTkwKLSAgICAibW92IHIzLCAjMSIgTkwKLSAgICAic3VicyAiIFdJRFRIX1Ig
IiwgIiBXSURUSF9SICIsICMxIiBOTAotICAgICJibmUgLnNjYW5saW5lIiBOTAotCi0gICAgLy8g
SWYgdGhlIGVuZCBvZiB0aGUgc2NhbmxpbmUgaXMgcmVhY2hlZCwgd2UgY29udGludWUKLSAgICAv
LyB0byB0aGUgbmV4dCBzY2FubGluZS4KLSAgICAidmFkZC5mMzIgIiBQT1NJVElPTl9ZX1MgIiwg
IiBDT05TVF9PTkVfUyBOTAotICAgICJtb3YgIiBXSURUSF9SICIsICIgUkVTRVRfV0lEVEhfUiBO
TAotICAgICJzdWJzICIgSEVJR0hUX1IgIiwgIiBIRUlHSFRfUiAiLCAjMSIgTkwKLSAgICAiYm5l
IC5tYWluTG9vcCIgTkwKLQotICAgIC8vIFJldHVybi4KLSAgICAidmxkbWlhIHNwISwge2Q4LWQx
NX0iIE5MCi0gICAgImxkbWlhIHNwISwge3I0LXI4LCByMTAsIHIxMSwgcGN9IiBOTAotCi0iLmRp
c3RhbnRMaWdodDoiIE5MCi0gICAgLy8gSW4gY2FzZSBvZiBkaXN0YW50IGxpZ2h0LCB0aGUgbGln
aHQgdmVjdG9yIGlzIGNvbnN0YW50LAotICAgIC8vIHdlIHNpbXBseSBjb3B5IGl0LgotICAgICJ2
bW92LmYzMiAiIFRNUDFfUSAiLCAiIExJR0hUX1EgTkwKLSAgICAiYiAudmlzaWJsZVBpeGVsIiBO
TAotCi0iLmNvc2luZU9mQW5nbGU6IiBOTAotICAgIC8vIElmIHRoZSBwaXhlbCBpcyBvdXRzaWRl
IG9mIHRoZSBjb25lIGFuZ2xlLCBpdCBpcyBzaW1wbHkgYSBibGFjayBwaXhlbC4KLSAgICBET1Rf
UFJPRFVDVChUTVAzLCBUTVAxLCBESVJFQ1RJT04pCi0gICAgInZkaXYuZjMyICIgQ09TSU5FX09G
X0FOR0xFICIsICIgVE1QM19TMCAiLCAiIFRNUDFfUzMgTkwKLSAgICAidmNtcC5mMzIgIiBDT1NJ
TkVfT0ZfQU5HTEUgIiwgIiBDT05FX0NVVF9PRkZfUyBOTAotICAgICJmbXN0YXQiIE5MCi0gICAg
ImJscyAudmlzaWJsZVBpeGVsIiBOTAotICAgICJtb3YgcjAsICMwIiBOTAotICAgICJzdHJoIHIw
LCBbIiBQSVhFTFNfUiAiLCAjLTExXSIgTkwKLSAgICAic3RyYiByMCwgWyIgUElYRUxTX1IgIiwg
Iy05XSIgTkwKLSAgICAiYiAuYmxhY2tQaXhlbCIgTkwKLQotIi5jdXRPZmY6IiBOTAotICAgIC8v
IFNtb290aGluZyB0aGUgbGlnaHQgc3RyZW5ndGggb24gdGhlIGNvbmUgZWRnZS4KLSAgICAidnN1
Yi5mMzIgIiBUTVAzX1MwICIsICIgQ09ORV9DVVRfT0ZGX1MgIiwgIiBDT1NJTkVfT0ZfQU5HTEUg
TkwKLSAgICAidmRpdi5mMzIgIiBUTVAzX1MwICIsICIgVE1QM19TMCAiLCAiIENPTkVfQ1VUX09G
Rl9SQU5HRV9TIE5MCi0gICAgInZtdWwuZjMyICIgVE1QM19TMSAiLCAiIFRNUDNfUzEgIiwgIiBU
TVAzX1MwIE5MCi0gICAgImIgLmN1dE9mZkZpbmlzaGVkIiBOTAotCi0iLmNvbmVFeHBQb3dmOiIg
TkwKLSAgICBQT1dGKFRNUDNfUzEsIENPTkVfRVhQT05FTlRfUikKLSAgICAiYiAuY29uZUV4cFBv
d2ZGaW5pc2hlZCIgTkwKLQotIi5zcGVjdWxhckV4cFBvd2Y6IiBOTAotICAgIFBPV0YoVE1QMl9T
MSwgU1BFQ1VMQVJfRVhQT05FTlRfUikKLSAgICAidHN0ICIgRkxBR1NfUiAiLCAjIiBUT1NUUklO
RyhGTEFHX0RJRkZVU0VfQ09OU1RfSVNfMSkgTkwKLSAgICAidm11bGVxLmYzMiAiIFRNUDJfUzEg
IiwgIiBUTVAyX1MxICIsICIgRElGRlVTRV9DT05TVF9TIE5MCi0gICAgImIgLmxpZ2h0U3RyZW5n
dGhDYWxjdWxhdGVkIiBOTAotKTsgLy8gTk9MSU5UCi0KLWludCBGRUxpZ2h0aW5nOjpnZXRQb3dl
ckNvZWZmaWNpZW50cyhmbG9hdCBleHBvbmVudCkKLXsKLSAgICAvLyBDYWxsaW5nIGEgcG93ZiBm
dW5jdGlvbiBmcm9tIHRoZSBhc3NlbWJseSBjb2RlIHdvdWxkIHJlcXVpcmUgdG8gc2F2ZQotICAg
IC8vIGFuZCByZWxvYWQgYSBsb3Qgb2YgTkVPTiByZWdpc3RlcnMuIFNpbmNlIHRoZSBiYXNlIGlz
IGluIHJhbmdlIFswLi4xXQotICAgIC8vIGFuZCBvbmx5IDggYml0IHByZWNpc2lvbiBpcyByZXF1
aXJlZCwgd2UgdXNlIG91ciBvd24gcG93ZiBmdW5jdGlvbi4KLSAgICAvLyBUaGlzIGlzIHByb2Jh
Ymx5IG5vdCB0aGUgYmVzdCwgYnV0IGl0IHVzZXMgb25seSBhIGZldyByZWdpc3RlcnMgYW5kCi0g
ICAgLy8gZ2l2ZXMgdXMgZW5vdWdoIHByZWNpc2lvbiAobW9kaWZ5aW5nIHRoZSBleHBvbmVudCBm
aWVsZCBkaXJlY3RseSB3b3VsZAotICAgIC8vIGFsc28gYmUgcG9zc2libGUpLgotCi0gICAgLy8g
Rmlyc3QsIHdlIGxpbWl0IHRoZSBleHBvbmVudCB0byBtYXhpbXVtIG9mIDY0LCB3aGljaCBnaXZl
cyB1cyBlbm91Z2gKLSAgICAvLyBwcmVjaXNpb24uIFdlIHNwbGl0IHRoZSBleHBvbmVudCB0byBh
biBpbnRlZ2VyIGFuZCBmcmFjdGlvbiBwYXJ0LAotICAgIC8vIHNpbmNlIGFeeCA9IChhXnkpKihh
XnopIHdoZXJlIHggPSB5K3ouIFRoZSBpbnRlZ2VyIGV4cG9uZW50IG9mIHRoZQotICAgIC8vIHBv
d2VyIGlzIGVzdGltYXRlZCBieSBzcXVhcmUsIGFuZCB0aGUgZnJhY3Rpb24gZXhwb25lbnQgb2Yg
dGhlIHBvd2VyCi0gICAgLy8gaXMgZXN0aW1hdGVkIGJ5IHNxdWFyZSByb290IGFzc2VtYmx5IGlu
c3RydWN0aW9ucy4KLSAgICBpbnQgaSwgcmVzdWx0OwotCi0gICAgaWYgKGV4cG9uZW50IDwgMCkK
LSAgICAgICAgZXhwb25lbnQgPSAxIC8gKC1leHBvbmVudCk7Ci0KLSAgICBpZiAoZXhwb25lbnQg
PiA2My45OSkKLSAgICAgICAgZXhwb25lbnQgPSA2My45OTsKLQotICAgIGV4cG9uZW50IC89IDY0
OwotICAgIHJlc3VsdCA9IDA7Ci0gICAgZm9yIChpID0gMTE7IGkgPj0gMDsgLS1pKSB7Ci0gICAg
ICAgIGV4cG9uZW50ICo9IDI7Ci0gICAgICAgIGlmIChleHBvbmVudCA+PSAxKSB7Ci0gICAgICAg
ICAgICByZXN1bHQgfD0gMSA8PCBpOwotICAgICAgICAgICAgZXhwb25lbnQgLT0gMTsKLSAgICAg
ICAgfQotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBDUFUoQVJNX05FT04pICYmIENPTVBJTEVSKEdDQ19DT01QQVRJQkxF
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3B1L2FybS9m
aWx0ZXJzL0ZFTGlnaHRpbmdORU9OLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jcHUvYXJtL2ZpbHRlcnMvRkVMaWdodGluZ05FT04uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMTE2Mzg5MWQxZTQwN2YzN2U4NDIyMzM4NzkyOTAwM2I1YjVlMzQ1MS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJtL2ZpbHRlcnMvRkVMaWdodGluZ05FT04uaAorKysgL2Rl
di9udWxsCkBAIC0xLDIwMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIFVuaXZl
cnNpdHkgb2YgU3plZ2VkCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgWm9sdGFuIEhlcmN6ZWcKLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFVOSVZFUlNJVFkgT0Yg
U1pFR0VEIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVU5JVkVSU0lUWSBPRiBT
WkVHRUQgT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaWZuZGVmIEZFTGlnaHRpbmdORU9OX2gKLSNkZWZpbmUgRkVMaWdodGluZ05FT05faAot
Ci0jaWYgQ1BVKEFSTV9ORU9OKSAmJiBDUFUoQVJNX1RSQURJVElPTkFMKSAmJiBDT01QSUxFUihH
Q0NfQ09NUEFUSUJMRSkKLQotI2luY2x1ZGUgIkZFTGlnaHRpbmcuaCIKLSNpbmNsdWRlICJQb2lu
dExpZ2h0U291cmNlLmgiCi0jaW5jbHVkZSAiU3BvdExpZ2h0U291cmNlLmgiCi0jaW5jbHVkZSA8
d3RmL1BhcmFsbGVsSm9icy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIE90aGVyd2lz
ZTogRGlzdGFudCBMaWdodC4KLSNkZWZpbmUgRkxBR19QT0lOVF9MSUdIVCAgICAgICAgICAgICAg
ICAgMHgwMQotI2RlZmluZSBGTEFHX1NQT1RfTElHSFQgICAgICAgICAgICAgICAgICAweDAyCi0j
ZGVmaW5lIEZMQUdfQ09ORV9FWFBPTkVOVF9JU18xICAgICAgICAgIDB4MDQKLQotLy8gT3RoZXJ3
aXNlOiBEaWZmdXNlIGxpZ2h0LgotI2RlZmluZSBGTEFHX1NQRUNVTEFSX0xJR0hUICAgICAgICAg
ICAgICAweDEwCi0jZGVmaW5lIEZMQUdfRElGRlVTRV9DT05TVF9JU18xICAgICAgICAgIDB4MjAK
LSNkZWZpbmUgRkxBR19TUEVDVUxBUl9FWFBPTkVOVF9JU18xICAgICAgMHg0MAotCi0vLyBNdXN0
IGJlIGFsaWduZWQgdG8gMTYgYnl0ZXMuCi1zdHJ1Y3QgRkVMaWdodGluZ0Zsb2F0QXJndW1lbnRz
Rm9yTmVvbiB7Ci0gICAgZmxvYXQgc3VyZmFjZVNjYWxlOwotICAgIGZsb2F0IG1pbnVzU3VyZmFj
ZVNjYWxlRGl2aWRlZEJ5Rm91cjsKLSAgICBmbG9hdCBkaWZmdXNlQ29uc3RhbnQ7Ci0gICAgZmxv
YXQgcGFkZGluZzE7Ci0KLSAgICBmbG9hdCBjb25lQ3V0T2ZmTGltaXQ7Ci0gICAgZmxvYXQgY29u
ZUZ1bGxMaWdodDsKLSAgICBmbG9hdCBjb25lQ3V0T2ZmUmFuZ2U7Ci0gICAgZmxvYXQgY29uc3RP
bmU7Ci0KLSAgICBmbG9hdCBsaWdodFg7Ci0gICAgZmxvYXQgbGlnaHRZOwotICAgIGZsb2F0IGxp
Z2h0WjsKLSAgICBmbG9hdCBwYWRkaW5nMjsKLQotICAgIGZsb2F0IGRpcmVjdGlvblg7Ci0gICAg
ZmxvYXQgZGlyZWN0aW9uWTsKLSAgICBmbG9hdCBkaXJlY3Rpb25aOwotICAgIGZsb2F0IHBhZGRp
bmczOwotCi0gICAgZmxvYXQgY29sb3JSZWQ7Ci0gICAgZmxvYXQgY29sb3JHcmVlbjsKLSAgICBm
bG9hdCBjb2xvckJsdWU7Ci0gICAgZmxvYXQgcGFkZGluZzQ7Ci19OwotCi1zdHJ1Y3QgRkVMaWdo
dGluZ1BhaW50aW5nRGF0YUZvck5lb24gewotICAgIHVuc2lnbmVkIGNoYXIqIHBpeGVsczsKLSAg
ICBmbG9hdCB5U3RhcnQ7Ci0gICAgaW50IHdpZHRoRGVjcmVhc2VkQnlUd287Ci0gICAgaW50IGFi
c29sdXRlSGVpZ2h0OwotICAgIC8vIENvbWJpbmF0aW9uIG9mIEZMQUcgY29uc3RhbnRzIGFib3Zl
LgotICAgIGludCBmbGFnczsKLSAgICBpbnQgc3BlY3VsYXJFeHBvbmVudDsKLSAgICBpbnQgY29u
ZUV4cG9uZW50OwotICAgIEZFTGlnaHRpbmdGbG9hdEFyZ3VtZW50c0Zvck5lb24qIGZsb2F0QXJn
dW1lbnRzOwotICAgIHNob3J0KiBwYWludGluZ0NvbnN0YW50czsKLX07Ci0KLXNob3J0KiBmZUxp
Z2h0aW5nQ29uc3RhbnRzRm9yTmVvbigpOwotCi1leHRlcm4gIkMiIHsKLXZvaWQgbmVvbkRyYXdM
aWdodGluZyhGRUxpZ2h0aW5nUGFpbnRpbmdEYXRhRm9yTmVvbiopOwotfQotCi1pbmxpbmUgdm9p
ZCBGRUxpZ2h0aW5nOjpwbGF0Zm9ybUFwcGx5TmVvbihjb25zdCBMaWdodGluZ0RhdGEmIGRhdGEs
IGNvbnN0IExpZ2h0U291cmNlOjpQYWludGluZ0RhdGEmIHBhaW50aW5nRGF0YSkKLXsKLSAgICBh
bGlnbmFzKDE2KSBGRUxpZ2h0aW5nRmxvYXRBcmd1bWVudHNGb3JOZW9uIGZsb2F0QXJndW1lbnRz
OwotICAgIEZFTGlnaHRpbmdQYWludGluZ0RhdGFGb3JOZW9uIG5lb25EYXRhID0gewotICAgICAg
ICBkYXRhLnBpeGVscy0+ZGF0YSgpLAotICAgICAgICAxLAotICAgICAgICBkYXRhLndpZHRoRGVj
cmVhc2VkQnlPbmUgLSAxLAotICAgICAgICBkYXRhLmhlaWdodERlY3JlYXNlZEJ5T25lIC0gMSwK
LSAgICAgICAgMCwKLSAgICAgICAgMCwKLSAgICAgICAgMCwKLSAgICAgICAgJmZsb2F0QXJndW1l
bnRzLAotICAgICAgICBmZUxpZ2h0aW5nQ29uc3RhbnRzRm9yTmVvbigpCi0gICAgfTsKLQotICAg
IC8vIFNldCBsaWdodCBzb3VyY2UgYXJndW1lbnRzLgotICAgIGZsb2F0QXJndW1lbnRzLmNvbnN0
T25lID0gMTsKLQotICAgIGF1dG8gY29sb3IgPSBtX2xpZ2h0aW5nQ29sb3IudG9TUkdCQUxvc3N5
PHVpbnQ4X3Q+KCk7Ci0KLSAgICBmbG9hdEFyZ3VtZW50cy5jb2xvclJlZCA9IGNvbG9yLnJlZDsK
LSAgICBmbG9hdEFyZ3VtZW50cy5jb2xvckdyZWVuID0gY29sb3IuZ3JlZW47Ci0gICAgZmxvYXRB
cmd1bWVudHMuY29sb3JCbHVlID0gY29sb3IuYmx1ZTsKLSAgICBmbG9hdEFyZ3VtZW50cy5wYWRk
aW5nNCA9IDA7Ci0KLSAgICBpZiAobV9saWdodFNvdXJjZS0+dHlwZSgpID09IExTX1BPSU5UKSB7
Ci0gICAgICAgIG5lb25EYXRhLmZsYWdzIHw9IEZMQUdfUE9JTlRfTElHSFQ7Ci0gICAgICAgIFBv
aW50TGlnaHRTb3VyY2UmIHBvaW50TGlnaHRTb3VyY2UgPSBzdGF0aWNfY2FzdDxQb2ludExpZ2h0
U291cmNlJj4obV9saWdodFNvdXJjZS5nZXQoKSk7Ci0gICAgICAgIGZsb2F0QXJndW1lbnRzLmxp
Z2h0WCA9IHBvaW50TGlnaHRTb3VyY2UucG9zaXRpb24oKS54KCk7Ci0gICAgICAgIGZsb2F0QXJn
dW1lbnRzLmxpZ2h0WSA9IHBvaW50TGlnaHRTb3VyY2UucG9zaXRpb24oKS55KCk7Ci0gICAgICAg
IGZsb2F0QXJndW1lbnRzLmxpZ2h0WiA9IHBvaW50TGlnaHRTb3VyY2UucG9zaXRpb24oKS56KCk7
Ci0gICAgICAgIGZsb2F0QXJndW1lbnRzLnBhZGRpbmcyID0gMDsKLSAgICB9IGVsc2UgaWYgKG1f
bGlnaHRTb3VyY2UtPnR5cGUoKSA9PSBMU19TUE9UKSB7Ci0gICAgICAgIG5lb25EYXRhLmZsYWdz
IHw9IEZMQUdfU1BPVF9MSUdIVDsKLSAgICAgICAgU3BvdExpZ2h0U291cmNlJiBzcG90TGlnaHRT
b3VyY2UgPSBzdGF0aWNfY2FzdDxTcG90TGlnaHRTb3VyY2UmPihtX2xpZ2h0U291cmNlLmdldCgp
KTsKLSAgICAgICAgZmxvYXRBcmd1bWVudHMubGlnaHRYID0gc3BvdExpZ2h0U291cmNlLnBvc2l0
aW9uKCkueCgpOwotICAgICAgICBmbG9hdEFyZ3VtZW50cy5saWdodFkgPSBzcG90TGlnaHRTb3Vy
Y2UucG9zaXRpb24oKS55KCk7Ci0gICAgICAgIGZsb2F0QXJndW1lbnRzLmxpZ2h0WiA9IHNwb3RM
aWdodFNvdXJjZS5wb3NpdGlvbigpLnooKTsKLSAgICAgICAgZmxvYXRBcmd1bWVudHMucGFkZGlu
ZzIgPSAwOwotCi0gICAgICAgIGZsb2F0QXJndW1lbnRzLmRpcmVjdGlvblggPSBwYWludGluZ0Rh
dGEuZGlyZWN0aW9uVmVjdG9yLngoKTsKLSAgICAgICAgZmxvYXRBcmd1bWVudHMuZGlyZWN0aW9u
WSA9IHBhaW50aW5nRGF0YS5kaXJlY3Rpb25WZWN0b3IueSgpOwotICAgICAgICBmbG9hdEFyZ3Vt
ZW50cy5kaXJlY3Rpb25aID0gcGFpbnRpbmdEYXRhLmRpcmVjdGlvblZlY3Rvci56KCk7Ci0gICAg
ICAgIGZsb2F0QXJndW1lbnRzLnBhZGRpbmczID0gMDsKLQotICAgICAgICBmbG9hdEFyZ3VtZW50
cy5jb25lQ3V0T2ZmTGltaXQgPSBwYWludGluZ0RhdGEuY29uZUN1dE9mZkxpbWl0OwotICAgICAg
ICBmbG9hdEFyZ3VtZW50cy5jb25lRnVsbExpZ2h0ID0gcGFpbnRpbmdEYXRhLmNvbmVGdWxsTGln
aHQ7Ci0gICAgICAgIGZsb2F0QXJndW1lbnRzLmNvbmVDdXRPZmZSYW5nZSA9IHBhaW50aW5nRGF0
YS5jb25lQ3V0T2ZmTGltaXQgLSBwYWludGluZ0RhdGEuY29uZUZ1bGxMaWdodDsKLSAgICAgICAg
bmVvbkRhdGEuY29uZUV4cG9uZW50ID0gZ2V0UG93ZXJDb2VmZmljaWVudHMoc3BvdExpZ2h0U291
cmNlLnNwZWN1bGFyRXhwb25lbnQoKSk7Ci0gICAgICAgIGlmIChzcG90TGlnaHRTb3VyY2Uuc3Bl
Y3VsYXJFeHBvbmVudCgpID09IDEpCi0gICAgICAgICAgICBuZW9uRGF0YS5mbGFncyB8PSBGTEFH
X0NPTkVfRVhQT05FTlRfSVNfMTsKLSAgICB9IGVsc2UgewotICAgICAgICBBU1NFUlQobV9saWdo
dFNvdXJjZS0+dHlwZSgpID09IExTX0RJU1RBTlQpOwotICAgICAgICBmbG9hdEFyZ3VtZW50cy5s
aWdodFggPSBwYWludGluZ0RhdGEuaW5pdGlhbExpZ2h0aW5nRGF0YS5saWdodFZlY3Rvci54KCk7
Ci0gICAgICAgIGZsb2F0QXJndW1lbnRzLmxpZ2h0WSA9IHBhaW50aW5nRGF0YS5pbml0aWFsTGln
aHRpbmdEYXRhLmxpZ2h0VmVjdG9yLnkoKTsKLSAgICAgICAgZmxvYXRBcmd1bWVudHMubGlnaHRa
ID0gcGFpbnRpbmdEYXRhLmluaXRpYWxMaWdodGluZ0RhdGEubGlnaHRWZWN0b3IueigpOwotICAg
ICAgICBmbG9hdEFyZ3VtZW50cy5wYWRkaW5nMiA9IDE7Ci0gICAgfQotCi0gICAgLy8gU2V0IGxp
Z2h0aW5nIGFyZ3VtZW50cy4KLSAgICBmbG9hdEFyZ3VtZW50cy5zdXJmYWNlU2NhbGUgPSBkYXRh
LnN1cmZhY2VTY2FsZTsKLSAgICBmbG9hdEFyZ3VtZW50cy5taW51c1N1cmZhY2VTY2FsZURpdmlk
ZWRCeUZvdXIgPSAtZGF0YS5zdXJmYWNlU2NhbGUgLyA0OwotICAgIGlmIChtX2xpZ2h0aW5nVHlw
ZSA9PSBGRUxpZ2h0aW5nOjpEaWZmdXNlTGlnaHRpbmcpCi0gICAgICAgIGZsb2F0QXJndW1lbnRz
LmRpZmZ1c2VDb25zdGFudCA9IG1fZGlmZnVzZUNvbnN0YW50OwotICAgIGVsc2UgewotICAgICAg
ICBuZW9uRGF0YS5mbGFncyB8PSBGTEFHX1NQRUNVTEFSX0xJR0hUOwotICAgICAgICBmbG9hdEFy
Z3VtZW50cy5kaWZmdXNlQ29uc3RhbnQgPSBtX3NwZWN1bGFyQ29uc3RhbnQ7Ci0gICAgICAgIG5l
b25EYXRhLnNwZWN1bGFyRXhwb25lbnQgPSBnZXRQb3dlckNvZWZmaWNpZW50cyhtX3NwZWN1bGFy
RXhwb25lbnQpOwotICAgICAgICBpZiAobV9zcGVjdWxhckV4cG9uZW50ID09IDEpCi0gICAgICAg
ICAgICBuZW9uRGF0YS5mbGFncyB8PSBGTEFHX1NQRUNVTEFSX0VYUE9ORU5UX0lTXzE7Ci0gICAg
fQotICAgIGlmIChmbG9hdEFyZ3VtZW50cy5kaWZmdXNlQ29uc3RhbnQgPT0gMSkKLSAgICAgICAg
bmVvbkRhdGEuZmxhZ3MgfD0gRkxBR19ESUZGVVNFX0NPTlNUX0lTXzE7Ci0KLSAgICBpbnQgb3B0
aW1hbFRocmVhZE51bWJlciA9ICgoZGF0YS53aWR0aERlY3JlYXNlZEJ5T25lIC0gMSkgKiAoZGF0
YS5oZWlnaHREZWNyZWFzZWRCeU9uZSAtIDEpKSAvIHNfbWluaW1hbFJlY3REaW1lbnNpb247Ci0g
ICAgaWYgKG9wdGltYWxUaHJlYWROdW1iZXIgPiAxKSB7Ci0gICAgICAgIC8vIEluaXRpYWxpemUg
cGFyYWxsZWwgam9icwotICAgICAgICBQYXJhbGxlbEpvYnM8RkVMaWdodGluZ1BhaW50aW5nRGF0
YUZvck5lb24+IHBhcmFsbGVsSm9icygmV2ViQ29yZTo6RkVMaWdodGluZzo6cGxhdGZvcm1BcHBs
eU5lb25Xb3JrZXIsIG9wdGltYWxUaHJlYWROdW1iZXIpOwotCi0gICAgICAgIC8vIEZpbGwgdGhl
IHBhcmFtZXRlciBhcnJheQotICAgICAgICBpbnQgam9iID0gcGFyYWxsZWxKb2JzLm51bWJlck9m
Sm9icygpOwotICAgICAgICBpZiAoam9iID4gMSkgewotICAgICAgICAgICAgaW50IHlTdGFydCA9
IDE7Ci0gICAgICAgICAgICBpbnQgeVN0ZXAgPSAoZGF0YS5oZWlnaHREZWNyZWFzZWRCeU9uZSAt
IDEpIC8gam9iOwotICAgICAgICAgICAgZm9yICgtLWpvYjsgam9iID49IDA7IC0tam9iKSB7Ci0g
ICAgICAgICAgICAgICAgRkVMaWdodGluZ1BhaW50aW5nRGF0YUZvck5lb24mIHBhcmFtcyA9IHBh
cmFsbGVsSm9icy5wYXJhbWV0ZXIoam9iKTsKLSAgICAgICAgICAgICAgICBwYXJhbXMgPSBuZW9u
RGF0YTsKLSAgICAgICAgICAgICAgICBwYXJhbXMueVN0YXJ0ID0geVN0YXJ0OwotICAgICAgICAg
ICAgICAgIHBhcmFtcy5waXhlbHMgKz0gKHlTdGFydCAtIDEpICogKGRhdGEud2lkdGhEZWNyZWFz
ZWRCeU9uZSArIDEpICogNDsKLSAgICAgICAgICAgICAgICBpZiAoam9iID4gMCkgewotICAgICAg
ICAgICAgICAgICAgICBwYXJhbXMuYWJzb2x1dGVIZWlnaHQgPSB5U3RlcDsKLSAgICAgICAgICAg
ICAgICAgICAgeVN0YXJ0ICs9IHlTdGVwOwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAg
ICAgICAgICAgICAgICBwYXJhbXMuYWJzb2x1dGVIZWlnaHQgPSBkYXRhLmhlaWdodERlY3JlYXNl
ZEJ5T25lIC0geVN0YXJ0OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcGFyYWxsZWxKb2Jz
LmV4ZWN1dGUoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IG5lb25EcmF3TGlnaHRpbmcoJm5lb25EYXRhKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gQ1BVKEFSTV9ORU9OKSAmJiBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkK
LQotI2VuZGlmIC8vIEZFTGlnaHRpbmdORU9OX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycy9ORU9OSGVscGVycy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3B1L2FybS9maWx0ZXJzL05FT05IZWxwZXJzLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2NmFkOGQxODhmYTQ5OTFlZTE3MTlhNjQ2
M2I1NDZlZDk2N2FhNjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3B1L2FybS9maWx0ZXJzL05F
T05IZWxwZXJzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEyIFVuaXZlcnNpdHkgb2YgU3plZ2VkCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R2Fib3IgUmFwY3NhbnlpCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBVTklWRVJTSVRZIE9GIFNaRUdFRCBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIFVOSVZFUlNJVFkgT0YgU1pFR0VEIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBORU9OSGVscGVyc19oCi0jZGVmaW5lIE5F
T05IZWxwZXJzX2gKLQotI2lmIEhBVkUoQVJNX05FT05fSU5UUklOU0lDUykKLQotI2luY2x1ZGUg
PGFybV9uZW9uLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotaW5saW5lIGZsb2F0MzJ4NF90
IGxvYWRSR0JBOEFzRmxvYXQoY29uc3QgdWludDMyX3QqIHNvdXJjZSkKLXsKLSAgICB1aW50MzJ4
Ml90IHRlbXBvcmFyeTEgPSB7MCwgMH07Ci0gICAgdGVtcG9yYXJ5MSA9IHZzZXRfbGFuZV91MzIo
KnNvdXJjZSwgdGVtcG9yYXJ5MSwgMCk7Ci0gICAgdWludDE2eDRfdCB0ZW1wb3JhcnkyID0gdmdl
dF9sb3dfdTE2KHZtb3ZsX3U4KHZyZWludGVycHJldF91OF91MzIodGVtcG9yYXJ5MSkpKTsKLSAg
ICByZXR1cm4gdmN2dHFfZjMyX3UzMih2bW92bF91MTYodGVtcG9yYXJ5MikpOwotfQotCi1pbmxp
bmUgdm9pZCBzdG9yZUZsb2F0QXNSR0JBOChmbG9hdDMyeDRfdCBkYXRhLCB1aW50MzJfdCogZGVz
dGluYXRpb24pCi17Ci0gICAgdWludDE2eDRfdCB0ZW1wb3JhcnkxID0gdm1vdm5fdTMyKHZjdnRx
X3UzMl9mMzIoZGF0YSkpOwotICAgIHVpbnQ4eDhfdCB0ZW1wb3JhcnkyID0gdm1vdm5fdTE2KHZj
b21iaW5lX3UxNih0ZW1wb3JhcnkxLCB0ZW1wb3JhcnkxKSk7Ci0gICAgKmRlc3RpbmF0aW9uID0g
dmdldF9sYW5lX3UzMih2cmVpbnRlcnByZXRfdTMyX3U4KHRlbXBvcmFyeTIpLCAwKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gSEFWRShBUk1fTkVPTl9JTlRSSU5T
SUNTKQotCi0jZW5kaWYgLy8gTkVPTkhlbHBlcnNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKaW5kZXggMzVjZDY1NWY2YjYy
MmJlMDBjMmMxMGFkYzA0ODllZTNjNWRjZTRhNC4uZDQzOTk1YjU1NzMzODgxYmYyZTBlNDFhNmU1
MmIwOTM5ODczNTNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUJsZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiRkVCbGVuZC5oIgogCi0jaW5jbHVkZSAiRkVCbGVuZE5FT04uaCIK
ICNpbmNsdWRlICJGRUJsZW5kU29mdHdhcmVBcHBsaWVyLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQv
VGV4dFN0cmVhbS5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQmxlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVCbGVuZC5oCmluZGV4IDQ3Y2Y4NWU5ODk1YTcwZjQzNDYxZTEwYzI0MzJkY2Zh
N2QwYTRlOWYuLmU5ZjdkOWY0OTYwOThmYTE2OGQ1NDNkODAxMjUyMDAzYjYzNGMyNjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5o
CkBAIC00MCw5ICs0MCw2IEBAIHByaXZhdGU6CiAKICAgICBib29sIHBsYXRmb3JtQXBwbHlTb2Z0
d2FyZShjb25zdCBGaWx0ZXImKSBvdmVycmlkZTsKIAotICAgIHZvaWQgcGxhdGZvcm1BcHBseU5F
T04odW5zaWduZWQgY2hhciogc3JjUGl4ZWxBcnJheUEsIHVuc2lnbmVkIGNoYXIqIHNyY1BpeGVs
QXJyYXlCLCB1bnNpZ25lZCBjaGFyKiBkc3RQaXhlbEFycmF5LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgY29sb3JBcnJheUxlbmd0aCk7Ci0KICAgICBXVEY6OlRleHRTdHJl
YW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVzZW50YXRp
b25UeXBlKSBjb25zdCBvdmVycmlkZTsKIAogICAgIEJsZW5kTW9kZSBtX21vZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRl
LmgKaW5kZXggZjVlNDk3NDAyNjljMGQ2ZWY5OWQwODcyMDQxMWQzNGVlOGQ2NzQxMy4uNmY3MDgx
ZWQ3YTc2OWZhNmM1ZjdkODMxN2UzOWEwYTQ1MGQxM2RjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaApAQCAtNzAs
MTMgKzcwLDYgQEAgcHJpdmF0ZToKIAogICAgIGlubGluZSB2b2lkIHBsYXRmb3JtQXJpdGhtZXRp
Y1NvZnR3YXJlKGNvbnN0IFVpbnQ4Q2xhbXBlZEFycmF5JiBzb3VyY2UsIFVpbnQ4Q2xhbXBlZEFy
cmF5JiBkZXN0aW5hdGlvbiwgZmxvYXQgazEsIGZsb2F0IGsyLCBmbG9hdCBrMywgZmxvYXQgazQp
OwogCi0jaWYgSEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQotICAgIHRlbXBsYXRlIDxpbnQgYjEs
IGludCBiND4KLSAgICBzdGF0aWMgaW5saW5lIHZvaWQgY29tcHV0ZUFyaXRobWV0aWNQaXhlbHNO
ZW9uKGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVk
IHBpeGVsQXJyYXlMZW5ndGgsIGZsb2F0IGsxLCBmbG9hdCBrMiwgZmxvYXQgazMsIGZsb2F0IGs0
KTsKLQotICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBwbGF0Zm9ybUFyaXRobWV0aWNOZW9uKGNvbnN0
IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsQXJy
YXlMZW5ndGgsIGZsb2F0IGsxLCBmbG9hdCBrMiwgZmxvYXQgazMsIGZsb2F0IGs0KTsKLSNlbmRp
ZgotCiAgICAgQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSBtX3R5cGU7CiAgICAgZmxvYXQgbV9rMTsK
ICAgICBmbG9hdCBtX2syOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuaAppbmRleCAzMTE4OWE0MGE2MDVhMDVjY2EwYjgxMGVj
YTkyYjNhMTFmZDk0ZTk2Li5lOTMwOTNhODRiNzEyOTA2ODZlZDU3YTVjMWI0MWUyNzhhYWQ1Nzcx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
TGlnaHRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFTGlnaHRpbmcuaApAQCAtNjIsMTEgKzYyLDYgQEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCBw
bGF0Zm9ybUFwcGx5U29mdHdhcmUoY29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7CiAKLSNpZiBDUFUo
QVJNX05FT04pICYmIENQVShBUk1fVFJBRElUSU9OQUwpICYmIENPTVBJTEVSKEdDQ19DT01QQVRJ
QkxFKQotICAgIHN0YXRpYyBpbnQgZ2V0UG93ZXJDb2VmZmljaWVudHMoZmxvYXQgZXhwb25lbnQp
OwotICAgIGlubGluZSB2b2lkIHBsYXRmb3JtQXBwbHlOZW9uKGNvbnN0IExpZ2h0aW5nRGF0YSYs
IGNvbnN0IExpZ2h0U291cmNlOjpQYWludGluZ0RhdGEmKTsKLSNlbmRpZgotCiAgICAgQ29sb3Ig
bV9saWdodGluZ0NvbG9yOwogICAgIGZsb2F0IG1fc3VyZmFjZVNjYWxlOwogICAgIGZsb2F0IG1f
ZGlmZnVzZUNvbnN0YW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlckltYWdlLmNwcAppbmRleCA3NjkxNjc4NDY5ZDE0OTQ5NmZi
YjBiYWQyZWFiZDgzYzhiM2Q0NzE5Li40N2ViOGM2MWFhZjA4ODA4ZTVjYzJkMzdmOTMzMTRhOWJj
Y2FiZGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlckltYWdlLmNwcApAQCAtMzEsMTAgKzMxLDYgQEAKICNpbmNsdWRlICJQ
aXhlbEJ1ZmZlci5oIgogI2luY2x1ZGUgIlBpeGVsQnVmZmVyQ29udmVyc2lvbi5oIgogCi0jaWYg
SEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQotI2luY2x1ZGUgPGFybV9uZW9uLmg+Ci0jZW5kaWYK
LQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSZWZQdHI8RmlsdGVySW1hZ2U+IEZpbHRlckltYWdl
OjpjcmVhdGUoY29uc3QgRmxvYXRSZWN0JiBwcmltaXRpdmVTdWJyZWdpb24sIGNvbnN0IEludFJl
Y3QmIGFic29sdXRlSW1hZ2VSZWN0LCBib29sIGlzQWxwaGFJbWFnZSwgUmVuZGVyaW5nTW9kZSBy
ZW5kZXJpbmdNb2RlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UpCkBA
IC0yNjUsMjUgKzI2MSw2IEBAIHZvaWQgRmlsdGVySW1hZ2U6OmNvcnJlY3RQcmVtdWx0aXBsaWVk
UGl4ZWxCdWZmZXIoKQogICAgIC8vIFdlIG11c3QgaGF2ZSBmb3VyIGJ5dGVzIHBlciBwaXhlbCwg
YW5kIGNvbXBsZXRlIHBpeGVscwogICAgIEFTU0VSVCghKHBpeGVsQXJyYXlMZW5ndGggJSA0KSk7
CiAKLSNpZiBIQVZFKEFSTV9ORU9OX0lOVFJJTlNJQ1MpCi0gICAgaWYgKHBpeGVsQXJyYXlMZW5n
dGggPj0gNjQpIHsKLSAgICAgICAgdWludDhfdCogbGFzdFBpeGVsID0gcGl4ZWxEYXRhICsgKHBp
eGVsQXJyYXlMZW5ndGggJiB+MHgzZik7Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIC8vIElu
Y3JlbWVudHMgcGl4ZWxEYXRhIGJ5IDY0LgotICAgICAgICAgICAgdWludDh4MTZ4NF90IHNpeHRl
ZW5QaXhlbHMgPSB2bGQ0cV91OChwaXhlbERhdGEpOwotICAgICAgICAgICAgc2l4dGVlblBpeGVs
cy52YWxbMF0gPSB2bWlucV91OChzaXh0ZWVuUGl4ZWxzLnZhbFswXSwgc2l4dGVlblBpeGVscy52
YWxbM10pOwotICAgICAgICAgICAgc2l4dGVlblBpeGVscy52YWxbMV0gPSB2bWlucV91OChzaXh0
ZWVuUGl4ZWxzLnZhbFsxXSwgc2l4dGVlblBpeGVscy52YWxbM10pOwotICAgICAgICAgICAgc2l4
dGVlblBpeGVscy52YWxbMl0gPSB2bWlucV91OChzaXh0ZWVuUGl4ZWxzLnZhbFsyXSwgc2l4dGVl
blBpeGVscy52YWxbM10pOwotICAgICAgICAgICAgdnN0NHFfdTgocGl4ZWxEYXRhLCBzaXh0ZWVu
UGl4ZWxzKTsKLSAgICAgICAgICAgIHBpeGVsRGF0YSArPSA2NDsKLSAgICAgICAgfSB3aGlsZSAo
cGl4ZWxEYXRhIDwgbGFzdFBpeGVsKTsKLQotICAgICAgICBwaXhlbEFycmF5TGVuZ3RoICY9IDB4
M2Y7Ci0gICAgICAgIGlmICghcGl4ZWxBcnJheUxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICB9Ci0jZW5kaWYKLQogICAgIGludCBudW1QaXhlbHMgPSBwaXhlbEFycmF5TGVuZ3RoIC8g
NDsKIAogICAgIC8vIEl0ZXJhdGUgb3ZlciBlYWNoIHBpeGVsLCBjaGVja2luZyBhbHBoYSBhbmQg
YWRqdXN0aW5nIGNvbG9yIGNvbXBvbmVudHMgaWYgbmVjZXNzYXJ5CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQmxlbmRTb2Z0
d2FyZUFwcGxpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9zb2Z0d2FyZS9GRUJsZW5kU29mdHdhcmVBcHBsaWVyLmNwcAppbmRleCA0YWY3NzdhNWNjZjJk
NTQxN2VkZDQzNTNiNGI0ZWJhMWE2MGExMGI4Li40ZmMwMzA2YjlkNWE0YWY4OTM3MjE5ZTAwM2Y2
ZmU4ZDFlZTRjNTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL3NvZnR3YXJlL0ZFQmxlbmRTb2Z0d2FyZUFwcGxpZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVCbGVuZFNvZnR3
YXJlQXBwbGllci5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci0jaWYgIUhBVkUoQVJNX05FT05fSU5UUklOU0lDUykKIGJvb2wgRkVCbGVuZFNvZnR3YXJlQXBw
bGllcjo6YXBwbHkoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0
cywgRmlsdGVySW1hZ2UmIHJlc3VsdCkKIHsKICAgICBhdXRvJiBpbnB1dCA9IGlucHV0c1swXS5n
ZXQoKTsKQEAgLTUzLDYgKzUyLDUgQEAgYm9vbCBGRUJsZW5kU29mdHdhcmVBcHBsaWVyOjphcHBs
eShjb25zdCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXQKICAgICBmaWx0
ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW5wdXRJbWFnZSwgbV9lZmZlY3QuZHJhd2luZ1Jl
Z2lvbk9mSW5wdXRJbWFnZShpbnB1dC5hYnNvbHV0ZUltYWdlUmVjdCgpKSwgeyB7IH0sIGlucHV0
SW1hZ2UtPmxvZ2ljYWxTaXplKCkgfSwgeyBDb21wb3NpdGVPcGVyYXRvcjo6U291cmNlT3Zlciwg
bV9lZmZlY3QuYmxlbmRNb2RlKCkgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9Ci0jZW5kaWYKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUNvbXBvc2l0ZVNvZnR3YXJlQXBwbGllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZF
Q29tcG9zaXRlU29mdHdhcmVBcHBsaWVyLmNwcAppbmRleCAyYzZiYjRhNDAyYmVkM2RlMjc4M2Y1
NGYyNDJmYzI4MDliZmExMzEwLi5iNmRlZjIyMGNjY2ZmMTUxOGRhYzE5ZTliNTg0YmYyOWNjODQx
MTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L3NvZnR3YXJlL0ZFQ29tcG9zaXRlU29mdHdhcmVBcHBsaWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQ29tcG9zaXRlU29mdHdh
cmVBcHBsaWVyLmNwcApAQCAtOTIsNyArOTIsNiBAQCBpbmxpbmUgdm9pZCBGRUNvbXBvc2l0ZVNv
ZnR3YXJlQXBwbGllcjo6Y29tcHV0ZUFyaXRobWV0aWNQaXhlbHNVbmNsYW1wZWQodW5zaWduZQog
ICAgIH0KIH0KIAotI2lmICFIQVZFKEFSTV9ORU9OX0lOVFJJTlNJQ1MpCiBpbmxpbmUgdm9pZCBG
RUNvbXBvc2l0ZVNvZnR3YXJlQXBwbGllcjo6YXBwbHlQbGF0Zm9ybUFyaXRobWV0aWModW5zaWdu
ZWQgY2hhciogc291cmNlLCB1bnNpZ25lZCBjaGFyKiBkZXN0aW5hdGlvbiwgaW50IHBpeGVsQXJy
YXlMZW5ndGgsIGZsb2F0IGsxLCBmbG9hdCBrMiwgZmxvYXQgazMsIGZsb2F0IGs0KQogewogICAg
IGZsb2F0IHVwcGVyTGltaXQgPSBzdGQ6Om1heCgwLjBmLCBrMSkgKyBzdGQ6Om1heCgwLjBmLCBr
MikgKyBzdGQ6Om1heCgwLjBmLCBrMykgKyBrNDsKQEAgLTEyNCw3ICsxMjMsNiBAQCBpbmxpbmUg
dm9pZCBGRUNvbXBvc2l0ZVNvZnR3YXJlQXBwbGllcjo6YXBwbHlQbGF0Zm9ybUFyaXRobWV0aWMo
dW5zaWduZWQgY2hhciogcwogICAgICAgICAgICAgY29tcHV0ZUFyaXRobWV0aWNQaXhlbHM8MCwg
MD4oc291cmNlLCBkZXN0aW5hdGlvbiwgcGl4ZWxBcnJheUxlbmd0aCwgazEsIGsyLCBrMywgazQp
OwogICAgIH0KIH0KLSNlbmRpZgogCiBib29sIEZFQ29tcG9zaXRlU29mdHdhcmVBcHBsaWVyOjph
cHBseUFyaXRobWV0aWMoRmlsdGVySW1hZ2UmIGlucHV0LCBGaWx0ZXJJbWFnZSYgaW5wdXQyLCBG
aWx0ZXJJbWFnZSYgcmVzdWx0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUNvbnZvbHZlTWF0cml4U29mdHdhcmVBcHBs
aWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJl
L0ZFQ29udm9sdmVNYXRyaXhTb2Z0d2FyZUFwcGxpZXIuaAppbmRleCBkMWQxOWE1M2YwMDEwZDc4
NjcxYzcxNGJmM2M1ZWQ2ZjlkNDBmMDk2Li5iNzBiOWM5NzQ0Mjk1NDI3N2Y4NTQ1YWRhNDFkYTIx
NmZmYmIzYTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL3NvZnR3YXJlL0ZFQ29udm9sdmVNYXRyaXhTb2Z0d2FyZUFwcGxpZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQ29udm9s
dmVNYXRyaXhTb2Z0d2FyZUFwcGxpZXIuaApAQCAtMjQsNiArMjQsOSBAQAogI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3RBcHBsaWVyLmgiCisjaW5jbHVkZSAiSW50UG9pbnQu
aCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2Fy
ZS9GRUdhdXNzaWFuQmx1clNvZnR3YXJlQXBwbGllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFR2F1c3NpYW5CbHVyU29mdHdhcmVBcHBs
aWVyLmNwcAppbmRleCAxZGZhOTdlOWM5MTllNzczYjIxZjM1OTM3NzEwMWY2Mzg4ODdlMGU4Li44
YmNlZjE4ZjZkMjk2NjlmMDAwZWNkZjY5MDgxNTJkMzUwOWJmNzIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFR2F1c3NpYW5C
bHVyU29mdHdhcmVBcHBsaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFR2F1c3NpYW5CbHVyU29mdHdhcmVBcHBsaWVyLmNwcApA
QCAtMjk4LDI3ICsyOTgsMTMgQEAgaW5saW5lIHZvaWQgRkVHYXVzc2lhbkJsdXJTb2Z0d2FyZUFw
cGxpZXI6OmJveEJsdXJVbmFjY2VsZXJhdGVkKFVpbnQ4Q2xhbXBlZEFycmEKICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IDM7ICsraSkgewogICAgICAgICBpZiAoa2VybmVsU2l6ZVgpIHsKICAgICAg
ICAgICAgIGtlcm5lbFBvc2l0aW9uKGksIGtlcm5lbFNpemVYLCBkeExlZnQsIGR4UmlnaHQpOwot
I2lmIEhBVkUoQVJNX05FT05fSU5UUklOU0lDUykKLSAgICAgICAgICAgIGlmICghaXNBbHBoYUlt
YWdlKQotICAgICAgICAgICAgICAgIGJveEJsdXJORU9OKCpmcm9tQnVmZmVyLCAqdG9CdWZmZXIs
IGtlcm5lbFNpemVYLCBkeExlZnQsIGR4UmlnaHQsIDQsIHN0cmlkZSwgcGFpbnRTaXplLndpZHRo
KCksIHBhaW50U2l6ZS5oZWlnaHQoKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgYm94Qmx1cigqZnJvbUJ1ZmZlciwgKnRvQnVmZmVyLCBrZXJuZWxTaXplWCwgZHhMZWZ0LCBk
eFJpZ2h0LCA0LCBzdHJpZGUsIHBhaW50U2l6ZS53aWR0aCgpLCBwYWludFNpemUuaGVpZ2h0KCks
IHRydWUsIGVkZ2VNb2RlKTsKLSNlbHNlCiAgICAgICAgICAgICBib3hCbHVyKCpmcm9tQnVmZmVy
LCAqdG9CdWZmZXIsIGtlcm5lbFNpemVYLCBkeExlZnQsIGR4UmlnaHQsIDQsIHN0cmlkZSwgcGFp
bnRTaXplLndpZHRoKCksIHBhaW50U2l6ZS5oZWlnaHQoKSwgaXNBbHBoYUltYWdlLCBlZGdlTW9k
ZSk7Ci0jZW5kaWYKICAgICAgICAgICAgIHN0ZDo6c3dhcChmcm9tQnVmZmVyLCB0b0J1ZmZlcik7
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoa2VybmVsU2l6ZVkpIHsKICAgICAgICAgICAgIGtl
cm5lbFBvc2l0aW9uKGksIGtlcm5lbFNpemVZLCBkeUxlZnQsIGR5UmlnaHQpOwotI2lmIEhBVkUo
QVJNX05FT05fSU5UUklOU0lDUykKLSAgICAgICAgICAgIGlmICghaXNBbHBoYUltYWdlKQotICAg
ICAgICAgICAgICAgIGJveEJsdXJORU9OKCpmcm9tQnVmZmVyLCAqdG9CdWZmZXIsIGtlcm5lbFNp
emVZLCBkeUxlZnQsIGR5UmlnaHQsIHN0cmlkZSwgNCwgcGFpbnRTaXplLmhlaWdodCgpLCBwYWlu
dFNpemUud2lkdGgoKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYm94Qmx1
cigqZnJvbUJ1ZmZlciwgKnRvQnVmZmVyLCBrZXJuZWxTaXplWSwgZHlMZWZ0LCBkeVJpZ2h0LCBz
dHJpZGUsIDQsIHBhaW50U2l6ZS5oZWlnaHQoKSwgcGFpbnRTaXplLndpZHRoKCksIHRydWUsIGVk
Z2VNb2RlKTsKLSNlbHNlCiAgICAgICAgICAgICBib3hCbHVyKCpmcm9tQnVmZmVyLCAqdG9CdWZm
ZXIsIGtlcm5lbFNpemVZLCBkeUxlZnQsIGR5UmlnaHQsIHN0cmlkZSwgNCwgcGFpbnRTaXplLmhl
aWdodCgpLCBwYWludFNpemUud2lkdGgoKSwgaXNBbHBoYUltYWdlLCBlZGdlTW9kZSk7Ci0jZW5k
aWYKICAgICAgICAgICAgIHN0ZDo6c3dhcChmcm9tQnVmZmVyLCB0b0J1ZmZlcik7CiAgICAgICAg
IH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL3NvZnR3YXJlL0ZFR2F1c3NpYW5CbHVyU29mdHdhcmVBcHBsaWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFR2F1c3NpYW5CbHVy
U29mdHdhcmVBcHBsaWVyLmgKaW5kZXggNGE4N2VlNGQ0NjU4NDA2ZGJhYTc5NGEwOGNlZjgxNTlm
MTc0OTUxYy4uMTk5YjhjYmI5ZGQ4ZTQwNTRiMDRhMTgwNDNmZjcwNTk5NDMzODE3YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9G
RUdhdXNzaWFuQmx1clNvZnR3YXJlQXBwbGllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVHYXVzc2lhbkJsdXJTb2Z0d2FyZUFwcGxp
ZXIuaApAQCAtMjMsNiArMjMsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGaWx0ZXJF
ZmZlY3RBcHBsaWVyLmgiCisjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUxpZ2h0aW5n
U29mdHdhcmVBcHBsaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvc29mdHdhcmUvRkVMaWdodGluZ1NvZnR3YXJlQXBwbGllci5jcHAKaW5kZXggYzE5OGY0
NjkwMzMzNTRmZmQxYjNlMTUxYjVhMGQ5Njg2NDNkNTE0ZS4uNmJlZDQzYzBlZTYzYzc4YmU0NzRj
Y2ZkYTQ0NTc5YjcxOTVkZGU0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUxpZ2h0aW5nU29mdHdhcmVBcHBsaWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZF
TGlnaHRpbmdTb2Z0d2FyZUFwcGxpZXIuY3BwCkBAIC0yODIsNyArMjgyLDYgQEAgdm9pZCBGRUxp
Z2h0aW5nU29mdHdhcmVBcHBsaWVyOjphcHBseVBsYXRmb3JtR2VuZXJpY1dvcmtlcihBcHBseVBh
cmFtZXRlcnMqIHBhcmEKICAgICBhcHBseVBsYXRmb3JtR2VuZXJpY1BhaW50KHBhcmFtZXRlcnMt
PmRhdGEsIHBhcmFtZXRlcnMtPnBhaW50aW5nRGF0YSwgcGFyYW1ldGVycy0+eVN0YXJ0LCBwYXJh
bWV0ZXJzLT55RW5kKTsKIH0KIAotI2lmICEoQ1BVKEFSTV9ORU9OKSAmJiBDUFUoQVJNX1RSQURJ
VElPTkFMKSAmJiBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkpCiB2b2lkIEZFTGlnaHRpbmdTb2Z0
d2FyZUFwcGxpZXI6OmFwcGx5UGxhdGZvcm1HZW5lcmljKGNvbnN0IExpZ2h0aW5nRGF0YSYgZGF0
YSwgY29uc3QgTGlnaHRTb3VyY2U6OlBhaW50aW5nRGF0YSYgcGFpbnRpbmdEYXRhKQogewogICAg
IHVuc2lnbmVkIHJvd3NUb1Byb2Nlc3MgPSBkYXRhLmhlaWdodCAtIDI7CkBAIC0zMjAsNyArMzE5
LDYgQEAgdm9pZCBGRUxpZ2h0aW5nU29mdHdhcmVBcHBsaWVyOjphcHBseVBsYXRmb3JtR2VuZXJp
Yyhjb25zdCBMaWdodGluZ0RhdGEmIGRhdGEsIGMKIAogICAgIGFwcGx5UGxhdGZvcm1HZW5lcmlj
UGFpbnQoZGF0YSwgcGFpbnRpbmdEYXRhLCAxLCBkYXRhLmhlaWdodCAtIDEpOwogfQotI2VuZGlm
CiAKIHZvaWQgRkVMaWdodGluZ1NvZnR3YXJlQXBwbGllcjo6YXBwbHlQbGF0Zm9ybShjb25zdCBM
aWdodGluZ0RhdGEmIGRhdGEpCiB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>